🥒 CCC.ObjStor Test: finos-ccc-integration-container-main

Test Parameters

ServiceTypeobject-storage
ProviderServiceTypeMicrosoft.Storage/storageAccounts
CatalogTypesCCC.ObjStor
TagFilter@object-storage, @PerService, @Behavioural
UID/subscriptions/c1cedd8e-bf91-4d7d-a4cc-45700402a2a1/resourceGroups/finos-ccc-integration-rg/providers/Microsoft.Storage/storageAccounts/finoscccintegrationmain
ResourceNamefinos-ccc-integration-container-main
ReportFilefinos-ccc-integration-container-main-service
ReportTitlefinos-ccc-integration-container-main
Config
{}
azure-log-analytics-workspace-ided1b3630-9d61-4d00-bb4f-c02e360147d8
azure-resource-groupfinos-ccc-integration-rg
azure-storage-accountfinoscccintegrationmain
azure-subscription-idc1cedd8e-bf91-4d7d-a4cc-45700402a2a1
azure-tenant-idfa193ac0-9c06-4111-bf55-341e4db193d3
catalog-versions
{
  "CCC.Core": "v2025.10",
  "CCC.ObjStor": "DEV"
}
default-containerfinos-ccc-integration-container-main
object-storage-retention-period-days2
permitted-regions
[
  "westus2",
  "westus"
]
providerazure
regionwestus2
replication-locations
[
  "westus2",
  "westus"
]
resourcefinos-ccc-integration-container-main
serviceobject-storage
service-typeobject-storage
tags@Behavioural

Summary

Generated: 2026-07-17 08:44:00

Total Run Time: 57s

Features: 28

Scenarios: 41 (✅ 21 | ❌ 20)

