🥒 CCC.ObjStor Test: ccc-avm-test-container-20260616

Test Parameters

ServiceTypeobject-storage
ProviderServiceTypeMicrosoft.Storage/storageAccounts
CatalogTypesCCC.ObjStor
TagFilter@object-storage, @PerService, @Behavioural
UID/subscriptions/c1cedd8e-bf91-4d7d-a4cc-45700402a2a1/resourceGroups/avm-testing/providers/Microsoft.Storage/storageAccounts/avmstor20260616
ResourceNameccc-avm-test-container-20260616
ReportFileccc-avm-test-container-20260616-service
ReportTitleccc-avm-test-container-20260616
Config
{}
azure-log-analytics-workspace-id433b7b84-1ba6-4f5c-8375-6d2016f07e6a
azure-resource-groupavm-testing
azure-storage-accountavmstor20260616
azure-subscription-idc1cedd8e-bf91-4d7d-a4cc-45700402a2a1
azure-tenant-idfa193ac0-9c06-4111-bf55-341e4db193d3
catalog-versions
{
  "CCC.Core": "v2025.10",
  "CCC.ObjStor": "DEV"
}
default-containerccc-avm-test-container-20260616
object-storage-retention-period-days2
permitted-regions
[
  "westus2"
]
providerazure
regionwestus2
replication-locations
[
  "westus2"
]
resourceccc-avm-test-container-20260616
serviceobject-storage
service-typeobject-storage
tags@Behavioural

Summary

Generated: 2026-06-18 15:28:06

Total Run Time: 52s

Features: 28

Scenarios: 41 (✅ 32 | ❌ 9)

Steps: 397 (✅ 365 | ❌ 9 | ⏭️ 19 | ❓ 4)

