Audit sharing controls coverage
This commit is contained in:
@@ -0,0 +1,82 @@
|
||||
param(
|
||||
[string]$RepoRoot = (Resolve-Path (Join-Path $PSScriptRoot "..")).Path
|
||||
)
|
||||
|
||||
$ErrorActionPreference = "Stop"
|
||||
|
||||
function Fail($Message) {
|
||||
Write-Error $Message
|
||||
exit 1
|
||||
}
|
||||
|
||||
function Assert-FileContains($Name, $RelativePath, $Pattern) {
|
||||
$path = Join-Path $RepoRoot $RelativePath
|
||||
if (-not (Test-Path -LiteralPath $path)) {
|
||||
Fail "$Name source file is missing: $RelativePath"
|
||||
}
|
||||
|
||||
$content = Get-Content -LiteralPath $path -Raw
|
||||
if ($content -notmatch $Pattern) {
|
||||
Fail "$Name was not found in $RelativePath. Pattern: $Pattern"
|
||||
}
|
||||
|
||||
Write-Host "OK: $Name"
|
||||
}
|
||||
|
||||
Write-Host "Checking QSfera sharing-controls coverage..."
|
||||
|
||||
Assert-FileContains "Android public-link dialog exposes password control" `
|
||||
"Android/qsferaApp/src/main/java/eu/qsfera/android/presentation/sharing/shares/PublicShareDialogFragment.kt" `
|
||||
"shareViaLinkPasswordSwitch"
|
||||
Assert-FileContains "Android public-link dialog exposes expiration control" `
|
||||
"Android/qsferaApp/src/main/java/eu/qsfera/android/presentation/sharing/shares/PublicShareDialogFragment.kt" `
|
||||
"shareViaLinkExpirationSwitch"
|
||||
Assert-FileContains "Android public-link dialog exposes upload-only mode" `
|
||||
"Android/qsferaApp/src/main/java/eu/qsfera/android/presentation/sharing/shares/PublicShareDialogFragment.kt" `
|
||||
"shareViaLinkEditPermissionUploadFiles"
|
||||
Assert-FileContains "Android public-link rows show safety status" `
|
||||
"Android/qsferaApp/src/main/java/eu/qsfera/android/presentation/sharing/shares/SharePublicLinkListAdapter.kt" `
|
||||
"PublicShareStatusFormatter\.statusFor"
|
||||
|
||||
Assert-FileContains "Graph API declares internal link type" `
|
||||
"Server/vendor/github.com/opencloud-eu/libre-graph-api-go/model_sharing_link_type.go" `
|
||||
"INTERNAL SharingLinkType = `"internal`""
|
||||
Assert-FileContains "Graph API declares secure-view link type" `
|
||||
"Server/vendor/github.com/opencloud-eu/libre-graph-api-go/model_sharing_link_type.go" `
|
||||
"BLOCKS_DOWNLOAD SharingLinkType = `"blocksDownload`""
|
||||
Assert-FileContains "Graph API declares file-drop link type" `
|
||||
"Server/vendor/github.com/opencloud-eu/libre-graph-api-go/model_sharing_link_type.go" `
|
||||
"CREATE_ONLY SharingLinkType = `"createOnly`""
|
||||
Assert-FileContains "Server maps internal link to no public-share permissions" `
|
||||
"Server/services/graph/pkg/linktype/linktype.go" `
|
||||
"func NewInternalLinkPermissionSet\(\) \*LinkType[\s\S]*ResourcePermissions\{\}"
|
||||
Assert-FileContains "Server rejects passwords on internal links" `
|
||||
"Server/services/graph/pkg/service/v0/api_driveitem_permissions_links.go" `
|
||||
"password is redundant for the internal link"
|
||||
Assert-FileContains "Server stores link expiration during creation" `
|
||||
"Server/services/graph/pkg/service/v0/api_driveitem_permissions_links.go" `
|
||||
"GetExpirationDateTimeOk"
|
||||
|
||||
Assert-FileContains "Acceptance tests create link shares with password and expiration" `
|
||||
"Server/tests/acceptance/features/apiSharingNgLinkSharePermission/createLinkShare.feature" `
|
||||
"expirationDateTime[\s\S]*hasPassword"
|
||||
Assert-FileContains "Acceptance tests update link-share expiration" `
|
||||
"Server/tests/acceptance/features/apiSharingNgLinkSharePermission/updateLinkShare.feature" `
|
||||
"update expiration date of a file's link share"
|
||||
Assert-FileContains "Acceptance tests update link-share password and reject old password" `
|
||||
"Server/tests/acceptance/features/apiSharingNgLinkSharePermission/updateLinkShare.feature" `
|
||||
"public download of file[\s\S]*should fail with HTTP status code `"401`""
|
||||
Assert-FileContains "Acceptance tests update public links to internal links" `
|
||||
"Server/tests/acceptance/features/apiSharingNgLinkSharePermission/updateLinkShare.feature" `
|
||||
"permissionsRole \| internal"
|
||||
Assert-FileContains "Acceptance tests include secure viewer no-download behavior" `
|
||||
"Server/tests/acceptance/features/apiSharingNg1/enableDisablePermissionsRole.feature" `
|
||||
"Secure Viewer[\s\S]*should not be able to download"
|
||||
Assert-FileContains "Acceptance tests enforce space-manager sharing rights" `
|
||||
"Server/tests/acceptance/features/apiSpacesShares/shareSpaces.feature" `
|
||||
"manager role can share[\s\S]*editor or viewer role cannot share"
|
||||
Assert-FileContains "Acceptance tests enforce project-space public-link sharing rights" `
|
||||
"Server/tests/acceptance/features/apiSpacesShares/shareSubItemOfSpaceViaPublicLink.feature" `
|
||||
"space manager role can share[\s\S]*without space manager role cannot share"
|
||||
|
||||
Write-Host "QSfera sharing-controls coverage check passed."
|
||||
Reference in New Issue
Block a user