Steps: 397 (✅ 333 | ❌ 20 | ⏭️ 40 | ❓ 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"67µs
Given I call "{api}" with "GetServiceAPI" using argument "object-storage"287µs
And I refer to "{result}" as "storage"35µs
And "{result}" is not an error59µs
When I call "{storage}" with "CreateObject" using arguments "{resource-name}", "test-encryption-check={timestamp}.txt", and "encryption test data"485ms
Then "{result}" is not an error40µs
And I refer to "{result}" as "uploadResult"17µs
And "{uploadResult.Encryption}" is not null20µs
And "{uploadResult.EncryptionAlgorithm}" is "AES256"29µs
And I attach "{uploadResult}" to the test output as "Upload Result with Encryption Details"71µs
📎 Attachments:
Upload Result with Encryption Details
View JSON (260 bytes)
{"ID":"test-encryption-check=1784277840289.txt","BucketID":"finos-ccc-integration-container-main","Name":"test-encryption-check=1784277840289.txt","Size":20,"Data":["encryption test data"],"Encryption":"Microsoft","EncryptionAlgorithm":"AES256","VersionID":""}
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"42µs
And I call "{api}" with "GetServiceAPI" using argument "object-storage"62µs
And I refer to "{result}" as "storage"14µs
And I call "{api}" with "GetServiceAPIWithIdentity" using arguments "object-storage" and "test-user-no-access"218µs
And "{result}" is not an error27µs
And I refer to "{result}" as "userStorage"22µs
When I call "{userStorage}" with "CreateObject" using arguments "{resource-name}", "test-cn05-unauthorized-modify={timestamp}.txt", and "unauthorized data"550ms
Then "{result}" is an error42µs
And I attach "{result}" to the test output as "no-access-create-error.txt"40µs
📎 Attachments:
no-access-create-error.txt
View Content (879 bytes)
failed to upload blob test-cn05-unauthorized-modify=1784277840776.txt: PUT https://finoscccintegrationmain.blob.core.windows.net/finos-ccc-integration-container-main/test-cn05-unauthorized-modify=1784277840776.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:3a513334-301e-0020-27c8-15d63c000000
Time:2026-07-17T08:44:01.3055021Z
--------------------------------------------------------------------------------
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"41µs
And I call "{api}" with "GetServiceAPI" using argument "object-storage"41µs
And I refer to "{result}" as "storage"28µs
And I call "{api}" with "GetServiceAPIWithIdentity" using arguments "object-storage" and "test-user-write"184µs
And "{result}" is not an error29µs
And I refer to "{result}" as "userStorage"17µs
When I call "{userStorage}" with "CreateObject" using arguments "{resource-name}", "test-cn05-authorized-modify={timestamp}.txt", and "authorized data"429ms
Then "{result}" is not an error61µs
expected {result} to not be an error, but got: failed to upload blob test-cn05-authorized-modify=1784277841329.txt: PUT https://finoscccintegrationmain.blob.core.windows.net/finos-ccc-integration-container-main/test-cn05-authorized-modify=1784277841329.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:3a51344a-301e-0020-29c8-15d63c000000 Time:2026-07-17T08:44:01.7357820Z --------------------------------------------------------------------------------
And I attach "{result}" to the test output as "write-create-object-result.json"17µs
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"34µs
And I call "{api}" with "GetServiceAPI" using argument "object-storage"28µs
And I refer to "{result}" as "storage"28µs
And I call "{api}" with "GetServiceAPIWithIdentity" using arguments "object-storage" and "test-user-no-access"50µs
And "{result}" is not an error32µs
And I refer to "{result}" as "userStorage"22µs
When I call "{userStorage}" with "CreateBucket" using argument "test-cn05-unauthorized-admin-container"40ms
Then "{result}" is an error26µs
And I attach "{result}" to the test output as "no-admin-create-bucket-error.txt"40µs
📎 Attachments:
no-admin-create-bucket-error.txt
View Content (791 bytes)
failed to create container: failed to create container test-cn05-unauthorized-admin-container: PUT https://finoscccintegrationmain.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:3a513470-301e-0020-4ac8-15d63c000000
Time:2026-07-17T08:44:01.7772154Z
--------------------------------------------------------------------------------
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"65µs
And I call "{api}" with "GetServiceAPI" using argument "object-storage"107µs
And I refer to "{result}" as "storage"39µs
And I call "{api}" with "GetServiceAPIWithIdentity" using arguments "object-storage" and "test-user-read"453µs
And "{result}" is not an error31µs
And I refer to "{result}" as "userStorage"22µs
When I call "{userStorage}" with "CreateBucket" using argument "test-cn05-read-only-create-container"390ms
Then "{result}" is an error31µs
And I attach "{result}" to the test output as "read-only-create-bucket-error.txt"52µs
📎 Attachments:
read-only-create-bucket-error.txt
View Content (787 bytes)
failed to create container: failed to create container test-cn05-read-only-create-container: PUT https://finoscccintegrationmain.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:3a513591-301e-0020-40c8-15d63c000000
Time:2026-07-17T08:44:02.1708540Z
--------------------------------------------------------------------------------
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"33µs
And I call "{api}" with "GetServiceAPI" using argument "object-storage"40µs
And I refer to "{result}" as "storage"23µs
And I call "{api}" with "GetServiceAPIWithIdentity" using arguments "object-storage" and "test-user-admin"184µs
And "{result}" is not an error34µs
And I refer to "{result}" as "userStorage"26µs
When I call "{userStorage}" with "CreateBucket" using argument "test-cn05-authorized-admin-container"355ms
Then "{result}" is not an error46µs
expected {result} to not be an error, but got: failed to create container: failed to create container test-cn05-authorized-admin-container: PUT https://finoscccintegrationmain.blob.core.windows.net/test-cn05-authorized-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:3a513662-301e-0020-70c8-15d63c000000 Time:2026-07-17T08:44:02.5274179Z --------------------------------------------------------------------------------
And I attach "{result}" to the test output as "admin-create-bucket-result.json"19µs
And I call "{storage}" with "DeleteBucket" using argument "test-cn05-authorized-admin-container"21µs
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"47µs
Then no-op required28µ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"42µs
And I call "{api}" with "GetServiceAPI" using argument "object-storage"43µs
And I refer to "{result}" as "storage"18µs
When I call "{storage}" with "GetReplicationStatus" using argument "{resource-name}"108ms
And I refer to "{result}" as "replicationStatus"281µs
And I refer to "{replicationStatus.Locations}" as "locations"24µs
And I attach "{replicationStatus}" to the test output as "Replication Status"910µs
Then "{locations}" is an array of objects with length "2"33µs
expected length 2, got 1
And "{permitted-regions}" is an array of objects with at least the following contents26µs
value
{locations[0]}
And "{permitted-regions}" is an array of objects with at least the following contents25µ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"77µs
And I call "{api}" with "GetServiceAPI" using argument "object-storage"62µs
And I refer to "{result}" as "storage"42µs
When I call "{storage}" with "GetReplicationStatus" using argument "{resource-name}"286ms
And I refer to "{result}" as "replicationStatus"23µs
And I attach "{replicationStatus}" to the test output as "Replication Status"33µs
And I refer to "{replicationStatus.Locations}" as "locations"18µs
Then "{locations}" is an array of objects with at least the following contents106µ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"33µs
And I call "{api}" with "GetServiceAPI" using argument "object-storage"38µs
And I refer to "{result}" as "storage"23µs
And I call "{api}" with "GetServiceAPIWithIdentity" using arguments "object-storage" and "test-user-no-access"47µs
And "{result}" is not an error17µs
And I refer to "{result}" as "userStorage"14µs
When I call "{userStorage}" with "ListObjects" using argument "{resource-name}"41ms
Then "{result}" is an error50µs
And I attach "{result}" to the test output as "no-access-list-error.txt"40µs
📎 Attachments:
no-access-list-error.txt
View Content (782 bytes)
failed to list blobs: GET https://finoscccintegrationmain.blob.core.windows.net/finos-ccc-integration-container-main
--------------------------------------------------------------------------------
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:3a513787-301e-0020-64c8-15d63c000000
Time:2026-07-17T08:44:02.9696792Z
--------------------------------------------------------------------------------
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"46µs
And I call "{api}" with "GetServiceAPI" using argument "object-storage"50µs
And I refer to "{result}" as "storage"30µs
And I call "{api}" with "GetServiceAPIWithIdentity" using arguments "object-storage" and "test-user-read"60µs
And "{result}" is not an error31µs
And I attach "{result}" to the test output as "read-storage-service.json"78µs
And I refer to "{result}" as "userStorage"31µs
When I call "{userStorage}" with "ListObjects" using argument "{resource-name}"40ms
Then "{result}" is not an error66µs
expected {result} to not be an error, but got: failed to list blobs: GET https://finoscccintegrationmain.blob.core.windows.net/finos-ccc-integration-container-main -------------------------------------------------------------------------------- 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:3a5137a2-301e-0020-7dc8-15d63c000000 Time:2026-07-17T08:44:03.0115745Z --------------------------------------------------------------------------------
And I attach "{result}" to the test output as "read-list-objects-result.json"20µs
📎 Attachments:
read-storage-service.json
View JSON (2 bytes)
{}
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"36µs
And I call "{api}" with "GetServiceAPI" using argument "object-storage"33µs
And I refer to "{result}" as "storage"23µs
And I call "{storage}" with "CreateObject" using arguments "{resource-name}", "test-object={timestamp}.txt", and "test content"459ms
And "{result}" is not an error44µs
And I call "{api}" with "GetServiceAPIWithIdentity" using arguments "object-storage" and "test-user-no-access"46µs
And "{result}" is not an error23µs
And I refer to "{result}" as "userStorage"31µs
When I call "{userStorage}" with "ReadObject" using arguments "{resource-name}" and "test-object={timestamp}.txt"40ms
Then "{result}" is an error32µ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 (845 bytes)
failed to download blob test-object=1784277843034.txt: GET https://finoscccintegrationmain.blob.core.windows.net/finos-ccc-integration-container-main/test-object=1784277843034.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:3a513932-301e-0020-53c8-15d63c000000
Time:2026-07-17T08:44:03.5126205Z
--------------------------------------------------------------------------------
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"74µs
And I call "{api}" with "GetServiceAPI" using argument "object-storage"60µs
And I refer to "{result}" as "storage"40µs
And I call "{storage}" with "CreateObject" using arguments "{resource-name}", "test-object={timestamp}.txt", and "test content"466ms
And "{result}" is not an error44µs
And I call "{api}" with "GetServiceAPIWithIdentity" using arguments "object-storage" and "test-user-read"47µs
And "{result}" is not an error19µs
And I attach "{result}" to the test output as "read-storage-service.json"46µs
And I refer to "{result}" as "userStorage"52µs
When I call "{userStorage}" with "ReadObject" using arguments "{resource-name}" and "test-object={timestamp}.txt"39ms
Then "{result}" is not an error32µs
expected {result} to not be an error, but got: failed to download blob test-object=1784277843536.txt: GET https://finoscccintegrationmain.blob.core.windows.net/finos-ccc-integration-container-main/test-object=1784277843536.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:3a513a4f-301e-0020-4bc8-15d63c000000 Time:2026-07-17T08:44:04.0200699Z --------------------------------------------------------------------------------
And I attach "{result}" to the test output as "read-read-object-result.json"20µs
📎 Attachments:
read-storage-service.json
View JSON (2 bytes)
{}
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"33µs
And I call "{api}" with "GetServiceAPI" using argument "object-storage"26µs
And I refer to "{result}" as "storage"27µs
And I call "{api}" with "GetServiceAPIWithIdentity" using arguments "object-storage" and "test-user-no-access"53µs
And "{result}" is not an error22µs
And I refer to "{result}" as "userStorage"18µs
When I call "{userStorage}" with "CreateBucket" using argument "test-bucket-no-access"41ms
Then "{result}" is an error26µs
And I attach "{result}" to the test output as "no-access-create-bucket-error.txt"32µs
📎 Attachments:
no-access-create-bucket-error.txt
View Content (757 bytes)
failed to create container: failed to create container test-bucket-no-access: PUT https://finoscccintegrationmain.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:3a513a63-301e-0020-5bc8-15d63c000000
Time:2026-07-17T08:44:04.0625464Z
--------------------------------------------------------------------------------
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"70µs
And I call "{api}" with "GetServiceAPI" using argument "object-storage"44µs
And I refer to "{result}" as "storage"26µs
And I call "{api}" with "GetServiceAPIWithIdentity" using arguments "object-storage" and "test-user-write"39µs
And "{result}" is not an error20µs
And I attach "{result}" to the test output as "write-storage-service.json"31µs
And I refer to "{result}" as "userStorage"23µs
When I call "{userStorage}" with "CreateBucket" using argument "test-bucket-write"41ms
Then "{result}" is not an error35µs
expected {result} to not be an error, but got: failed to create container: failed to create container test-bucket-write: PUT https://finoscccintegrationmain.blob.core.windows.net/test-bucket-write -------------------------------------------------------------------------------- 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:3a513a90-301e-0020-7ec8-15d63c000000 Time:2026-07-17T08:44:04.1051111Z --------------------------------------------------------------------------------
And I attach "{result}" to the test output as "write-create-bucket-result.json"20µs
And I call "{storage}" with "DeleteBucket" using argument "{result.ID}"20µs
📎 Attachments:
write-storage-service.json
View JSON (2 bytes)
{}
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"34µs
And I call "{api}" with "GetServiceAPI" using argument "object-storage"34µs
And I refer to "{result}" as "storage"23µs
And "{result}" is not an error27µs
And I call "{api}" with "GetServiceAPIWithIdentity" using arguments "object-storage" and "test-user-read"42µs
And "{result}" is not an error17µs
And I refer to "{result}" as "userStorage"15µs
When I call "{userStorage}" with "CreateObject" using arguments "{resource-name}", "test-write-object={timestamp}.txt", and "test content"42ms
Then "{result}" is an error24µs
And I attach "{result}" to the test output as "read-create-object-error.txt"39µs
📎 Attachments:
read-create-object-error.txt
View Content (855 bytes)
failed to upload blob test-write-object=1784277844128.txt: PUT https://finoscccintegrationmain.blob.core.windows.net/finos-ccc-integration-container-main/test-write-object=1784277844128.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:3a513ab1-301e-0020-19c8-15d63c000000
Time:2026-07-17T08:44:04.1483413Z
--------------------------------------------------------------------------------
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"62µs
And I call "{api}" with "GetServiceAPI" using argument "object-storage"60µs
And I refer to "{result}" as "storage"37µs
And "{result}" is not an error44µs
And I call "{api}" with "GetServiceAPIWithIdentity" using arguments "object-storage" and "test-user-write"73µs
And "{result}" is not an error40µs
And I attach "{result}" to the test output as "write-storage-service.json"57µs
And I refer to "{result}" as "userStorage"48µs
When I call "{userStorage}" with "CreateObject" using arguments "{resource-name}", "test-write-object={timestamp}.txt", and "test content"41ms
Then "{result}" is not an error76µs
expected {result} to not be an error, but got: failed to upload blob test-write-object=1784277844172.txt: PUT https://finoscccintegrationmain.blob.core.windows.net/finos-ccc-integration-container-main/test-write-object=1784277844172.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:3a513ae6-301e-0020-43c8-15d63c000000 Time:2026-07-17T08:44:04.1916758Z --------------------------------------------------------------------------------
And I attach "{result}" to the test output as "write-create-object-result.json"19µs
📎 Attachments:
write-storage-service.json
View JSON (2 bytes)
{}
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"43µs
And I call "{api}" with "GetServiceAPI" using argument "object-storage"39µs
And I refer to "{result}" as "storage"32µs
When I call "{storage}" with "CreateObject" using arguments "{resource-name}", "test-object={timestamp}.txt", and "test data"472ms
Then "{result}" is not an error32µs
And I call "{api}" with "GetServiceAPIWithIdentity" using arguments "object-storage" and "test-user-read"50µs
And "{result}" is not an error22µs
And I refer to "{result}" as "userStorage"19µs
When I call "{userStorage}" with "ReadObject" using arguments "{resource-name}" and "test-object={timestamp}.txt"41ms
Then "{result}" is not an error37µs
expected {result} to not be an error, but got: failed to download blob test-object=1784277844214.txt: GET https://finoscccintegrationmain.blob.core.windows.net/finos-ccc-integration-container-main/test-object=1784277844214.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:3a513c95-301e-0020-3fc8-15d63c000000 Time:2026-07-17T08:44:04.7062053Z --------------------------------------------------------------------------------
When I call "{storage}" with "SetObjectPermission" using arguments "{resource-name}", "test-object={timestamp}.txt", and "none"26µs
Then "{result}" is an error20µs
And I attach "{result}" to the test output as "set-object-permission-error.txt"20µs
When I call "{userStorage}" with "ReadObject" using arguments "{resource-name}" and "test-object={timestamp}.txt"19µs
Then "{result}" is not an error21µs
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"43µs
And I call "{api}" with "GetServiceAPI" using argument "object-storage"44µs
And I refer to "{result}" as "storage"30µs
When I call "{storage}" with "CreateObject" using arguments "{resource-name}", "test-object={timestamp}.txt", and "test data"474ms
Then "{result}" is not an error44µs
And I call "{api}" with "GetServiceAPIWithIdentity" using arguments "object-storage" and "test-user-no-access"44µs
And "{result}" is not an error32µ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"39ms
Then "{result}" is an error37µs
When I call "{storage}" with "SetObjectPermission" using arguments "{resource-name}", "test-object={timestamp}.txt", and "read"81µs
Then "{result}" is an error30µs
And I attach "{result}" to the test output as "set-object-permission-error.txt"40µs
When I call "{userStorage}" with "ReadObject" using arguments "{resource-name}" and "test-object={timestamp}.txt"39ms
Then "{result}" is an error36µ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"41µs
And I call "{api}" with "GetServiceAPI" using argument "object-storage"43µs
And I refer to "{result}" as "storage"27µs
When I call "{storage}" with "CreateBucket" using argument "ccc-test-soft-delete"458ms
Then "{result}" is not an error44µs
And I refer to "{result}" as "testBucket"26µs
And I attach "{result}" to the test output as "created-bucket.json"70µs
When I call "{storage}" with "DeleteBucket" using argument "ccc-test-soft-delete"468ms
Then "{result}" is not an error31µs
When I call "{storage}" with "ListDeletedBuckets"458ms
Then "{result}" is not an error31µs
And I attach "{result}" to the test output as "deleted-buckets.json"77µs
And "{result}" is an array of objects with length "1"35µs
expected length 1, got 0
When I call "{storage}" with "RestoreBucket" using argument "ccc-test-soft-delete"31µs
Then "{result}" is not an error19µs
When I call "{storage}" with "ListBuckets"16µs
Then "{result}" is not an error29µs
And I attach "{result}" to the test output as "restored-buckets.json"22µs
When I call "{storage}" with "DeleteBucket" using argument "ccc-test-soft-delete"25µs
Then "{result}" is not an error27µ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 (4 bytes)
null
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"44µs
And I call "{api}" with "GetServiceAPI" using argument "object-storage"35µs
And I refer to "{result}" as "storage"21µs
When I call "{storage}" with "GetBucketRetentionDurationDays" using argument "{resource-name}"441ms
Then "{result}" is not an error38µs
And I refer to "{result}" as "originalRetention"26µs
And I attach "{result}" to the test output as "original-retention-days.txt"43µs
And "{result}" should be greater than "0"31µs
When I call "{storage}" with "SetBucketRetentionDurationDays" using arguments "{resource-name}" and "1"868ms
Then "{result}" is an error53µs
expected {result} to be an error, got
And I attach "{result}" to the test output as "set-retention-error.txt"71µs
When I call "{storage}" with "GetBucketRetentionDurationDays" using argument "{resource-name}"23µs
Then "{result}" is not an error21µs
And "{result}" should be greater than "0"41µ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"47µs
And I call "{api}" with "GetServiceAPI" using argument "object-storage"49µs
And I refer to "{result}" as "storage"21µs
And I call "{api}" with "GetServiceAPIWithIdentity" using arguments "object-storage" and "test-user-write"32µs
And "{result}" is not an error16µs
And I refer to "{result}" as "userStorage"30µs
When I call "{userStorage}" with "CreateObject" using arguments "{resource-name}", "test-retention-object={timestamp}.txt", and "protected data"39ms
And I attach "{result}" to the test output as "uploaded-object.json"36µs
And I call "{userStorage}" with "GetObjectRetentionDurationDays" using arguments "{resource-name}" and "test-retention-object={timestamp}.txt"39ms
Then "{result}" should be greater than "1"45µs
cannot parse {result} as number: strconv.ParseFloat: parsing "failed to get blob properties: HEAD https://finoscccintegrationmain.blob.core.windows.net/finos-ccc-integration-container-main/test-retention-object=1784277847983.txt\n--------------------------------------------------------------------------------\nRESPONSE 403: 403 This request is not authorized to perform this operation using this permission.\nERROR CODE: AuthorizationPermissionMismatch\n--------------------------------------------------------------------------------\nResponse contained no body\n--------------------------------------------------------------------------------\n": invalid syntax
📎 Attachments:
uploaded-object.json
View Content (863 bytes)
failed to upload blob test-retention-object=1784277847983.txt: PUT https://finoscccintegrationmain.blob.core.windows.net/finos-ccc-integration-container-main/test-retention-object=1784277847983.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:3a514590-301e-0020-02c8-15d63c000000
Time:2026-07-17T08:44:08.0003234Z
--------------------------------------------------------------------------------
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"35µs
And I call "{api}" with "GetServiceAPI" using argument "object-storage"37µs
And I refer to "{result}" as "storage"31µs
When I call "{storage}" with "CreateObject" using arguments "{resource-name}", "immediate-delete-test={timestamp}.txt", and "test content"449ms
Then "{result}" is not an error30µs
When I call "{storage}" with "DeleteObject" using arguments "{resource-name}" and "immediate-delete-test={timestamp}.txt"456ms
Then "{result}" is an error30µs
And I attach "{result}" to the test output as "immediate-delete-error.txt"44µs
📎 Attachments:
immediate-delete-error.txt
View Content (840 bytes)
failed to delete blob immediate-delete-test=1784277848062.txt: DELETE https://finoscccintegrationmain.blob.core.windows.net/finos-ccc-integration-container-main/immediate-delete-test=1784277848062.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:3a514839-301e-0020-4ac8-15d63c000000
Time:2026-07-17T08:44:08.9449570Z
--------------------------------------------------------------------------------
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"43µs
And I call "{api}" with "GetServiceAPI" using argument "object-storage"52µs
And I refer to "{result}" as "storage"28µs
When I call "{storage}" with "CreateObject" using arguments "{resource-name}", "retention-period-test={timestamp}.txt", and "compliance data"454ms
And I call "{storage}" with "GetObjectRetentionDurationDays" using arguments "{resource-name}" and "retention-period-test={timestamp}.txt"913ms
Then "{result}" should be greater than "1"49µs
And I attach "{result}" to the test output as "retention-period-days.json"40µ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"101µs
And I call "{api}" with "GetServiceAPI" using argument "object-storage"82µs
And I refer to "{result}" as "storage"44µs
And I call "{api}" with "GetServiceAPIWithIdentity" using arguments "object-storage" and "test-user-write"68µs
And "{result}" is not an error79µs
And I refer to "{result}" as "userStorage"66µs
When I call "{userStorage}" with "CreateObject" using arguments "{resource-name}", "protected-object={timestamp}.txt", and "immutable data"40ms
Then "{result}" is not an error38µs
expected {result} to not be an error, but got: failed to upload blob protected-object=1784277850338.txt: PUT https://finoscccintegrationmain.blob.core.windows.net/finos-ccc-integration-container-main/protected-object=1784277850338.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:3a514c11-301e-0020-06c8-15d63c000000 Time:2026-07-17T08:44:10.3573521Z --------------------------------------------------------------------------------
And I attach "{result}" to the test output as "protected-object.json"22µs
When I call "{userStorage}" with "DeleteObject" using arguments "{resource-name}" and "protected-object={timestamp}.txt"24µs
Then "{result}" is an error19µs
And I attach "{result}" to the test output as "delete-protected-error.txt"22µs
And "{result}" should contain one of "retention, locked, immutable, protected"58µs
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"60µs
And I call "{api}" with "GetServiceAPI" using argument "object-storage"38µs
And I refer to "{result}" as "storage"26µs
When I call "{storage}" with "CreateObject" using arguments "{resource-name}", "admin-protected-object={timestamp}.txt", and "compliance data"459ms
Then "{result}" is not an error41µs
When I call "{storage}" with "DeleteObject" using arguments "{resource-name}" and "admin-protected-object={timestamp}.txt"470ms
Then "{result}" is an error33µs
And I attach "{result}" to the test output as "admin-delete-protected-error.txt"52µs
📎 Attachments:
admin-delete-protected-error.txt
View Content (842 bytes)
failed to delete blob admin-protected-object=1784277850380.txt: DELETE https://finoscccintegrationmain.blob.core.windows.net/finos-ccc-integration-container-main/admin-protected-object=1784277850380.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:3a514e0f-301e-0020-3ac8-15d63c000000
Time:2026-07-17T08:44:11.2881859Z
--------------------------------------------------------------------------------
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"51µs
And I call "{api}" with "GetServiceAPI" using argument "object-storage"44µs
And I refer to "{result}" as "storage"20µs
And I call "{api}" with "GetServiceAPIWithIdentity" using arguments "object-storage" and "test-user-write"58µs
And "{result}" is not an error31µs
And I refer to "{result}" as "userStorage"18µs
When I call "{userStorage}" with "CreateObject" using arguments "{resource-name}", "modify-test-object={timestamp}.txt", and "original content"39ms
Then "{result}" is not an error32µs
expected {result} to not be an error, but got: failed to upload blob modify-test-object=1784277851311.txt: PUT https://finoscccintegrationmain.blob.core.windows.net/finos-ccc-integration-container-main/modify-test-object=1784277851311.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:3a514e1f-301e-0020-49c8-15d63c000000 Time:2026-07-17T08:44:11.3292583Z --------------------------------------------------------------------------------
And I attach "{result}" to the test output as "original-object.json"22µs
When I call "{userStorage}" with "CreateObject" using arguments "{resource-name}", "modify-test-object={timestamp}.txt", and "modified content"24µs
Then "{result}" is an error19µs
And I attach "{result}" to the test output as "modify-protected-error.txt"17µs
And "{result}" should contain one of "retention, locked, immutable, protected, exists"24µs
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"38µs
And I call "{api}" with "GetServiceAPI" using argument "object-storage"48µs
And I refer to "{result}" as "storage"26µs
When I call "{storage}" with "CreateObject" using arguments "{resource-name}", "readable-protected-object={timestamp}.txt", and "readable data"453ms
Then "{result}" is not an error42µs
And I call "{api}" with "GetServiceAPIWithIdentity" using arguments "object-storage" and "test-user-read"65µs
And "{result}" is not an error28µs
And I refer to "{result}" as "userStorage"29µs
When I call "{userStorage}" with "ReadObject" using arguments "{resource-name}" and "readable-protected-object={timestamp}.txt"39ms
Then "{result}" is not an error58µs
expected {result} to not be an error, but got: failed to download blob readable-protected-object=1784277851352.txt: GET https://finoscccintegrationmain.blob.core.windows.net/finos-ccc-integration-container-main/readable-protected-object=1784277851352.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:3a514f5e-301e-0020-63c8-15d63c000000 Time:2026-07-17T08:44:11.8223877Z --------------------------------------------------------------------------------
And I refer to "{result}" as "readResult"22µs
And I attach "{result}" to the test output as "read-protected-object.json"19µs
And "{readResult.Name}" is "readable-protected-object={timestamp}.txt"26µs
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"54µs
And I call "{api}" with "GetServiceAPI" using argument "object-storage"38µs
And I refer to "{result}" as "storage"25µs
When I call "{storage}" with "IsBucketVersioningEnabled" using argument "{resource-name}"23µs
Then "{result}" is true16µs
When I call "{storage}" with "CreateObject" using arguments "{resource-name}", "versioned-object.txt", and "test content"896ms
And I refer to "{result}" as "createdObject"32µs
Then "{createdObject.VersionID}" is not empty36µs
And I attach "{result}" to the test output as "versioned-object.json"46µ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"49µs
And I call "{api}" with "GetServiceAPI" using argument "object-storage"38µs
And I refer to "{result}" as "storage"26µs
When I call "{storage}" with "CreateObject" using arguments "{resource-name}", "version-test-object={timestamp}.txt", and "original content"475ms
And I refer to "{result.VersionID}" as "version1"46µs
And I call "{storage}" with "CreateObject" using arguments "{resource-name}", "version-test-object={timestamp}.txt", and "modified content"909ms
And I refer to "{result.VersionID}" as "version2"28µs
Then "{version1}" is not equal to "{version2}"35µ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"34µs
And I call "{api}" with "GetServiceAPI" using argument "object-storage"36µ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"473ms
And I refer to "{result.VersionID}" as "version1"46µs
And I call "{storage}" with "CreateObject" using arguments "{resource-name}", "version-test-object={timestamp}.txt", and "modified content"906ms
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}"441ms
And I attach "{result}" to the test output as "original-content.json"69µs
Then "{result.Data}" contains "original content"45µs
When I call "{storage}" with "ReadObjectAtVersion" using arguments "{resource-name}", "version-test-object={timestamp}.txt", and "{version2}"444ms
Then "{result.Data}" contains "modified content"63µ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 (237 bytes)
{"ID":"version-test-object=1784277854128.txt","BucketID":"finos-ccc-integration-container-main","Name":"version-test-object=1784277854128.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"40µs
And I call "{api}" with "GetServiceAPI" using argument "object-storage"47µs
And I refer to "{result}" as "storage"24µs
When I call "{storage}" with "CreateObject" using arguments "{resource-name}", "recover-deleted-object={timestamp}.txt", and "data to retain"456ms
And I refer to "{result.VersionID}" as "retainedVersionId"31µs
When I call "{storage}" with "DeleteObject" using arguments "{resource-name}" and "recover-deleted-object={timestamp}.txt"437ms
When I call "{storage}" with "ReadObjectAtVersion" using arguments "{resource-name}", "recover-deleted-object={timestamp}.txt", and "{retainedVersionId}"433ms
Then "{result.Data}" contains "data to retain"38µs
And I attach "{result}" to the test output as "recovered-deleted-version.json"57µs
📎 Attachments:
recovered-deleted-version.json
View JSON (241 bytes)
{"ID":"recover-deleted-object=1784277856394.txt","BucketID":"finos-ccc-integration-container-main","Name":"recover-deleted-object=1784277856394.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"61µs
And I call "{api}" with "GetServiceAPI" using argument "object-storage"50µs
And I refer to "{result}" as "storage"16µs
When I call "{storage}" with "CreateObject" using arguments "{resource-name}", "list-deleted-versions-object={timestamp}.txt", and "versioned data"464ms
And I refer to "{result.VersionID}" as "listedVersionId"75µs
When I call "{storage}" with "DeleteObject" using arguments "{resource-name}" and "list-deleted-versions-object={timestamp}.txt"450ms
When I call "{storage}" with "ListObjectVersions" using arguments "{resource-name}" and "list-deleted-versions-object={timestamp}.txt"449ms
And "{result}" is an array of objects with at least the following contents38µs
VersionIDObjectID
{listedVersionId}list-deleted-versions-object={timestamp}.txt
expected row not found: map[ObjectID:list-deleted-versions-object={timestamp}.txt VersionID:{listedVersionId}]
And I attach "{result}" to the test output as "versions-after-delete.json"23µs
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"50µs
Then no-op required30µ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"75µs
And I call "{api}" with "GetServiceAPI" using argument "{service-type}"62µs
And I refer to "{result}" as "theService"47µs
Given I call "{api}" with "GetServiceAPI" using argument "logging"213µs
And I refer to "{result}" as "loggingService"58µs
When I call "{theService}" with "UpdateResourcePolicy"950ms
Then "{result}" is not an error32µs
And I attach "{result}" to the test output as "Policy Update Result"41µ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 error30µs
And I refer to "{result}" as "adminLogs"20µs
And I attach "{adminLogs}" to the test output as "Admin Activity Logs"157µs
Then "{adminLogs}" is an array of objects with at least the following contents50µ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"34µs
Given I call "{api}" with "GetServiceAPI" using argument "{service-type}"47µs
And I refer to "{result}" as "theService"27µs
And I call "{api}" with "GetServiceAPI" using argument "logging"48µs
And I refer to "{result}" as "loggingService"25µs
When I call "{theService}" with "TriggerDataWrite" using argument "{resource-name}"460ms
And I attach "{result}" to the test output as "Data Write Trigger Result"70µs
And we wait for a period of "10000" ms10s
Then I call "{loggingService}" with "QueryLogs" using arguments "{resource-name}", "data-write", and "{20}"3s
And I refer to "{result}" as "dataLogs"37µs
And I attach "{dataLogs}" to the test output as "Data Write Logs"59µs
Then "{dataLogs}" is an array of objects with at least the following contents52µs
result
Succeeded
expected row not found: map[result:Succeeded]
📎 Attachments:
Data Write Trigger Result
View JSON (4 bytes)
null
Data Write Logs
View JSON (2 bytes)
[]
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"52µs
Given I call "{api}" with "GetServiceAPI" using argument "{service-type}"46µs
And I refer to "{result}" as "theService"33µs
And I call "{api}" with "GetServiceAPI" using argument "logging"26µs
And I refer to "{result}" as "loggingService"21µs
When I call "{theService}" with "TriggerDataRead" using argument "{resource-name}"886ms
And I attach "{result}" to the test output as "Data Read Trigger Result"68µs
And we wait for a period of "10000" ms10s
When I call "{loggingService}" with "QueryLogs" using arguments "{resource-name}", "data-read", and "{20}"991ms
Then "{result}" is not an error55µs
And I refer to "{result}" as "readLogs"23µs
And I attach "{readLogs}" to the test output as "Data Read Logs"57µs
Then "{readLogs}" is an array of objects with at least the following contents46µs
result
Succeeded
expected row not found: map[result:Succeeded]
📎 Attachments:
Data Read Trigger Result
View JSON (4 bytes)
null
Data Read Logs
View JSON (2 bytes)
[]
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"50µs
And I call "{api}" with "GetServiceAPIWithIdentity" using arguments "{service-type}" and "test-user-no-access"63µs
And "{result}" is not an error33µs
And I refer to "{result}" as "userReadableService"17µs
When I call "{userReadableService}" with "TriggerDataRead" using argument "{resource-name}"39ms
Then "{result}" is an error34µs
And I attach "{result}" to the test output as "no-access-trigger-data-read-error.txt"62µs
📎 Attachments:
no-access-trigger-data-read-error.txt
View Content (849 bytes)
failed to download blob cfi-trigger-data-read-probe.txt: GET https://finoscccintegrationmain.blob.core.windows.net/finos-ccc-integration-container-main/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:3a51d614-301e-0020-1ac8-15d63c000000
Time:2026-07-17T08:44:57.0036571Z
--------------------------------------------------------------------------------
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"46µs
Then no-op required28µ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"70µs
Then no-op required40µ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"51µs
Then no-op required25µs