diff --git a/blob/blob-aws/src/test/java/com/salesforce/multicloudj/blob/aws/AwsBlobStoreIT.java b/blob/blob-aws/src/test/java/com/salesforce/multicloudj/blob/aws/AwsBlobStoreIT.java index 23c26b414..fce8f0c20 100644 --- a/blob/blob-aws/src/test/java/com/salesforce/multicloudj/blob/aws/AwsBlobStoreIT.java +++ b/blob/blob-aws/src/test/java/com/salesforce/multicloudj/blob/aws/AwsBlobStoreIT.java @@ -63,6 +63,11 @@ public AbstractBlobStore createBlobStore( return createBlobStore(bucketNameToUse, credentialsOverrider); } + @Override + public boolean isObjectLockSupported() { + return true; + } + private AbstractBlobStore createBlobStore( final String bucketName, final CredentialsOverrider credentialsOverrider) { diff --git a/blob/blob-aws/src/test/resources/mappings/awsblobstoreit_testgetobjectlock_afteruploadwithretentioncompliance-delete-0.json b/blob/blob-aws/src/test/resources/mappings/awsblobstoreit_testgetobjectlock_afteruploadwithretentioncompliance-delete-0.json new file mode 100644 index 000000000..11ed6fe5b --- /dev/null +++ b/blob/blob-aws/src/test/resources/mappings/awsblobstoreit_testgetobjectlock_afteruploadwithretentioncompliance-delete-0.json @@ -0,0 +1,22 @@ +{ + "id" : "5698f91f-fb33-4776-bedf-e65046e855ec", + "name" : "AwsBlobStoreIT_testGetObjectLock_afterUploadWithRetentionCompliance-DELETE-0", + "request" : { + "url" : "/chameleon-jcloud-versioned/conformance-tests/objectlock/retention-compliance", + "method" : "DELETE" + }, + "response" : { + "status" : 204, + "headers" : { + "Server" : "AmazonS3", + "x-amz-delete-marker" : "true", + "x-amz-request-id" : "4D2FZ3K2FAHC4NA0", + "x-amz-id-2" : "FH8bBH9YhEfVFTfLlWlJ5XHpdY54eT28Fb75z3842e557KSz221IxilDlX8xcq3+T+pysCQYED4ZJWwdBS7TTAAUCt9UK8xm", + "x-amz-version-id" : "Wcl46YWohnfme.wPJHzRlIStohxDEOtq", + "Date" : "Tue, 10 Mar 2026 16:18:32 GMT" + } + }, + "uuid" : "5698f91f-fb33-4776-bedf-e65046e855ec", + "persistent" : true, + "insertionIndex" : 600 +} \ No newline at end of file diff --git a/blob/blob-aws/src/test/resources/mappings/awsblobstoreit_testgetobjectlock_afteruploadwithretentioncompliance-get-1.json b/blob/blob-aws/src/test/resources/mappings/awsblobstoreit_testgetobjectlock_afteruploadwithretentioncompliance-get-1.json new file mode 100644 index 000000000..3c6291123 --- /dev/null +++ b/blob/blob-aws/src/test/resources/mappings/awsblobstoreit_testgetobjectlock_afteruploadwithretentioncompliance-get-1.json @@ -0,0 +1,21 @@ +{ + "id" : "d347659c-5a3c-4fc8-b762-cbc659db862f", + "name" : "AwsBlobStoreIT_testGetObjectLock_afterUploadWithRetentionCompliance-GET-1", + "request" : { + "url" : "/chameleon-jcloud-versioned/conformance-tests/objectlock/retention-compliance?legal-hold", + "method" : "GET" + }, + "response" : { + "status" : 200, + "base64Body" : "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExlZ2FsSG9sZCB4bWxucz0iaHR0cDovL3MzLmFtYXpvbmF3cy5jb20vZG9jLzIwMDYtMDMtMDEvIj48U3RhdHVzPk9GRjwvU3RhdHVzPjwvTGVnYWxIb2xkPg==", + "headers" : { + "Server" : "AmazonS3", + "x-amz-request-id" : "4D2B85GHY6590P53", + "x-amz-id-2" : "307GDQtwiRYN+bfeMLaezt7y6XzLj65HzEwvWToGP3Psyu9IEWal7IoQf7IKOkBxyuOffstlt99e6rmFODGTnn2OQPq020b8", + "Date" : "Tue, 10 Mar 2026 16:18:32 GMT" + } + }, + "uuid" : "d347659c-5a3c-4fc8-b762-cbc659db862f", + "persistent" : true, + "insertionIndex" : 601 +} \ No newline at end of file diff --git a/blob/blob-aws/src/test/resources/mappings/awsblobstoreit_testgetobjectlock_afteruploadwithretentioncompliance-get-2.json b/blob/blob-aws/src/test/resources/mappings/awsblobstoreit_testgetobjectlock_afteruploadwithretentioncompliance-get-2.json new file mode 100644 index 000000000..b5fdd7a41 --- /dev/null +++ b/blob/blob-aws/src/test/resources/mappings/awsblobstoreit_testgetobjectlock_afteruploadwithretentioncompliance-get-2.json @@ -0,0 +1,21 @@ +{ + "id" : "95d63c37-f950-4888-acfa-534a9fd7c3fa", + "name" : "AwsBlobStoreIT_testGetObjectLock_afterUploadWithRetentionCompliance-GET-2", + "request" : { + "url" : "/chameleon-jcloud-versioned/conformance-tests/objectlock/retention-compliance?retention", + "method" : "GET" + }, + "response" : { + "status" : 200, + "base64Body" : "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPFJldGVudGlvbiB4bWxucz0iaHR0cDovL3MzLmFtYXpvbmF3cy5jb20vZG9jLzIwMDYtMDMtMDEvIj48TW9kZT5DT01QTElBTkNFPC9Nb2RlPjxSZXRhaW5VbnRpbERhdGU+MjAyNi0wMy0xMVQxNTo0NzoyNS41MTJaPC9SZXRhaW5VbnRpbERhdGU+PC9SZXRlbnRpb24+", + "headers" : { + "Server" : "AmazonS3", + "x-amz-request-id" : "4HYQ7JFFWFQZZRTB", + "x-amz-id-2" : "62M42VJRPEmEuYoDhJmuYVlO8P67Q4j7CH543j6JBcvKJaUnFG85HdWksroM0Q+hdQW/VPrYqgPZinVKC60nyuGrQSjBmOpG", + "Date" : "Tue, 10 Mar 2026 16:18:31 GMT" + } + }, + "uuid" : "95d63c37-f950-4888-acfa-534a9fd7c3fa", + "persistent" : true, + "insertionIndex" : 602 +} \ No newline at end of file diff --git a/blob/blob-aws/src/test/resources/mappings/awsblobstoreit_testgetobjectlock_afteruploadwithretentioncompliance-put-3.json b/blob/blob-aws/src/test/resources/mappings/awsblobstoreit_testgetobjectlock_afteruploadwithretentioncompliance-put-3.json new file mode 100644 index 000000000..2ab872ae9 --- /dev/null +++ b/blob/blob-aws/src/test/resources/mappings/awsblobstoreit_testgetobjectlock_afteruploadwithretentioncompliance-put-3.json @@ -0,0 +1,28 @@ +{ + "id" : "36c0110e-2f3b-45c0-8ac8-fa58a72c252d", + "name" : "AwsBlobStoreIT_testGetObjectLock_afterUploadWithRetentionCompliance-PUT-3", + "request" : { + "url" : "/chameleon-jcloud-versioned/conformance-tests/objectlock/retention-compliance", + "method" : "PUT", + "bodyPatterns" : [ { + "binaryEqualTo" : "T2JqZWN0IGxvY2sgcmV0ZW50aW9uIGNvbXBsaWFuY2UgdGVzdA==" + } ] + }, + "response" : { + "status" : 200, + "headers" : { + "Server" : "AmazonS3", + "ETag" : "\"a0d246afc0f8baf1e7dd602c80efd967\"", + "x-amz-checksum-type" : "FULL_OBJECT", + "x-amz-request-id" : "4HYQDD20GF2X48A5", + "x-amz-checksum-crc32c" : "4z8aNg==", + "x-amz-server-side-encryption" : "AES256", + "x-amz-id-2" : "FieLviYJIUnvJJpzcWvPahzS2rpJhmLJKlhX8L8PPj06Vpw5H3hWevDMEMlnuBQpil8vFCEJFltftsJElzW/ztGFTFQEh+r8", + "x-amz-version-id" : "qeEgCuuJTDNRMqIIut.sJOq4qQ_hqj_o", + "Date" : "Tue, 10 Mar 2026 16:18:31 GMT" + } + }, + "uuid" : "36c0110e-2f3b-45c0-8ac8-fa58a72c252d", + "persistent" : true, + "insertionIndex" : 603 +} \ No newline at end of file diff --git a/blob/blob-aws/src/test/resources/mappings/awsblobstoreit_testgetobjectlock_afteruploadwithretentiongovernance-delete-0.json b/blob/blob-aws/src/test/resources/mappings/awsblobstoreit_testgetobjectlock_afteruploadwithretentiongovernance-delete-0.json new file mode 100644 index 000000000..c47382e37 --- /dev/null +++ b/blob/blob-aws/src/test/resources/mappings/awsblobstoreit_testgetobjectlock_afteruploadwithretentiongovernance-delete-0.json @@ -0,0 +1,22 @@ +{ + "id" : "7aab7223-09da-4de4-9b5e-7749aa198d80", + "name" : "AwsBlobStoreIT_testGetObjectLock_afterUploadWithRetentionGovernance-DELETE-0", + "request" : { + "url" : "/chameleon-jcloud-versioned/conformance-tests/objectlock/retention-governance", + "method" : "DELETE" + }, + "response" : { + "status" : 204, + "headers" : { + "Server" : "AmazonS3", + "x-amz-delete-marker" : "true", + "x-amz-request-id" : "P52H89R4YZ09ZMWQ", + "x-amz-id-2" : "GRLW1/MApGDGE52h82c1xo2A7y/P2EmgsnlKCcNVdeDi9AnjdDYC4nFlErppHWL+laBMwQuFKoV3+gmWozon6RFGvqXphr3T", + "x-amz-version-id" : "1JYG_UsFaA7fg7Bdv0Q8Yv_3pPR690Zq", + "Date" : "Tue, 10 Mar 2026 16:18:34 GMT" + } + }, + "uuid" : "7aab7223-09da-4de4-9b5e-7749aa198d80", + "persistent" : true, + "insertionIndex" : 605 +} \ No newline at end of file diff --git a/blob/blob-aws/src/test/resources/mappings/awsblobstoreit_testgetobjectlock_afteruploadwithretentiongovernance-get-1.json b/blob/blob-aws/src/test/resources/mappings/awsblobstoreit_testgetobjectlock_afteruploadwithretentiongovernance-get-1.json new file mode 100644 index 000000000..893402f63 --- /dev/null +++ b/blob/blob-aws/src/test/resources/mappings/awsblobstoreit_testgetobjectlock_afteruploadwithretentiongovernance-get-1.json @@ -0,0 +1,21 @@ +{ + "id" : "16961e0e-fc8d-4b56-8580-be6f47012ddf", + "name" : "AwsBlobStoreIT_testGetObjectLock_afterUploadWithRetentionGovernance-GET-1", + "request" : { + "url" : "/chameleon-jcloud-versioned/conformance-tests/objectlock/retention-governance?legal-hold", + "method" : "GET" + }, + "response" : { + "status" : 200, + "base64Body" : "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExlZ2FsSG9sZCB4bWxucz0iaHR0cDovL3MzLmFtYXpvbmF3cy5jb20vZG9jLzIwMDYtMDMtMDEvIj48U3RhdHVzPk9GRjwvU3RhdHVzPjwvTGVnYWxIb2xkPg==", + "headers" : { + "Server" : "AmazonS3", + "x-amz-request-id" : "P52ZNTKZC412VW3J", + "x-amz-id-2" : "swL/EkEpNq/mErdPQ7ZckqM72t7+RGtj91/qgs/kSpeyRCgSAUwCfFAdIAWInSiyvZOFmIKXo+sm62dqvcOdnyLxEy1p1r+u", + "Date" : "Tue, 10 Mar 2026 16:18:34 GMT" + } + }, + "uuid" : "16961e0e-fc8d-4b56-8580-be6f47012ddf", + "persistent" : true, + "insertionIndex" : 606 +} \ No newline at end of file diff --git a/blob/blob-aws/src/test/resources/mappings/awsblobstoreit_testgetobjectlock_afteruploadwithretentiongovernance-get-2.json b/blob/blob-aws/src/test/resources/mappings/awsblobstoreit_testgetobjectlock_afteruploadwithretentiongovernance-get-2.json new file mode 100644 index 000000000..3a8d977cb --- /dev/null +++ b/blob/blob-aws/src/test/resources/mappings/awsblobstoreit_testgetobjectlock_afteruploadwithretentiongovernance-get-2.json @@ -0,0 +1,21 @@ +{ + "id" : "c3125b36-f844-4823-abf6-f32db316e309", + "name" : "AwsBlobStoreIT_testGetObjectLock_afterUploadWithRetentionGovernance-GET-2", + "request" : { + "url" : "/chameleon-jcloud-versioned/conformance-tests/objectlock/retention-governance?retention", + "method" : "GET" + }, + "response" : { + "status" : 200, + "base64Body" : "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPFJldGVudGlvbiB4bWxucz0iaHR0cDovL3MzLmFtYXpvbmF3cy5jb20vZG9jLzIwMDYtMDMtMDEvIj48TW9kZT5HT1ZFUk5BTkNFPC9Nb2RlPjxSZXRhaW5VbnRpbERhdGU+MjAyNi0wMy0xMVQxNTo0NzoyOC4yNTJaPC9SZXRhaW5VbnRpbERhdGU+PC9SZXRlbnRpb24+", + "headers" : { + "Server" : "AmazonS3", + "x-amz-request-id" : "P52RJVCPG0CZZYCH", + "x-amz-id-2" : "BY0fe52vgnvtw+1LSE22XF858XPfcNYoLyH+bViW/LlPQLcz0tS7fBqB5Mj/D20UTKpaCSTTFSF6NK1znVByM3PXoCogk8Wl", + "Date" : "Tue, 10 Mar 2026 16:18:34 GMT" + } + }, + "uuid" : "c3125b36-f844-4823-abf6-f32db316e309", + "persistent" : true, + "insertionIndex" : 607 +} \ No newline at end of file diff --git a/blob/blob-aws/src/test/resources/mappings/awsblobstoreit_testgetobjectlock_afteruploadwithretentiongovernance-put-3.json b/blob/blob-aws/src/test/resources/mappings/awsblobstoreit_testgetobjectlock_afteruploadwithretentiongovernance-put-3.json new file mode 100644 index 000000000..29f5c1656 --- /dev/null +++ b/blob/blob-aws/src/test/resources/mappings/awsblobstoreit_testgetobjectlock_afteruploadwithretentiongovernance-put-3.json @@ -0,0 +1,28 @@ +{ + "id" : "56057ab4-4c0b-491e-b103-b47a011b7eaa", + "name" : "AwsBlobStoreIT_testGetObjectLock_afterUploadWithRetentionGovernance-PUT-3", + "request" : { + "url" : "/chameleon-jcloud-versioned/conformance-tests/objectlock/retention-governance", + "method" : "PUT", + "bodyPatterns" : [ { + "binaryEqualTo" : "T2JqZWN0IGxvY2sgcmV0ZW50aW9uIGdvdmVybmFuY2UgdGVzdA==" + } ] + }, + "response" : { + "status" : 200, + "headers" : { + "Server" : "AmazonS3", + "ETag" : "\"7e7cee74a915a322ef6c75c3ab034d4f\"", + "x-amz-checksum-type" : "FULL_OBJECT", + "x-amz-request-id" : "2AEBTWVXZJZDK8MX", + "x-amz-checksum-crc32c" : "s67YvA==", + "x-amz-server-side-encryption" : "AES256", + "x-amz-id-2" : "1Xu1BSTHb1oc2kkioH9eCw6fe37ZxhCNp6ihC7CguujRLB5d3oEAnVFzHGDR9bVFnrrBkdGiKwkq9JRHcWHtk0mQNsMIkFBW", + "x-amz-version-id" : "npddx0hlKXfv38pdT3eAx8rnRseb1tTw", + "Date" : "Tue, 10 Mar 2026 16:18:33 GMT" + } + }, + "uuid" : "56057ab4-4c0b-491e-b103-b47a011b7eaa", + "persistent" : true, + "insertionIndex" : 608 +} \ No newline at end of file diff --git a/blob/blob-aws/src/test/resources/mappings/awsblobstoreit_testgetobjectlock_objectwithoutlock_returnsnullornoretention-delete-0.json b/blob/blob-aws/src/test/resources/mappings/awsblobstoreit_testgetobjectlock_objectwithoutlock_returnsnullornoretention-delete-0.json new file mode 100644 index 000000000..1ce0f63db --- /dev/null +++ b/blob/blob-aws/src/test/resources/mappings/awsblobstoreit_testgetobjectlock_objectwithoutlock_returnsnullornoretention-delete-0.json @@ -0,0 +1,22 @@ +{ + "id" : "b04c635b-781f-48e7-8689-bb07670e6f89", + "name" : "AwsBlobStoreIT_testGetObjectLock_objectWithoutLock_returnsNullOrNoRetention-DELETE-0", + "request" : { + "url" : "/chameleon-jcloud-versioned/conformance-tests/objectlock/no-lock", + "method" : "DELETE" + }, + "response" : { + "status" : 204, + "headers" : { + "Server" : "AmazonS3", + "x-amz-delete-marker" : "true", + "x-amz-request-id" : "DZ1JAWS4PRP76KGB", + "x-amz-id-2" : "Z6rbynsol+rE8M7js4/spMVHi/mxwMmj+2CEou2aAXYcuTLa2+MQTO/7LTve6Tjy2YNHYJdkekVM2zOj67/oLhyPNB+uCW1C", + "x-amz-version-id" : "bLYMFSF7JpfhYZgrgqFxEGLtKC4UYW2K", + "Date" : "Tue, 10 Mar 2026 16:18:30 GMT" + } + }, + "uuid" : "b04c635b-781f-48e7-8689-bb07670e6f89", + "persistent" : true, + "insertionIndex" : 596 +} \ No newline at end of file diff --git a/blob/blob-aws/src/test/resources/mappings/awsblobstoreit_testgetobjectlock_objectwithoutlock_returnsnullornoretention-get-1.json b/blob/blob-aws/src/test/resources/mappings/awsblobstoreit_testgetobjectlock_objectwithoutlock_returnsnullornoretention-get-1.json new file mode 100644 index 000000000..85bdc89ce --- /dev/null +++ b/blob/blob-aws/src/test/resources/mappings/awsblobstoreit_testgetobjectlock_objectwithoutlock_returnsnullornoretention-get-1.json @@ -0,0 +1,22 @@ +{ + "id" : "2be5a1bf-f7c1-44e1-a19c-7637bcf7a342", + "name" : "AwsBlobStoreIT_testGetObjectLock_objectWithoutLock_returnsNullOrNoRetention-GET-1", + "request" : { + "url" : "/chameleon-jcloud-versioned/conformance-tests/objectlock/no-lock?retention", + "method" : "GET" + }, + "response" : { + "status" : 404, + "body" : "\nNoSuchObjectLockConfigurationThe specified object does not have a ObjectLock configurationQ1ZDKSZKG7BEC0R5SmI82WQ8Lq+Uv2Rs+fQOQSi8VOn3Ecm63tHWlgQ5B1nu3Dj7LvOVVZPzXC8Ua5kqsMohxy3dz/O0BcwBEt4dCXQKy+ZCbUW2", + "headers" : { + "Server" : "AmazonS3", + "x-amz-request-id" : "Q1ZDKSZKG7BEC0R5", + "x-amz-id-2" : "SmI82WQ8Lq+Uv2Rs+fQOQSi8VOn3Ecm63tHWlgQ5B1nu3Dj7LvOVVZPzXC8Ua5kqsMohxy3dz/O0BcwBEt4dCXQKy+ZCbUW2", + "Date" : "Tue, 10 Mar 2026 16:18:28 GMT", + "Content-Type" : "application/xml" + } + }, + "uuid" : "2be5a1bf-f7c1-44e1-a19c-7637bcf7a342", + "persistent" : true, + "insertionIndex" : 597 +} \ No newline at end of file diff --git a/blob/blob-aws/src/test/resources/mappings/awsblobstoreit_testgetobjectlock_objectwithoutlock_returnsnullornoretention-put-2.json b/blob/blob-aws/src/test/resources/mappings/awsblobstoreit_testgetobjectlock_objectwithoutlock_returnsnullornoretention-put-2.json new file mode 100644 index 000000000..3780952b1 --- /dev/null +++ b/blob/blob-aws/src/test/resources/mappings/awsblobstoreit_testgetobjectlock_objectwithoutlock_returnsnullornoretention-put-2.json @@ -0,0 +1,28 @@ +{ + "id" : "1a9977f6-cef9-4873-93c8-9171d69c3575", + "name" : "AwsBlobStoreIT_testGetObjectLock_objectWithoutLock_returnsNullOrNoRetention-PUT-2", + "request" : { + "url" : "/chameleon-jcloud-versioned/conformance-tests/objectlock/no-lock", + "method" : "PUT", + "bodyPatterns" : [ { + "binaryEqualTo" : "T2JqZWN0IHdpdGhvdXQgbG9jayB0ZXN0" + } ] + }, + "response" : { + "status" : 200, + "headers" : { + "Server" : "AmazonS3", + "ETag" : "\"fdd2c398fd6d009c474f1f9a02d38ec5\"", + "x-amz-checksum-crc64nvme" : "59pOl5UH6tE=", + "x-amz-checksum-type" : "FULL_OBJECT", + "x-amz-request-id" : "Q1ZFTE54XYYCE66N", + "x-amz-server-side-encryption" : "AES256", + "x-amz-id-2" : "q/ldnpEroFP3VnJA7aDKa76pTTtcxIe+l5EDpQb4NNaJqJf56hH3BOVFReQ/Xp2/D6IY4xn/f5eNIOYquA3c7FJkZuGMKhU3", + "x-amz-version-id" : "QXlZRw2uXCUJYEzz5X2vHNqHLzKHTDiG", + "Date" : "Tue, 10 Mar 2026 16:18:29 GMT" + } + }, + "uuid" : "1a9977f6-cef9-4873-93c8-9171d69c3575", + "persistent" : true, + "insertionIndex" : 598 +} \ No newline at end of file diff --git a/blob/blob-aws/src/test/resources/mappings/awsblobstoreit_testtagging_withobjectlock-delete-0.json b/blob/blob-aws/src/test/resources/mappings/awsblobstoreit_testtagging_withobjectlock-delete-0.json new file mode 100644 index 000000000..4ae8b1e73 --- /dev/null +++ b/blob/blob-aws/src/test/resources/mappings/awsblobstoreit_testtagging_withobjectlock-delete-0.json @@ -0,0 +1,22 @@ +{ + "id" : "ceb402f6-7fd0-49c5-9523-dcfff33b6d7a", + "name" : "AwsBlobStoreIT_testTagging_withObjectLock-DELETE-0", + "request" : { + "url" : "/chameleon-jcloud-versioned/conformance-tests/blob-for-tagging-objectlock-fake", + "method" : "DELETE" + }, + "response" : { + "status" : 204, + "headers" : { + "Server" : "AmazonS3", + "x-amz-delete-marker" : "true", + "x-amz-request-id" : "ZWFX6GM2DS0TJJYY", + "x-amz-id-2" : "v/lRQx93LzTp/XGBtY37DZoInz3nmB/zxkFbRfvrExYEKxzhyrKAKpyU6ThnWF2xlI9IiJu6PeI=", + "x-amz-version-id" : "ZDqKG3qCaHH1_CpIbICrGEr48It7R36a", + "Date" : "Tue, 10 Mar 2026 14:31:06 GMT" + } + }, + "uuid" : "ceb402f6-7fd0-49c5-9523-dcfff33b6d7a", + "persistent" : true, + "insertionIndex" : 581 +} \ No newline at end of file diff --git a/blob/blob-aws/src/test/resources/mappings/awsblobstoreit_testtagging_withobjectlock-delete-1.json b/blob/blob-aws/src/test/resources/mappings/awsblobstoreit_testtagging_withobjectlock-delete-1.json new file mode 100644 index 000000000..1542ce675 --- /dev/null +++ b/blob/blob-aws/src/test/resources/mappings/awsblobstoreit_testtagging_withobjectlock-delete-1.json @@ -0,0 +1,22 @@ +{ + "id" : "84a5d2ae-59b0-4ae2-8e1b-30b0f926a7f9", + "name" : "AwsBlobStoreIT_testTagging_withObjectLock-DELETE-1", + "request" : { + "url" : "/chameleon-jcloud-versioned/conformance-tests/blob-for-tagging-objectlock", + "method" : "DELETE" + }, + "response" : { + "status" : 204, + "headers" : { + "Server" : "AmazonS3", + "x-amz-delete-marker" : "true", + "x-amz-request-id" : "ZWFZQ7RBNPDAC6WB", + "x-amz-id-2" : "ChQNGnpYPgS/+kFUysSUOYfpiUURiWwlhd+MvXtIKI0tBzb0DXvV17AWj/GGPStcnpK4UbpfYRc=", + "x-amz-version-id" : "P9BwaDOYao458KmcNZC3LKfLUH5rILtE", + "Date" : "Tue, 10 Mar 2026 14:31:06 GMT" + } + }, + "uuid" : "84a5d2ae-59b0-4ae2-8e1b-30b0f926a7f9", + "persistent" : true, + "insertionIndex" : 582 +} \ No newline at end of file diff --git a/blob/blob-aws/src/test/resources/mappings/awsblobstoreit_testtagging_withobjectlock-get-3.json b/blob/blob-aws/src/test/resources/mappings/awsblobstoreit_testtagging_withobjectlock-get-3.json new file mode 100644 index 000000000..f9e9d42c6 --- /dev/null +++ b/blob/blob-aws/src/test/resources/mappings/awsblobstoreit_testtagging_withobjectlock-get-3.json @@ -0,0 +1,36 @@ +{ + "id" : "3774a5b0-976c-4b51-a263-da7dd54f1815", + "name" : "AwsBlobStoreIT_testTagging_withObjectLock-GET-3", + "request" : { + "urlPath" : "/chameleon-jcloud-versioned/conformance-tests/blob-for-tagging-objectlock", + "method" : "GET", + "headers" : { + "X-Query-Param-Count" : { + "equalTo" : "1" + } + }, + "queryParameters" : { + "tagging" : { + "hasExactly" : [ { + "equalTo" : "" + } ] + } + } + }, + "response" : { + "status" : 200, + "base64Body" : "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPFRhZ2dpbmcgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PFRhZ1NldD48VGFnPjxLZXk+dGFnMzwvS2V5PjxWYWx1ZT52YWx1ZTM8L1ZhbHVlPjwvVGFnPjwvVGFnU2V0PjwvVGFnZ2luZz4=", + "headers" : { + "Server" : "AmazonS3", + "x-amz-request-id" : "VB6M98NS5W9JQWTQ", + "x-amz-id-2" : "7+EQcsGim9gW3ym9g+wzskzlCURkC/uFFl/TG3OqDa3rTA9hVRLpKYpco8Bn7WI4NtzSFjfmH5w=", + "x-amz-version-id" : "dgo9JT5pJMrdh0InTb0FVinbLxRovWYO", + "Date" : "Tue, 10 Mar 2026 14:31:05 GMT" + } + }, + "uuid" : "3774a5b0-976c-4b51-a263-da7dd54f1815", + "persistent" : true, + "scenarioName" : "scenario-1-chameleon-jcloud-versioned-conformance-tests-blob-for-tagging-objectlock", + "requiredScenarioState" : "scenario-1-chameleon-jcloud-versioned-conformance-tests-blob-for-tagging-objectlock-2", + "insertionIndex" : 584 +} \ No newline at end of file diff --git a/blob/blob-aws/src/test/resources/mappings/awsblobstoreit_testtagging_withobjectlock-get-5.json b/blob/blob-aws/src/test/resources/mappings/awsblobstoreit_testtagging_withobjectlock-get-5.json new file mode 100644 index 000000000..a22df201a --- /dev/null +++ b/blob/blob-aws/src/test/resources/mappings/awsblobstoreit_testtagging_withobjectlock-get-5.json @@ -0,0 +1,37 @@ +{ + "id" : "e85417ba-0bed-46ae-bbd7-f0131c4748c0", + "name" : "AwsBlobStoreIT_testTagging_withObjectLock-GET-5", + "request" : { + "urlPath" : "/chameleon-jcloud-versioned/conformance-tests/blob-for-tagging-objectlock", + "method" : "GET", + "headers" : { + "X-Query-Param-Count" : { + "equalTo" : "1" + } + }, + "queryParameters" : { + "tagging" : { + "hasExactly" : [ { + "equalTo" : "" + } ] + } + } + }, + "response" : { + "status" : 200, + "base64Body" : "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPFRhZ2dpbmcgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PFRhZ1NldD48VGFnPjxLZXk+dGFnMTwvS2V5PjxWYWx1ZT52YWx1ZTE8L1ZhbHVlPjwvVGFnPjwvVGFnU2V0PjwvVGFnZ2luZz4=", + "headers" : { + "Server" : "AmazonS3", + "x-amz-request-id" : "R92F5ZGF8DE057KY", + "x-amz-id-2" : "Hxy8ZKlPSfT0vKQ7krCewYOBL8H8jXGy/NQMHb44lYAFlQxGFWNIol07LEan7QD/vKOYNEhzPNE=", + "x-amz-version-id" : "dgo9JT5pJMrdh0InTb0FVinbLxRovWYO", + "Date" : "Tue, 10 Mar 2026 14:31:04 GMT" + } + }, + "uuid" : "e85417ba-0bed-46ae-bbd7-f0131c4748c0", + "persistent" : true, + "scenarioName" : "scenario-1-chameleon-jcloud-versioned-conformance-tests-blob-for-tagging-objectlock", + "requiredScenarioState" : "Started", + "newScenarioState" : "scenario-1-chameleon-jcloud-versioned-conformance-tests-blob-for-tagging-objectlock-2", + "insertionIndex" : 586 +} \ No newline at end of file diff --git a/blob/blob-aws/src/test/resources/mappings/awsblobstoreit_testtagging_withobjectlock-put-2.json b/blob/blob-aws/src/test/resources/mappings/awsblobstoreit_testtagging_withobjectlock-put-2.json new file mode 100644 index 000000000..696eb16f3 --- /dev/null +++ b/blob/blob-aws/src/test/resources/mappings/awsblobstoreit_testtagging_withobjectlock-put-2.json @@ -0,0 +1,40 @@ +{ + "id" : "ac4fd716-2577-4128-b7ea-d84280547ca9", + "name" : "AwsBlobStoreIT_testTagging_withObjectLock-PUT-2", + "request" : { + "urlPath" : "/chameleon-jcloud-versioned/conformance-tests/blob-for-tagging-objectlock-fake", + "method" : "PUT", + "headers" : { + "X-Query-Param-Count" : { + "equalTo" : "1" + } + }, + "queryParameters" : { + "tagging" : { + "hasExactly" : [ { + "equalTo" : "" + } ] + } + }, + "bodyPatterns" : [ { + "equalToXml" : "tag5value5" + } ] + }, + "response" : { + "status" : 405, + "body" : "\nMethodNotAllowedThe specified method is not allowed against this resource.PUTDeleteMarkerZWFNBDC50V7SCY39wKF+pc/FDDfMPKHCBdyxwEfAvn+Nc7FZmOeQcKcBp51oguPGZncY5ynLg5aghuDGMFOLbA53ui0=", + "headers" : { + "Server" : "AmazonS3", + "x-amz-delete-marker" : "true", + "x-amz-request-id" : "ZWFNBDC50V7SCY39", + "x-amz-id-2" : "wKF+pc/FDDfMPKHCBdyxwEfAvn+Nc7FZmOeQcKcBp51oguPGZncY5ynLg5aghuDGMFOLbA53ui0=", + "x-amz-version-id" : "usJvHYtD04RwhO5YCbrOCJRGtbxzoDvr", + "Date" : "Tue, 10 Mar 2026 14:31:04 GMT", + "Content-Type" : "application/xml", + "Allow" : "DELETE" + } + }, + "uuid" : "ac4fd716-2577-4128-b7ea-d84280547ca9", + "persistent" : true, + "insertionIndex" : 583 +} \ No newline at end of file diff --git a/blob/blob-aws/src/test/resources/mappings/awsblobstoreit_testtagging_withobjectlock-put-4.json b/blob/blob-aws/src/test/resources/mappings/awsblobstoreit_testtagging_withobjectlock-put-4.json new file mode 100644 index 000000000..0f0a57334 --- /dev/null +++ b/blob/blob-aws/src/test/resources/mappings/awsblobstoreit_testtagging_withobjectlock-put-4.json @@ -0,0 +1,36 @@ +{ + "id" : "681ceff6-af6a-451c-8993-6331338f3ac9", + "name" : "AwsBlobStoreIT_testTagging_withObjectLock-PUT-4", + "request" : { + "urlPath" : "/chameleon-jcloud-versioned/conformance-tests/blob-for-tagging-objectlock", + "method" : "PUT", + "headers" : { + "X-Query-Param-Count" : { + "equalTo" : "1" + } + }, + "queryParameters" : { + "tagging" : { + "hasExactly" : [ { + "equalTo" : "" + } ] + } + }, + "bodyPatterns" : [ { + "equalToXml" : "tag3value3" + } ] + }, + "response" : { + "status" : 200, + "headers" : { + "Server" : "AmazonS3", + "x-amz-request-id" : "VB6JX4H228VGPRV0", + "x-amz-id-2" : "N/CpMe0XpxnsN3c+mLTJTeX1TpWSMehRWFd8xPCcLPKz6Rib7F5KO2BPxDF9bAMrf75YJgqzOx8=", + "x-amz-version-id" : "dgo9JT5pJMrdh0InTb0FVinbLxRovWYO", + "Date" : "Tue, 10 Mar 2026 14:31:05 GMT" + } + }, + "uuid" : "681ceff6-af6a-451c-8993-6331338f3ac9", + "persistent" : true, + "insertionIndex" : 585 +} \ No newline at end of file diff --git a/blob/blob-aws/src/test/resources/mappings/awsblobstoreit_testtagging_withobjectlock-put-6.json b/blob/blob-aws/src/test/resources/mappings/awsblobstoreit_testtagging_withobjectlock-put-6.json new file mode 100644 index 000000000..61e080346 --- /dev/null +++ b/blob/blob-aws/src/test/resources/mappings/awsblobstoreit_testtagging_withobjectlock-put-6.json @@ -0,0 +1,28 @@ +{ + "id" : "93ddf6b7-e8e4-4709-ac5c-28b0380efb34", + "name" : "AwsBlobStoreIT_testTagging_withObjectLock-PUT-6", + "request" : { + "url" : "/chameleon-jcloud-versioned/conformance-tests/blob-for-tagging-objectlock", + "method" : "PUT", + "bodyPatterns" : [ { + "binaryEqualTo" : "VGFnZ2luZyB3aXRoIG9iamVjdCBsb2NrIHRlc3QgZGF0YQ==" + } ] + }, + "response" : { + "status" : 200, + "headers" : { + "Server" : "AmazonS3", + "ETag" : "\"7e1a180edde38beb3774924b70dcbfc7\"", + "x-amz-checksum-crc64nvme" : "JKlh1dpuZzw=", + "x-amz-checksum-type" : "FULL_OBJECT", + "x-amz-request-id" : "R924N65GRQ2MSA0Q", + "x-amz-server-side-encryption" : "AES256", + "x-amz-id-2" : "8UK1qHUXZKzId8afR8rI9AU10erB19Y4TbFaiz/F/663RUFPPzXus08vtv05ztL0lxvyiuSeS8g=", + "x-amz-version-id" : "dgo9JT5pJMrdh0InTb0FVinbLxRovWYO", + "Date" : "Tue, 10 Mar 2026 14:31:04 GMT" + } + }, + "uuid" : "93ddf6b7-e8e4-4709-ac5c-28b0380efb34", + "persistent" : true, + "insertionIndex" : 587 +} \ No newline at end of file diff --git a/blob/blob-client/src/test/java/com/salesforce/multicloudj/blob/client/AbstractBlobStoreIT.java b/blob/blob-client/src/test/java/com/salesforce/multicloudj/blob/client/AbstractBlobStoreIT.java index 0053f1d84..79f6a68eb 100644 --- a/blob/blob-client/src/test/java/com/salesforce/multicloudj/blob/client/AbstractBlobStoreIT.java +++ b/blob/blob-client/src/test/java/com/salesforce/multicloudj/blob/client/AbstractBlobStoreIT.java @@ -17,8 +17,11 @@ import com.salesforce.multicloudj.blob.driver.MultipartUpload; import com.salesforce.multicloudj.blob.driver.MultipartUploadRequest; import com.salesforce.multicloudj.blob.driver.MultipartUploadResponse; +import com.salesforce.multicloudj.blob.driver.ObjectLockConfiguration; +import com.salesforce.multicloudj.blob.driver.ObjectLockInfo; import com.salesforce.multicloudj.blob.driver.PresignedOperation; import com.salesforce.multicloudj.blob.driver.PresignedUrlRequest; +import com.salesforce.multicloudj.blob.driver.RetentionMode; import com.salesforce.multicloudj.blob.driver.UploadPartResponse; import com.salesforce.multicloudj.blob.driver.UploadRequest; import com.salesforce.multicloudj.blob.driver.UploadResponse; @@ -76,6 +79,14 @@ public interface Harness extends AutoCloseable { AbstractBlobStore createBlobStore( boolean useValidBucket, boolean useValidCredentials, boolean useVersionedBucket); + /** + * Whether this provider supports object lock (WORM). When false, object lock conformance + * tests are skipped. + */ + default boolean isObjectLockSupported() { + return false; + } + // provide the BlobClient endpoint in provider String getEndpoint(); @@ -2035,6 +2046,145 @@ public TestConfig( } } + /** Fixed retainUntil for object lock tests so WireMock replay matches recorded request body. */ + private static final Instant OBJECT_LOCK_RETAIN_UNTIL_GOVERNANCE = + Instant.parse("2026-03-11T15:47:28.252Z"); + private static final Instant OBJECT_LOCK_RETAIN_UNTIL_COMPLIANCE = + Instant.parse("2026-03-11T15:47:25.512Z"); + + @Test + public void testGetObjectLock_afterUploadWithRetentionGovernance() throws IOException { + Assumptions.assumeTrue( + harness.isObjectLockSupported(), "Object lock not supported by this provider"); + + String key = "conformance-tests/objectlock/retention-governance"; + byte[] content = "Object lock retention governance test".getBytes(StandardCharsets.UTF_8); + Instant retainUntil = OBJECT_LOCK_RETAIN_UNTIL_GOVERNANCE; + + AbstractBlobStore blobStore = harness.createBlobStore(true, true, true); + BucketClient bucketClient = new BucketClient(blobStore); + + try { + ObjectLockConfiguration lockConfig = + ObjectLockConfiguration.builder() + .mode(RetentionMode.GOVERNANCE) + .retainUntilDate(retainUntil) + .legalHold(false) + .build(); + try (InputStream inputStream = new ByteArrayInputStream(content)) { + bucketClient.upload( + new UploadRequest.Builder() + .withKey(key) + .withContentLength(content.length) + .withObjectLock(lockConfig) + .withChecksumValue(harness.computeChecksum(content)) + .build(), + inputStream); + } + + ObjectLockInfo info = bucketClient.getObjectLock(key, null); + Assertions.assertNotNull( + info, "getObjectLock should return non-null for object with retention"); + Assertions.assertEquals(RetentionMode.GOVERNANCE, info.getMode()); + Assertions.assertFalse(info.isLegalHold()); + } finally { + safeDeleteBlobs(bucketClient, key); + } + } + + @Test + public void testGetObjectLock_afterUploadWithRetentionCompliance() throws IOException { + Assumptions.assumeTrue( + harness.isObjectLockSupported(), "Object lock not supported by this provider"); + + String key = "conformance-tests/objectlock/retention-compliance"; + byte[] content = "Object lock retention compliance test".getBytes(StandardCharsets.UTF_8); + Instant retainUntil = OBJECT_LOCK_RETAIN_UNTIL_COMPLIANCE; + + AbstractBlobStore blobStore = harness.createBlobStore(true, true, true); + BucketClient bucketClient = new BucketClient(blobStore); + + try { + ObjectLockConfiguration lockConfig = + ObjectLockConfiguration.builder() + .mode(RetentionMode.COMPLIANCE) + .retainUntilDate(retainUntil) + .legalHold(false) + .build(); + try (InputStream inputStream = new ByteArrayInputStream(content)) { + bucketClient.upload( + new UploadRequest.Builder() + .withKey(key) + .withContentLength(content.length) + .withObjectLock(lockConfig) + .withChecksumValue(harness.computeChecksum(content)) + .build(), + inputStream); + } + + ObjectLockInfo info = bucketClient.getObjectLock(key, null); + Assertions.assertNotNull( + info, "getObjectLock should return non-null for object with retention"); + Assertions.assertEquals(RetentionMode.COMPLIANCE, info.getMode()); + Assertions.assertFalse(info.isLegalHold()); + } finally { + safeDeleteBlobs(bucketClient, key); + } + } + + @Test + public void testGetObjectLock_objectWithoutLock_returnsNullOrNoRetention() throws IOException { + Assumptions.assumeTrue( + harness.isObjectLockSupported(), "Object lock not supported by this provider"); + + String key = "conformance-tests/objectlock/no-lock"; + byte[] content = "Object without lock test".getBytes(StandardCharsets.UTF_8); + + AbstractBlobStore blobStore = harness.createBlobStore(true, true, true); + BucketClient bucketClient = new BucketClient(blobStore); + + try { + try (InputStream inputStream = new ByteArrayInputStream(content)) { + bucketClient.upload( + new UploadRequest.Builder() + .withKey(key) + .withContentLength(content.length) + .build(), + inputStream); + } + + // Provider may return null, return ObjectLockInfo with no retention/hold, or throw + // (e.g. AWS S3 when object has no lock) + try { + ObjectLockInfo info = bucketClient.getObjectLock(key, null); + if (info != null) { + Assertions.assertNull(info.getMode(), "Object without lock should have null mode"); + Assertions.assertNull( + info.getRetainUntilDate(), "Object without lock should have null retainUntilDate"); + Assertions.assertFalse( + info.isLegalHold(), "Object without lock should have legalHold false"); + } + } catch (Exception e) { + // Acceptable: some providers (e.g. AWS S3) throw when object has no object lock config + } + } finally { + safeDeleteBlobs(bucketClient, key); + } + } + + @Test + public void testGetObjectLock_nonexistentKey_throws() { + Assumptions.assumeTrue( + harness.isObjectLockSupported(), "Object lock not supported by this provider"); + + AbstractBlobStore blobStore = harness.createBlobStore(true, true, true); + BucketClient bucketClient = new BucketClient(blobStore); + + Assertions.assertThrows( + Exception.class, + () -> bucketClient.getObjectLock("conformance-tests/objectlock/nonexistent", null)); + } + @Test public void testGetVersionedMetadata() throws IOException { @@ -2736,6 +2886,63 @@ public void testTagging() throws IOException { } } + /** + * Conformance test for tagging on an object-lock-enabled bucket. Same flow as testTagging but + * uses a blob store configured for object lock (e.g. versioned/object-lock bucket). Skipped if + * the provider does not support object lock. + */ + @Test + public void testTagging_withObjectLock() throws IOException { + Assumptions.assumeTrue( + harness.isObjectLockSupported(), "Object lock not supported by this provider"); + + AbstractBlobStore blobStore = harness.createBlobStore(true, true, true); + BucketClient bucketClient = new BucketClient(blobStore); + + String key = "conformance-tests/blob-for-tagging-objectlock"; + try { + String defaultTestData = "Tagging with object lock test data"; + byte[] utf8BlobBytes = defaultTestData.getBytes(StandardCharsets.UTF_8); + Map tags = Map.of("tag1", "value1"); + + try (InputStream inputStream = new ByteArrayInputStream(utf8BlobBytes)) { + UploadRequest request = + new UploadRequest.Builder() + .withKey(key) + .withContentLength(utf8BlobBytes.length) + .withTags(tags) + .build(); + bucketClient.upload(request, inputStream); + } + + Map tagResults = bucketClient.getTags(key); + Assertions.assertEquals( + tags, tagResults, "testTagging_withObjectLock: Tags did not match what was uploaded"); + + Map tags2 = Map.of("tag3", "value3"); + bucketClient.setTags(key, tags2); + tagResults = bucketClient.getTags(key); + Assertions.assertEquals( + tags2, + tagResults, + "testTagging_withObjectLock: Tags did not match what was overwriting"); + + boolean failed = false; + try { + Map tags3 = Map.of("tag5", "value5"); + bucketClient.setTags(key + "-fake", tags3); + } catch (Throwable t) { + failed = true; + } + Assertions.assertTrue( + failed, + "testTagging_withObjectLock: Succeeded in writing tags to non-existent blob"); + } finally { + safeDeleteBlobs(bucketClient, key); + safeDeleteBlobs(bucketClient, key + "-fake"); + } + } + private static final String PRESIGNED_BLOB_UPLOAD_PREFIX = "conformance-tests/presignedUploadUrls/"; private static final String PRESIGNED_BLOB_DOWNLOAD_PREFIX = diff --git a/blob/blob-gcp/src/test/java/com/salesforce/multicloudj/blob/gcp/GcpBlobStoreIT.java b/blob/blob-gcp/src/test/java/com/salesforce/multicloudj/blob/gcp/GcpBlobStoreIT.java index 2a51d48b9..ed08db4ab 100644 --- a/blob/blob-gcp/src/test/java/com/salesforce/multicloudj/blob/gcp/GcpBlobStoreIT.java +++ b/blob/blob-gcp/src/test/java/com/salesforce/multicloudj/blob/gcp/GcpBlobStoreIT.java @@ -62,6 +62,11 @@ public AbstractBlobStore createBlobStore( } } + @Override + public boolean isObjectLockSupported() { + return true; + } + private AbstractBlobStore createBlobStore( final String bucketName, final Credentials credentials) { diff --git a/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testgetobjectlock_afteruploadwithretentioncompliance-delete-0.json b/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testgetobjectlock_afteruploadwithretentioncompliance-delete-0.json new file mode 100644 index 000000000..190ee5b65 --- /dev/null +++ b/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testgetobjectlock_afteruploadwithretentioncompliance-delete-0.json @@ -0,0 +1,25 @@ +{ + "id" : "61de1d30-9841-4e7d-9f00-89022cb04d1d", + "name" : "GcpBlobStoreIT_testGetObjectLock_afterUploadWithRetentionCompliance-DELETE-0", + "request" : { + "url" : "/storage/v1/b/substrate-sdk-gcp-poc1-test-bucket-versioned/o/conformance-tests%2Fobjectlock%2Fretention-compliance", + "method" : "DELETE" + }, + "response" : { + "status" : 204, + "headers" : { + "Alt-Svc" : "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", + "Server" : "UploadServer", + "Cache-Control" : "no-cache, no-store, max-age=0, must-revalidate", + "X-GUploader-UploadID" : "AGQBYWxRTAORbebksvipBSIeB-vXCZv-bVmHKUCA6z-UvlgeNfJzG1j8AQU4pXtuyC7xYLeebgY4AdQ", + "Vary" : [ "Origin", "X-Origin" ], + "Pragma" : "no-cache", + "Expires" : "Mon, 01 Jan 1990 00:00:00 GMT", + "Date" : "Wed, 11 Mar 2026 14:31:07 GMT", + "Content-Type" : "application/json" + } + }, + "uuid" : "61de1d30-9841-4e7d-9f00-89022cb04d1d", + "persistent" : true, + "insertionIndex" : 945 +} \ No newline at end of file diff --git a/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testgetobjectlock_afteruploadwithretentioncompliance-get-1.json b/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testgetobjectlock_afteruploadwithretentioncompliance-get-1.json new file mode 100644 index 000000000..28532e391 --- /dev/null +++ b/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testgetobjectlock_afteruploadwithretentioncompliance-get-1.json @@ -0,0 +1,25 @@ +{ + "id" : "82653c71-b408-4b20-9622-8526ac9df671", + "name" : "GcpBlobStoreIT_testGetObjectLock_afterUploadWithRetentionCompliance-GET-1", + "request" : { + "url" : "/storage/v1/b/substrate-sdk-gcp-poc1-test-bucket-versioned/o?maxResults=1&projection=full", + "method" : "GET" + }, + "response" : { + "status" : 200, + "body" : "{\n \"kind\": \"storage#objects\",\n \"nextPageToken\": \"Cidjb25mb3JtYW5jZS10ZXN0cy9vYmplY3Rsb2NrL2xlZ2FsLWhvbGQ=\",\n \"items\": [\n {\n \"kind\": \"storage#object\",\n \"id\": \"substrate-sdk-gcp-poc1-test-bucket-versioned/conformance-tests/objectlock/legal-hold/1770354569251017\",\n \"selfLink\": \"https://www.googleapis.com/storage/v1/b/substrate-sdk-gcp-poc1-test-bucket-versioned/o/conformance-tests%2Fobjectlock%2Flegal-hold\",\n \"mediaLink\": \"https://storage.googleapis.com/download/storage/v1/b/substrate-sdk-gcp-poc1-test-bucket-versioned/o/conformance-tests%2Fobjectlock%2Flegal-hold?generation=1770354569251017&alt=media\",\n \"name\": \"conformance-tests/objectlock/legal-hold\",\n \"bucket\": \"substrate-sdk-gcp-poc1-test-bucket-versioned\",\n \"generation\": \"1770354569251017\",\n \"metageneration\": \"1\",\n \"contentType\": \"application/octet-stream\",\n \"storageClass\": \"STANDARD\",\n \"size\": \"27\",\n \"md5Hash\": \"TRQZ8WSU+pMmjJZKRHoHBw==\",\n \"crc32c\": \"8r/jMg==\",\n \"etag\": \"CMmR6NmMxJIDEAE=\",\n \"temporaryHold\": true,\n \"timeCreated\": \"2026-02-06T05:09:29.301Z\",\n \"updated\": \"2026-02-06T05:09:29.301Z\",\n \"timeStorageClassUpdated\": \"2026-02-06T05:09:29.301Z\",\n \"timeFinalized\": \"2026-02-06T05:09:29.301Z\"\n }\n ]\n}\n", + "headers" : { + "Alt-Svc" : "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", + "Server" : "UploadServer", + "Cache-Control" : "private, max-age=0, must-revalidate, no-transform", + "X-GUploader-UploadID" : "AGQBYWwdD-fn9Vm9D0kBYIozJluM_3fZGr_1yZrzwzVjyEaCRGXxi6UHU6USA1k9ZiVDalbx23qEHcE", + "Vary" : [ "Origin", "X-Origin" ], + "Expires" : "Wed, 11 Mar 2026 14:31:06 GMT", + "Date" : "Wed, 11 Mar 2026 14:31:06 GMT", + "Content-Type" : "application/json; charset=UTF-8" + } + }, + "uuid" : "82653c71-b408-4b20-9622-8526ac9df671", + "persistent" : true, + "insertionIndex" : 946 +} \ No newline at end of file diff --git a/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testgetobjectlock_afteruploadwithretentioncompliance-get-2.json b/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testgetobjectlock_afteruploadwithretentioncompliance-get-2.json new file mode 100644 index 000000000..b56df7e6c --- /dev/null +++ b/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testgetobjectlock_afteruploadwithretentioncompliance-get-2.json @@ -0,0 +1,28 @@ +{ + "id" : "80a9fc34-9fa7-4f3e-a420-2b9f3017cd49", + "name" : "GcpBlobStoreIT_testGetObjectLock_afterUploadWithRetentionCompliance-GET-2", + "request" : { + "url" : "/storage/v1/b/substrate-sdk-gcp-poc1-test-bucket-versioned/o/conformance-tests%2Fobjectlock%2Fretention-compliance?projection=full", + "method" : "GET" + }, + "response" : { + "status" : 200, + "body" : "{\n \"kind\": \"storage#object\",\n \"id\": \"substrate-sdk-gcp-poc1-test-bucket-versioned/conformance-tests/objectlock/retention-compliance/1773239466514044\",\n \"selfLink\": \"https://www.googleapis.com/storage/v1/b/substrate-sdk-gcp-poc1-test-bucket-versioned/o/conformance-tests%2Fobjectlock%2Fretention-compliance\",\n \"mediaLink\": \"https://storage.googleapis.com/download/storage/v1/b/substrate-sdk-gcp-poc1-test-bucket-versioned/o/conformance-tests%2Fobjectlock%2Fretention-compliance?generation=1773239466514044&alt=media\",\n \"name\": \"conformance-tests/objectlock/retention-compliance\",\n \"bucket\": \"substrate-sdk-gcp-poc1-test-bucket-versioned\",\n \"generation\": \"1773239466514044\",\n \"metageneration\": \"1\",\n \"contentType\": \"application/octet-stream\",\n \"storageClass\": \"STANDARD\",\n \"size\": \"37\",\n \"md5Hash\": \"oNJGr8D4uvHn3WAsgO/ZZw==\",\n \"crc32c\": \"4z8aNg==\",\n \"etag\": \"CPysg+SHmJMDEAE=\",\n \"temporaryHold\": false,\n \"retentionExpirationTime\": \"2026-03-11T15:47:25.512Z\",\n \"retention\": {\n \"retainUntilTime\": \"2026-03-11T15:47:25.512Z\",\n \"mode\": \"Locked\"\n },\n \"timeCreated\": \"2026-03-11T14:31:06.572Z\",\n \"updated\": \"2026-03-11T14:31:06.572Z\",\n \"timeStorageClassUpdated\": \"2026-03-11T14:31:06.572Z\",\n \"timeFinalized\": \"2026-03-11T14:31:06.572Z\"\n}\n", + "headers" : { + "Alt-Svc" : "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", + "Server" : "UploadServer", + "Cache-Control" : "private, max-age=0, must-revalidate, no-transform", + "ETag" : "CPysg+SHmJMDEAE=", + "X-GUploader-UploadID" : "AGQBYWxAX62fCh6CRjKHqYdZH4jnQQ9vP6WMLC09_gCriqDd9-FyBPwVNxJ_PGoCfK8mQGlOM61hbU8", + "Vary" : [ "Origin", "X-Origin" ], + "Expires" : "Wed, 11 Mar 2026 14:31:06 GMT", + "Date" : "Wed, 11 Mar 2026 14:31:06 GMT", + "Content-Type" : "application/json; charset=UTF-8" + } + }, + "uuid" : "80a9fc34-9fa7-4f3e-a420-2b9f3017cd49", + "persistent" : true, + "scenarioName" : "scenario-1-storage-v1-b-substrate-sdk-gcp-poc1-test-bucket-versioned-o-conformance-tests-objectlock-retention-compliance", + "requiredScenarioState" : "scenario-1-storage-v1-b-substrate-sdk-gcp-poc1-test-bucket-versioned-o-conformance-tests-objectlock-retention-compliance-2", + "insertionIndex" : 947 +} \ No newline at end of file diff --git a/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testgetobjectlock_afteruploadwithretentioncompliance-get-3.json b/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testgetobjectlock_afteruploadwithretentioncompliance-get-3.json new file mode 100644 index 000000000..d70fd95ca --- /dev/null +++ b/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testgetobjectlock_afteruploadwithretentioncompliance-get-3.json @@ -0,0 +1,29 @@ +{ + "id" : "f4f9f982-0ef5-4393-9c07-e42e114082c6", + "name" : "GcpBlobStoreIT_testGetObjectLock_afterUploadWithRetentionCompliance-GET-3", + "request" : { + "url" : "/storage/v1/b/substrate-sdk-gcp-poc1-test-bucket-versioned/o/conformance-tests%2Fobjectlock%2Fretention-compliance?projection=full", + "method" : "GET" + }, + "response" : { + "status" : 200, + "body" : "{\n \"kind\": \"storage#object\",\n \"id\": \"substrate-sdk-gcp-poc1-test-bucket-versioned/conformance-tests/objectlock/retention-compliance/1773239466514044\",\n \"selfLink\": \"https://www.googleapis.com/storage/v1/b/substrate-sdk-gcp-poc1-test-bucket-versioned/o/conformance-tests%2Fobjectlock%2Fretention-compliance\",\n \"mediaLink\": \"https://storage.googleapis.com/download/storage/v1/b/substrate-sdk-gcp-poc1-test-bucket-versioned/o/conformance-tests%2Fobjectlock%2Fretention-compliance?generation=1773239466514044&alt=media\",\n \"name\": \"conformance-tests/objectlock/retention-compliance\",\n \"bucket\": \"substrate-sdk-gcp-poc1-test-bucket-versioned\",\n \"generation\": \"1773239466514044\",\n \"metageneration\": \"1\",\n \"contentType\": \"application/octet-stream\",\n \"storageClass\": \"STANDARD\",\n \"size\": \"37\",\n \"md5Hash\": \"oNJGr8D4uvHn3WAsgO/ZZw==\",\n \"crc32c\": \"4z8aNg==\",\n \"etag\": \"CPysg+SHmJMDEAE=\",\n \"temporaryHold\": false,\n \"retentionExpirationTime\": \"2026-03-11T15:47:25.512Z\",\n \"retention\": {\n \"retainUntilTime\": \"2026-03-11T15:47:25.512Z\",\n \"mode\": \"Locked\"\n },\n \"timeCreated\": \"2026-03-11T14:31:06.572Z\",\n \"updated\": \"2026-03-11T14:31:06.572Z\",\n \"timeStorageClassUpdated\": \"2026-03-11T14:31:06.572Z\",\n \"timeFinalized\": \"2026-03-11T14:31:06.572Z\"\n}\n", + "headers" : { + "Alt-Svc" : "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", + "Server" : "UploadServer", + "Cache-Control" : "private, max-age=0, must-revalidate, no-transform", + "ETag" : "CPysg+SHmJMDEAE=", + "X-GUploader-UploadID" : "AGQBYWw4WAMPvQ5Rrp5XOurVFp6PVI9SCcumn7jfEeroMj-PaPbEXw4uQ782st_apJ85h41uUTVmT1E", + "Vary" : [ "Origin", "X-Origin" ], + "Expires" : "Wed, 11 Mar 2026 14:31:06 GMT", + "Date" : "Wed, 11 Mar 2026 14:31:06 GMT", + "Content-Type" : "application/json; charset=UTF-8" + } + }, + "uuid" : "f4f9f982-0ef5-4393-9c07-e42e114082c6", + "persistent" : true, + "scenarioName" : "scenario-1-storage-v1-b-substrate-sdk-gcp-poc1-test-bucket-versioned-o-conformance-tests-objectlock-retention-compliance", + "requiredScenarioState" : "Started", + "newScenarioState" : "scenario-1-storage-v1-b-substrate-sdk-gcp-poc1-test-bucket-versioned-o-conformance-tests-objectlock-retention-compliance-2", + "insertionIndex" : 948 +} \ No newline at end of file diff --git a/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testgetobjectlock_afteruploadwithretentioncompliance-post-5.json b/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testgetobjectlock_afteruploadwithretentioncompliance-post-5.json new file mode 100644 index 000000000..ad1ea61a3 --- /dev/null +++ b/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testgetobjectlock_afteruploadwithretentioncompliance-post-5.json @@ -0,0 +1,31 @@ +{ + "id" : "74e8fd52-aaaa-4d3d-8eca-996437c3946c", + "name" : "GcpBlobStoreIT_testGetObjectLock_afterUploadWithRetentionCompliance-POST-5", + "request" : { + "url" : "/upload/storage/v1/b/substrate-sdk-gcp-poc1-test-bucket-versioned/o?name=conformance-tests/objectlock/retention-compliance&uploadType=resumable", + "method" : "POST", + "bodyPatterns" : [ { + "equalToJson" : "{\"bucket\":\"substrate-sdk-gcp-poc1-test-bucket-versioned\",\"metadata\":{},\"name\":\"conformance-tests/objectlock/retention-compliance\",\"retention\":{\"mode\":\"Locked\",\"retainUntilTime\":\"2026-03-11T15:47:25.512Z\"},\"temporaryHold\":false}", + "ignoreArrayOrder" : true, + "ignoreExtraElements" : false + } ] + }, + "response" : { + "status" : 200, + "headers" : { + "Alt-Svc" : "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", + "Server" : "UploadServer", + "Cache-Control" : "no-cache, no-store, max-age=0, must-revalidate", + "X-GUploader-UploadID" : "AGQBYWwAjZLULyOwV-0g_cf-_CuMqR2r41aLGOPXumHkNXj6IY7L5Wi3hAMTJeEVh42nWU9DlWzVGJuaOLlsgGc-LKkEzswgD0fi_Z_jzFK1LA", + "Vary" : [ "Origin", "X-Origin" ], + "Pragma" : "no-cache", + "Expires" : "Mon, 01 Jan 1990 00:00:00 GMT", + "Date" : "Wed, 11 Mar 2026 14:31:06 GMT", + "Location" : "https://storage.googleapis.com/upload/storage/v1/b/substrate-sdk-gcp-poc1-test-bucket-versioned/o?name=conformance-tests/objectlock/retention-compliance&uploadType=resumable&upload_id=AGQBYWwAjZLULyOwV-0g_cf-_CuMqR2r41aLGOPXumHkNXj6IY7L5Wi3hAMTJeEVh42nWU9DlWzVGJuaOLlsgGc-LKkEzswgD0fi_Z_jzFK1LA", + "Content-Type" : "text/plain; charset=utf-8" + } + }, + "uuid" : "74e8fd52-aaaa-4d3d-8eca-996437c3946c", + "persistent" : true, + "insertionIndex" : 950 +} \ No newline at end of file diff --git a/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testgetobjectlock_afteruploadwithretentioncompliance-put-4.json b/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testgetobjectlock_afteruploadwithretentioncompliance-put-4.json new file mode 100644 index 000000000..ff767bbef --- /dev/null +++ b/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testgetobjectlock_afteruploadwithretentioncompliance-put-4.json @@ -0,0 +1,31 @@ +{ + "id" : "4f654544-94e5-432f-a4ac-2c539c5ad997", + "name" : "GcpBlobStoreIT_testGetObjectLock_afterUploadWithRetentionCompliance-PUT-4", + "request" : { + "url" : "/upload/storage/v1/b/substrate-sdk-gcp-poc1-test-bucket-versioned/o?name=conformance-tests/objectlock/retention-compliance&uploadType=resumable&upload_id=AGQBYWwAjZLULyOwV-0g_cf-_CuMqR2r41aLGOPXumHkNXj6IY7L5Wi3hAMTJeEVh42nWU9DlWzVGJuaOLlsgGc-LKkEzswgD0fi_Z_jzFK1LA", + "method" : "PUT", + "bodyPatterns" : [ { + "equalTo" : "Object lock retention compliance test", + "caseInsensitive" : false + } ] + }, + "response" : { + "status" : 200, + "body" : "{\n \"kind\": \"storage#object\",\n \"id\": \"substrate-sdk-gcp-poc1-test-bucket-versioned/conformance-tests/objectlock/retention-compliance/1773239466514044\",\n \"selfLink\": \"https://www.googleapis.com/storage/v1/b/substrate-sdk-gcp-poc1-test-bucket-versioned/o/conformance-tests%2Fobjectlock%2Fretention-compliance\",\n \"mediaLink\": \"https://storage.googleapis.com/download/storage/v1/b/substrate-sdk-gcp-poc1-test-bucket-versioned/o/conformance-tests%2Fobjectlock%2Fretention-compliance?generation=1773239466514044&alt=media\",\n \"name\": \"conformance-tests/objectlock/retention-compliance\",\n \"bucket\": \"substrate-sdk-gcp-poc1-test-bucket-versioned\",\n \"generation\": \"1773239466514044\",\n \"metageneration\": \"1\",\n \"contentType\": \"application/octet-stream\",\n \"storageClass\": \"STANDARD\",\n \"size\": \"37\",\n \"md5Hash\": \"oNJGr8D4uvHn3WAsgO/ZZw==\",\n \"crc32c\": \"4z8aNg==\",\n \"etag\": \"CPysg+SHmJMDEAE=\",\n \"temporaryHold\": false,\n \"retentionExpirationTime\": \"2026-03-11T15:47:25.512Z\",\n \"retention\": {\n \"retainUntilTime\": \"2026-03-11T15:47:25.512Z\",\n \"mode\": \"Locked\"\n },\n \"timeCreated\": \"2026-03-11T14:31:06.572Z\",\n \"updated\": \"2026-03-11T14:31:06.572Z\",\n \"timeStorageClassUpdated\": \"2026-03-11T14:31:06.572Z\",\n \"timeFinalized\": \"2026-03-11T14:31:06.572Z\"\n}\n", + "headers" : { + "Alt-Svc" : "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", + "Server" : "UploadServer", + "Cache-Control" : "no-cache, no-store, max-age=0, must-revalidate", + "ETag" : "CPysg+SHmJMDEAE=", + "X-GUploader-UploadID" : "AGQBYWwAjZLULyOwV-0g_cf-_CuMqR2r41aLGOPXumHkNXj6IY7L5Wi3hAMTJeEVh42nWU9DlWzVGJuaOLlsgGc-LKkEzswgD0fi_Z_jzFK1LA", + "Vary" : [ "Origin", "X-Origin" ], + "Pragma" : "no-cache", + "Expires" : "Mon, 01 Jan 1990 00:00:00 GMT", + "Date" : "Wed, 11 Mar 2026 14:31:06 GMT", + "Content-Type" : "application/json; charset=UTF-8" + } + }, + "uuid" : "4f654544-94e5-432f-a4ac-2c539c5ad997", + "persistent" : true, + "insertionIndex" : 949 +} \ No newline at end of file diff --git a/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testgetobjectlock_afteruploadwithretentiongovernance-delete-0.json b/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testgetobjectlock_afteruploadwithretentiongovernance-delete-0.json new file mode 100644 index 000000000..8d07511be --- /dev/null +++ b/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testgetobjectlock_afteruploadwithretentiongovernance-delete-0.json @@ -0,0 +1,25 @@ +{ + "id" : "61003eb9-d91c-441c-91df-2ded91ae6d49", + "name" : "GcpBlobStoreIT_testGetObjectLock_afterUploadWithRetentionGovernance-DELETE-0", + "request" : { + "url" : "/storage/v1/b/substrate-sdk-gcp-poc1-test-bucket-versioned/o/conformance-tests%2Fobjectlock%2Fretention-governance", + "method" : "DELETE" + }, + "response" : { + "status" : 204, + "headers" : { + "Alt-Svc" : "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", + "Server" : "UploadServer", + "Cache-Control" : "no-cache, no-store, max-age=0, must-revalidate", + "X-GUploader-UploadID" : "AGQBYWxkNlb7V7zGXbJopz2ediP3El2WzuIJv3u8BF8HF5s9QqNeM_yVKWhAIDqsLuP8AR2CJzRcf1k", + "Vary" : [ "Origin", "X-Origin" ], + "Pragma" : "no-cache", + "Expires" : "Mon, 01 Jan 1990 00:00:00 GMT", + "Date" : "Wed, 11 Mar 2026 14:31:08 GMT", + "Content-Type" : "application/json" + } + }, + "uuid" : "61003eb9-d91c-441c-91df-2ded91ae6d49", + "persistent" : true, + "insertionIndex" : 952 +} \ No newline at end of file diff --git a/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testgetobjectlock_afteruploadwithretentiongovernance-get-1.json b/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testgetobjectlock_afteruploadwithretentiongovernance-get-1.json new file mode 100644 index 000000000..17a3f1a4a --- /dev/null +++ b/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testgetobjectlock_afteruploadwithretentiongovernance-get-1.json @@ -0,0 +1,25 @@ +{ + "id" : "211a9575-30e1-4567-b038-6dce1b7e9e37", + "name" : "GcpBlobStoreIT_testGetObjectLock_afterUploadWithRetentionGovernance-GET-1", + "request" : { + "url" : "/storage/v1/b/substrate-sdk-gcp-poc1-test-bucket-versioned/o?maxResults=1&projection=full", + "method" : "GET" + }, + "response" : { + "status" : 200, + "body" : "{\n \"kind\": \"storage#objects\",\n \"nextPageToken\": \"Cidjb25mb3JtYW5jZS10ZXN0cy9vYmplY3Rsb2NrL2xlZ2FsLWhvbGQ=\",\n \"items\": [\n {\n \"kind\": \"storage#object\",\n \"id\": \"substrate-sdk-gcp-poc1-test-bucket-versioned/conformance-tests/objectlock/legal-hold/1770354569251017\",\n \"selfLink\": \"https://www.googleapis.com/storage/v1/b/substrate-sdk-gcp-poc1-test-bucket-versioned/o/conformance-tests%2Fobjectlock%2Flegal-hold\",\n \"mediaLink\": \"https://storage.googleapis.com/download/storage/v1/b/substrate-sdk-gcp-poc1-test-bucket-versioned/o/conformance-tests%2Fobjectlock%2Flegal-hold?generation=1770354569251017&alt=media\",\n \"name\": \"conformance-tests/objectlock/legal-hold\",\n \"bucket\": \"substrate-sdk-gcp-poc1-test-bucket-versioned\",\n \"generation\": \"1770354569251017\",\n \"metageneration\": \"1\",\n \"contentType\": \"application/octet-stream\",\n \"storageClass\": \"STANDARD\",\n \"size\": \"27\",\n \"md5Hash\": \"TRQZ8WSU+pMmjJZKRHoHBw==\",\n \"crc32c\": \"8r/jMg==\",\n \"etag\": \"CMmR6NmMxJIDEAE=\",\n \"temporaryHold\": true,\n \"timeCreated\": \"2026-02-06T05:09:29.301Z\",\n \"updated\": \"2026-02-06T05:09:29.301Z\",\n \"timeStorageClassUpdated\": \"2026-02-06T05:09:29.301Z\",\n \"timeFinalized\": \"2026-02-06T05:09:29.301Z\"\n }\n ]\n}\n", + "headers" : { + "Alt-Svc" : "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", + "Server" : "UploadServer", + "Cache-Control" : "private, max-age=0, must-revalidate, no-transform", + "X-GUploader-UploadID" : "AGQBYWzLXc3tAj2BhjeMkaMNqA1Xiwd3du8G_Rc2f0hDnzEtFGgvWuxPfP059If7TEjJJBB_HH4HW4Q", + "Vary" : [ "Origin", "X-Origin" ], + "Expires" : "Wed, 11 Mar 2026 14:31:08 GMT", + "Date" : "Wed, 11 Mar 2026 14:31:08 GMT", + "Content-Type" : "application/json; charset=UTF-8" + } + }, + "uuid" : "211a9575-30e1-4567-b038-6dce1b7e9e37", + "persistent" : true, + "insertionIndex" : 953 +} \ No newline at end of file diff --git a/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testgetobjectlock_afteruploadwithretentiongovernance-get-2.json b/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testgetobjectlock_afteruploadwithretentiongovernance-get-2.json new file mode 100644 index 000000000..0e53f8876 --- /dev/null +++ b/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testgetobjectlock_afteruploadwithretentiongovernance-get-2.json @@ -0,0 +1,28 @@ +{ + "id" : "432f044d-8453-4227-8c76-64788543de8f", + "name" : "GcpBlobStoreIT_testGetObjectLock_afterUploadWithRetentionGovernance-GET-2", + "request" : { + "url" : "/storage/v1/b/substrate-sdk-gcp-poc1-test-bucket-versioned/o/conformance-tests%2Fobjectlock%2Fretention-governance?projection=full", + "method" : "GET" + }, + "response" : { + "status" : 200, + "body" : "{\n \"kind\": \"storage#object\",\n \"id\": \"substrate-sdk-gcp-poc1-test-bucket-versioned/conformance-tests/objectlock/retention-governance/1773239467736800\",\n \"selfLink\": \"https://www.googleapis.com/storage/v1/b/substrate-sdk-gcp-poc1-test-bucket-versioned/o/conformance-tests%2Fobjectlock%2Fretention-governance\",\n \"mediaLink\": \"https://storage.googleapis.com/download/storage/v1/b/substrate-sdk-gcp-poc1-test-bucket-versioned/o/conformance-tests%2Fobjectlock%2Fretention-governance?generation=1773239467736800&alt=media\",\n \"name\": \"conformance-tests/objectlock/retention-governance\",\n \"bucket\": \"substrate-sdk-gcp-poc1-test-bucket-versioned\",\n \"generation\": \"1773239467736800\",\n \"metageneration\": \"1\",\n \"contentType\": \"application/octet-stream\",\n \"storageClass\": \"STANDARD\",\n \"size\": \"37\",\n \"md5Hash\": \"fnzudKkVoyLvbHXDqwNNTw==\",\n \"crc32c\": \"s67YvA==\",\n \"etag\": \"COD9zeSHmJMDEAE=\",\n \"temporaryHold\": false,\n \"retentionExpirationTime\": \"2026-03-11T15:47:28.252Z\",\n \"retention\": {\n \"retainUntilTime\": \"2026-03-11T15:47:28.252Z\",\n \"mode\": \"Unlocked\"\n },\n \"timeCreated\": \"2026-03-11T14:31:07.797Z\",\n \"updated\": \"2026-03-11T14:31:07.797Z\",\n \"timeStorageClassUpdated\": \"2026-03-11T14:31:07.797Z\",\n \"timeFinalized\": \"2026-03-11T14:31:07.797Z\"\n}\n", + "headers" : { + "Alt-Svc" : "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", + "Server" : "UploadServer", + "Cache-Control" : "private, max-age=0, must-revalidate, no-transform", + "ETag" : "COD9zeSHmJMDEAE=", + "X-GUploader-UploadID" : "AGQBYWxm2OeQHbShR94DUfOQxI95d56kOs8kHD8BX8esXc4MOqZ28_3UHGpW6XtABJMWOO_j9RMRhp8", + "Vary" : [ "Origin", "X-Origin" ], + "Expires" : "Wed, 11 Mar 2026 14:31:08 GMT", + "Date" : "Wed, 11 Mar 2026 14:31:08 GMT", + "Content-Type" : "application/json; charset=UTF-8" + } + }, + "uuid" : "432f044d-8453-4227-8c76-64788543de8f", + "persistent" : true, + "scenarioName" : "scenario-1-storage-v1-b-substrate-sdk-gcp-poc1-test-bucket-versioned-o-conformance-tests-objectlock-retention-governance", + "requiredScenarioState" : "scenario-1-storage-v1-b-substrate-sdk-gcp-poc1-test-bucket-versioned-o-conformance-tests-objectlock-retention-governance-2", + "insertionIndex" : 954 +} \ No newline at end of file diff --git a/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testgetobjectlock_afteruploadwithretentiongovernance-get-3.json b/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testgetobjectlock_afteruploadwithretentiongovernance-get-3.json new file mode 100644 index 000000000..8a64572b4 --- /dev/null +++ b/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testgetobjectlock_afteruploadwithretentiongovernance-get-3.json @@ -0,0 +1,29 @@ +{ + "id" : "0e502160-f7ea-422a-9b57-8d95b530ad52", + "name" : "GcpBlobStoreIT_testGetObjectLock_afterUploadWithRetentionGovernance-GET-3", + "request" : { + "url" : "/storage/v1/b/substrate-sdk-gcp-poc1-test-bucket-versioned/o/conformance-tests%2Fobjectlock%2Fretention-governance?projection=full", + "method" : "GET" + }, + "response" : { + "status" : 200, + "body" : "{\n \"kind\": \"storage#object\",\n \"id\": \"substrate-sdk-gcp-poc1-test-bucket-versioned/conformance-tests/objectlock/retention-governance/1773239467736800\",\n \"selfLink\": \"https://www.googleapis.com/storage/v1/b/substrate-sdk-gcp-poc1-test-bucket-versioned/o/conformance-tests%2Fobjectlock%2Fretention-governance\",\n \"mediaLink\": \"https://storage.googleapis.com/download/storage/v1/b/substrate-sdk-gcp-poc1-test-bucket-versioned/o/conformance-tests%2Fobjectlock%2Fretention-governance?generation=1773239467736800&alt=media\",\n \"name\": \"conformance-tests/objectlock/retention-governance\",\n \"bucket\": \"substrate-sdk-gcp-poc1-test-bucket-versioned\",\n \"generation\": \"1773239467736800\",\n \"metageneration\": \"1\",\n \"contentType\": \"application/octet-stream\",\n \"storageClass\": \"STANDARD\",\n \"size\": \"37\",\n \"md5Hash\": \"fnzudKkVoyLvbHXDqwNNTw==\",\n \"crc32c\": \"s67YvA==\",\n \"etag\": \"COD9zeSHmJMDEAE=\",\n \"temporaryHold\": false,\n \"retentionExpirationTime\": \"2026-03-11T15:47:28.252Z\",\n \"retention\": {\n \"retainUntilTime\": \"2026-03-11T15:47:28.252Z\",\n \"mode\": \"Unlocked\"\n },\n \"timeCreated\": \"2026-03-11T14:31:07.797Z\",\n \"updated\": \"2026-03-11T14:31:07.797Z\",\n \"timeStorageClassUpdated\": \"2026-03-11T14:31:07.797Z\",\n \"timeFinalized\": \"2026-03-11T14:31:07.797Z\"\n}\n", + "headers" : { + "Alt-Svc" : "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", + "Server" : "UploadServer", + "Cache-Control" : "private, max-age=0, must-revalidate, no-transform", + "ETag" : "COD9zeSHmJMDEAE=", + "X-GUploader-UploadID" : "AGQBYWxNMOC31iy0PwQdbbLr0x24GU3RUOOnu6wcBOfle83zxeyFMrj_LyNQrSUBexwupYZOU5ENSrE", + "Vary" : [ "Origin", "X-Origin" ], + "Expires" : "Wed, 11 Mar 2026 14:31:07 GMT", + "Date" : "Wed, 11 Mar 2026 14:31:07 GMT", + "Content-Type" : "application/json; charset=UTF-8" + } + }, + "uuid" : "0e502160-f7ea-422a-9b57-8d95b530ad52", + "persistent" : true, + "scenarioName" : "scenario-1-storage-v1-b-substrate-sdk-gcp-poc1-test-bucket-versioned-o-conformance-tests-objectlock-retention-governance", + "requiredScenarioState" : "Started", + "newScenarioState" : "scenario-1-storage-v1-b-substrate-sdk-gcp-poc1-test-bucket-versioned-o-conformance-tests-objectlock-retention-governance-2", + "insertionIndex" : 955 +} \ No newline at end of file diff --git a/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testgetobjectlock_afteruploadwithretentiongovernance-post-5.json b/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testgetobjectlock_afteruploadwithretentiongovernance-post-5.json new file mode 100644 index 000000000..f60c2dd26 --- /dev/null +++ b/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testgetobjectlock_afteruploadwithretentiongovernance-post-5.json @@ -0,0 +1,31 @@ +{ + "id" : "26be7339-affc-4120-b52b-f2b03e6201a7", + "name" : "GcpBlobStoreIT_testGetObjectLock_afterUploadWithRetentionGovernance-POST-5", + "request" : { + "url" : "/upload/storage/v1/b/substrate-sdk-gcp-poc1-test-bucket-versioned/o?name=conformance-tests/objectlock/retention-governance&uploadType=resumable", + "method" : "POST", + "bodyPatterns" : [ { + "equalToJson" : "{\"bucket\":\"substrate-sdk-gcp-poc1-test-bucket-versioned\",\"metadata\":{},\"name\":\"conformance-tests/objectlock/retention-governance\",\"retention\":{\"mode\":\"Unlocked\",\"retainUntilTime\":\"2026-03-11T15:47:28.252Z\"},\"temporaryHold\":false}", + "ignoreArrayOrder" : true, + "ignoreExtraElements" : false + } ] + }, + "response" : { + "status" : 200, + "headers" : { + "Alt-Svc" : "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", + "Server" : "UploadServer", + "Cache-Control" : "no-cache, no-store, max-age=0, must-revalidate", + "X-GUploader-UploadID" : "AGQBYWz8hWvSMQ5LcXi_hGGV2pxjsdg8PmC5qpQzgyBZN3kT0XxCOuKuK9z4z_3-dW6T_btB-cNTMMw5IWjVJd3kA1MI4wWHYbUbNPU8vK6Etw", + "Vary" : [ "Origin", "X-Origin" ], + "Pragma" : "no-cache", + "Expires" : "Mon, 01 Jan 1990 00:00:00 GMT", + "Date" : "Wed, 11 Mar 2026 14:31:07 GMT", + "Location" : "https://storage.googleapis.com/upload/storage/v1/b/substrate-sdk-gcp-poc1-test-bucket-versioned/o?name=conformance-tests/objectlock/retention-governance&uploadType=resumable&upload_id=AGQBYWz8hWvSMQ5LcXi_hGGV2pxjsdg8PmC5qpQzgyBZN3kT0XxCOuKuK9z4z_3-dW6T_btB-cNTMMw5IWjVJd3kA1MI4wWHYbUbNPU8vK6Etw", + "Content-Type" : "text/plain; charset=utf-8" + } + }, + "uuid" : "26be7339-affc-4120-b52b-f2b03e6201a7", + "persistent" : true, + "insertionIndex" : 957 +} \ No newline at end of file diff --git a/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testgetobjectlock_afteruploadwithretentiongovernance-put-4.json b/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testgetobjectlock_afteruploadwithretentiongovernance-put-4.json new file mode 100644 index 000000000..9c93da13c --- /dev/null +++ b/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testgetobjectlock_afteruploadwithretentiongovernance-put-4.json @@ -0,0 +1,31 @@ +{ + "id" : "fff4ed6e-6cf8-416d-a012-00408cc9e735", + "name" : "GcpBlobStoreIT_testGetObjectLock_afterUploadWithRetentionGovernance-PUT-4", + "request" : { + "url" : "/upload/storage/v1/b/substrate-sdk-gcp-poc1-test-bucket-versioned/o?name=conformance-tests/objectlock/retention-governance&uploadType=resumable&upload_id=AGQBYWz8hWvSMQ5LcXi_hGGV2pxjsdg8PmC5qpQzgyBZN3kT0XxCOuKuK9z4z_3-dW6T_btB-cNTMMw5IWjVJd3kA1MI4wWHYbUbNPU8vK6Etw", + "method" : "PUT", + "bodyPatterns" : [ { + "equalTo" : "Object lock retention governance test", + "caseInsensitive" : false + } ] + }, + "response" : { + "status" : 200, + "body" : "{\n \"kind\": \"storage#object\",\n \"id\": \"substrate-sdk-gcp-poc1-test-bucket-versioned/conformance-tests/objectlock/retention-governance/1773239467736800\",\n \"selfLink\": \"https://www.googleapis.com/storage/v1/b/substrate-sdk-gcp-poc1-test-bucket-versioned/o/conformance-tests%2Fobjectlock%2Fretention-governance\",\n \"mediaLink\": \"https://storage.googleapis.com/download/storage/v1/b/substrate-sdk-gcp-poc1-test-bucket-versioned/o/conformance-tests%2Fobjectlock%2Fretention-governance?generation=1773239467736800&alt=media\",\n \"name\": \"conformance-tests/objectlock/retention-governance\",\n \"bucket\": \"substrate-sdk-gcp-poc1-test-bucket-versioned\",\n \"generation\": \"1773239467736800\",\n \"metageneration\": \"1\",\n \"contentType\": \"application/octet-stream\",\n \"storageClass\": \"STANDARD\",\n \"size\": \"37\",\n \"md5Hash\": \"fnzudKkVoyLvbHXDqwNNTw==\",\n \"crc32c\": \"s67YvA==\",\n \"etag\": \"COD9zeSHmJMDEAE=\",\n \"temporaryHold\": false,\n \"retentionExpirationTime\": \"2026-03-11T15:47:28.252Z\",\n \"retention\": {\n \"retainUntilTime\": \"2026-03-11T15:47:28.252Z\",\n \"mode\": \"Unlocked\"\n },\n \"timeCreated\": \"2026-03-11T14:31:07.797Z\",\n \"updated\": \"2026-03-11T14:31:07.797Z\",\n \"timeStorageClassUpdated\": \"2026-03-11T14:31:07.797Z\",\n \"timeFinalized\": \"2026-03-11T14:31:07.797Z\"\n}\n", + "headers" : { + "Alt-Svc" : "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", + "Server" : "UploadServer", + "Cache-Control" : "no-cache, no-store, max-age=0, must-revalidate", + "ETag" : "COD9zeSHmJMDEAE=", + "X-GUploader-UploadID" : "AGQBYWz8hWvSMQ5LcXi_hGGV2pxjsdg8PmC5qpQzgyBZN3kT0XxCOuKuK9z4z_3-dW6T_btB-cNTMMw5IWjVJd3kA1MI4wWHYbUbNPU8vK6Etw", + "Vary" : [ "Origin", "X-Origin" ], + "Pragma" : "no-cache", + "Expires" : "Mon, 01 Jan 1990 00:00:00 GMT", + "Date" : "Wed, 11 Mar 2026 14:31:07 GMT", + "Content-Type" : "application/json; charset=UTF-8" + } + }, + "uuid" : "fff4ed6e-6cf8-416d-a012-00408cc9e735", + "persistent" : true, + "insertionIndex" : 956 +} \ No newline at end of file diff --git a/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testgetobjectlock_nonexistentkey_throws-get-0.json b/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testgetobjectlock_nonexistentkey_throws-get-0.json new file mode 100644 index 000000000..99b047c23 --- /dev/null +++ b/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testgetobjectlock_nonexistentkey_throws-get-0.json @@ -0,0 +1,26 @@ +{ + "id" : "2726eddd-0023-446f-b2a9-84205a1e3ffc", + "name" : "GcpBlobStoreIT_testGetObjectLock_nonexistentKey_throws-GET-0", + "request" : { + "url" : "/storage/v1/b/substrate-sdk-gcp-poc1-test-bucket-versioned/o/conformance-tests%2Fobjectlock%2Fnonexistent?projection=full", + "method" : "GET" + }, + "response" : { + "status" : 404, + "body" : "{\n \"error\": {\n \"code\": 404,\n \"message\": \"No such object: substrate-sdk-gcp-poc1-test-bucket-versioned/conformance-tests/objectlock/nonexistent\",\n \"errors\": [\n {\n \"message\": \"No such object: substrate-sdk-gcp-poc1-test-bucket-versioned/conformance-tests/objectlock/nonexistent\",\n \"domain\": \"global\",\n \"reason\": \"notFound\"\n }\n ]\n }\n}\n", + "headers" : { + "Alt-Svc" : "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", + "Server" : "UploadServer", + "Cache-Control" : "no-cache, no-store, max-age=0, must-revalidate", + "X-GUploader-UploadID" : "AGQBYWzWa7XPpYEZZGBB6o8h9MswPeFH4VAK1ddxXDGFNJwffo-9OEu6RbsQ2gkNCVmK6xedBxf3i24", + "Vary" : [ "Origin", "X-Origin" ], + "Pragma" : "no-cache", + "Expires" : "Mon, 01 Jan 1990 00:00:00 GMT", + "Date" : "Wed, 11 Mar 2026 14:31:05 GMT", + "Content-Type" : "application/json; charset=UTF-8" + } + }, + "uuid" : "2726eddd-0023-446f-b2a9-84205a1e3ffc", + "persistent" : true, + "insertionIndex" : 943 +} \ No newline at end of file diff --git a/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testgetobjectlock_objectwithoutlock_returnsnullornoretention-delete-0.json b/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testgetobjectlock_objectwithoutlock_returnsnullornoretention-delete-0.json new file mode 100644 index 000000000..a1d697db8 --- /dev/null +++ b/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testgetobjectlock_objectwithoutlock_returnsnullornoretention-delete-0.json @@ -0,0 +1,25 @@ +{ + "id" : "d8d8d686-b5d1-406d-a0ed-9e144b2acda3", + "name" : "GcpBlobStoreIT_testGetObjectLock_objectWithoutLock_returnsNullOrNoRetention-DELETE-0", + "request" : { + "url" : "/storage/v1/b/substrate-sdk-gcp-poc1-test-bucket-versioned/o/conformance-tests%2Fobjectlock%2Fno-lock", + "method" : "DELETE" + }, + "response" : { + "status" : 204, + "headers" : { + "Alt-Svc" : "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", + "Server" : "UploadServer", + "Cache-Control" : "no-cache, no-store, max-age=0, must-revalidate", + "X-GUploader-UploadID" : "AGQBYWyUytG_bmME1CZ9Csm2_TwNtUnnn6ywrs5g1HXMVK1t9oIRsEy3_TpyKvAF5DwTyQyRMix7IV0", + "Vary" : [ "Origin", "X-Origin" ], + "Pragma" : "no-cache", + "Expires" : "Mon, 01 Jan 1990 00:00:00 GMT", + "Date" : "Wed, 11 Mar 2026 14:31:05 GMT", + "Content-Type" : "application/json" + } + }, + "uuid" : "d8d8d686-b5d1-406d-a0ed-9e144b2acda3", + "persistent" : true, + "insertionIndex" : 936 +} \ No newline at end of file diff --git a/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testgetobjectlock_objectwithoutlock_returnsnullornoretention-get-1.json b/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testgetobjectlock_objectwithoutlock_returnsnullornoretention-get-1.json new file mode 100644 index 000000000..e405e4399 --- /dev/null +++ b/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testgetobjectlock_objectwithoutlock_returnsnullornoretention-get-1.json @@ -0,0 +1,25 @@ +{ + "id" : "301cda49-79e6-4dce-800e-413e6d042045", + "name" : "GcpBlobStoreIT_testGetObjectLock_objectWithoutLock_returnsNullOrNoRetention-GET-1", + "request" : { + "url" : "/storage/v1/b/substrate-sdk-gcp-poc1-test-bucket-versioned/o?maxResults=1&projection=full", + "method" : "GET" + }, + "response" : { + "status" : 200, + "body" : "{\n \"kind\": \"storage#objects\",\n \"nextPageToken\": \"Cidjb25mb3JtYW5jZS10ZXN0cy9vYmplY3Rsb2NrL2xlZ2FsLWhvbGQ=\",\n \"items\": [\n {\n \"kind\": \"storage#object\",\n \"id\": \"substrate-sdk-gcp-poc1-test-bucket-versioned/conformance-tests/objectlock/legal-hold/1770354569251017\",\n \"selfLink\": \"https://www.googleapis.com/storage/v1/b/substrate-sdk-gcp-poc1-test-bucket-versioned/o/conformance-tests%2Fobjectlock%2Flegal-hold\",\n \"mediaLink\": \"https://storage.googleapis.com/download/storage/v1/b/substrate-sdk-gcp-poc1-test-bucket-versioned/o/conformance-tests%2Fobjectlock%2Flegal-hold?generation=1770354569251017&alt=media\",\n \"name\": \"conformance-tests/objectlock/legal-hold\",\n \"bucket\": \"substrate-sdk-gcp-poc1-test-bucket-versioned\",\n \"generation\": \"1770354569251017\",\n \"metageneration\": \"1\",\n \"contentType\": \"application/octet-stream\",\n \"storageClass\": \"STANDARD\",\n \"size\": \"27\",\n \"md5Hash\": \"TRQZ8WSU+pMmjJZKRHoHBw==\",\n \"crc32c\": \"8r/jMg==\",\n \"etag\": \"CMmR6NmMxJIDEAE=\",\n \"temporaryHold\": true,\n \"timeCreated\": \"2026-02-06T05:09:29.301Z\",\n \"updated\": \"2026-02-06T05:09:29.301Z\",\n \"timeStorageClassUpdated\": \"2026-02-06T05:09:29.301Z\",\n \"timeFinalized\": \"2026-02-06T05:09:29.301Z\"\n }\n ]\n}\n", + "headers" : { + "Alt-Svc" : "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", + "Server" : "UploadServer", + "Cache-Control" : "private, max-age=0, must-revalidate, no-transform", + "X-GUploader-UploadID" : "AGQBYWz97a2GzSfJ4FX1WPxINs-FWMlGFG90RSV4-di4KoXWn61q1n10VSXEeL8wy0UlZuB15lwvMCw", + "Vary" : [ "Origin", "X-Origin" ], + "Expires" : "Wed, 11 Mar 2026 14:31:05 GMT", + "Date" : "Wed, 11 Mar 2026 14:31:05 GMT", + "Content-Type" : "application/json; charset=UTF-8" + } + }, + "uuid" : "301cda49-79e6-4dce-800e-413e6d042045", + "persistent" : true, + "insertionIndex" : 937 +} \ No newline at end of file diff --git a/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testgetobjectlock_objectwithoutlock_returnsnullornoretention-get-2.json b/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testgetobjectlock_objectwithoutlock_returnsnullornoretention-get-2.json new file mode 100644 index 000000000..fb3c83b01 --- /dev/null +++ b/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testgetobjectlock_objectwithoutlock_returnsnullornoretention-get-2.json @@ -0,0 +1,28 @@ +{ + "id" : "5f23e662-c128-4480-8784-3d238c4a9134", + "name" : "GcpBlobStoreIT_testGetObjectLock_objectWithoutLock_returnsNullOrNoRetention-GET-2", + "request" : { + "url" : "/storage/v1/b/substrate-sdk-gcp-poc1-test-bucket-versioned/o/conformance-tests%2Fobjectlock%2Fno-lock?projection=full", + "method" : "GET" + }, + "response" : { + "status" : 200, + "body" : "{\n \"kind\": \"storage#object\",\n \"id\": \"substrate-sdk-gcp-poc1-test-bucket-versioned/conformance-tests/objectlock/no-lock/1773239464845229\",\n \"selfLink\": \"https://www.googleapis.com/storage/v1/b/substrate-sdk-gcp-poc1-test-bucket-versioned/o/conformance-tests%2Fobjectlock%2Fno-lock\",\n \"mediaLink\": \"https://storage.googleapis.com/download/storage/v1/b/substrate-sdk-gcp-poc1-test-bucket-versioned/o/conformance-tests%2Fobjectlock%2Fno-lock?generation=1773239464845229&alt=media\",\n \"name\": \"conformance-tests/objectlock/no-lock\",\n \"bucket\": \"substrate-sdk-gcp-poc1-test-bucket-versioned\",\n \"generation\": \"1773239464845229\",\n \"metageneration\": \"1\",\n \"contentType\": \"application/octet-stream\",\n \"storageClass\": \"STANDARD\",\n \"size\": \"24\",\n \"md5Hash\": \"/dLDmP1tAJxHTx+aAtOOxQ==\",\n \"crc32c\": \"sPg8aA==\",\n \"etag\": \"CK2/neOHmJMDEAE=\",\n \"timeCreated\": \"2026-03-11T14:31:04.906Z\",\n \"updated\": \"2026-03-11T14:31:04.906Z\",\n \"timeStorageClassUpdated\": \"2026-03-11T14:31:04.906Z\",\n \"timeFinalized\": \"2026-03-11T14:31:04.906Z\"\n}\n", + "headers" : { + "Alt-Svc" : "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", + "Server" : "UploadServer", + "Cache-Control" : "private, max-age=0, must-revalidate, no-transform", + "ETag" : "CK2/neOHmJMDEAE=", + "X-GUploader-UploadID" : "AGQBYWymow9TdzCpaJS2V2AP4xqOSS2k_vpXd0JQ7fSvCdSJn9w_OhbVT7r3hJD5wOjh2gTCEPXEcXU", + "Vary" : [ "Origin", "X-Origin" ], + "Expires" : "Wed, 11 Mar 2026 14:31:05 GMT", + "Date" : "Wed, 11 Mar 2026 14:31:05 GMT", + "Content-Type" : "application/json; charset=UTF-8" + } + }, + "uuid" : "5f23e662-c128-4480-8784-3d238c4a9134", + "persistent" : true, + "scenarioName" : "scenario-1-storage-v1-b-substrate-sdk-gcp-poc1-test-bucket-versioned-o-conformance-tests-objectlock-no-lock", + "requiredScenarioState" : "scenario-1-storage-v1-b-substrate-sdk-gcp-poc1-test-bucket-versioned-o-conformance-tests-objectlock-no-lock-2", + "insertionIndex" : 938 +} \ No newline at end of file diff --git a/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testgetobjectlock_objectwithoutlock_returnsnullornoretention-get-3.json b/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testgetobjectlock_objectwithoutlock_returnsnullornoretention-get-3.json new file mode 100644 index 000000000..e3b7d69a5 --- /dev/null +++ b/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testgetobjectlock_objectwithoutlock_returnsnullornoretention-get-3.json @@ -0,0 +1,29 @@ +{ + "id" : "28e01eb3-1093-44a1-ae6c-741e4bae3cbe", + "name" : "GcpBlobStoreIT_testGetObjectLock_objectWithoutLock_returnsNullOrNoRetention-GET-3", + "request" : { + "url" : "/storage/v1/b/substrate-sdk-gcp-poc1-test-bucket-versioned/o/conformance-tests%2Fobjectlock%2Fno-lock?projection=full", + "method" : "GET" + }, + "response" : { + "status" : 200, + "body" : "{\n \"kind\": \"storage#object\",\n \"id\": \"substrate-sdk-gcp-poc1-test-bucket-versioned/conformance-tests/objectlock/no-lock/1773239464845229\",\n \"selfLink\": \"https://www.googleapis.com/storage/v1/b/substrate-sdk-gcp-poc1-test-bucket-versioned/o/conformance-tests%2Fobjectlock%2Fno-lock\",\n \"mediaLink\": \"https://storage.googleapis.com/download/storage/v1/b/substrate-sdk-gcp-poc1-test-bucket-versioned/o/conformance-tests%2Fobjectlock%2Fno-lock?generation=1773239464845229&alt=media\",\n \"name\": \"conformance-tests/objectlock/no-lock\",\n \"bucket\": \"substrate-sdk-gcp-poc1-test-bucket-versioned\",\n \"generation\": \"1773239464845229\",\n \"metageneration\": \"1\",\n \"contentType\": \"application/octet-stream\",\n \"storageClass\": \"STANDARD\",\n \"size\": \"24\",\n \"md5Hash\": \"/dLDmP1tAJxHTx+aAtOOxQ==\",\n \"crc32c\": \"sPg8aA==\",\n \"etag\": \"CK2/neOHmJMDEAE=\",\n \"timeCreated\": \"2026-03-11T14:31:04.906Z\",\n \"updated\": \"2026-03-11T14:31:04.906Z\",\n \"timeStorageClassUpdated\": \"2026-03-11T14:31:04.906Z\",\n \"timeFinalized\": \"2026-03-11T14:31:04.906Z\"\n}\n", + "headers" : { + "Alt-Svc" : "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", + "Server" : "UploadServer", + "Cache-Control" : "private, max-age=0, must-revalidate, no-transform", + "ETag" : "CK2/neOHmJMDEAE=", + "X-GUploader-UploadID" : "AGQBYWxtJh25_GeNrUBzv4Jbz4N-fqEDo9Dijl2vwSeMS1YkDsI7NEdUtJrd_o3hQnp-57nh-7VHRts", + "Vary" : [ "Origin", "X-Origin" ], + "Expires" : "Wed, 11 Mar 2026 14:31:05 GMT", + "Date" : "Wed, 11 Mar 2026 14:31:05 GMT", + "Content-Type" : "application/json; charset=UTF-8" + } + }, + "uuid" : "28e01eb3-1093-44a1-ae6c-741e4bae3cbe", + "persistent" : true, + "scenarioName" : "scenario-1-storage-v1-b-substrate-sdk-gcp-poc1-test-bucket-versioned-o-conformance-tests-objectlock-no-lock", + "requiredScenarioState" : "Started", + "newScenarioState" : "scenario-1-storage-v1-b-substrate-sdk-gcp-poc1-test-bucket-versioned-o-conformance-tests-objectlock-no-lock-2", + "insertionIndex" : 939 +} \ No newline at end of file diff --git a/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testgetobjectlock_objectwithoutlock_returnsnullornoretention-post-5.json b/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testgetobjectlock_objectwithoutlock_returnsnullornoretention-post-5.json new file mode 100644 index 000000000..768ca61e9 --- /dev/null +++ b/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testgetobjectlock_objectwithoutlock_returnsnullornoretention-post-5.json @@ -0,0 +1,31 @@ +{ + "id" : "7f45a062-de72-4f13-873c-c0319c9a4747", + "name" : "GcpBlobStoreIT_testGetObjectLock_objectWithoutLock_returnsNullOrNoRetention-POST-5", + "request" : { + "url" : "/upload/storage/v1/b/substrate-sdk-gcp-poc1-test-bucket-versioned/o?name=conformance-tests/objectlock/no-lock&uploadType=resumable", + "method" : "POST", + "bodyPatterns" : [ { + "equalToJson" : "{\"bucket\":\"substrate-sdk-gcp-poc1-test-bucket-versioned\",\"metadata\":{},\"name\":\"conformance-tests/objectlock/no-lock\"}", + "ignoreArrayOrder" : true, + "ignoreExtraElements" : false + } ] + }, + "response" : { + "status" : 200, + "headers" : { + "Alt-Svc" : "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", + "Server" : "UploadServer", + "Cache-Control" : "no-cache, no-store, max-age=0, must-revalidate", + "X-GUploader-UploadID" : "AGQBYWyU0Ktta7MjjrnEfqB3L1-DSBxcPxOCVJToxYjLcD_4ivrIPq5C0it_7S2IvqNGzltAWSYbvr0HfZ1MMx4fhvdQ0WsXab5VWW_MAhjqy8w", + "Vary" : [ "Origin", "X-Origin" ], + "Pragma" : "no-cache", + "Expires" : "Mon, 01 Jan 1990 00:00:00 GMT", + "Date" : "Wed, 11 Mar 2026 14:31:04 GMT", + "Location" : "https://storage.googleapis.com/upload/storage/v1/b/substrate-sdk-gcp-poc1-test-bucket-versioned/o?name=conformance-tests/objectlock/no-lock&uploadType=resumable&upload_id=AGQBYWyU0Ktta7MjjrnEfqB3L1-DSBxcPxOCVJToxYjLcD_4ivrIPq5C0it_7S2IvqNGzltAWSYbvr0HfZ1MMx4fhvdQ0WsXab5VWW_MAhjqy8w", + "Content-Type" : "text/plain; charset=utf-8" + } + }, + "uuid" : "7f45a062-de72-4f13-873c-c0319c9a4747", + "persistent" : true, + "insertionIndex" : 941 +} \ No newline at end of file diff --git a/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testgetobjectlock_objectwithoutlock_returnsnullornoretention-put-4.json b/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testgetobjectlock_objectwithoutlock_returnsnullornoretention-put-4.json new file mode 100644 index 000000000..412f742c8 --- /dev/null +++ b/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testgetobjectlock_objectwithoutlock_returnsnullornoretention-put-4.json @@ -0,0 +1,31 @@ +{ + "id" : "7691cd39-5a85-4a55-b2ad-62827dcc4488", + "name" : "GcpBlobStoreIT_testGetObjectLock_objectWithoutLock_returnsNullOrNoRetention-PUT-4", + "request" : { + "url" : "/upload/storage/v1/b/substrate-sdk-gcp-poc1-test-bucket-versioned/o?name=conformance-tests/objectlock/no-lock&uploadType=resumable&upload_id=AGQBYWyU0Ktta7MjjrnEfqB3L1-DSBxcPxOCVJToxYjLcD_4ivrIPq5C0it_7S2IvqNGzltAWSYbvr0HfZ1MMx4fhvdQ0WsXab5VWW_MAhjqy8w", + "method" : "PUT", + "bodyPatterns" : [ { + "equalTo" : "Object without lock test", + "caseInsensitive" : false + } ] + }, + "response" : { + "status" : 200, + "body" : "{\n \"kind\": \"storage#object\",\n \"id\": \"substrate-sdk-gcp-poc1-test-bucket-versioned/conformance-tests/objectlock/no-lock/1773239464845229\",\n \"selfLink\": \"https://www.googleapis.com/storage/v1/b/substrate-sdk-gcp-poc1-test-bucket-versioned/o/conformance-tests%2Fobjectlock%2Fno-lock\",\n \"mediaLink\": \"https://storage.googleapis.com/download/storage/v1/b/substrate-sdk-gcp-poc1-test-bucket-versioned/o/conformance-tests%2Fobjectlock%2Fno-lock?generation=1773239464845229&alt=media\",\n \"name\": \"conformance-tests/objectlock/no-lock\",\n \"bucket\": \"substrate-sdk-gcp-poc1-test-bucket-versioned\",\n \"generation\": \"1773239464845229\",\n \"metageneration\": \"1\",\n \"contentType\": \"application/octet-stream\",\n \"storageClass\": \"STANDARD\",\n \"size\": \"24\",\n \"md5Hash\": \"/dLDmP1tAJxHTx+aAtOOxQ==\",\n \"crc32c\": \"sPg8aA==\",\n \"etag\": \"CK2/neOHmJMDEAE=\",\n \"timeCreated\": \"2026-03-11T14:31:04.906Z\",\n \"updated\": \"2026-03-11T14:31:04.906Z\",\n \"timeStorageClassUpdated\": \"2026-03-11T14:31:04.906Z\",\n \"timeFinalized\": \"2026-03-11T14:31:04.906Z\"\n}\n", + "headers" : { + "Alt-Svc" : "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", + "Server" : "UploadServer", + "Cache-Control" : "no-cache, no-store, max-age=0, must-revalidate", + "ETag" : "CK2/neOHmJMDEAE=", + "X-GUploader-UploadID" : "AGQBYWyU0Ktta7MjjrnEfqB3L1-DSBxcPxOCVJToxYjLcD_4ivrIPq5C0it_7S2IvqNGzltAWSYbvr0HfZ1MMx4fhvdQ0WsXab5VWW_MAhjqy8w", + "Vary" : [ "Origin", "X-Origin" ], + "Pragma" : "no-cache", + "Expires" : "Mon, 01 Jan 1990 00:00:00 GMT", + "Date" : "Wed, 11 Mar 2026 14:31:04 GMT", + "Content-Type" : "application/json; charset=UTF-8" + } + }, + "uuid" : "7691cd39-5a85-4a55-b2ad-62827dcc4488", + "persistent" : true, + "insertionIndex" : 940 +} \ No newline at end of file diff --git a/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testtagging_withobjectlock-delete-0.json b/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testtagging_withobjectlock-delete-0.json new file mode 100644 index 000000000..21bba296a --- /dev/null +++ b/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testtagging_withobjectlock-delete-0.json @@ -0,0 +1,26 @@ +{ + "id" : "655d37ed-6ecd-4a63-8201-83de07aed494", + "name" : "GcpBlobStoreIT_testTagging_withObjectLock-DELETE-0", + "request" : { + "url" : "/storage/v1/b/substrate-sdk-gcp-poc1-test-bucket-versioned/o/conformance-tests%2Fblob-for-tagging-objectlock-fake", + "method" : "DELETE" + }, + "response" : { + "status" : 404, + "body" : "{\n \"error\": {\n \"code\": 404,\n \"message\": \"No such object: substrate-sdk-gcp-poc1-test-bucket-versioned/conformance-tests/blob-for-tagging-objectlock-fake\",\n \"errors\": [\n {\n \"message\": \"No such object: substrate-sdk-gcp-poc1-test-bucket-versioned/conformance-tests/blob-for-tagging-objectlock-fake\",\n \"domain\": \"global\",\n \"reason\": \"notFound\"\n }\n ]\n }\n}\n", + "headers" : { + "Alt-Svc" : "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", + "Server" : "UploadServer", + "Cache-Control" : "no-cache, no-store, max-age=0, must-revalidate", + "X-GUploader-UploadID" : "AGQBYWyfQsXXutf1tSEvoGCZERcX0wnn02RlTUhnCHbnjDa-c122nV0DThamytGEVrccAFDFpZde6MA", + "Vary" : [ "Origin", "X-Origin" ], + "Pragma" : "no-cache", + "Expires" : "Mon, 01 Jan 1990 00:00:00 GMT", + "Date" : "Wed, 11 Mar 2026 14:31:04 GMT", + "Content-Type" : "application/json; charset=UTF-8" + } + }, + "uuid" : "655d37ed-6ecd-4a63-8201-83de07aed494", + "persistent" : true, + "insertionIndex" : 923 +} \ No newline at end of file diff --git a/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testtagging_withobjectlock-delete-2.json b/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testtagging_withobjectlock-delete-2.json new file mode 100644 index 000000000..45238a219 --- /dev/null +++ b/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testtagging_withobjectlock-delete-2.json @@ -0,0 +1,25 @@ +{ + "id" : "81608e55-f791-45b5-bd65-773183225077", + "name" : "GcpBlobStoreIT_testTagging_withObjectLock-DELETE-2", + "request" : { + "url" : "/storage/v1/b/substrate-sdk-gcp-poc1-test-bucket-versioned/o/conformance-tests%2Fblob-for-tagging-objectlock", + "method" : "DELETE" + }, + "response" : { + "status" : 204, + "headers" : { + "Alt-Svc" : "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", + "Server" : "UploadServer", + "Cache-Control" : "no-cache, no-store, max-age=0, must-revalidate", + "X-GUploader-UploadID" : "AGQBYWxMRnSea3zjsE4AegAKcklBBJ2yIJ-G5ZUgz6NTXpoWN5CktjfYA_FHJ7glU5x8MYeoQkRu4Ks", + "Vary" : [ "Origin", "X-Origin" ], + "Pragma" : "no-cache", + "Expires" : "Mon, 01 Jan 1990 00:00:00 GMT", + "Date" : "Wed, 11 Mar 2026 14:31:03 GMT", + "Content-Type" : "application/json" + } + }, + "uuid" : "81608e55-f791-45b5-bd65-773183225077", + "persistent" : true, + "insertionIndex" : 925 +} \ No newline at end of file diff --git a/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testtagging_withobjectlock-get-1.json b/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testtagging_withobjectlock-get-1.json new file mode 100644 index 000000000..30580a32e --- /dev/null +++ b/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testtagging_withobjectlock-get-1.json @@ -0,0 +1,27 @@ +{ + "id" : "be81b8d7-6b2e-4420-b2a0-b2cc62a5fc3a", + "name" : "GcpBlobStoreIT_testTagging_withObjectLock-GET-1", + "request" : { + "url" : "/storage/v1/b/substrate-sdk-gcp-poc1-test-bucket-versioned/o?maxResults=1&projection=full", + "method" : "GET" + }, + "response" : { + "status" : 200, + "body" : "{\n \"kind\": \"storage#objects\",\n \"items\": [\n {\n \"kind\": \"storage#object\",\n \"id\": \"substrate-sdk-gcp-poc1-test-bucket-versioned/conformance-tests/objectlock/legal-hold/1770354569251017\",\n \"selfLink\": \"https://www.googleapis.com/storage/v1/b/substrate-sdk-gcp-poc1-test-bucket-versioned/o/conformance-tests%2Fobjectlock%2Flegal-hold\",\n \"mediaLink\": \"https://storage.googleapis.com/download/storage/v1/b/substrate-sdk-gcp-poc1-test-bucket-versioned/o/conformance-tests%2Fobjectlock%2Flegal-hold?generation=1770354569251017&alt=media\",\n \"name\": \"conformance-tests/objectlock/legal-hold\",\n \"bucket\": \"substrate-sdk-gcp-poc1-test-bucket-versioned\",\n \"generation\": \"1770354569251017\",\n \"metageneration\": \"1\",\n \"contentType\": \"application/octet-stream\",\n \"storageClass\": \"STANDARD\",\n \"size\": \"27\",\n \"md5Hash\": \"TRQZ8WSU+pMmjJZKRHoHBw==\",\n \"crc32c\": \"8r/jMg==\",\n \"etag\": \"CMmR6NmMxJIDEAE=\",\n \"temporaryHold\": true,\n \"timeCreated\": \"2026-02-06T05:09:29.301Z\",\n \"updated\": \"2026-02-06T05:09:29.301Z\",\n \"timeStorageClassUpdated\": \"2026-02-06T05:09:29.301Z\",\n \"timeFinalized\": \"2026-02-06T05:09:29.301Z\"\n }\n ]\n}\n", + "headers" : { + "Alt-Svc" : "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", + "Server" : "UploadServer", + "Cache-Control" : "private, max-age=0, must-revalidate, no-transform", + "X-GUploader-UploadID" : "AGQBYWwh5Kpj6aB2YGPnBq91ha3FCjq7TmZkD84gv1S5X24N-IWlcZleeuq6iSpYcTnjfWhzD5d3kxo", + "Vary" : [ "Origin", "X-Origin" ], + "Expires" : "Wed, 11 Mar 2026 14:31:04 GMT", + "Date" : "Wed, 11 Mar 2026 14:31:04 GMT", + "Content-Type" : "application/json; charset=UTF-8" + } + }, + "uuid" : "be81b8d7-6b2e-4420-b2a0-b2cc62a5fc3a", + "persistent" : true, + "scenarioName" : "scenario-1-storage-v1-b-substrate-sdk-gcp-poc1-test-bucket-versioned-o", + "requiredScenarioState" : "scenario-1-storage-v1-b-substrate-sdk-gcp-poc1-test-bucket-versioned-o-2", + "insertionIndex" : 924 +} \ No newline at end of file diff --git a/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testtagging_withobjectlock-get-3.json b/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testtagging_withobjectlock-get-3.json new file mode 100644 index 000000000..894f7ff51 --- /dev/null +++ b/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testtagging_withobjectlock-get-3.json @@ -0,0 +1,28 @@ +{ + "id" : "967882ce-1526-4751-a68e-6b2bf4c4b488", + "name" : "GcpBlobStoreIT_testTagging_withObjectLock-GET-3", + "request" : { + "url" : "/storage/v1/b/substrate-sdk-gcp-poc1-test-bucket-versioned/o?maxResults=1&projection=full", + "method" : "GET" + }, + "response" : { + "status" : 200, + "body" : "{\n \"kind\": \"storage#objects\",\n \"nextPageToken\": \"Ci1jb25mb3JtYW5jZS10ZXN0cy9ibG9iLWZvci10YWdnaW5nLW9iamVjdGxvY2s=\",\n \"items\": [\n {\n \"kind\": \"storage#object\",\n \"id\": \"substrate-sdk-gcp-poc1-test-bucket-versioned/conformance-tests/blob-for-tagging-objectlock/1773239462550974\",\n \"selfLink\": \"https://www.googleapis.com/storage/v1/b/substrate-sdk-gcp-poc1-test-bucket-versioned/o/conformance-tests%2Fblob-for-tagging-objectlock\",\n \"mediaLink\": \"https://storage.googleapis.com/download/storage/v1/b/substrate-sdk-gcp-poc1-test-bucket-versioned/o/conformance-tests%2Fblob-for-tagging-objectlock?generation=1773239462550974&alt=media\",\n \"name\": \"conformance-tests/blob-for-tagging-objectlock\",\n \"bucket\": \"substrate-sdk-gcp-poc1-test-bucket-versioned\",\n \"generation\": \"1773239462550974\",\n \"metageneration\": \"2\",\n \"contentType\": \"application/octet-stream\",\n \"storageClass\": \"STANDARD\",\n \"size\": \"34\",\n \"md5Hash\": \"fhoYDt3ji+s3dJJLcNy/xw==\",\n \"crc32c\": \"Np37Cg==\",\n \"etag\": \"CL67keKHmJMDEAI=\",\n \"timeCreated\": \"2026-03-11T14:31:02.615Z\",\n \"updated\": \"2026-03-11T14:31:03.240Z\",\n \"timeStorageClassUpdated\": \"2026-03-11T14:31:02.615Z\",\n \"timeFinalized\": \"2026-03-11T14:31:02.615Z\",\n \"metadata\": {\n \"gcp-tag-tag3\": \"value3\"\n }\n }\n ]\n}\n", + "headers" : { + "Alt-Svc" : "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", + "Server" : "UploadServer", + "Cache-Control" : "private, max-age=0, must-revalidate, no-transform", + "X-GUploader-UploadID" : "AGQBYWzXDnX4IVr_h6kMTBBmdBN26VOapFuD8XpnSx5AExMq8zZJ3qSb4K62kEyis042gylU8z2ZN64", + "Vary" : [ "Origin", "X-Origin" ], + "Expires" : "Wed, 11 Mar 2026 14:31:03 GMT", + "Date" : "Wed, 11 Mar 2026 14:31:03 GMT", + "Content-Type" : "application/json; charset=UTF-8" + } + }, + "uuid" : "967882ce-1526-4751-a68e-6b2bf4c4b488", + "persistent" : true, + "scenarioName" : "scenario-1-storage-v1-b-substrate-sdk-gcp-poc1-test-bucket-versioned-o", + "requiredScenarioState" : "Started", + "newScenarioState" : "scenario-1-storage-v1-b-substrate-sdk-gcp-poc1-test-bucket-versioned-o-2", + "insertionIndex" : 926 +} \ No newline at end of file diff --git a/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testtagging_withobjectlock-get-4.json b/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testtagging_withobjectlock-get-4.json new file mode 100644 index 000000000..90a3b20be --- /dev/null +++ b/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testtagging_withobjectlock-get-4.json @@ -0,0 +1,26 @@ +{ + "id" : "933ea7bf-8b6a-41f5-905e-d5d8ebcde60d", + "name" : "GcpBlobStoreIT_testTagging_withObjectLock-GET-4", + "request" : { + "url" : "/storage/v1/b/substrate-sdk-gcp-poc1-test-bucket-versioned/o/conformance-tests%2Fblob-for-tagging-objectlock-fake?projection=full", + "method" : "GET" + }, + "response" : { + "status" : 404, + "body" : "{\n \"error\": {\n \"code\": 404,\n \"message\": \"No such object: substrate-sdk-gcp-poc1-test-bucket-versioned/conformance-tests/blob-for-tagging-objectlock-fake\",\n \"errors\": [\n {\n \"message\": \"No such object: substrate-sdk-gcp-poc1-test-bucket-versioned/conformance-tests/blob-for-tagging-objectlock-fake\",\n \"domain\": \"global\",\n \"reason\": \"notFound\"\n }\n ]\n }\n}\n", + "headers" : { + "Alt-Svc" : "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", + "Server" : "UploadServer", + "Cache-Control" : "no-cache, no-store, max-age=0, must-revalidate", + "X-GUploader-UploadID" : "AGQBYWyq6NWbvK3yUQmWAmlhBnUe7mvcmGS1QUzPw_csjztMaYcdN4hywZ5y8sMdixpOpkP96jGENr8", + "Vary" : [ "Origin", "X-Origin" ], + "Pragma" : "no-cache", + "Expires" : "Mon, 01 Jan 1990 00:00:00 GMT", + "Date" : "Wed, 11 Mar 2026 14:31:03 GMT", + "Content-Type" : "application/json; charset=UTF-8" + } + }, + "uuid" : "933ea7bf-8b6a-41f5-905e-d5d8ebcde60d", + "persistent" : true, + "insertionIndex" : 927 +} \ No newline at end of file diff --git a/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testtagging_withobjectlock-get-5.json b/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testtagging_withobjectlock-get-5.json new file mode 100644 index 000000000..1f4bf4659 --- /dev/null +++ b/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testtagging_withobjectlock-get-5.json @@ -0,0 +1,28 @@ +{ + "id" : "9fe3ec3e-3233-40e8-a488-9efd79979d4e", + "name" : "GcpBlobStoreIT_testTagging_withObjectLock-GET-5", + "request" : { + "url" : "/storage/v1/b/substrate-sdk-gcp-poc1-test-bucket-versioned/o/conformance-tests%2Fblob-for-tagging-objectlock?projection=full", + "method" : "GET" + }, + "response" : { + "status" : 200, + "body" : "{\n \"kind\": \"storage#object\",\n \"id\": \"substrate-sdk-gcp-poc1-test-bucket-versioned/conformance-tests/blob-for-tagging-objectlock/1773239462550974\",\n \"selfLink\": \"https://www.googleapis.com/storage/v1/b/substrate-sdk-gcp-poc1-test-bucket-versioned/o/conformance-tests%2Fblob-for-tagging-objectlock\",\n \"mediaLink\": \"https://storage.googleapis.com/download/storage/v1/b/substrate-sdk-gcp-poc1-test-bucket-versioned/o/conformance-tests%2Fblob-for-tagging-objectlock?generation=1773239462550974&alt=media\",\n \"name\": \"conformance-tests/blob-for-tagging-objectlock\",\n \"bucket\": \"substrate-sdk-gcp-poc1-test-bucket-versioned\",\n \"generation\": \"1773239462550974\",\n \"metageneration\": \"2\",\n \"contentType\": \"application/octet-stream\",\n \"storageClass\": \"STANDARD\",\n \"size\": \"34\",\n \"md5Hash\": \"fhoYDt3ji+s3dJJLcNy/xw==\",\n \"crc32c\": \"Np37Cg==\",\n \"etag\": \"CL67keKHmJMDEAI=\",\n \"timeCreated\": \"2026-03-11T14:31:02.615Z\",\n \"updated\": \"2026-03-11T14:31:03.240Z\",\n \"timeStorageClassUpdated\": \"2026-03-11T14:31:02.615Z\",\n \"timeFinalized\": \"2026-03-11T14:31:02.615Z\",\n \"metadata\": {\n \"gcp-tag-tag3\": \"value3\"\n }\n}\n", + "headers" : { + "Alt-Svc" : "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", + "Server" : "UploadServer", + "Cache-Control" : "private, max-age=0, must-revalidate, no-transform", + "ETag" : "CL67keKHmJMDEAI=", + "X-GUploader-UploadID" : "AGQBYWwiDEpXy5niMm7v_Th-aFqSNvh1WwteFOJXGV1kaVE2bQy-3-VphKs1qpBtZTvy0yjT-ii0A7c", + "Vary" : [ "Origin", "X-Origin" ], + "Expires" : "Wed, 11 Mar 2026 14:31:03 GMT", + "Date" : "Wed, 11 Mar 2026 14:31:03 GMT", + "Content-Type" : "application/json; charset=UTF-8" + } + }, + "uuid" : "9fe3ec3e-3233-40e8-a488-9efd79979d4e", + "persistent" : true, + "scenarioName" : "scenario-2-storage-v1-b-substrate-sdk-gcp-poc1-test-bucket-versioned-o-conformance-tests-blob-for-tagging-objectlock", + "requiredScenarioState" : "scenario-2-storage-v1-b-substrate-sdk-gcp-poc1-test-bucket-versioned-o-conformance-tests-blob-for-tagging-objectlock-4", + "insertionIndex" : 928 +} \ No newline at end of file diff --git a/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testtagging_withobjectlock-get-7.json b/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testtagging_withobjectlock-get-7.json new file mode 100644 index 000000000..482f446a4 --- /dev/null +++ b/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testtagging_withobjectlock-get-7.json @@ -0,0 +1,29 @@ +{ + "id" : "3adcd5a7-4d5a-46d6-9064-35db2c55e216", + "name" : "GcpBlobStoreIT_testTagging_withObjectLock-GET-7", + "request" : { + "url" : "/storage/v1/b/substrate-sdk-gcp-poc1-test-bucket-versioned/o/conformance-tests%2Fblob-for-tagging-objectlock?projection=full", + "method" : "GET" + }, + "response" : { + "status" : 200, + "body" : "{\n \"kind\": \"storage#object\",\n \"id\": \"substrate-sdk-gcp-poc1-test-bucket-versioned/conformance-tests/blob-for-tagging-objectlock/1773239462550974\",\n \"selfLink\": \"https://www.googleapis.com/storage/v1/b/substrate-sdk-gcp-poc1-test-bucket-versioned/o/conformance-tests%2Fblob-for-tagging-objectlock\",\n \"mediaLink\": \"https://storage.googleapis.com/download/storage/v1/b/substrate-sdk-gcp-poc1-test-bucket-versioned/o/conformance-tests%2Fblob-for-tagging-objectlock?generation=1773239462550974&alt=media\",\n \"name\": \"conformance-tests/blob-for-tagging-objectlock\",\n \"bucket\": \"substrate-sdk-gcp-poc1-test-bucket-versioned\",\n \"generation\": \"1773239462550974\",\n \"metageneration\": \"1\",\n \"contentType\": \"application/octet-stream\",\n \"storageClass\": \"STANDARD\",\n \"size\": \"34\",\n \"md5Hash\": \"fhoYDt3ji+s3dJJLcNy/xw==\",\n \"crc32c\": \"Np37Cg==\",\n \"etag\": \"CL67keKHmJMDEAE=\",\n \"timeCreated\": \"2026-03-11T14:31:02.615Z\",\n \"updated\": \"2026-03-11T14:31:02.615Z\",\n \"timeStorageClassUpdated\": \"2026-03-11T14:31:02.615Z\",\n \"timeFinalized\": \"2026-03-11T14:31:02.615Z\",\n \"metadata\": {\n \"gcp-tag-tag1\": \"value1\"\n }\n}\n", + "headers" : { + "Alt-Svc" : "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", + "Server" : "UploadServer", + "Cache-Control" : "private, max-age=0, must-revalidate, no-transform", + "ETag" : "CL67keKHmJMDEAE=", + "X-GUploader-UploadID" : "AGQBYWw0_M4JXZpQZ9IsKd2QhQtWYRMJuj1Emy4s15SQ9dsEPoTqNpAvWlw7MTiSUaw3iDx5mvxQwTc", + "Vary" : [ "Origin", "X-Origin" ], + "Expires" : "Wed, 11 Mar 2026 14:31:02 GMT", + "Date" : "Wed, 11 Mar 2026 14:31:02 GMT", + "Content-Type" : "application/json; charset=UTF-8" + } + }, + "uuid" : "3adcd5a7-4d5a-46d6-9064-35db2c55e216", + "persistent" : true, + "scenarioName" : "scenario-2-storage-v1-b-substrate-sdk-gcp-poc1-test-bucket-versioned-o-conformance-tests-blob-for-tagging-objectlock", + "requiredScenarioState" : "scenario-2-storage-v1-b-substrate-sdk-gcp-poc1-test-bucket-versioned-o-conformance-tests-blob-for-tagging-objectlock-3", + "newScenarioState" : "scenario-2-storage-v1-b-substrate-sdk-gcp-poc1-test-bucket-versioned-o-conformance-tests-blob-for-tagging-objectlock-4", + "insertionIndex" : 930 +} \ No newline at end of file diff --git a/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testtagging_withobjectlock-get-8.json b/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testtagging_withobjectlock-get-8.json new file mode 100644 index 000000000..834655032 --- /dev/null +++ b/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testtagging_withobjectlock-get-8.json @@ -0,0 +1,29 @@ +{ + "id" : "eb0250d8-d41a-4d6a-9651-61c71d687d89", + "name" : "GcpBlobStoreIT_testTagging_withObjectLock-GET-8", + "request" : { + "url" : "/storage/v1/b/substrate-sdk-gcp-poc1-test-bucket-versioned/o/conformance-tests%2Fblob-for-tagging-objectlock?projection=full", + "method" : "GET" + }, + "response" : { + "status" : 200, + "body" : "{\n \"kind\": \"storage#object\",\n \"id\": \"substrate-sdk-gcp-poc1-test-bucket-versioned/conformance-tests/blob-for-tagging-objectlock/1773239462550974\",\n \"selfLink\": \"https://www.googleapis.com/storage/v1/b/substrate-sdk-gcp-poc1-test-bucket-versioned/o/conformance-tests%2Fblob-for-tagging-objectlock\",\n \"mediaLink\": \"https://storage.googleapis.com/download/storage/v1/b/substrate-sdk-gcp-poc1-test-bucket-versioned/o/conformance-tests%2Fblob-for-tagging-objectlock?generation=1773239462550974&alt=media\",\n \"name\": \"conformance-tests/blob-for-tagging-objectlock\",\n \"bucket\": \"substrate-sdk-gcp-poc1-test-bucket-versioned\",\n \"generation\": \"1773239462550974\",\n \"metageneration\": \"1\",\n \"contentType\": \"application/octet-stream\",\n \"storageClass\": \"STANDARD\",\n \"size\": \"34\",\n \"md5Hash\": \"fhoYDt3ji+s3dJJLcNy/xw==\",\n \"crc32c\": \"Np37Cg==\",\n \"etag\": \"CL67keKHmJMDEAE=\",\n \"timeCreated\": \"2026-03-11T14:31:02.615Z\",\n \"updated\": \"2026-03-11T14:31:02.615Z\",\n \"timeStorageClassUpdated\": \"2026-03-11T14:31:02.615Z\",\n \"timeFinalized\": \"2026-03-11T14:31:02.615Z\",\n \"metadata\": {\n \"gcp-tag-tag1\": \"value1\"\n }\n}\n", + "headers" : { + "Alt-Svc" : "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", + "Server" : "UploadServer", + "Cache-Control" : "private, max-age=0, must-revalidate, no-transform", + "ETag" : "CL67keKHmJMDEAE=", + "X-GUploader-UploadID" : "AGQBYWz2x4YYhX5jXJQlhSZwe3d7EQz7r16O3pb9W8fL0Ji3NzfjZqhKirbCrzH5dQyM6pyDwuV71Rc", + "Vary" : [ "Origin", "X-Origin" ], + "Expires" : "Wed, 11 Mar 2026 14:31:02 GMT", + "Date" : "Wed, 11 Mar 2026 14:31:02 GMT", + "Content-Type" : "application/json; charset=UTF-8" + } + }, + "uuid" : "eb0250d8-d41a-4d6a-9651-61c71d687d89", + "persistent" : true, + "scenarioName" : "scenario-2-storage-v1-b-substrate-sdk-gcp-poc1-test-bucket-versioned-o-conformance-tests-blob-for-tagging-objectlock", + "requiredScenarioState" : "scenario-2-storage-v1-b-substrate-sdk-gcp-poc1-test-bucket-versioned-o-conformance-tests-blob-for-tagging-objectlock-2", + "newScenarioState" : "scenario-2-storage-v1-b-substrate-sdk-gcp-poc1-test-bucket-versioned-o-conformance-tests-blob-for-tagging-objectlock-3", + "insertionIndex" : 931 +} \ No newline at end of file diff --git a/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testtagging_withobjectlock-get-9.json b/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testtagging_withobjectlock-get-9.json new file mode 100644 index 000000000..a10655088 --- /dev/null +++ b/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testtagging_withobjectlock-get-9.json @@ -0,0 +1,29 @@ +{ + "id" : "3077557d-d942-45ee-87c9-2e89e38c9e89", + "name" : "GcpBlobStoreIT_testTagging_withObjectLock-GET-9", + "request" : { + "url" : "/storage/v1/b/substrate-sdk-gcp-poc1-test-bucket-versioned/o/conformance-tests%2Fblob-for-tagging-objectlock?projection=full", + "method" : "GET" + }, + "response" : { + "status" : 200, + "body" : "{\n \"kind\": \"storage#object\",\n \"id\": \"substrate-sdk-gcp-poc1-test-bucket-versioned/conformance-tests/blob-for-tagging-objectlock/1773239462550974\",\n \"selfLink\": \"https://www.googleapis.com/storage/v1/b/substrate-sdk-gcp-poc1-test-bucket-versioned/o/conformance-tests%2Fblob-for-tagging-objectlock\",\n \"mediaLink\": \"https://storage.googleapis.com/download/storage/v1/b/substrate-sdk-gcp-poc1-test-bucket-versioned/o/conformance-tests%2Fblob-for-tagging-objectlock?generation=1773239462550974&alt=media\",\n \"name\": \"conformance-tests/blob-for-tagging-objectlock\",\n \"bucket\": \"substrate-sdk-gcp-poc1-test-bucket-versioned\",\n \"generation\": \"1773239462550974\",\n \"metageneration\": \"1\",\n \"contentType\": \"application/octet-stream\",\n \"storageClass\": \"STANDARD\",\n \"size\": \"34\",\n \"md5Hash\": \"fhoYDt3ji+s3dJJLcNy/xw==\",\n \"crc32c\": \"Np37Cg==\",\n \"etag\": \"CL67keKHmJMDEAE=\",\n \"timeCreated\": \"2026-03-11T14:31:02.615Z\",\n \"updated\": \"2026-03-11T14:31:02.615Z\",\n \"timeStorageClassUpdated\": \"2026-03-11T14:31:02.615Z\",\n \"timeFinalized\": \"2026-03-11T14:31:02.615Z\",\n \"metadata\": {\n \"gcp-tag-tag1\": \"value1\"\n }\n}\n", + "headers" : { + "Alt-Svc" : "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", + "Server" : "UploadServer", + "Cache-Control" : "private, max-age=0, must-revalidate, no-transform", + "ETag" : "CL67keKHmJMDEAE=", + "X-GUploader-UploadID" : "AGQBYWx_oOSVk-ZGuju5boWkZxjS2647Au-8dnMZO-FLRRvSxtSN4ZWaWNuAihD14W5aEnPH4lOgvIk", + "Vary" : [ "Origin", "X-Origin" ], + "Expires" : "Wed, 11 Mar 2026 14:31:02 GMT", + "Date" : "Wed, 11 Mar 2026 14:31:02 GMT", + "Content-Type" : "application/json; charset=UTF-8" + } + }, + "uuid" : "3077557d-d942-45ee-87c9-2e89e38c9e89", + "persistent" : true, + "scenarioName" : "scenario-2-storage-v1-b-substrate-sdk-gcp-poc1-test-bucket-versioned-o-conformance-tests-blob-for-tagging-objectlock", + "requiredScenarioState" : "Started", + "newScenarioState" : "scenario-2-storage-v1-b-substrate-sdk-gcp-poc1-test-bucket-versioned-o-conformance-tests-blob-for-tagging-objectlock-2", + "insertionIndex" : 932 +} \ No newline at end of file diff --git a/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testtagging_withobjectlock-post-11.json b/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testtagging_withobjectlock-post-11.json new file mode 100644 index 000000000..cf79bec17 --- /dev/null +++ b/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testtagging_withobjectlock-post-11.json @@ -0,0 +1,31 @@ +{ + "id" : "4ca2a251-4d9d-4175-b8e1-a54e4033ce00", + "name" : "GcpBlobStoreIT_testTagging_withObjectLock-POST-11", + "request" : { + "url" : "/upload/storage/v1/b/substrate-sdk-gcp-poc1-test-bucket-versioned/o?name=conformance-tests/blob-for-tagging-objectlock&uploadType=resumable", + "method" : "POST", + "bodyPatterns" : [ { + "equalToJson" : "{\"bucket\":\"substrate-sdk-gcp-poc1-test-bucket-versioned\",\"metadata\":{\"gcp-tag-tag1\":\"value1\"},\"name\":\"conformance-tests/blob-for-tagging-objectlock\"}", + "ignoreArrayOrder" : true, + "ignoreExtraElements" : false + } ] + }, + "response" : { + "status" : 200, + "headers" : { + "Alt-Svc" : "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", + "Server" : "UploadServer", + "Cache-Control" : "no-cache, no-store, max-age=0, must-revalidate", + "X-GUploader-UploadID" : "AGQBYWw1lAXF9ni6HjgoEgDykp3mBpA34dGwENuo7Mq5m8r1r-qk8ZZNfpi8d8CkqRAH5EoClTPndO6UF61GgQ3VQkaff1Y1J7RbhLKcL3tDg_4", + "Vary" : [ "Origin", "X-Origin" ], + "Pragma" : "no-cache", + "Expires" : "Mon, 01 Jan 1990 00:00:00 GMT", + "Date" : "Wed, 11 Mar 2026 14:31:02 GMT", + "Location" : "https://storage.googleapis.com/upload/storage/v1/b/substrate-sdk-gcp-poc1-test-bucket-versioned/o?name=conformance-tests/blob-for-tagging-objectlock&uploadType=resumable&upload_id=AGQBYWw1lAXF9ni6HjgoEgDykp3mBpA34dGwENuo7Mq5m8r1r-qk8ZZNfpi8d8CkqRAH5EoClTPndO6UF61GgQ3VQkaff1Y1J7RbhLKcL3tDg_4", + "Content-Type" : "text/plain; charset=utf-8" + } + }, + "uuid" : "4ca2a251-4d9d-4175-b8e1-a54e4033ce00", + "persistent" : true, + "insertionIndex" : 934 +} \ No newline at end of file diff --git a/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testtagging_withobjectlock-post-6.json b/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testtagging_withobjectlock-post-6.json new file mode 100644 index 000000000..331f0e173 --- /dev/null +++ b/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testtagging_withobjectlock-post-6.json @@ -0,0 +1,32 @@ +{ + "id" : "f25fae26-6fa3-472f-8d98-bdf00a956686", + "name" : "GcpBlobStoreIT_testTagging_withObjectLock-POST-6", + "request" : { + "url" : "/storage/v1/b/substrate-sdk-gcp-poc1-test-bucket-versioned/o/conformance-tests%2Fblob-for-tagging-objectlock?projection=full", + "method" : "POST", + "bodyPatterns" : [ { + "equalToJson" : "{\"bucket\":\"substrate-sdk-gcp-poc1-test-bucket-versioned\",\"generation\":\"1773239462550974\",\"metadata\":{\"gcp-tag-tag1\":null,\"gcp-tag-tag3\":\"value3\"},\"name\":\"conformance-tests/blob-for-tagging-objectlock\"}", + "ignoreArrayOrder" : true, + "ignoreExtraElements" : false + } ] + }, + "response" : { + "status" : 200, + "body" : "{\n \"kind\": \"storage#object\",\n \"id\": \"substrate-sdk-gcp-poc1-test-bucket-versioned/conformance-tests/blob-for-tagging-objectlock/1773239462550974\",\n \"selfLink\": \"https://www.googleapis.com/storage/v1/b/substrate-sdk-gcp-poc1-test-bucket-versioned/o/conformance-tests%2Fblob-for-tagging-objectlock\",\n \"mediaLink\": \"https://storage.googleapis.com/download/storage/v1/b/substrate-sdk-gcp-poc1-test-bucket-versioned/o/conformance-tests%2Fblob-for-tagging-objectlock?generation=1773239462550974&alt=media\",\n \"name\": \"conformance-tests/blob-for-tagging-objectlock\",\n \"bucket\": \"substrate-sdk-gcp-poc1-test-bucket-versioned\",\n \"generation\": \"1773239462550974\",\n \"metageneration\": \"2\",\n \"contentType\": \"application/octet-stream\",\n \"storageClass\": \"STANDARD\",\n \"size\": \"34\",\n \"md5Hash\": \"fhoYDt3ji+s3dJJLcNy/xw==\",\n \"crc32c\": \"Np37Cg==\",\n \"etag\": \"CL67keKHmJMDEAI=\",\n \"timeCreated\": \"2026-03-11T14:31:02.615Z\",\n \"updated\": \"2026-03-11T14:31:03.240Z\",\n \"timeStorageClassUpdated\": \"2026-03-11T14:31:02.615Z\",\n \"timeFinalized\": \"2026-03-11T14:31:02.615Z\",\n \"metadata\": {\n \"gcp-tag-tag3\": \"value3\"\n }\n}\n", + "headers" : { + "Alt-Svc" : "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", + "Server" : "UploadServer", + "Cache-Control" : "no-cache, no-store, max-age=0, must-revalidate", + "ETag" : "CL67keKHmJMDEAI=", + "X-GUploader-UploadID" : "AGQBYWyjvZkTcoCexKLoKVCE9nTgpFul3ygLre2F52Im1enYXluMtyttMoiRxbz0qGbhrjnTTmZ6lQs", + "Vary" : [ "Origin", "X-Origin" ], + "Pragma" : "no-cache", + "Expires" : "Mon, 01 Jan 1990 00:00:00 GMT", + "Date" : "Wed, 11 Mar 2026 14:31:03 GMT", + "Content-Type" : "application/json; charset=UTF-8" + } + }, + "uuid" : "f25fae26-6fa3-472f-8d98-bdf00a956686", + "persistent" : true, + "insertionIndex" : 929 +} \ No newline at end of file diff --git a/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testtagging_withobjectlock-put-10.json b/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testtagging_withobjectlock-put-10.json new file mode 100644 index 000000000..748c3e0f5 --- /dev/null +++ b/blob/blob-gcp/src/test/resources/mappings/gcpblobstoreit_testtagging_withobjectlock-put-10.json @@ -0,0 +1,31 @@ +{ + "id" : "840e4735-6094-46bb-9f3c-4eb199d73d5e", + "name" : "GcpBlobStoreIT_testTagging_withObjectLock-PUT-10", + "request" : { + "url" : "/upload/storage/v1/b/substrate-sdk-gcp-poc1-test-bucket-versioned/o?name=conformance-tests/blob-for-tagging-objectlock&uploadType=resumable&upload_id=AGQBYWw1lAXF9ni6HjgoEgDykp3mBpA34dGwENuo7Mq5m8r1r-qk8ZZNfpi8d8CkqRAH5EoClTPndO6UF61GgQ3VQkaff1Y1J7RbhLKcL3tDg_4", + "method" : "PUT", + "bodyPatterns" : [ { + "equalTo" : "Tagging with object lock test data", + "caseInsensitive" : false + } ] + }, + "response" : { + "status" : 200, + "body" : "{\n \"kind\": \"storage#object\",\n \"id\": \"substrate-sdk-gcp-poc1-test-bucket-versioned/conformance-tests/blob-for-tagging-objectlock/1773239462550974\",\n \"selfLink\": \"https://www.googleapis.com/storage/v1/b/substrate-sdk-gcp-poc1-test-bucket-versioned/o/conformance-tests%2Fblob-for-tagging-objectlock\",\n \"mediaLink\": \"https://storage.googleapis.com/download/storage/v1/b/substrate-sdk-gcp-poc1-test-bucket-versioned/o/conformance-tests%2Fblob-for-tagging-objectlock?generation=1773239462550974&alt=media\",\n \"name\": \"conformance-tests/blob-for-tagging-objectlock\",\n \"bucket\": \"substrate-sdk-gcp-poc1-test-bucket-versioned\",\n \"generation\": \"1773239462550974\",\n \"metageneration\": \"1\",\n \"contentType\": \"application/octet-stream\",\n \"storageClass\": \"STANDARD\",\n \"size\": \"34\",\n \"md5Hash\": \"fhoYDt3ji+s3dJJLcNy/xw==\",\n \"crc32c\": \"Np37Cg==\",\n \"etag\": \"CL67keKHmJMDEAE=\",\n \"timeCreated\": \"2026-03-11T14:31:02.615Z\",\n \"updated\": \"2026-03-11T14:31:02.615Z\",\n \"timeStorageClassUpdated\": \"2026-03-11T14:31:02.615Z\",\n \"timeFinalized\": \"2026-03-11T14:31:02.615Z\",\n \"metadata\": {\n \"gcp-tag-tag1\": \"value1\"\n }\n}\n", + "headers" : { + "Alt-Svc" : "h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000", + "Server" : "UploadServer", + "Cache-Control" : "no-cache, no-store, max-age=0, must-revalidate", + "ETag" : "CL67keKHmJMDEAE=", + "X-GUploader-UploadID" : "AGQBYWw1lAXF9ni6HjgoEgDykp3mBpA34dGwENuo7Mq5m8r1r-qk8ZZNfpi8d8CkqRAH5EoClTPndO6UF61GgQ3VQkaff1Y1J7RbhLKcL3tDg_4", + "Vary" : [ "Origin", "X-Origin" ], + "Pragma" : "no-cache", + "Expires" : "Mon, 01 Jan 1990 00:00:00 GMT", + "Date" : "Wed, 11 Mar 2026 14:31:02 GMT", + "Content-Type" : "application/json; charset=UTF-8" + } + }, + "uuid" : "840e4735-6094-46bb-9f3c-4eb199d73d5e", + "persistent" : true, + "insertionIndex" : 933 +} \ No newline at end of file