Feature: CCC.Core.CN02.AR01 - Data Encryption at Rest
Scenario: Verify objects are encrypted at rest @CCC.Core @CCC.Core.CN02 @PerService @tlp-amber @tlp-green @tlp-red @Behavioural @object-storage
Given a cloud api for "{config}" in "api"51µs
Given I call "{api}" with "GetServiceAPI" using argument "object-storage"94µs
And I refer to "{result}" as "storage"12µs
And "{result}" is not an error44µs
When I call "{storage}" with "CreateObject" using arguments "{resource-name}", "test-encryption-check={timestamp}.txt", and "encryption test data"382ms
Then "{result}" is not an error23µs
And I refer to "{result}" as "uploadResult"15µs
And "{uploadResult.Encryption}" is not null47µs
And "{uploadResult.EncryptionAlgorithm}" is "AES256"25µs
And I attach "{uploadResult}" to the test output as "Upload Result with Encryption Details"68µs
📎 Attachments:
Upload Result with Encryption Details
View JSON (283 bytes)
{"ID":"test-encryption-check=1781796486362.txt","BucketID":"ccc-avm-test-container-20260616","Name":"test-encryption-check=1781796486362.txt","Size":20,"Data":["encryption test data"],"Encryption":"Microsoft","EncryptionAlgorithm":"AES256","VersionID":"2026-06-18T15:28:06.7277575Z"}
Feature: CCC.Core.CN05.AR01 - Block Unauthorized Data Modification
Scenario: Service prevents data modification by user with no access @CCC.Core @CCC.Core.CN05 @PerService @tlp-amber @tlp-clear @tlp-green @tlp-red @Destructive @Behavioural @object-storage
Given a cloud api for "{config}" in "api"59µs
And I call "{api}" with "GetServiceAPI" using argument "object-storage"50µs
And I refer to "{result}" as "storage"33µs
And I call "{api}" with "GetServiceAPIWithIdentity" using arguments "object-storage" and "test-user-no-access"467µs
And "{result}" is not an error49µs
And I refer to "{result}" as "userStorage"35µs
When I call "{userStorage}" with "CreateObject" using arguments "{resource-name}", "test-cn05-unauthorized-modify={timestamp}.txt", and "unauthorized data"337ms
Then "{result}" is an error27µs
And I attach "{result}" to the test output as "no-access-create-error.txt"29µs
📎 Attachments:
no-access-create-error.txt
View Content (866 bytes)
failed to upload blob test-cn05-unauthorized-modify=1781796486747.txt: PUT https://avmstor20260616.blob.core.windows.net/ccc-avm-test-container-20260616/test-cn05-unauthorized-modify=1781796486747.txt
--------------------------------------------------------------------------------
RESPONSE 403: 403 This request is not authorized to perform this operation using this permission.
ERROR CODE: AuthorizationPermissionMismatch
--------------------------------------------------------------------------------
AuthorizationPermissionMismatchThis request is not authorized to perform this operation using this permission.
RequestId:8876130b-c01e-008d-0737-ff1ecb000000
Time:2026-06-18T15:28:07.0749595Z
--------------------------------------------------------------------------------
Scenario: Service allows data modification by user with write access @CCC.Core @CCC.Core.CN05 @PerService @tlp-amber @tlp-clear @tlp-green @tlp-red @Destructive @Behavioural @object-storage
Given a cloud api for "{config}" in "api"27µs
And I call "{api}" with "GetServiceAPI" using argument "object-storage"31µs
And I refer to "{result}" as "storage"19µs
And I call "{api}" with "GetServiceAPIWithIdentity" using arguments "object-storage" and "test-user-write"145µs
And "{result}" is not an error24µs
And I refer to "{result}" as "userStorage"12µs
When I call "{userStorage}" with "CreateObject" using arguments "{resource-name}", "test-cn05-authorized-modify={timestamp}.txt", and "authorized data"242ms
Then "{result}" is not an error51µs
And I attach "{result}" to the test output as "write-create-object-result.json"51µs
📎 Attachments:
write-create-object-result.json
View JSON (290 bytes)
{"ID":"test-cn05-authorized-modify=1781796487087.txt","BucketID":"ccc-avm-test-container-20260616","Name":"test-cn05-authorized-modify=1781796487087.txt","Size":15,"Data":["authorized data"],"Encryption":"Microsoft","EncryptionAlgorithm":"AES256","VersionID":"2026-06-18T15:28:07.3127083Z"}
Feature: CCC.Core.CN05.AR02 - Block Unauthorized Administrative Access
Scenario: Service prevents administrative action (creating a new bucket) by user with no access @CCC.Core @CCC.Core.CN05 @PerService @tlp-amber @tlp-clear @tlp-green @tlp-red @Destructive @Behavioural @object-storage
Given a cloud api for "{config}" in "api"36µs
And I call "{api}" with "GetServiceAPI" using argument "object-storage"29µs
And I refer to "{result}" as "storage"13µs
And I call "{api}" with "GetServiceAPIWithIdentity" using arguments "object-storage" and "test-user-no-access"30µs
And "{result}" is not an error14µs
And I refer to "{result}" as "userStorage"13µs
When I call "{userStorage}" with "CreateBucket" using argument "test-cn05-unauthorized-admin-container"24ms
Then "{result}" is an error25µs
And I attach "{result}" to the test output as "no-admin-create-bucket-error.txt"86µs
📎 Attachments:
no-admin-create-bucket-error.txt
View Content (783 bytes)
failed to create container: failed to create container test-cn05-unauthorized-admin-container: PUT https://avmstor20260616.blob.core.windows.net/test-cn05-unauthorized-admin-container
--------------------------------------------------------------------------------
RESPONSE 403: 403 This request is not authorized to perform this operation.
ERROR CODE: AuthorizationFailure
--------------------------------------------------------------------------------
AuthorizationFailureThis request is not authorized to perform this operation.
RequestId:8876149f-c01e-008d-6437-ff1ecb000000
Time:2026-06-18T15:28:07.3439987Z
--------------------------------------------------------------------------------
Scenario: Service prevents administrative action (creating a new bucket) by user with read-only access @CCC.Core @CCC.Core.CN05 @PerService @tlp-amber @tlp-clear @tlp-green @tlp-red @Destructive @Behavioural @object-storage
Given a cloud api for "{config}" in "api"58µs
And I call "{api}" with "GetServiceAPI" using argument "object-storage"29µs
And I refer to "{result}" as "storage"12µs
And I call "{api}" with "GetServiceAPIWithIdentity" using arguments "object-storage" and "test-user-read"133µs
And "{result}" is not an error17µs
And I refer to "{result}" as "userStorage"14µs
When I call "{userStorage}" with "CreateBucket" using argument "test-cn05-read-only-create-container"247ms
Then "{result}" is an error31µs
And I attach "{result}" to the test output as "read-only-create-bucket-error.txt"34µs
📎 Attachments:
read-only-create-bucket-error.txt
View Content (779 bytes)
failed to create container: failed to create container test-cn05-read-only-create-container: PUT https://avmstor20260616.blob.core.windows.net/test-cn05-read-only-create-container
--------------------------------------------------------------------------------
RESPONSE 403: 403 This request is not authorized to perform this operation.
ERROR CODE: AuthorizationFailure
--------------------------------------------------------------------------------
AuthorizationFailureThis request is not authorized to perform this operation.
RequestId:88761654-c01e-008d-5837-ff1ecb000000
Time:2026-06-18T15:28:07.5926361Z
--------------------------------------------------------------------------------
Scenario: Service allows administrative action (creating a new bucket) by user with admin access @CCC.Core @CCC.Core.CN05 @PerService @tlp-amber @tlp-clear @tlp-green @tlp-red @Behavioural @object-storage
Given a cloud api for "{config}" in "api"30µs
And I call "{api}" with "GetServiceAPI" using argument "object-storage"35µs
And I refer to "{result}" as "storage"21µs
And I call "{api}" with "GetServiceAPIWithIdentity" using arguments "object-storage" and "test-user-admin"140µs
And "{result}" is not an error26µs
And I refer to "{result}" as "userStorage"17µs
When I call "{userStorage}" with "CreateBucket" using argument "test-cn05-authorized-admin-container"634ms
Then "{result}" is not an error41µs
And I attach "{result}" to the test output as "admin-create-bucket-result.json"67µs
And I call "{storage}" with "DeleteBucket" using argument "test-cn05-authorized-admin-container"390ms
📎 Attachments:
admin-create-bucket-result.json
View JSON (110 bytes)
{"ID":"test-cn05-authorized-admin-container","Name":"test-cn05-authorized-admin-container","Region":"westus2"}
Feature: CCC.Core.CN06.AR02 - Child Resource Location Compliance
Scenario: Child resource region compliance @CCC.Core @CCC.Core.CN06 @PerService @tlp-amber @tlp-clear @tlp-green @tlp-red @Behavioural @NotTestable @object-storage
Given a cloud api for "{config}" in "api"51µs
Then no-op required19µs
Feature: CCC.Core.CN08.AR01 - Data Replication and Redundancy
Scenario: Bucket data is replicated to physically separate locations @CCC.Core @CCC.Core.CN08 @PerService @tlp-amber @tlp-green @tlp-red @Behavioural @object-storage
Given a cloud api for "{config}" in "api"30µs
And I call "{api}" with "GetServiceAPI" using argument "object-storage"41µs
And I refer to "{result}" as "storage"23µs
When I call "{storage}" with "GetReplicationStatus" using argument "{resource-name}"271ms
And I refer to "{result}" as "replicationStatus"22µs
And I refer to "{replicationStatus.Locations}" as "locations"25µs
And I attach "{replicationStatus}" to the test output as "Replication Status"74µs
Then "{locations}" is an array of objects with length "2"48µs
expected length 2, got 1
And "{permitted-regions}" is an array of objects with at least the following contents24µs
value
{locations[0]}
And "{permitted-regions}" is an array of objects with at least the following contents21µs
value
{locations[1]}
📎 Attachments:
Replication Status
View JSON (78 bytes)
{"Locations":[{"value":"westus2"}],"Status":"Disabled","SyncStatus":"Unknown"}
Feature: CCC.Core.CN08.AR02 - Replication Status Visibility
Scenario: Replication status can be retrieved for monitoring @CCC.Core @CCC.Core.CN08 @PerService @tlp-amber @tlp-green @tlp-red @Behavioural @object-storage
Given a cloud api for "{config}" in "api"30µs
And I call "{api}" with "GetServiceAPI" using argument "object-storage"33µs
And I refer to "{result}" as "storage"22µs
When I call "{storage}" with "GetReplicationStatus" using argument "{resource-name}"288ms
And I refer to "{result}" as "replicationStatus"21µs
And I attach "{replicationStatus}" to the test output as "Replication Status"35µs
And I refer to "{replicationStatus.Locations}" as "locations"21µs
Then "{locations}" is an array of objects with at least the following contents100µs
value
{replication-locations[0]}
{replication-locations[1]}
expected row not found: map[value:{replication-locations[0]}]
📎 Attachments:
Replication Status
View JSON (78 bytes)
{"Locations":[{"value":"westus2"}],"Status":"Disabled","SyncStatus":"Unknown"}
Feature: CCC.ObjStor.CN01.AR01
Scenario: Service prevents reading bucket with no access @CCC.ObjStor @CCC.ObjStor.CN01 @PerService @object-storage @tlp-amber @tlp-red @Behavioural
Given a cloud api for "{config}" in "api"66µs
And I call "{api}" with "GetServiceAPI" using argument "object-storage"57µs
And I refer to "{result}" as "storage"40µs
And I call "{api}" with "GetServiceAPIWithIdentity" using arguments "object-storage" and "test-user-no-access"102µs
And "{result}" is not an error47µs
And I refer to "{result}" as "userStorage"36µs
When I call "{userStorage}" with "ListObjects" using argument "{resource-name}"24ms
Then "{result}" is an error30µs
And I attach "{result}" to the test output as "no-access-list-error.txt"46µs
📎 Attachments:
no-access-list-error.txt
View Content (769 bytes)
failed to list blobs: GET https://avmstor20260616.blob.core.windows.net/ccc-avm-test-container-20260616
--------------------------------------------------------------------------------
RESPONSE 403: 403 This request is not authorized to perform this operation using this permission.
ERROR CODE: AuthorizationPermissionMismatch
--------------------------------------------------------------------------------
AuthorizationPermissionMismatchThis request is not authorized to perform this operation using this permission.
RequestId:88761efd-c01e-008d-4e37-ff1ecb000000
Time:2026-06-18T15:28:09.2091986Z
--------------------------------------------------------------------------------
Scenario: Service allows reading bucket with read access @CCC.ObjStor @CCC.ObjStor.CN01 @PerService @object-storage @tlp-amber @tlp-red @Behavioural
Given a cloud api for "{config}" in "api"37µs
And I call "{api}" with "GetServiceAPI" using argument "object-storage"31µs
And I refer to "{result}" as "storage"13µs
And I call "{api}" with "GetServiceAPIWithIdentity" using arguments "object-storage" and "test-user-read"41µs
And "{result}" is not an error17µs
And I attach "{result}" to the test output as "read-storage-service.json"47µs
And I refer to "{result}" as "userStorage"27µs
When I call "{userStorage}" with "ListObjects" using argument "{resource-name}"103ms
Then "{result}" is not an error19µs
And I attach "{result}" to the test output as "read-list-objects-result.json"253µs
📎 Attachments:
read-storage-service.json
View JSON (2 bytes)
{}
read-list-objects-result.json
View JSON (34797 bytes)
[{"ID":"admin-protected-object=1781606736668.txt","BucketID":"ccc-avm-test-container-20260616","Name":"admin-protected-object=1781606736668.txt","Size":15,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"admin-protected-object=1781689160115.txt","BucketID":"ccc-avm-test-container-20260616","Name":"admin-protected-object=1781689160115.txt","Size":15,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"admin-protected-object=1781689627409.txt","BucketID":"ccc-avm-test-container-20260616","Name":"admin-protected-object=1781689627409.txt","Size":15,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"admin-protected-object=1781690469899.txt","BucketID":"ccc-avm-test-container-20260616","Name":"admin-protected-object=1781690469899.txt","Size":15,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"admin-protected-object=1781693010070.txt","BucketID":"ccc-avm-test-container-20260616","Name":"admin-protected-object=1781693010070.txt","Size":15,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"admin-protected-object=1781698996608.txt","BucketID":"ccc-avm-test-container-20260616","Name":"admin-protected-object=1781698996608.txt","Size":15,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"admin-protected-object=1781700399336.txt","BucketID":"ccc-avm-test-container-20260616","Name":"admin-protected-object=1781700399336.txt","Size":15,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"admin-protected-object=1781701913801.txt","BucketID":"ccc-avm-test-container-20260616","Name":"admin-protected-object=1781701913801.txt","Size":15,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"admin-protected-object=1781711296041.txt","BucketID":"ccc-avm-test-container-20260616","Name":"admin-protected-object=1781711296041.txt","Size":15,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"cfi-trigger-data-read-probe.txt","BucketID":"ccc-avm-test-container-20260616","Name":"cfi-trigger-data-read-probe.txt","Size":44,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"cfi-trigger-data-write-1781606756901919062.txt","BucketID":"ccc-avm-test-container-20260616","Name":"cfi-trigger-data-write-1781606756901919062.txt","Size":30,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"cfi-trigger-data-write-1781689180325556333.txt","BucketID":"ccc-avm-test-container-20260616","Name":"cfi-trigger-data-write-1781689180325556333.txt","Size":30,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"cfi-trigger-data-write-1781689646606657708.txt","BucketID":"ccc-avm-test-container-20260616","Name":"cfi-trigger-data-write-1781689646606657708.txt","Size":30,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"cfi-trigger-data-write-1781690490101094375.txt","BucketID":"ccc-avm-test-container-20260616","Name":"cfi-trigger-data-write-1781690490101094375.txt","Size":30,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"cfi-trigger-data-write-1781693030213770469.txt","BucketID":"ccc-avm-test-container-20260616","Name":"cfi-trigger-data-write-1781693030213770469.txt","Size":30,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"cfi-trigger-data-write-1781699017109630675.txt","BucketID":"ccc-avm-test-container-20260616","Name":"cfi-trigger-data-write-1781699017109630675.txt","Size":30,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"cfi-trigger-data-write-1781700420930256741.txt","BucketID":"ccc-avm-test-container-20260616","Name":"cfi-trigger-data-write-1781700420930256741.txt","Size":30,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"cfi-trigger-data-write-1781701935767543640.txt","BucketID":"ccc-avm-test-container-20260616","Name":"cfi-trigger-data-write-1781701935767543640.txt","Size":30,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"cfi-trigger-data-write-1781711317357478279.txt","BucketID":"ccc-avm-test-container-20260616","Name":"cfi-trigger-data-write-1781711317357478279.txt","Size":30,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"immediate-delete-test=1781606734291.txt","BucketID":"ccc-avm-test-container-20260616","Name":"immediate-delete-test=1781606734291.txt","Size":12,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"immediate-delete-test=1781689158039.txt","BucketID":"ccc-avm-test-container-20260616","Name":"immediate-delete-test=1781689158039.txt","Size":12,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"immediate-delete-test=1781689625680.txt","BucketID":"ccc-avm-test-container-20260616","Name":"immediate-delete-test=1781689625680.txt","Size":12,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"immediate-delete-test=1781690467801.txt","BucketID":"ccc-avm-test-container-20260616","Name":"immediate-delete-test=1781690467801.txt","Size":12,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"immediate-delete-test=1781693007830.txt","BucketID":"ccc-avm-test-container-20260616","Name":"immediate-delete-test=1781693007830.txt","Size":12,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"immediate-delete-test=1781698994524.txt","BucketID":"ccc-avm-test-container-20260616","Name":"immediate-delete-test=1781698994524.txt","Size":12,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"immediate-delete-test=1781700396936.txt","BucketID":"ccc-avm-test-container-20260616","Name":"immediate-delete-test=1781700396936.txt","Size":12,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"immediate-delete-test=1781701911274.txt","BucketID":"ccc-avm-test-container-20260616","Name":"immediate-delete-test=1781701911274.txt","Size":12,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"immediate-delete-test=1781711293585.txt","BucketID":"ccc-avm-test-container-20260616","Name":"immediate-delete-test=1781711293585.txt","Size":12,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"list-deleted-versions-object=1781606742728.txt","BucketID":"ccc-avm-test-container-20260616","Name":"list-deleted-versions-object=1781606742728.txt","Size":14,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"list-deleted-versions-object=1781689166760.txt","BucketID":"ccc-avm-test-container-20260616","Name":"list-deleted-versions-object=1781689166760.txt","Size":14,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"list-deleted-versions-object=1781689632900.txt","BucketID":"ccc-avm-test-container-20260616","Name":"list-deleted-versions-object=1781689632900.txt","Size":14,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"list-deleted-versions-object=1781690476119.txt","BucketID":"ccc-avm-test-container-20260616","Name":"list-deleted-versions-object=1781690476119.txt","Size":14,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"list-deleted-versions-object=1781693017127.txt","BucketID":"ccc-avm-test-container-20260616","Name":"list-deleted-versions-object=1781693017127.txt","Size":14,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"list-deleted-versions-object=1781699003343.txt","BucketID":"ccc-avm-test-container-20260616","Name":"list-deleted-versions-object=1781699003343.txt","Size":14,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"list-deleted-versions-object=1781700407105.txt","BucketID":"ccc-avm-test-container-20260616","Name":"list-deleted-versions-object=1781700407105.txt","Size":14,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"list-deleted-versions-object=1781701921808.txt","BucketID":"ccc-avm-test-container-20260616","Name":"list-deleted-versions-object=1781701921808.txt","Size":14,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"list-deleted-versions-object=1781711303565.txt","BucketID":"ccc-avm-test-container-20260616","Name":"list-deleted-versions-object=1781711303565.txt","Size":14,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"modify-test-object=1781606737471.txt","BucketID":"ccc-avm-test-container-20260616","Name":"modify-test-object=1781606737471.txt","Size":16,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"modify-test-object=1781693010909.txt","BucketID":"ccc-avm-test-container-20260616","Name":"modify-test-object=1781693010909.txt","Size":16,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"modify-test-object=1781698997439.txt","BucketID":"ccc-avm-test-container-20260616","Name":"modify-test-object=1781698997439.txt","Size":16,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"modify-test-object=1781700400210.txt","BucketID":"ccc-avm-test-container-20260616","Name":"modify-test-object=1781700400210.txt","Size":16,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"modify-test-object=1781701914693.txt","BucketID":"ccc-avm-test-container-20260616","Name":"modify-test-object=1781701914693.txt","Size":16,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"modify-test-object=1781711296938.txt","BucketID":"ccc-avm-test-container-20260616","Name":"modify-test-object=1781711296938.txt","Size":16,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"protected-object=1781606736601.txt","BucketID":"ccc-avm-test-container-20260616","Name":"protected-object=1781606736601.txt","Size":14,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"protected-object=1781693009949.txt","BucketID":"ccc-avm-test-container-20260616","Name":"protected-object=1781693009949.txt","Size":14,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"protected-object=1781698996549.txt","BucketID":"ccc-avm-test-container-20260616","Name":"protected-object=1781698996549.txt","Size":14,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"protected-object=1781700399175.txt","BucketID":"ccc-avm-test-container-20260616","Name":"protected-object=1781700399175.txt","Size":14,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"protected-object=1781701913582.txt","BucketID":"ccc-avm-test-container-20260616","Name":"protected-object=1781701913582.txt","Size":14,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"protected-object=1781711295884.txt","BucketID":"ccc-avm-test-container-20260616","Name":"protected-object=1781711295884.txt","Size":14,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"readable-protected-object=1781606737571.txt","BucketID":"ccc-avm-test-container-20260616","Name":"readable-protected-object=1781606737571.txt","Size":13,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"readable-protected-object=1781689160996.txt","BucketID":"ccc-avm-test-container-20260616","Name":"readable-protected-object=1781689160996.txt","Size":13,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"readable-protected-object=1781689628123.txt","BucketID":"ccc-avm-test-container-20260616","Name":"readable-protected-object=1781689628123.txt","Size":13,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"readable-protected-object=1781690470702.txt","BucketID":"ccc-avm-test-container-20260616","Name":"readable-protected-object=1781690470702.txt","Size":13,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"readable-protected-object=1781693011078.txt","BucketID":"ccc-avm-test-container-20260616","Name":"readable-protected-object=1781693011078.txt","Size":13,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"readable-protected-object=1781698997556.txt","BucketID":"ccc-avm-test-container-20260616","Name":"readable-protected-object=1781698997556.txt","Size":13,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"readable-protected-object=1781700400453.txt","BucketID":"ccc-avm-test-container-20260616","Name":"readable-protected-object=1781700400453.txt","Size":13,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"readable-protected-object=1781701914931.txt","BucketID":"ccc-avm-test-container-20260616","Name":"readable-protected-object=1781701914931.txt","Size":13,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"readable-protected-object=1781711297179.txt","BucketID":"ccc-avm-test-container-20260616","Name":"readable-protected-object=1781711297179.txt","Size":13,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"recover-deleted-object=1781606741548.txt","BucketID":"ccc-avm-test-container-20260616","Name":"recover-deleted-object=1781606741548.txt","Size":14,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"recover-deleted-object=1781689165511.txt","BucketID":"ccc-avm-test-container-20260616","Name":"recover-deleted-object=1781689165511.txt","Size":14,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"recover-deleted-object=1781689631883.txt","BucketID":"ccc-avm-test-container-20260616","Name":"recover-deleted-object=1781689631883.txt","Size":14,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"recover-deleted-object=1781690474964.txt","BucketID":"ccc-avm-test-container-20260616","Name":"recover-deleted-object=1781690474964.txt","Size":14,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"recover-deleted-object=1781693015868.txt","BucketID":"ccc-avm-test-container-20260616","Name":"recover-deleted-object=1781693015868.txt","Size":14,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"recover-deleted-object=1781699002161.txt","BucketID":"ccc-avm-test-container-20260616","Name":"recover-deleted-object=1781699002161.txt","Size":14,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"recover-deleted-object=1781700405726.txt","BucketID":"ccc-avm-test-container-20260616","Name":"recover-deleted-object=1781700405726.txt","Size":14,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"recover-deleted-object=1781701920476.txt","BucketID":"ccc-avm-test-container-20260616","Name":"recover-deleted-object=1781701920476.txt","Size":14,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"recover-deleted-object=1781711302198.txt","BucketID":"ccc-avm-test-container-20260616","Name":"recover-deleted-object=1781711302198.txt","Size":14,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"retention-period-test=1781606735411.txt","BucketID":"ccc-avm-test-container-20260616","Name":"retention-period-test=1781606735411.txt","Size":15,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"retention-period-test=1781689158852.txt","BucketID":"ccc-avm-test-container-20260616","Name":"retention-period-test=1781689158852.txt","Size":15,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"retention-period-test=1781689626367.txt","BucketID":"ccc-avm-test-container-20260616","Name":"retention-period-test=1781689626367.txt","Size":15,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"retention-period-test=1781690468647.txt","BucketID":"ccc-avm-test-container-20260616","Name":"retention-period-test=1781690468647.txt","Size":15,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"retention-period-test=1781693008672.txt","BucketID":"ccc-avm-test-container-20260616","Name":"retention-period-test=1781693008672.txt","Size":15,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"retention-period-test=1781698995312.txt","BucketID":"ccc-avm-test-container-20260616","Name":"retention-period-test=1781698995312.txt","Size":15,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"retention-period-test=1781700397816.txt","BucketID":"ccc-avm-test-container-20260616","Name":"retention-period-test=1781700397816.txt","Size":15,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"retention-period-test=1781701912158.txt","BucketID":"ccc-avm-test-container-20260616","Name":"retention-period-test=1781701912158.txt","Size":15,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"retention-period-test=1781711294524.txt","BucketID":"ccc-avm-test-container-20260616","Name":"retention-period-test=1781711294524.txt","Size":15,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"test-cn05-authorized-modify=1781606726938.txt","BucketID":"ccc-avm-test-container-20260616","Name":"test-cn05-authorized-modify=1781606726938.txt","Size":15,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"test-cn05-authorized-modify=1781693000654.txt","BucketID":"ccc-avm-test-container-20260616","Name":"test-cn05-authorized-modify=1781693000654.txt","Size":15,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"test-cn05-authorized-modify=1781698987116.txt","BucketID":"ccc-avm-test-container-20260616","Name":"test-cn05-authorized-modify=1781698987116.txt","Size":15,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"test-cn05-authorized-modify=1781700386749.txt","BucketID":"ccc-avm-test-container-20260616","Name":"test-cn05-authorized-modify=1781700386749.txt","Size":15,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"test-cn05-authorized-modify=1781701901730.txt","BucketID":"ccc-avm-test-container-20260616","Name":"test-cn05-authorized-modify=1781701901730.txt","Size":15,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"test-cn05-authorized-modify=1781711284428.txt","BucketID":"ccc-avm-test-container-20260616","Name":"test-cn05-authorized-modify=1781711284428.txt","Size":15,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"test-cn05-authorized-modify=1781796487087.txt","BucketID":"ccc-avm-test-container-20260616","Name":"test-cn05-authorized-modify=1781796487087.txt","Size":15,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"test-encryption-check=1781606725969.txt","BucketID":"ccc-avm-test-container-20260616","Name":"test-encryption-check=1781606725969.txt","Size":20,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"test-encryption-check=1781689150628.txt","BucketID":"ccc-avm-test-container-20260616","Name":"test-encryption-check=1781689150628.txt","Size":20,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"test-encryption-check=1781689619957.txt","BucketID":"ccc-avm-test-container-20260616","Name":"test-encryption-check=1781689619957.txt","Size":20,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"test-encryption-check=1781690461262.txt","BucketID":"ccc-avm-test-container-20260616","Name":"test-encryption-check=1781690461262.txt","Size":20,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"test-encryption-check=1781692999914.txt","BucketID":"ccc-avm-test-container-20260616","Name":"test-encryption-check=1781692999914.txt","Size":20,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"test-encryption-check=1781698986341.txt","BucketID":"ccc-avm-test-container-20260616","Name":"test-encryption-check=1781698986341.txt","Size":20,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"test-encryption-check=1781700385676.txt","BucketID":"ccc-avm-test-container-20260616","Name":"test-encryption-check=1781700385676.txt","Size":20,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"test-encryption-check=1781701900614.txt","BucketID":"ccc-avm-test-container-20260616","Name":"test-encryption-check=1781701900614.txt","Size":20,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"test-encryption-check=1781711283329.txt","BucketID":"ccc-avm-test-container-20260616","Name":"test-encryption-check=1781711283329.txt","Size":20,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"test-encryption-check=1781796486362.txt","BucketID":"ccc-avm-test-container-20260616","Name":"test-encryption-check=1781796486362.txt","Size":20,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"test-object=1781606729380.txt","BucketID":"ccc-avm-test-container-20260616","Name":"test-object=1781606729380.txt","Size":12,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"test-object=1781606729803.txt","BucketID":"ccc-avm-test-container-20260616","Name":"test-object=1781606729803.txt","Size":12,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"test-object=1781606730807.txt","BucketID":"ccc-avm-test-container-20260616","Name":"test-object=1781606730807.txt","Size":9,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"test-object=1781606731292.txt","BucketID":"ccc-avm-test-container-20260616","Name":"test-object=1781606731292.txt","Size":9,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"test-object=1781689153489.txt","BucketID":"ccc-avm-test-container-20260616","Name":"test-object=1781689153489.txt","Size":12,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"test-object=1781689153919.txt","BucketID":"ccc-avm-test-container-20260616","Name":"test-object=1781689153919.txt","Size":12,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"test-object=1781689154496.txt","BucketID":"ccc-avm-test-container-20260616","Name":"test-object=1781689154496.txt","Size":9,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"test-object=1781689154936.txt","BucketID":"ccc-avm-test-container-20260616","Name":"test-object=1781689154936.txt","Size":9,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"test-object=1781689621619.txt","BucketID":"ccc-avm-test-container-20260616","Name":"test-object=1781689621619.txt","Size":12,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"test-object=1781689621998.txt","BucketID":"ccc-avm-test-container-20260616","Name":"test-object=1781689621998.txt","Size":12,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"test-object=1781689622547.txt","BucketID":"ccc-avm-test-container-20260616","Name":"test-object=1781689622547.txt","Size":9,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"test-object=1781689622923.txt","BucketID":"ccc-avm-test-container-20260616","Name":"test-object=1781689622923.txt","Size":9,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"test-object=1781690463400.txt","BucketID":"ccc-avm-test-container-20260616","Name":"test-object=1781690463400.txt","Size":12,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"test-object=1781690463832.txt","BucketID":"ccc-avm-test-container-20260616","Name":"test-object=1781690463832.txt","Size":12,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"test-object=1781690464506.txt","BucketID":"ccc-avm-test-container-20260616","Name":"test-object=1781690464506.txt","Size":9,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"test-object=1781690464931.txt","BucketID":"ccc-avm-test-container-20260616","Name":"test-object=1781690464931.txt","Size":9,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"test-object=1781693002224.txt","BucketID":"ccc-avm-test-container-20260616","Name":"test-object=1781693002224.txt","Size":12,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"test-object=1781693002692.txt","BucketID":"ccc-avm-test-container-20260616","Name":"test-object=1781693002692.txt","Size":12,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"test-object=1781693003877.txt","BucketID":"ccc-avm-test-container-20260616","Name":"test-object=1781693003877.txt","Size":9,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"test-object=1781693004473.txt","BucketID":"ccc-avm-test-container-20260616","Name":"test-object=1781693004473.txt","Size":9,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"test-object=1781698989776.txt","BucketID":"ccc-avm-test-container-20260616","Name":"test-object=1781698989776.txt","Size":12,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"test-object=1781698990208.txt","BucketID":"ccc-avm-test-container-20260616","Name":"test-object=1781698990208.txt","Size":12,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"test-object=1781698991199.txt","BucketID":"ccc-avm-test-container-20260616","Name":"test-object=1781698991199.txt","Size":9,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"test-object=1781698991667.txt","BucketID":"ccc-avm-test-container-20260616","Name":"test-object=1781698991667.txt","Size":9,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"test-object=1781700389625.txt","BucketID":"ccc-avm-test-container-20260616","Name":"test-object=1781700389625.txt","Size":12,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"test-object=1781700390139.txt","BucketID":"ccc-avm-test-container-20260616","Name":"test-object=1781700390139.txt","Size":12,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"test-object=1781700391805.txt","BucketID":"ccc-avm-test-container-20260616","Name":"test-object=1781700391805.txt","Size":9,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"test-object=1781700392673.txt","BucketID":"ccc-avm-test-container-20260616","Name":"test-object=1781700392673.txt","Size":9,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"test-object=1781701904914.txt","BucketID":"ccc-avm-test-container-20260616","Name":"test-object=1781701904914.txt","Size":12,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"test-object=1781701905436.txt","BucketID":"ccc-avm-test-container-20260616","Name":"test-object=1781701905436.txt","Size":12,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"test-object=1781701906971.txt","BucketID":"ccc-avm-test-container-20260616","Name":"test-object=1781701906971.txt","Size":9,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"test-object=1781701907572.txt","BucketID":"ccc-avm-test-container-20260616","Name":"test-object=1781701907572.txt","Size":9,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"test-object=1781711287121.txt","BucketID":"ccc-avm-test-container-20260616","Name":"test-object=1781711287121.txt","Size":12,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"test-object=1781711287640.txt","BucketID":"ccc-avm-test-container-20260616","Name":"test-object=1781711287640.txt","Size":12,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"test-object=1781711289015.txt","BucketID":"ccc-avm-test-container-20260616","Name":"test-object=1781711289015.txt","Size":9,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"test-object=1781711289626.txt","BucketID":"ccc-avm-test-container-20260616","Name":"test-object=1781711289626.txt","Size":9,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"test-retention-object=1781606734201.txt","BucketID":"ccc-avm-test-container-20260616","Name":"test-retention-object=1781606734201.txt","Size":14,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"test-retention-object=1781693007623.txt","BucketID":"ccc-avm-test-container-20260616","Name":"test-retention-object=1781693007623.txt","Size":14,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"test-retention-object=1781698994437.txt","BucketID":"ccc-avm-test-container-20260616","Name":"test-retention-object=1781698994437.txt","Size":14,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"test-retention-object=1781700396656.txt","BucketID":"ccc-avm-test-container-20260616","Name":"test-retention-object=1781700396656.txt","Size":14,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"test-retention-object=1781701911038.txt","BucketID":"ccc-avm-test-container-20260616","Name":"test-retention-object=1781701911038.txt","Size":14,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"test-retention-object=1781711293347.txt","BucketID":"ccc-avm-test-container-20260616","Name":"test-retention-object=1781711293347.txt","Size":14,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"test-write-object=1781606730768.txt","BucketID":"ccc-avm-test-container-20260616","Name":"test-write-object=1781606730768.txt","Size":12,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"test-write-object=1781693003819.txt","BucketID":"ccc-avm-test-container-20260616","Name":"test-write-object=1781693003819.txt","Size":12,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"test-write-object=1781698991163.txt","BucketID":"ccc-avm-test-container-20260616","Name":"test-write-object=1781698991163.txt","Size":12,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"test-write-object=1781700391723.txt","BucketID":"ccc-avm-test-container-20260616","Name":"test-write-object=1781700391723.txt","Size":12,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"test-write-object=1781701906888.txt","BucketID":"ccc-avm-test-container-20260616","Name":"test-write-object=1781701906888.txt","Size":12,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"test-write-object=1781711288929.txt","BucketID":"ccc-avm-test-container-20260616","Name":"test-write-object=1781711288929.txt","Size":12,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"version-test-object=1781606738398.txt","BucketID":"ccc-avm-test-container-20260616","Name":"version-test-object=1781606738398.txt","Size":16,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"version-test-object=1781606739580.txt","BucketID":"ccc-avm-test-container-20260616","Name":"version-test-object=1781606739580.txt","Size":16,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"version-test-object=1781689162248.txt","BucketID":"ccc-avm-test-container-20260616","Name":"version-test-object=1781689162248.txt","Size":16,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"version-test-object=1781689163460.txt","BucketID":"ccc-avm-test-container-20260616","Name":"version-test-object=1781689163460.txt","Size":16,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"version-test-object=1781689629182.txt","BucketID":"ccc-avm-test-container-20260616","Name":"version-test-object=1781689629182.txt","Size":16,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"version-test-object=1781689630204.txt","BucketID":"ccc-avm-test-container-20260616","Name":"version-test-object=1781689630204.txt","Size":16,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"version-test-object=1781690471896.txt","BucketID":"ccc-avm-test-container-20260616","Name":"version-test-object=1781690471896.txt","Size":16,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"version-test-object=1781690473042.txt","BucketID":"ccc-avm-test-container-20260616","Name":"version-test-object=1781690473042.txt","Size":16,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"version-test-object=1781693012478.txt","BucketID":"ccc-avm-test-container-20260616","Name":"version-test-object=1781693012478.txt","Size":16,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"version-test-object=1781693013738.txt","BucketID":"ccc-avm-test-container-20260616","Name":"version-test-object=1781693013738.txt","Size":16,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"version-test-object=1781698998966.txt","BucketID":"ccc-avm-test-container-20260616","Name":"version-test-object=1781698998966.txt","Size":16,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"version-test-object=1781699000202.txt","BucketID":"ccc-avm-test-container-20260616","Name":"version-test-object=1781699000202.txt","Size":16,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"version-test-object=1781700401862.txt","BucketID":"ccc-avm-test-container-20260616","Name":"version-test-object=1781700401862.txt","Size":16,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"version-test-object=1781700403185.txt","BucketID":"ccc-avm-test-container-20260616","Name":"version-test-object=1781700403185.txt","Size":16,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"version-test-object=1781701916671.txt","BucketID":"ccc-avm-test-container-20260616","Name":"version-test-object=1781701916671.txt","Size":16,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"version-test-object=1781701918136.txt","BucketID":"ccc-avm-test-container-20260616","Name":"version-test-object=1781701918136.txt","Size":16,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"version-test-object=1781711298615.txt","BucketID":"ccc-avm-test-container-20260616","Name":"version-test-object=1781711298615.txt","Size":16,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"version-test-object=1781711299959.txt","BucketID":"ccc-avm-test-container-20260616","Name":"version-test-object=1781711299959.txt","Size":16,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""},{"ID":"versioned-object.txt","BucketID":"ccc-avm-test-container-20260616","Name":"versioned-object.txt","Size":12,"Data":null,"Encryption":"","EncryptionAlgorithm":"","VersionID":""}]
Feature: CCC.ObjStor.CN01.AR02
Scenario: Service prevents reading object with no access @CCC.ObjStor @CCC.ObjStor.CN01 @PerService @object-storage @tlp-amber @tlp-red @Behavioural
Given a cloud api for "{config}" in "api"39µs
And I call "{api}" with "GetServiceAPI" using argument "object-storage"34µs
And I refer to "{result}" as "storage"21µs
And I call "{storage}" with "CreateObject" using arguments "{resource-name}", "test-object={timestamp}.txt", and "test content"396ms
And "{result}" is not an error39µs
And I call "{api}" with "GetServiceAPIWithIdentity" using arguments "object-storage" and "test-user-no-access"89µs
And "{result}" is not an error26µs
And I refer to "{result}" as "userStorage"22µs
When I call "{userStorage}" with "ReadObject" using arguments "{resource-name}" and "test-object={timestamp}.txt"24ms
Then "{result}" is an error37µs
And I attach "{result}" to the test output as "no-access-read-object-error.txt"35µs
📎 Attachments:
no-access-read-object-error.txt
View Content (832 bytes)
failed to download blob test-object=1781796489325.txt: GET https://avmstor20260616.blob.core.windows.net/ccc-avm-test-container-20260616/test-object=1781796489325.txt
--------------------------------------------------------------------------------
RESPONSE 403: 403 This request is not authorized to perform this operation using this permission.
ERROR CODE: AuthorizationPermissionMismatch
--------------------------------------------------------------------------------
AuthorizationPermissionMismatchThis request is not authorized to perform this operation using this permission.
RequestId:8876211a-c01e-008d-2037-ff1ecb000000
Time:2026-06-18T15:28:09.7353820Z
--------------------------------------------------------------------------------
Scenario: Service allows reading object with read access @CCC.ObjStor @CCC.ObjStor.CN01 @PerService @object-storage @tlp-amber @tlp-red @Behavioural
Given a cloud api for "{config}" in "api"34µs
And I call "{api}" with "GetServiceAPI" using argument "object-storage"40µs
And I refer to "{result}" as "storage"25µs
And I call "{storage}" with "CreateObject" using arguments "{resource-name}", "test-object={timestamp}.txt", and "test content"391ms
And "{result}" is not an error27µs
And I call "{api}" with "GetServiceAPIWithIdentity" using arguments "object-storage" and "test-user-read"52µs
And "{result}" is not an error19µs
And I attach "{result}" to the test output as "read-storage-service.json"41µs
And I refer to "{result}" as "userStorage"17µs
When I call "{userStorage}" with "ReadObject" using arguments "{resource-name}" and "test-object={timestamp}.txt"31ms
Then "{result}" is not an error36µs
And I attach "{result}" to the test output as "read-read-object-result.json"37µs
📎 Attachments:
read-storage-service.json
View JSON (2 bytes)
{}
read-read-object-result.json
View JSON (212 bytes)
{"ID":"test-object=1781796489747.txt","BucketID":"ccc-avm-test-container-20260616","Name":"test-object=1781796489747.txt","Size":12,"Data":["test content"],"Encryption":"","EncryptionAlgorithm":"","VersionID":""}
Feature: CCC.ObjStor.CN01.AR03
Scenario: Service prevents creating bucket with no access @CCC.ObjStor @CCC.ObjStor.CN01 @PerService @object-storage @tlp-amber @tlp-clear @tlp-green @tlp-red @Behavioural
Given a cloud api for "{config}" in "api"34µs
And I call "{api}" with "GetServiceAPI" using argument "object-storage"41µs
And I refer to "{result}" as "storage"26µs
And I call "{api}" with "GetServiceAPIWithIdentity" using arguments "object-storage" and "test-user-no-access"44µs
And "{result}" is not an error30µs
And I refer to "{result}" as "userStorage"22µs
When I call "{userStorage}" with "CreateBucket" using argument "test-bucket-no-access"24ms
Then "{result}" is an error43µs
And I attach "{result}" to the test output as "no-access-create-bucket-error.txt"47µs
📎 Attachments:
no-access-create-bucket-error.txt
View Content (749 bytes)
failed to create container: failed to create container test-bucket-no-access: PUT https://avmstor20260616.blob.core.windows.net/test-bucket-no-access
--------------------------------------------------------------------------------
RESPONSE 403: 403 This request is not authorized to perform this operation.
ERROR CODE: AuthorizationFailure
--------------------------------------------------------------------------------
AuthorizationFailureThis request is not authorized to perform this operation.
RequestId:887622b2-c01e-008d-7137-ff1ecb000000
Time:2026-06-18T15:28:10.1841313Z
--------------------------------------------------------------------------------
Scenario: Service allows creating bucket with write access @CCC.ObjStor @CCC.ObjStor.CN01 @PerService @object-storage @tlp-amber @tlp-clear @tlp-green @tlp-red @Behavioural
Given a cloud api for "{config}" in "api"39µs
And I call "{api}" with "GetServiceAPI" using argument "object-storage"34µs
And I refer to "{result}" as "storage"18µs
And I call "{api}" with "GetServiceAPIWithIdentity" using arguments "object-storage" and "test-user-write"28µs
And "{result}" is not an error18µs
And I attach "{result}" to the test output as "write-storage-service.json"42µs
And I refer to "{result}" as "userStorage"23µs
When I call "{userStorage}" with "CreateBucket" using argument "test-bucket-write"37ms
Then "{result}" is not an error43µs
And I attach "{result}" to the test output as "write-create-bucket-result.json"53µs
And I call "{storage}" with "DeleteBucket" using argument "{result.ID}"391ms
📎 Attachments:
write-storage-service.json
View JSON (2 bytes)
{}
write-create-bucket-result.json
View JSON (72 bytes)
{"ID":"test-bucket-write","Name":"test-bucket-write","Region":"westus2"}
Feature: CCC.ObjStor.CN01.AR04
Scenario: Service prevents writing object with read-only access @CCC.ObjStor @CCC.ObjStor.CN01 @PerService @object-storage @tlp-amber @tlp-clear @tlp-green @tlp-red @Behavioural
Given a cloud api for "{config}" in "api"72µs
And I call "{api}" with "GetServiceAPI" using argument "object-storage"60µs
And I refer to "{result}" as "storage"34µs
And "{result}" is not an error41µs
And I call "{api}" with "GetServiceAPIWithIdentity" using arguments "object-storage" and "test-user-read"63µs
And "{result}" is not an error84µs
And I refer to "{result}" as "userStorage"39µs
When I call "{userStorage}" with "CreateObject" using arguments "{resource-name}", "test-write-object={timestamp}.txt", and "test content"27ms
Then "{result}" is an error19µs
And I attach "{result}" to the test output as "read-create-object-error.txt"24µs
📎 Attachments:
read-create-object-error.txt
View Content (842 bytes)
failed to upload blob test-write-object=1781796490625.txt: PUT https://avmstor20260616.blob.core.windows.net/ccc-avm-test-container-20260616/test-write-object=1781796490625.txt
--------------------------------------------------------------------------------
RESPONSE 403: 403 This request is not authorized to perform this operation using this permission.
ERROR CODE: AuthorizationPermissionMismatch
--------------------------------------------------------------------------------
AuthorizationPermissionMismatchThis request is not authorized to perform this operation using this permission.
RequestId:8876248f-c01e-008d-1637-ff1ecb000000
Time:2026-06-18T15:28:10.6421912Z
--------------------------------------------------------------------------------
Scenario: Service allows writing object with write access @CCC.ObjStor @CCC.ObjStor.CN01 @PerService @object-storage @tlp-amber @tlp-clear @tlp-green @tlp-red @Behavioural
Given a cloud api for "{config}" in "api"26µs
And I call "{api}" with "GetServiceAPI" using argument "object-storage"33µs
And I refer to "{result}" as "storage"23µs
And "{result}" is not an error48µs
And I call "{api}" with "GetServiceAPIWithIdentity" using arguments "object-storage" and "test-user-write"26µs
And "{result}" is not an error16µs
And I attach "{result}" to the test output as "write-storage-service.json"26µs
And I refer to "{result}" as "userStorage"20µs
When I call "{userStorage}" with "CreateObject" using arguments "{resource-name}", "test-write-object={timestamp}.txt", and "test content"34ms
Then "{result}" is not an error24µs
And I attach "{result}" to the test output as "write-create-object-result.json"40µs
📎 Attachments:
write-storage-service.json
View JSON (2 bytes)
{}
write-create-object-result.json
View JSON (267 bytes)
{"ID":"test-write-object=1781796490653.txt","BucketID":"ccc-avm-test-container-20260616","Name":"test-write-object=1781796490653.txt","Size":12,"Data":["test content"],"Encryption":"Microsoft","EncryptionAlgorithm":"AES256","VersionID":"2026-06-18T15:28:10.6690357Z"}
Feature: CCC.ObjStor.CN02.AR01 - Uniform Bucket-Level Access (Consistent Allow)
Scenario: Service enforces uniform bucket-level access by rejecting object-level permissions @CCC.ObjStor @CCC.ObjStor.CN02 @PerService @object-storage @tlp-amber @tlp-red @Behavioural
Given a cloud api for "{config}" in "api"32µs
And I call "{api}" with "GetServiceAPI" using argument "object-storage"33µs
And I refer to "{result}" as "storage"24µs
When I call "{storage}" with "CreateObject" using arguments "{resource-name}", "test-object={timestamp}.txt", and "test data"386ms
Then "{result}" is not an error35µs
And I call "{api}" with "GetServiceAPIWithIdentity" using arguments "object-storage" and "test-user-read"46µs
And "{result}" is not an error22µs
And I refer to "{result}" as "userStorage"18µs
When I call "{userStorage}" with "ReadObject" using arguments "{resource-name}" and "test-object={timestamp}.txt"36ms
Then "{result}" is not an error23µs
When I call "{storage}" with "SetObjectPermission" using arguments "{resource-name}", "test-object={timestamp}.txt", and "none"44µs
Then "{result}" is an error18µs
And I attach "{result}" to the test output as "set-object-permission-error.txt"28µs
When I call "{userStorage}" with "ReadObject" using arguments "{resource-name}" and "test-object={timestamp}.txt"28ms
Then "{result}" is not an error20µs
📎 Attachments:
set-object-permission-error.txt
View Content (111 bytes)
azure Blob Storage does not support object-level permissions - uniform bucket-level access is enforced via RBAC
Feature: CCC.ObjStor.CN02.AR02 - Uniform Bucket-Level Access (Consistent Deny)
Scenario: Service enforces uniform bucket-level access denial @CCC.ObjStor @CCC.ObjStor.CN02 @PerService @object-storage @tlp-amber @tlp-red @Behavioural
Given a cloud api for "{config}" in "api"39µs
And I call "{api}" with "GetServiceAPI" using argument "object-storage"35µs
And I refer to "{result}" as "storage"13µs
When I call "{storage}" with "CreateObject" using arguments "{resource-name}", "test-object={timestamp}.txt", and "test data"388ms
Then "{result}" is not an error26µs
And I call "{api}" with "GetServiceAPIWithIdentity" using arguments "object-storage" and "test-user-no-access"58µs
And "{result}" is not an error18µs
And I refer to "{result}" as "userStorage"15µs
When I call "{userStorage}" with "ReadObject" using arguments "{resource-name}" and "test-object={timestamp}.txt"24ms
Then "{result}" is an error21µs
When I call "{storage}" with "SetObjectPermission" using arguments "{resource-name}", "test-object={timestamp}.txt", and "read"42µs
Then "{result}" is an error16µs
And I attach "{result}" to the test output as "set-object-permission-error.txt"28µs
When I call "{userStorage}" with "ReadObject" using arguments "{resource-name}" and "test-object={timestamp}.txt"24ms
Then "{result}" is an error25µs
📎 Attachments:
set-object-permission-error.txt
View Content (111 bytes)
azure Blob Storage does not support object-level permissions - uniform bucket-level access is enforced via RBAC
Feature: CCC.ObjStor.CN03.AR01 - Bucket Soft Delete and Recovery
Scenario: Service supports bucket soft delete and recovery @CCC.ObjStor @CCC.ObjStor.CN03 @PerService @object-storage @tlp-amber @tlp-red @Behavioural
Given a cloud api for "{config}" in "api"69µs
And I call "{api}" with "GetServiceAPI" using argument "object-storage"58µs
And I refer to "{result}" as "storage"37µs
When I call "{storage}" with "CreateBucket" using argument "ccc-test-soft-delete"552ms
Then "{result}" is not an error51µs
And I refer to "{result}" as "testBucket"32µs
And I attach "{result}" to the test output as "created-bucket.json"62µs
When I call "{storage}" with "DeleteBucket" using argument "ccc-test-soft-delete"417ms
Then "{result}" is not an error32µs
When I call "{storage}" with "ListDeletedBuckets"407ms
Then "{result}" is not an error25µs
And I attach "{result}" to the test output as "deleted-buckets.json"67µs
And "{result}" is an array of objects with length "1"31µs
expected length 1, got 24
When I call "{storage}" with "RestoreBucket" using argument "ccc-test-soft-delete"28µs
Then "{result}" is not an error25µs
When I call "{storage}" with "ListBuckets"22µs
Then "{result}" is not an error21µs
And I attach "{result}" to the test output as "restored-buckets.json"15µs
When I call "{storage}" with "DeleteBucket" using argument "ccc-test-soft-delete"14µs
Then "{result}" is not an error16µs
📎 Attachments:
created-bucket.json
View JSON (78 bytes)
{"ID":"ccc-test-soft-delete","Name":"ccc-test-soft-delete","Region":"westus2"}
deleted-buckets.json
View JSON (2079 bytes)
[{"ID":"ccc-test-soft-delete","Name":"ccc-test-soft-delete","Region":"westus2"},{"ID":"ccc-test-soft-delete","Name":"ccc-test-soft-delete","Region":"westus2"},{"ID":"ccc-test-soft-delete","Name":"ccc-test-soft-delete","Region":"westus2"},{"ID":"ccc-test-soft-delete","Name":"ccc-test-soft-delete","Region":"westus2"},{"ID":"ccc-test-soft-delete","Name":"ccc-test-soft-delete","Region":"westus2"},{"ID":"ccc-test-soft-delete","Name":"ccc-test-soft-delete","Region":"westus2"},{"ID":"ccc-test-soft-delete","Name":"ccc-test-soft-delete","Region":"westus2"},{"ID":"ccc-test-soft-delete","Name":"ccc-test-soft-delete","Region":"westus2"},{"ID":"ccc-test-soft-delete","Name":"ccc-test-soft-delete","Region":"westus2"},{"ID":"ccc-test-soft-delete","Name":"ccc-test-soft-delete","Region":"westus2"},{"ID":"test-bucket-write","Name":"test-bucket-write","Region":"westus2"},{"ID":"test-bucket-write","Name":"test-bucket-write","Region":"westus2"},{"ID":"test-bucket-write","Name":"test-bucket-write","Region":"westus2"},{"ID":"test-bucket-write","Name":"test-bucket-write","Region":"westus2"},{"ID":"test-bucket-write","Name":"test-bucket-write","Region":"westus2"},{"ID":"test-bucket-write","Name":"test-bucket-write","Region":"westus2"},{"ID":"test-bucket-write","Name":"test-bucket-write","Region":"westus2"},{"ID":"test-cn05-authorized-admin-container","Name":"test-cn05-authorized-admin-container","Region":"westus2"},{"ID":"test-cn05-authorized-admin-container","Name":"test-cn05-authorized-admin-container","Region":"westus2"},{"ID":"test-cn05-authorized-admin-container","Name":"test-cn05-authorized-admin-container","Region":"westus2"},{"ID":"test-cn05-authorized-admin-container","Name":"test-cn05-authorized-admin-container","Region":"westus2"},{"ID":"test-cn05-authorized-admin-container","Name":"test-cn05-authorized-admin-container","Region":"westus2"},{"ID":"test-cn05-authorized-admin-container","Name":"test-cn05-authorized-admin-container","Region":"westus2"},{"ID":"test-cn05-authorized-admin-container","Name":"test-cn05-authorized-admin-container","Region":"westus2"}]
Feature: CCC.ObjStor.CN03.AR02 - Immutable Bucket Retention Policy
Scenario: Service prevents modification of locked retention policy @CCC.ObjStor @CCC.ObjStor.CN03 @PerService @object-storage @tlp-amber @tlp-red @Behavioural
Given a cloud api for "{config}" in "api"40µs
And I call "{api}" with "GetServiceAPI" using argument "object-storage"40µs
And I refer to "{result}" as "storage"22µs
When I call "{storage}" with "GetBucketRetentionDurationDays" using argument "{resource-name}"378ms
Then "{result}" is not an error49µs
And I refer to "{result}" as "originalRetention"33µs
And I attach "{result}" to the test output as "original-retention-days.txt"54µs
And "{result}" should be greater than "0"39µs
When I call "{storage}" with "SetBucketRetentionDurationDays" using arguments "{resource-name}" and "1"862ms
Then "{result}" is an error60µs
expected {result} to be an error, got
And I attach "{result}" to the test output as "set-retention-error.txt"36µs
When I call "{storage}" with "GetBucketRetentionDurationDays" using argument "{resource-name}"38µs
Then "{result}" is not an error35µs
And "{result}" should be greater than "0"35µs
📎 Attachments:
original-retention-days.txt
View JSON (1 bytes)
2
Feature: CCC.ObjStor.CN04.AR01
Scenario: Service applies default retention policy to newly uploaded object @CCC.ObjStor @CCC.ObjStor.CN04 @PerService @object-storage @tlp-amber @tlp-clear @tlp-green @tlp-red @Behavioural
Given a cloud api for "{config}" in "api"31µs
And I call "{api}" with "GetServiceAPI" using argument "object-storage"42µs
And I refer to "{result}" as "storage"25µs
And I call "{api}" with "GetServiceAPIWithIdentity" using arguments "object-storage" and "test-user-write"71µs
And "{result}" is not an error26µs
And I refer to "{result}" as "userStorage"22µs
When I call "{userStorage}" with "CreateObject" using arguments "{resource-name}", "test-retention-object={timestamp}.txt", and "protected data"42ms
And I attach "{result}" to the test output as "uploaded-object.json"67µs
And I call "{userStorage}" with "GetObjectRetentionDurationDays" using arguments "{resource-name}" and "test-retention-object={timestamp}.txt"53ms
Then "{result}" should be greater than "1"31µs
📎 Attachments:
uploaded-object.json
View JSON (277 bytes)
{"ID":"test-retention-object=1781796494198.txt","BucketID":"ccc-avm-test-container-20260616","Name":"test-retention-object=1781796494198.txt","Size":14,"Data":["protected data"],"Encryption":"Microsoft","EncryptionAlgorithm":"AES256","VersionID":"2026-06-18T15:28:14.2141631Z"}
Scenario: Service enforces retention policy on newly created objects @CCC.ObjStor @CCC.ObjStor.CN04 @PerService @object-storage @tlp-amber @tlp-clear @tlp-green @tlp-red @Behavioural
Given a cloud api for "{config}" in "api"28µs
And I call "{api}" with "GetServiceAPI" using argument "object-storage"21µs
And I refer to "{result}" as "storage"23µs
When I call "{storage}" with "CreateObject" using arguments "{resource-name}", "immediate-delete-test={timestamp}.txt", and "test content"389ms
Then "{result}" is not an error26µs
When I call "{storage}" with "DeleteObject" using arguments "{resource-name}" and "immediate-delete-test={timestamp}.txt"387ms
Then "{result}" is an error29µs
And I attach "{result}" to the test output as "immediate-delete-error.txt"53µs
📎 Attachments:
immediate-delete-error.txt
View Content (827 bytes)
failed to delete blob immediate-delete-test=1781796494295.txt: DELETE https://avmstor20260616.blob.core.windows.net/ccc-avm-test-container-20260616/immediate-delete-test=1781796494295.txt
--------------------------------------------------------------------------------
RESPONSE 409: 409 This operation is not permitted as the blob is immutable due to a policy.
ERROR CODE: BlobImmutableDueToPolicy
--------------------------------------------------------------------------------
BlobImmutableDueToPolicyThis operation is not permitted as the blob is immutable due to a policy.
RequestId:88763732-c01e-008d-7437-ff1ecb000000
Time:2026-06-18T15:28:15.0611441Z
--------------------------------------------------------------------------------
Scenario: Service validates retention period meets minimum requirements @CCC.ObjStor @CCC.ObjStor.CN04 @PerService @object-storage @tlp-amber @tlp-clear @tlp-green @tlp-red @Behavioural
Given a cloud api for "{config}" in "api"77µs
And I call "{api}" with "GetServiceAPI" using argument "object-storage"66µs
And I refer to "{result}" as "storage"44µs
When I call "{storage}" with "CreateObject" using arguments "{resource-name}", "retention-period-test={timestamp}.txt", and "compliance data"384ms
And I call "{storage}" with "GetObjectRetentionDurationDays" using arguments "{resource-name}" and "retention-period-test={timestamp}.txt"773ms
Then "{result}" should be greater than "1"49µs
And I attach "{result}" to the test output as "retention-period-days.json"56µs
📎 Attachments:
retention-period-days.json
View JSON (1 bytes)
2
Feature: CCC.ObjStor.CN04.AR02
Scenario: Service prevents object deletion by write user during retention period @CCC.ObjStor @CCC.ObjStor.CN04 @PerService @object-storage @tlp-amber @tlp-clear @tlp-green @tlp-red @Behavioural
Given a cloud api for "{config}" in "api"52µs
And I call "{api}" with "GetServiceAPI" using argument "object-storage"39µs
And I refer to "{result}" as "storage"28µs
And I call "{api}" with "GetServiceAPIWithIdentity" using arguments "object-storage" and "test-user-write"50µs
And "{result}" is not an error30µs
And I refer to "{result}" as "userStorage"25µs
When I call "{userStorage}" with "CreateObject" using arguments "{resource-name}", "protected-object={timestamp}.txt", and "immutable data"131ms
Then "{result}" is not an error30µs
And I attach "{result}" to the test output as "protected-object.json"61µs
When I call "{userStorage}" with "DeleteObject" using arguments "{resource-name}" and "protected-object={timestamp}.txt"27ms
Then "{result}" is an error31µs
And I attach "{result}" to the test output as "delete-protected-error.txt"39µs
And "{result}" should contain one of "retention, locked, immutable, protected"47µs
📎 Attachments:
protected-object.json
View JSON (267 bytes)
{"ID":"protected-object=1781796496233.txt","BucketID":"ccc-avm-test-container-20260616","Name":"protected-object=1781796496233.txt","Size":14,"Data":["immutable data"],"Encryption":"Microsoft","EncryptionAlgorithm":"AES256","VersionID":"2026-06-18T15:28:16.2517048Z"}
delete-protected-error.txt
View Content (817 bytes)
failed to delete blob protected-object=1781796496233.txt: DELETE https://avmstor20260616.blob.core.windows.net/ccc-avm-test-container-20260616/protected-object=1781796496233.txt
--------------------------------------------------------------------------------
RESPONSE 409: 409 This operation is not permitted as the blob is immutable due to a policy.
ERROR CODE: BlobImmutableDueToPolicy
--------------------------------------------------------------------------------
BlobImmutableDueToPolicyThis operation is not permitted as the blob is immutable due to a policy.
RequestId:88763c36-c01e-008d-4537-ff1ecb000000
Time:2026-06-18T15:28:16.3811141Z
--------------------------------------------------------------------------------
Scenario: Service prevents object deletion by admin user during retention period @CCC.ObjStor @CCC.ObjStor.CN04 @PerService @object-storage @tlp-amber @tlp-clear @tlp-green @tlp-red @Behavioural
Given a cloud api for "{config}" in "api"44µs
And I call "{api}" with "GetServiceAPI" using argument "object-storage"33µs
And I refer to "{result}" as "storage"16µs
When I call "{storage}" with "CreateObject" using arguments "{resource-name}", "admin-protected-object={timestamp}.txt", and "compliance data"383ms
Then "{result}" is not an error30µs
When I call "{storage}" with "DeleteObject" using arguments "{resource-name}" and "admin-protected-object={timestamp}.txt"380ms
Then "{result}" is an error57µs
And I attach "{result}" to the test output as "admin-delete-protected-error.txt"53µs
📎 Attachments:
admin-delete-protected-error.txt
View Content (829 bytes)
failed to delete blob admin-protected-object=1781796496393.txt: DELETE https://avmstor20260616.blob.core.windows.net/ccc-avm-test-container-20260616/admin-protected-object=1781796496393.txt
--------------------------------------------------------------------------------
RESPONSE 409: 409 This operation is not permitted as the blob is immutable due to a policy.
ERROR CODE: BlobImmutableDueToPolicy
--------------------------------------------------------------------------------
BlobImmutableDueToPolicyThis operation is not permitted as the blob is immutable due to a policy.
RequestId:88763ff0-c01e-008d-0437-ff1ecb000000
Time:2026-06-18T15:28:17.1449207Z
--------------------------------------------------------------------------------
Scenario: Service prevents object modification during retention period @CCC.ObjStor @CCC.ObjStor.CN04 @PerService @object-storage @tlp-amber @tlp-clear @tlp-green @tlp-red @Behavioural
Given a cloud api for "{config}" in "api"48µs
And I call "{api}" with "GetServiceAPI" using argument "object-storage"43µs
And I refer to "{result}" as "storage"25µs
And I call "{api}" with "GetServiceAPIWithIdentity" using arguments "object-storage" and "test-user-write"49µs
And "{result}" is not an error26µs
And I refer to "{result}" as "userStorage"22µs
When I call "{userStorage}" with "CreateObject" using arguments "{resource-name}", "modify-test-object={timestamp}.txt", and "original content"35ms
Then "{result}" is not an error22µs
And I attach "{result}" to the test output as "original-object.json"33µs
When I call "{userStorage}" with "CreateObject" using arguments "{resource-name}", "modify-test-object={timestamp}.txt", and "modified content"61ms
Then "{result}" is an error26µs
expected {result} to be an error, got *objstorage.Object
And I attach "{result}" to the test output as "modify-protected-error.txt"20µs
And "{result}" should contain one of "retention, locked, immutable, protected, exists"26µs
📎 Attachments:
original-object.json
View JSON (273 bytes)
{"ID":"modify-test-object=1781796497157.txt","BucketID":"ccc-avm-test-container-20260616","Name":"modify-test-object=1781796497157.txt","Size":16,"Data":["original content"],"Encryption":"Microsoft","EncryptionAlgorithm":"AES256","VersionID":"2026-06-18T15:28:17.1767693Z"}
Scenario: Service allows object read access during retention period @CCC.ObjStor @CCC.ObjStor.CN04 @PerService @object-storage @tlp-amber @tlp-clear @tlp-green @tlp-red @Behavioural
Given a cloud api for "{config}" in "api"32µs
And I call "{api}" with "GetServiceAPI" using argument "object-storage"33µs
And I refer to "{result}" as "storage"25µs
When I call "{storage}" with "CreateObject" using arguments "{resource-name}", "readable-protected-object={timestamp}.txt", and "readable data"421ms
Then "{result}" is not an error30µs
And I call "{api}" with "GetServiceAPIWithIdentity" using arguments "object-storage" and "test-user-read"54µs
And "{result}" is not an error18µs
And I refer to "{result}" as "userStorage"16µs
When I call "{userStorage}" with "ReadObject" using arguments "{resource-name}" and "readable-protected-object={timestamp}.txt"30ms
Then "{result}" is not an error40µs
And I refer to "{result}" as "readResult"24µs
And I attach "{result}" to the test output as "read-protected-object.json"60µs
And "{readResult.Name}" is "readable-protected-object={timestamp}.txt"53µs
📎 Attachments:
read-protected-object.json
View JSON (241 bytes)
{"ID":"readable-protected-object=1781796497254.txt","BucketID":"ccc-avm-test-container-20260616","Name":"readable-protected-object=1781796497254.txt","Size":13,"Data":["readable data"],"Encryption":"","EncryptionAlgorithm":"","VersionID":""}
Feature: CCC.ObjStor.CN05.AR01 - Versioning with Unique Identifiers
Scenario: Service enables versioning and objects receive unique version identifiers @CCC.ObjStor @CCC.ObjStor.CN05 @PerService @object-storage @tlp-amber @tlp-clear @tlp-green @tlp-red @Behavioural
Given a cloud api for "{config}" in "api"65µs
And I call "{api}" with "GetServiceAPI" using argument "object-storage"117µs
And I refer to "{result}" as "storage"38µs
When I call "{storage}" with "IsBucketVersioningEnabled" using argument "{resource-name}"46µs
Then "{result}" is true36µs
When I call "{storage}" with "CreateObject" using arguments "{resource-name}", "versioned-object.txt", and "test content"793ms
And I refer to "{result}" as "createdObject"27µs
Then "{createdObject.VersionID}" is not empty30µs
And I attach "{result}" to the test output as "versioned-object.json"17µs
Feature: CCC.ObjStor.CN05.AR02 - New Version ID on Modification
Scenario: Modified objects receive new version identifiers @CCC.ObjStor @CCC.ObjStor.CN05 @PerService @object-storage @tlp-amber @tlp-clear @tlp-green @tlp-red @Behavioural
Given a cloud api for "{config}" in "api"44µs
And I call "{api}" with "GetServiceAPI" using argument "object-storage"38µs
And I refer to "{result}" as "storage"24µs
When I call "{storage}" with "CreateObject" using arguments "{resource-name}", "version-test-object={timestamp}.txt", and "original content"389ms
And I refer to "{result.VersionID}" as "version1"26µs
And I call "{storage}" with "CreateObject" using arguments "{resource-name}", "version-test-object={timestamp}.txt", and "modified content"771ms
And I refer to "{result.VersionID}" as "version2"31µs
Then "{version1}" is not equal to "{version2}"27µs
Feature: CCC.ObjStor.CN05.AR03 - Recovery of Previous Versions
Scenario: Modified objects receive new version identifiers @CCC.ObjStor @CCC.ObjStor.CN05 @PerService @object-storage @tlp-amber @tlp-clear @tlp-green @tlp-red @Behavioural
Given a cloud api for "{config}" in "api"45µs
And I call "{api}" with "GetServiceAPI" using argument "object-storage"64µs
And I refer to "{result}" as "storage"30µs
When I call "{storage}" with "CreateObject" using arguments "{resource-name}", "version-test-object={timestamp}.txt", and "original content"396ms
And I refer to "{result.VersionID}" as "version1"34µs
And I call "{storage}" with "CreateObject" using arguments "{resource-name}", "version-test-object={timestamp}.txt", and "modified content"765ms
And I refer to "{result.VersionID}" as "version2"31µs
And I call "{storage}" with "ReadObjectAtVersion" using arguments "{resource-name}", "version-test-object={timestamp}.txt", and "{version1}"385ms
And I attach "{result}" to the test output as "original-content.json"71µs
Then "{result.Data}" contains "original content"46µs
When I call "{storage}" with "ReadObjectAtVersion" using arguments "{resource-name}", "version-test-object={timestamp}.txt", and "{version2}"385ms
Then "{result.Data}" contains "modified content"42µs
expected {result.Data} to contain 'modified content', but got '[original content]'
And I attach "{result}" to the test output as "modified-content.json"22µs
📎 Attachments:
original-content.json
View JSON (232 bytes)
{"ID":"version-test-object=1781796499663.txt","BucketID":"ccc-avm-test-container-20260616","Name":"version-test-object=1781796499663.txt","Size":16,"Data":["original content"],"Encryption":"","EncryptionAlgorithm":"","VersionID":""}
Feature: CCC.ObjStor.CN05.AR04 - Retain Versions on Delete
Scenario: Deleted object data can be reloaded from previous version @CCC.ObjStor @CCC.ObjStor.CN05 @PerService @object-storage @tlp-amber @tlp-clear @tlp-green @tlp-red @Behavioural
Given a cloud api for "{config}" in "api"37µs
And I call "{api}" with "GetServiceAPI" using argument "object-storage"39µs
And I refer to "{result}" as "storage"23µs
When I call "{storage}" with "CreateObject" using arguments "{resource-name}", "recover-deleted-object={timestamp}.txt", and "data to retain"391ms
And I refer to "{result.VersionID}" as "retainedVersionId"30µs
When I call "{storage}" with "DeleteObject" using arguments "{resource-name}" and "recover-deleted-object={timestamp}.txt"383ms
When I call "{storage}" with "ReadObjectAtVersion" using arguments "{resource-name}", "recover-deleted-object={timestamp}.txt", and "{retainedVersionId}"389ms
Then "{result.Data}" contains "data to retain"38µs
And I attach "{result}" to the test output as "recovered-deleted-version.json"60µs
📎 Attachments:
recovered-deleted-version.json
View JSON (236 bytes)
{"ID":"recover-deleted-object=1781796501597.txt","BucketID":"ccc-avm-test-container-20260616","Name":"recover-deleted-object=1781796501597.txt","Size":14,"Data":["data to retain"],"Encryption":"","EncryptionAlgorithm":"","VersionID":""}
Scenario: Deleted object version remains in version list @CCC.ObjStor @CCC.ObjStor.CN05 @PerService @object-storage @tlp-amber @tlp-clear @tlp-green @tlp-red @Behavioural
Given a cloud api for "{config}" in "api"44µs
And I call "{api}" with "GetServiceAPI" using argument "object-storage"46µs
And I refer to "{result}" as "storage"19µs
When I call "{storage}" with "CreateObject" using arguments "{resource-name}", "list-deleted-versions-object={timestamp}.txt", and "versioned data"396ms
And I refer to "{result.VersionID}" as "listedVersionId"28µs
When I call "{storage}" with "DeleteObject" using arguments "{resource-name}" and "list-deleted-versions-object={timestamp}.txt"380ms
When I call "{storage}" with "ListObjectVersions" using arguments "{resource-name}" and "list-deleted-versions-object={timestamp}.txt"382ms
And "{result}" is an array of objects with at least the following contents61µs
VersionIDObjectID
{listedVersionId}list-deleted-versions-object={timestamp}.txt
And I attach "{result}" to the test output as "versions-after-delete.json"49µs
📎 Attachments:
versions-after-delete.json
View JSON (106 bytes)
[{"VersionID":"2026-06-18T15:28:23.1354536Z","ObjectID":"list-deleted-versions-object=1781796502761.txt"}]
Feature: CCC.Core.CN03.AR01 - Multi-Factor Authentication for Destructive Operations
Scenario: MFA requirement for destructive operations cannot be tested automatically @CCC.Core @CCC.Core.CN03 @PerService @tlp-amber @tlp-green @tlp-red @Behavioural @object-storage @load-balancer @virtual-machines @serverless-computing @NotTestable
Given a cloud api for "{config}" in "api"52µs
Then no-op required24µs
Feature: CCC.Core.CN04.AR01 - Log Administrative Access Attempts
Scenario: Verify admin actions are logged with identity and timestamp @CCC.Core @CCC.Core.CN04 @PerService @tlp-amber @tlp-clear @tlp-green @tlp-red @Behavioural @object-storage @virtual-machines @serverless-computing
Given a cloud api for "{config}" in "api"70µs
And I call "{api}" with "GetServiceAPI" using argument "{service-type}"41µs
And I refer to "{result}" as "theService"41µs
Given I call "{api}" with "GetServiceAPI" using argument "logging"202µs
And I refer to "{result}" as "loggingService"47µs
When I call "{theService}" with "UpdateResourcePolicy"1s
Then "{result}" is not an error29µs
And I attach "{result}" to the test output as "Policy Update Result"39µs
And we wait for a period of "10000" ms10s
When I call "{loggingService}" with "QueryLogs" using arguments "{resource-name}", "admin", and "{20}"1s
Then "{result}" is not an error46µs
And I refer to "{result}" as "adminLogs"27µs
And I attach "{adminLogs}" to the test output as "Admin Activity Logs"96µs
Then "{adminLogs}" is an array of objects with at least the following contents33µs
result
Succeeded
expected row not found: map[result:Succeeded]
📎 Attachments:
Policy Update Result
View JSON (4 bytes)
null
Admin Activity Logs
View JSON (2 bytes)
[]
Feature: CCC.Core.CN04.AR02 - Log Data Modification Attempts
Scenario: Verify data modifications are logged with identity and timestamp @CCC.Core @CCC.Core.CN04 @PerService @tlp-amber @tlp-red @Behavioural @object-storage @virtual-machines @serverless-computing
Given a cloud api for "{config}" in "api"35µs
Given I call "{api}" with "GetServiceAPI" using argument "{service-type}"27µs
And I refer to "{result}" as "theService"31µs
And I call "{api}" with "GetServiceAPI" using argument "logging"33µs
And I refer to "{result}" as "loggingService"26µs
When I call "{theService}" with "TriggerDataWrite" using argument "{resource-name}"387ms
And I attach "{result}" to the test output as "Data Write Trigger Result"64µs
And we wait for a period of "10000" ms10s
Then I call "{loggingService}" with "QueryLogs" using arguments "{resource-name}", "data-write", and "{20}"634ms
And I refer to "{result}" as "dataLogs"31µs
And I attach "{dataLogs}" to the test output as "Data Write Logs"50µs
Then "{dataLogs}" is an array of objects with at least the following contents42µs
result
Succeeded
field {dataLogs} is not an array
📎 Attachments:
Data Write Trigger Result
View JSON (4 bytes)
null
Data Write Logs
View Content (1135 bytes)
Log Analytics workspace query: POST https://api.loganalytics.io/v1/workspaces/433b7b84-1ba6-4f5c-8375-6d2016f07e6a/query
--------------------------------------------------------------------------------
RESPONSE 403: 403 Forbidden
ERROR CODE: InsufficientAccessError
--------------------------------------------------------------------------------
{
  "error": {
    "message": "The provided credentials have insufficient access to perform the requested operation",
    "code": "InsufficientAccessError",
    "correlationId": "2da4d186-ba56-48b4-af01-d03143f6aef8",
    "innererror": {
      "code": "NspValidationFailedError",
      "message": "Access to workspace 'avmlaw20260616' from '20.57.215.242' is denied. To allow access from public networks, change the workspace Networking settings or add it to a Network Security Perimeter. (workspace resource ID: /subscriptions/c1cedd8e-bf91-4d7d-a4cc-45700402a2a1/resourceGroups/avm-testing/providers/microsoft.operationalinsights/workspaces/avmlaw20260616) Please contact your administrator."
    }
  }
}
--------------------------------------------------------------------------------
Feature: CCC.Core.CN04.AR03 - Log Data Read Attempts
Scenario: Verify data read operations are logged with identity and timestamp @CCC.Core @CCC.Core.CN04 @PerService @tlp-red @Behavioural @object-storage @virtual-machines @serverless-computing
Given a cloud api for "{config}" in "api"58µs
Given I call "{api}" with "GetServiceAPI" using argument "{service-type}"49µs
And I refer to "{result}" as "theService"17µs
And I call "{api}" with "GetServiceAPI" using argument "logging"23µs
And I refer to "{result}" as "loggingService"24µs
When I call "{theService}" with "TriggerDataRead" using argument "{resource-name}"766ms
And I attach "{result}" to the test output as "Data Read Trigger Result"43µs
And we wait for a period of "10000" ms10s
When I call "{loggingService}" with "QueryLogs" using arguments "{resource-name}", "data-read", and "{20}"18ms
Then "{result}" is not an error43µs
expected {result} to not be an error, but got: Log Analytics workspace query: POST https://api.loganalytics.io/v1/workspaces/433b7b84-1ba6-4f5c-8375-6d2016f07e6a/query -------------------------------------------------------------------------------- RESPONSE 403: 403 Forbidden ERROR CODE: InsufficientAccessError -------------------------------------------------------------------------------- { "error": { "message": "The provided credentials have insufficient access to perform the requested operation", "code": "InsufficientAccessError", "correlationId": "b5aab1a8-994c-47e6-9905-2bf5f5a1cad3", "innererror": { "code": "NspValidationFailedError", "message": "Access to workspace 'avmlaw20260616' from '20.57.215.242' is denied. To allow access from public networks, change the workspace Networking settings or add it to a Network Security Perimeter. (workspace resource ID: /subscriptions/c1cedd8e-bf91-4d7d-a4cc-45700402a2a1/resourceGroups/avm-testing/providers/microsoft.operationalinsights/workspaces/avmlaw20260616) Please contact your administrator." } } } --------------------------------------------------------------------------------
And I refer to "{result}" as "readLogs"32µs
And I attach "{readLogs}" to the test output as "Data Read Logs"26µs
Then "{readLogs}" is an array of objects with at least the following contents30µs
result
Succeeded
📎 Attachments:
Data Read Trigger Result
View JSON (4 bytes)
null
Feature: CCC.Core.CN05.AR06 - Block All Unauthorized Requests
Scenario: Service prevents data read by user with no access @CCC.Core @CCC.Core.CN05 @PerService @tlp-amber @tlp-green @tlp-red @Destructive @Behavioural @object-storage @virtual-machines @serverless-computing
Given a cloud api for "{config}" in "api"34µs
And I call "{api}" with "GetServiceAPIWithIdentity" using arguments "{service-type}" and "test-user-no-access"53µs
And "{result}" is not an error31µs
And I refer to "{result}" as "userReadableService"26µs
When I call "{userReadableService}" with "TriggerDataRead" using argument "{resource-name}"24ms
Then "{result}" is an error22µs
And I attach "{result}" to the test output as "no-access-trigger-data-read-error.txt"43µs
📎 Attachments:
no-access-trigger-data-read-error.txt
View Content (836 bytes)
failed to download blob cfi-trigger-data-read-probe.txt: GET https://avmstor20260616.blob.core.windows.net/ccc-avm-test-container-20260616/cfi-trigger-data-read-probe.txt
--------------------------------------------------------------------------------
RESPONSE 403: 403 This request is not authorized to perform this operation using this permission.
ERROR CODE: AuthorizationPermissionMismatch
--------------------------------------------------------------------------------
AuthorizationPermissionMismatchThis request is not authorized to perform this operation using this permission.
RequestId:8876f0f9-c01e-008d-2e37-ff1ecb000000
Time:2026-06-18T15:28:58.3208378Z
--------------------------------------------------------------------------------
Feature: CCC.Core.CN07.AR01 - Publish Enumeration Activity Events
Scenario: Enumeration event publishing cannot be tested automatically @CCC.Core @CCC.Core.CN07 @PerService @tlp-amber @tlp-red @Behavioural @NotTestable @object-storage @virtual-machines @serverless-computing
Given a cloud api for "{config}" in "api"51µs
Then no-op required25µs
Feature: CCC.Core.CN07.AR02 - Log Enumeration Activities
Scenario: Enumeration logging cannot be verified automatically @CCC.Core @CCC.Core.CN07 @PerService @tlp-amber @tlp-clear @tlp-green @tlp-red @Behavioural @NotTestable @object-storage @virtual-machines @serverless-computing
Given a cloud api for "{config}" in "api"72µs
Then no-op required47µs
Feature: CCC.Core.CN10.AR01 - Replication Destination Trust
Scenario: Replication destination trust cannot be verified automatically @CCC.Core @CCC.Core.CN10 @PerService @tlp-amber @tlp-green @tlp-red @Behavioural @NotTestable @object-storage @virtual-machines @serverless-computing
Given a cloud api for "{config}" in "api"42µs
Then no-op required25µs