diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index bc42af1..92308f1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -35,7 +35,7 @@ jobs: run: | # The grader's exit status, not tail's, decides the step. set -o pipefail - for suite in operations vectors; do + for suite in operations management vectors; do ./target/release/object-tests grade "cases/$suite.json" \ --record-unsupported "$RUNNER_TEMP/unsupported.json" \ -- adapters/borink/target/release/borink-adapter | tail -n 1 diff --git a/Cargo.toml b/Cargo.toml index 85f78c6..73863ef 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,7 +4,7 @@ version = "0.2.0" edition = "2024" license = "MIT" description = "A data-driven object storage conformance grader" -include = ["src/**", "cases/**", "tests/**", "README.md", "Cargo.toml"] +include = ["src/**", "cases/**", "tests/**", "README.md", "REFERENCE.md", "Cargo.toml"] [dependencies] serde = { version = "1", features = ["derive"] } serde_json = "1" diff --git a/README.md b/README.md index 428155d..5915842 100644 --- a/README.md +++ b/README.md @@ -8,10 +8,13 @@ There are also a few live tests that are just to see if you can actually make a | Suite | Contents | |---|---| -| `operations.json` | Operations over recorded HTTP | +| `operations.json` | Object operations over recorded HTTP | +| `management.json` | Bucket and container operations over recorded HTTP | | `vectors.json` | Digests and signatures | | `live.json` | Probes against a live service | +[REFERENCE.md](REFERENCE.md) describes the adapter protocol. + ## Example test of `borink-object-storage` `adapters/borink` builds the adapter that borink-org/object-storage keeps in [`hosts/object-tests`](https://github.com/borink-org/object-storage/tree/master/hosts/object-tests), at the commit its `Cargo.toml` pins. That adapter lives beside the crates whose API it calls, and object-storage grades every change against this suite. diff --git a/REFERENCE.md b/REFERENCE.md new file mode 100644 index 0000000..b467181 --- /dev/null +++ b/REFERENCE.md @@ -0,0 +1,43 @@ +# Grader reference + +```nu +./target/debug/object-tests grade cases/operations.json --profile s3 -- ADAPTER +``` + +`--case`, `--provider` and `--profile` select cases. `--expected-unsupported FILE` lists cases, patterns with `*`, or `field:/value/...` result fields that may be unsupported; `--record-unsupported FILE` writes that list. Exit code `0` means every case passed. + +## Adapter protocol + +The grader starts the adapter once per case, writes one JSON input to its stdin and reads one JSON result from its stdout: + +```json +{"version":1,"mode":"offline","provider":"azure","endpoint":{"url":"http://127.0.0.1:PORT","account":"fixture","bucket":"fixture"},"call":{"op":"get","key":"a b"}} +``` + +Use `endpoint` with dummy credentials, and `endpoint.proxy_url` as the HTTP proxy where given. Map `call` to the client and report what it returns. Do not encode keys, repair client behavior or make extra calls. + +```json +{"outcome":"ok","value":{"body_base64":"aGVsbG8="}} +{"outcome":"error","kind":"not_found","status":404,"code":"BlobNotFound"} +{"outcome":"refused","kind":"invalid_range","parameter":"range"} +{"outcome":"unsupported","reason":"not mapped","parameter":"range"} +``` + +- `error`: the service refused the call. +- `refused`: the client refused it before sending. +- `unsupported`: the client cannot make it. Naming a `parameter` declines that parameter, which some cases permit. + +An error names a `kind`. `not_found` means the object is absent, `container_not_found` the bucket or container, and `missing` that the answer cannot say which. The others are `precondition`, `not_modified`, `permission_denied` and `other`. + +Leave out a result property the client does not expose, and name it in `unsupported_fields`, as `[{"at":"/value/content_md5_base64","reason":"..."}]`. + +Keys are unescaped, bodies base64, ranges an offset and an exclusive end. A `checksum` without `value_base64` is for the client to compute. Tags are an object, or a list of `{"key", "value"}` pairs where a key may repeat. `content_range` reports a served range as `bytes FIRST-LAST/SIZE`. + +## Cases + +[model.rs](src/model.rs) defines the format. + +- `origin` says where the responses come from: `observed` (the default), `transient` (sent, but not on demand) or `constructed` (written by hand). `derived_from` names the recorded case such a case edits. +- `refusal` holds the checks a refusal must pass; a case without it accepts none. `decline_permitted` lets an `unsupported` result that names the parameter pass. +- Checks address JSON pointers. `matches` is a whole-string regex, `xml` compares structure, and `optional` permits absence only. `blob_batch` and `body_checksum` apply at the request's root. +- A request header's value holds one character per byte, so `é` is the byte e9 and `é` its UTF-8. diff --git a/adapters/borink/Cargo.lock b/adapters/borink/Cargo.lock index f5f26f4..d502883 100644 --- a/adapters/borink/Cargo.lock +++ b/adapters/borink/Cargo.lock @@ -31,26 +31,29 @@ dependencies = [ ] [[package]] -name = "borink-crypto" -version = "0.0.1" -source = "git+https://github.com/borink-org/object-storage.git?rev=03829e1253bccf62ae55d09b607731a5c4b74952#03829e1253bccf62ae55d09b607731a5c4b74952" +name = "borink-object-storage-crypto" +version = "0.0.3" +source = "git+https://github.com/borink-org/object-storage.git?rev=deb671c5bd30939bef1bb1144f36c3a43e66d9d0#deb671c5bd30939bef1bb1144f36c3a43e66d9d0" dependencies = [ "borink-object-storage-proto", + "hmac", "md-5", + "sha1", + "sha2", ] [[package]] name = "borink-object-storage-proto" -version = "0.0.1" -source = "git+https://github.com/borink-org/object-storage.git?rev=03829e1253bccf62ae55d09b607731a5c4b74952#03829e1253bccf62ae55d09b607731a5c4b74952" +version = "0.0.3" +source = "git+https://github.com/borink-org/object-storage.git?rev=deb671c5bd30939bef1bb1144f36c3a43e66d9d0#deb671c5bd30939bef1bb1144f36c3a43e66d9d0" [[package]] name = "borink-object-tests-adapter" version = "0.0.0" -source = "git+https://github.com/borink-org/object-storage.git?rev=03829e1253bccf62ae55d09b607731a5c4b74952#03829e1253bccf62ae55d09b607731a5c4b74952" +source = "git+https://github.com/borink-org/object-storage.git?rev=deb671c5bd30939bef1bb1144f36c3a43e66d9d0#deb671c5bd30939bef1bb1144f36c3a43e66d9d0" dependencies = [ "base64 0.22.1", - "borink-crypto", + "borink-object-storage-crypto", "borink-object-storage-proto", "serde_json", "ureq", @@ -78,6 +81,21 @@ version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4e7648175b45a9a48536d676f68d918270699102aa8dab5496df06904c914600" +[[package]] +name = "cmov" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c9ea0ac24bc397ab3c98583a3c9ba74fa56b09a4449bbe172b9b1ddb016027a" + +[[package]] +name = "cpufeatures" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ca28b0ae3115b884660db4118d803791fd6756b6e88f39c0f3f7859060d7566" +dependencies = [ + "libc", +] + [[package]] name = "crypto-common" version = "0.2.2" @@ -87,6 +105,15 @@ dependencies = [ "hybrid-array", ] +[[package]] +name = "ctutils" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d5515a3834141de9eafb9717ad39eea8247b5674e6066c404e8c4b365d2a29e" +dependencies = [ + "cmov", +] + [[package]] name = "digest" version = "0.11.3" @@ -95,6 +122,7 @@ checksum = "f1dd6dbb5841937940781866fa1281a1ff7bd3bf827091440879f9994983d5c2" dependencies = [ "block-buffer", "crypto-common", + "ctutils", ] [[package]] @@ -114,6 +142,15 @@ dependencies = [ "wasi", ] +[[package]] +name = "hmac" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6303bc9732ae41b04cb554b844a762b4115a61bfaa81e3e83050991eeb56863f" +dependencies = [ + "digest", +] + [[package]] name = "http" version = "1.5.0" @@ -294,6 +331,28 @@ dependencies = [ "zmij", ] +[[package]] +name = "sha1" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aacc4cc499359472b4abe1bf11d0b12e688af9a805fa5e3016f9a386dc2d0214" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "sha2" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "446ba717509524cb3f22f17ecc096f10f4822d76ab5c0b9822c5f9c284e825f4" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + [[package]] name = "shlex" version = "2.0.1" diff --git a/adapters/borink/Cargo.toml b/adapters/borink/Cargo.toml index 5678136..707eee7 100644 --- a/adapters/borink/Cargo.toml +++ b/adapters/borink/Cargo.toml @@ -11,7 +11,7 @@ publish = false [dependencies] # The adapter itself lives in borink-org/object-storage, beside the crates whose # API it calls. This is the commit whose adapter speaks this revision's protocol. -borink-object-tests-adapter = { git = "https://github.com/borink-org/object-storage.git", rev = "03829e1253bccf62ae55d09b607731a5c4b74952" } +borink-object-tests-adapter = { git = "https://github.com/borink-org/object-storage.git", rev = "deb671c5bd30939bef1bb1144f36c3a43e66d9d0" } [features] # HTTPS, which only the live probes need. Offline grading uses plain HTTP on loopback. diff --git a/cases/management.json b/cases/management.json new file mode 100644 index 0000000..bbc3eca --- /dev/null +++ b/cases/management.json @@ -0,0 +1,2640 @@ +{ + "version": 1, + "index": { + "management/azure-hns/container-properties": "Read the properties of a container", + "management/azure-hns/container-properties-absent": "Report a missing container when reading its properties", + "management/azure-hns/create-container": "Create a container", + "management/azure-hns/create-container-exists": "Refuse to create a container that exists", + "management/azure-hns/create-container-invalid-name": "Refuse a container name with capitals and an underscore", + "management/azure-hns/delete-container": "Delete a container", + "management/azure-hns/delete-container-absent": "Report a missing container on delete", + "management/azure-hns/list-containers": "List the containers whose names start with a prefix", + "management/azure/container-properties": "Read the properties of a container", + "management/azure/container-properties-absent": "Report a missing container when reading its properties", + "management/azure/create-container": "Create a container", + "management/azure/create-container-exists": "Refuse to create a container that exists", + "management/azure/create-container-invalid-name": "Refuse a container name with capitals and an underscore", + "management/azure/delete-container": "Delete a container", + "management/azure/delete-container-absent": "Report a missing container on delete", + "management/azure/list-containers": "List the containers whose names start with a prefix", + "management/s3-express/create-bucket": "Create a directory bucket in an availability zone. The request goes to the regional control endpoint, s3express-control, by path, signed with the account credentials and no session", + "management/s3/create-bucket": "Create a bucket in the region of the endpoint", + "management/s3/create-bucket-owned": "Refuse to create a bucket that the account already owns", + "management/s3/delete-bucket": "Delete an empty bucket", + "management/s3/get-bucket-versioning": "Report a bucket's versioning status, Enabled once versioning was turned on", + "management/s3/get-bucket-versioning-never-enabled": "Report no versioning status for a bucket that never had versioning turned on. S3 answers a VersioningConfiguration without a Status", + "management/s3/head-bucket": "Confirm that a bucket exists", + "management/s3/head-bucket-missing": "Report a bucket that does not exist", + "management/s3/list-buckets": "List the buckets whose names start with a prefix", + "management/s3/put-bucket-versioning": "Turn on versioning in a bucket, with a VersioningConfiguration whose Status is Enabled. The data-plane runs keep earlier versions in such a bucket" + }, + "profiles": { + "azure": { + "provider": "azure", + "endpoint": { + "account": "fixture", + "bucket": "fixture", + "region": "us-east-1" + }, + "checks": [ + { + "at": "/headers/x-ms-date", + "optional": true, + "rule": { + "is": "fresh", + "format": "http", + "max_past_seconds": 900, + "max_future_seconds": 60 + } + }, + { + "at": "/headers/date", + "optional": true, + "rule": { + "is": "fresh", + "format": "http", + "max_past_seconds": 900, + "max_future_seconds": 60 + } + }, + { + "at": "/headers/x-ms-client-request-id", + "optional": true, + "rule": { + "is": "matches", + "pattern": ".{0,1024}" + } + }, + { + "at": "/headers/x-ms-version", + "optional": false, + "rule": { + "is": "one_of", + "values": [ + "2018-11-09", + "2019-12-12", + "2020-10-02", + "2021-12-02", + "2023-11-03", + "2024-11-04", + "2025-01-05", + "2025-11-05", + "2026-02-06", + "2026-04-06" + ] + } + } + ], + "allow_headers": [ + "host", + "content-length", + "transfer-encoding", + "connection", + "expect", + "user-agent", + "accept", + "accept-encoding", + "authorization" + ], + "allow_query": [] + }, + "azure-hns": { + "provider": "azure", + "endpoint": { + "account": "fixture", + "bucket": "fixture", + "hierarchical_namespace": true, + "region": "us-east-1" + }, + "checks": [ + { + "at": "/headers/x-ms-date", + "optional": true, + "rule": { + "is": "fresh", + "format": "http", + "max_past_seconds": 900, + "max_future_seconds": 60 + } + }, + { + "at": "/headers/date", + "optional": true, + "rule": { + "is": "fresh", + "format": "http", + "max_past_seconds": 900, + "max_future_seconds": 60 + } + }, + { + "at": "/headers/x-ms-client-request-id", + "optional": true, + "rule": { + "is": "matches", + "pattern": ".{0,1024}" + } + }, + { + "at": "/headers/x-ms-version", + "optional": false, + "rule": { + "is": "one_of", + "values": [ + "2018-11-09", + "2019-12-12", + "2020-10-02", + "2021-12-02", + "2023-11-03", + "2024-11-04", + "2025-01-05", + "2025-11-05", + "2026-02-06", + "2026-04-06" + ] + } + } + ], + "allow_headers": [ + "host", + "content-length", + "transfer-encoding", + "connection", + "expect", + "user-agent", + "accept", + "accept-encoding", + "authorization" + ], + "allow_query": [] + }, + "s3": { + "provider": "s3", + "endpoint": { + "account": "fixture", + "bucket": "fixture", + "region": "us-east-1" + }, + "checks": [ + { + "at": "/headers/x-amz-date", + "optional": true, + "rule": { + "is": "fresh", + "format": "amz", + "max_past_seconds": 900, + "max_future_seconds": 60 + } + }, + { + "at": "/headers/x-amz-content-sha256", + "optional": true, + "rule": { + "is": "matches", + "pattern": "[0-9a-f]{64}|UNSIGNED-PAYLOAD" + } + }, + { + "at": "/headers/x-amz-api-version", + "optional": true, + "rule": { + "is": "equal", + "value": "2006-03-01" + } + }, + { + "at": "/raw_query", + "optional": false, + "rule": { + "is": "matches", + "pattern": "[^+]*" + }, + "because": "S3 reads a + in a query as a space, so a plus in a prefix, token or upload ID must go as %2B and a space as %20" + } + ], + "allow_headers": [ + "host", + "content-length", + "transfer-encoding", + "connection", + "expect", + "user-agent", + "accept", + "accept-encoding", + "authorization", + "amz-sdk-invocation-id", + "amz-sdk-request", + "x-amz-user-agent" + ], + "allow_query": [] + }, + "s3-express": { + "provider": "s3", + "endpoint": { + "bucket": "fixture--euc1-az1--x-s3", + "control_url": "http://s3express-control.eu-central-1.fixture.invalid", + "directory_bucket": true, + "region": "eu-central-1", + "url": "http://s3express-euc1-az1.fixture.invalid" + }, + "checks": [ + { + "at": "/headers/x-amz-date", + "optional": true, + "rule": { + "is": "fresh", + "format": "amz", + "max_past_seconds": 900, + "max_future_seconds": 60 + } + }, + { + "at": "/headers/x-amz-content-sha256", + "optional": true, + "rule": { + "is": "matches", + "pattern": "[0-9a-f]{64}|UNSIGNED-PAYLOAD" + } + }, + { + "at": "/headers/x-amz-api-version", + "optional": true, + "rule": { + "is": "equal", + "value": "2006-03-01" + } + }, + { + "at": "/raw_query", + "optional": false, + "rule": { + "is": "matches", + "pattern": "[^+]*" + }, + "because": "S3 reads a + in a query as a space, so a plus in a prefix, token or upload ID must go as %2B and a space as %20" + } + ], + "allow_headers": [ + "host", + "content-length", + "transfer-encoding", + "connection", + "expect", + "user-agent", + "accept", + "accept-encoding", + "authorization", + "amz-sdk-invocation-id", + "amz-sdk-request", + "x-amz-user-agent", + "proxy-connection" + ], + "allow_query": [] + } + }, + "cases": [ + { + "id": "management/azure/list-containers", + "profile": "azure", + "lane": "core", + "purpose": "List the containers whose names start with a prefix", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/list-containers2" + ], + "call": { + "op": "azure.list_containers", + "prefix": "otc-listed-" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "list" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "otc-listed-" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + } + }, + "body": { + "encoding": "utf8", + "data": "otc-listed-otc-listed-aMon, 01 Jan 2024 00:00:00 GMT\"fixture-etag\"unlockedavailablefalsefalseotc-listed-bMon, 01 Jan 2024 00:00:00 GMT\"fixture-etag\"unlockedavailablefalsefalse" + }, + "framing": "chunked" + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/containers", + "optional": false, + "rule": { + "is": "equal", + "value": [ + "otc-listed-a", + "otc-listed-b" + ] + } + } + ], + "refusal": null + }, + { + "id": "management/azure/container-properties-absent", + "profile": "azure", + "lane": "core", + "purpose": "Report a missing container when reading its properties", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/get-container-properties" + ], + "call": { + "container": "otc-absent", + "op": "azure.container_properties" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/otc-absent" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/restype", + "optional": false, + "rule": { + "is": "equal", + "value": "container" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 404, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "ContainerNotFound" + }, + "body": { + "encoding": "utf8", + "data": "ContainerNotFoundFixture error" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 404 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "ContainerNotFound" + } + } + ], + "refusal": null + }, + { + "id": "management/azure/container-properties", + "profile": "azure", + "lane": "core", + "purpose": "Read the properties of a container", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/get-container-properties" + ], + "call": { + "container": "otc-read", + "op": "azure.container_properties" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/otc-read" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/restype", + "optional": false, + "rule": { + "is": "equal", + "value": "container" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "date": { + "from": "now" + }, + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-has-immutability-policy": "false", + "x-ms-has-legal-hold": "false", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked" + }, + "body": { + "encoding": "empty" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + } + ], + "refusal": null + }, + { + "id": "management/azure/delete-container-absent", + "profile": "azure", + "lane": "core", + "purpose": "Report a missing container on delete", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/delete-container" + ], + "call": { + "container": "otc-absent", + "op": "azure.delete_container" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "DELETE" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/otc-absent" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/restype", + "optional": false, + "rule": { + "is": "equal", + "value": "container" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 404, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "ContainerNotFound" + }, + "body": { + "encoding": "utf8", + "data": "ContainerNotFoundFixture error" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 404 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "ContainerNotFound" + } + } + ], + "refusal": null + }, + { + "id": "management/azure/delete-container", + "profile": "azure", + "lane": "core", + "purpose": "Delete a container", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/delete-container" + ], + "call": { + "container": "otc-deleted", + "op": "azure.delete_container" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "DELETE" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/otc-deleted" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/restype", + "optional": false, + "rule": { + "is": "equal", + "value": "container" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 202, + "headers": { + "date": { + "from": "now" + } + }, + "body": { + "encoding": "empty" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + } + ], + "refusal": null + }, + { + "id": "management/azure/create-container-invalid-name", + "profile": "azure", + "lane": "core", + "purpose": "Refuse a container name with capitals and an underscore", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/naming-and-referencing-containers--blobs--and-metadata" + ], + "call": { + "container": "Otc_Invalid", + "op": "azure.create_container" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/Otc_Invalid" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/restype", + "optional": false, + "rule": { + "is": "equal", + "value": "container" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 400, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "InvalidResourceName" + }, + "body": { + "encoding": "utf8", + "data": "InvalidResourceNameFixture error" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 400 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "InvalidResourceName" + } + } + ], + "refusal": null + }, + { + "id": "management/azure/create-container-exists", + "profile": "azure", + "lane": "core", + "purpose": "Refuse to create a container that exists", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/create-container" + ], + "call": { + "container": "otc-existing", + "op": "azure.create_container" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/otc-existing" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/restype", + "optional": false, + "rule": { + "is": "equal", + "value": "container" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 409, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "ContainerAlreadyExists" + }, + "body": { + "encoding": "utf8", + "data": "ContainerAlreadyExistsFixture error" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 409 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "ContainerAlreadyExists" + } + } + ], + "refusal": null + }, + { + "id": "management/azure/create-container", + "profile": "azure", + "lane": "core", + "purpose": "Create a container", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/create-container" + ], + "call": { + "container": "otc-created", + "op": "azure.create_container" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/otc-created" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/restype", + "optional": false, + "rule": { + "is": "equal", + "value": "container" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 201, + "headers": { + "date": { + "from": "now" + }, + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "empty" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + } + ], + "refusal": null + }, + { + "id": "management/azure-hns/list-containers", + "profile": "azure-hns", + "lane": "core", + "purpose": "List the containers whose names start with a prefix", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/list-containers2" + ], + "call": { + "op": "azure.list_containers", + "prefix": "otc-listed-" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "list" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "otc-listed-" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + } + }, + "body": { + "encoding": "utf8", + "data": "otc-listed-otc-listed-aMon, 01 Jan 2024 00:00:00 GMT\"fixture-etag\"unlockedavailablefalsefalseotc-listed-bMon, 01 Jan 2024 00:00:00 GMT\"fixture-etag\"unlockedavailablefalsefalse" + }, + "framing": "chunked" + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/containers", + "optional": false, + "rule": { + "is": "equal", + "value": [ + "otc-listed-a", + "otc-listed-b" + ] + } + } + ], + "refusal": null + }, + { + "id": "management/azure-hns/container-properties-absent", + "profile": "azure-hns", + "lane": "core", + "purpose": "Report a missing container when reading its properties", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/get-container-properties" + ], + "call": { + "container": "otc-absent", + "op": "azure.container_properties" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/otc-absent" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/restype", + "optional": false, + "rule": { + "is": "equal", + "value": "container" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 404, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "ContainerNotFound" + }, + "body": { + "encoding": "utf8", + "data": "ContainerNotFoundFixture error" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 404 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "ContainerNotFound" + } + } + ], + "refusal": null + }, + { + "id": "management/azure-hns/container-properties", + "profile": "azure-hns", + "lane": "core", + "purpose": "Read the properties of a container", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/get-container-properties" + ], + "call": { + "container": "otc-read", + "op": "azure.container_properties" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/otc-read" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/restype", + "optional": false, + "rule": { + "is": "equal", + "value": "container" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "date": { + "from": "now" + }, + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-has-immutability-policy": "false", + "x-ms-has-legal-hold": "false", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked" + }, + "body": { + "encoding": "empty" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + } + ], + "refusal": null + }, + { + "id": "management/azure-hns/delete-container-absent", + "profile": "azure-hns", + "lane": "core", + "purpose": "Report a missing container on delete", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/delete-container" + ], + "call": { + "container": "otc-absent", + "op": "azure.delete_container" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "DELETE" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/otc-absent" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/restype", + "optional": false, + "rule": { + "is": "equal", + "value": "container" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 404, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "ContainerNotFound" + }, + "body": { + "encoding": "utf8", + "data": "ContainerNotFoundFixture error" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 404 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "ContainerNotFound" + } + } + ], + "refusal": null + }, + { + "id": "management/azure-hns/delete-container", + "profile": "azure-hns", + "lane": "core", + "purpose": "Delete a container", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/delete-container" + ], + "call": { + "container": "otc-deleted", + "op": "azure.delete_container" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "DELETE" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/otc-deleted" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/restype", + "optional": false, + "rule": { + "is": "equal", + "value": "container" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 202, + "headers": { + "date": { + "from": "now" + } + }, + "body": { + "encoding": "empty" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + } + ], + "refusal": null + }, + { + "id": "management/azure-hns/create-container-invalid-name", + "profile": "azure-hns", + "lane": "core", + "purpose": "Refuse a container name with capitals and an underscore", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/naming-and-referencing-containers--blobs--and-metadata" + ], + "call": { + "container": "Otc_Invalid", + "op": "azure.create_container" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/Otc_Invalid" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/restype", + "optional": false, + "rule": { + "is": "equal", + "value": "container" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 400, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "InvalidResourceName" + }, + "body": { + "encoding": "utf8", + "data": "InvalidResourceNameFixture error" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 400 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "InvalidResourceName" + } + } + ], + "refusal": null + }, + { + "id": "management/azure-hns/create-container-exists", + "profile": "azure-hns", + "lane": "core", + "purpose": "Refuse to create a container that exists", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/create-container" + ], + "call": { + "container": "otc-existing", + "op": "azure.create_container" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/otc-existing" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/restype", + "optional": false, + "rule": { + "is": "equal", + "value": "container" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 409, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "ContainerAlreadyExists" + }, + "body": { + "encoding": "utf8", + "data": "ContainerAlreadyExistsFixture error" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 409 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "ContainerAlreadyExists" + } + } + ], + "refusal": null + }, + { + "id": "management/azure-hns/create-container", + "profile": "azure-hns", + "lane": "core", + "purpose": "Create a container", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/create-container" + ], + "call": { + "container": "otc-created", + "op": "azure.create_container" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/otc-created" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/restype", + "optional": false, + "rule": { + "is": "equal", + "value": "container" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 201, + "headers": { + "date": { + "from": "now" + }, + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "empty" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + } + ], + "refusal": null + }, + { + "id": "management/s3/delete-bucket", + "profile": "s3", + "lane": "core", + "purpose": "Delete an empty bucket", + "sources": [ + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucket.html" + ], + "call": { + "bucket": "object-tests-deleted", + "op": "s3.delete_bucket" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "DELETE" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/object-tests-deleted" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 204, + "headers": { + "date": { + "from": "now" + } + }, + "body": { + "encoding": "empty" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + } + ], + "refusal": null + }, + { + "id": "management/s3/head-bucket", + "profile": "s3", + "lane": "core", + "purpose": "Confirm that a bucket exists", + "sources": [ + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadBucket.html" + ], + "call": { + "bucket": "fixture", + "op": "s3.head_bucket" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "HEAD" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "date": { + "from": "now" + }, + "x-amz-bucket-region": "eu-central-1" + }, + "body": { + "encoding": "empty" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + } + ], + "refusal": null + }, + { + "id": "management/s3/head-bucket-missing", + "profile": "s3", + "lane": "core", + "purpose": "Report a bucket that does not exist", + "sources": [ + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadBucket.html" + ], + "call": { + "bucket": "object-tests-absent", + "op": "s3.head_bucket" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "HEAD" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/object-tests-absent" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 404, + "headers": { + "date": { + "from": "now" + } + }, + "body": { + "encoding": "empty" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 404 + } + } + ], + "refusal": null + }, + { + "id": "management/s3/list-buckets", + "profile": "s3", + "lane": "core", + "purpose": "List the buckets whose names start with a prefix", + "sources": [ + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBuckets.html" + ], + "call": { + "op": "s3.list_buckets", + "prefix": "object-tests-listed-" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests-listed-" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + } + }, + "body": { + "encoding": "utf8", + "data": "\nfixture-ownerobject-tests-listed-a2024-01-01T00:00:00.000Zeu-central-1object-tests-listed-b2024-01-01T00:00:00.000Zeu-central-1object-tests-listed-" + }, + "framing": "chunked" + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/buckets", + "optional": false, + "rule": { + "is": "equal", + "value": [ + "object-tests-listed-a", + "object-tests-listed-b" + ] + } + } + ], + "refusal": null + }, + { + "id": "management/s3/create-bucket-owned", + "profile": "s3", + "lane": "core", + "purpose": "Refuse to create a bucket that the account already owns", + "sources": [ + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html" + ], + "call": { + "bucket": "fixture", + "location": "eu-central-1", + "op": "s3.create_bucket" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture" + } + }, + { + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "eu-central-1" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 409, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + } + }, + "body": { + "encoding": "utf8", + "data": "\nBucketAlreadyOwnedByYouFixture error" + }, + "framing": "chunked" + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 409 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "BucketAlreadyOwnedByYou" + } + } + ], + "refusal": null + }, + { + "id": "management/s3/create-bucket", + "profile": "s3", + "lane": "core", + "purpose": "Create a bucket in the region of the endpoint", + "sources": [ + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html" + ], + "call": { + "bucket": "object-tests-created", + "location": "eu-central-1", + "op": "s3.create_bucket" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/object-tests-created" + } + }, + { + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "eu-central-1" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "date": { + "from": "now" + }, + "location": "/object-tests-created" + }, + "body": { + "encoding": "empty" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + } + ], + "refusal": null + }, + { + "id": "management/s3/put-bucket-versioning", + "profile": "s3", + "lane": "core", + "purpose": "Turn on versioning in a bucket, with a VersioningConfiguration whose Status is Enabled. The data-plane runs keep earlier versions in such a bucket", + "sources": [ + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketVersioning.html" + ], + "call": { + "bucket": "object-tests-versioned", + "op": "s3.put_bucket_versioning", + "status": "Enabled" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/object-tests-versioned" + } + }, + { + "at": "/query/versioning", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "Enabled" + } + }, + { + "at": "/headers/x-amz-checksum-crc64nvme", + "optional": true, + "rule": { + "is": "matches", + "pattern": "[A-Za-z0-9+/]{11}=" + } + } + ], + "allow_headers": [ + "content-type", + "x-amz-sdk-checksum-algorithm" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "date": { + "from": "now" + } + }, + "body": { + "encoding": "empty" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + } + ], + "refusal": null + }, + { + "id": "management/s3/get-bucket-versioning", + "profile": "s3", + "lane": "core", + "purpose": "Report a bucket's versioning status, Enabled once versioning was turned on", + "sources": [ + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketVersioning.html" + ], + "call": { + "bucket": "object-tests-versioned", + "op": "s3.get_bucket_versioning" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/object-tests-versioned" + } + }, + { + "at": "/query/versioning", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [ + "content-type", + "x-amz-sdk-checksum-algorithm" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + } + }, + "body": { + "encoding": "utf8", + "data": "\nEnabled" + }, + "framing": "chunked" + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/status", + "optional": false, + "rule": { + "is": "equal", + "value": "Enabled" + } + } + ], + "refusal": null + }, + { + "id": "management/s3/get-bucket-versioning-never-enabled", + "profile": "s3", + "lane": "core", + "purpose": "Report no versioning status for a bucket that never had versioning turned on. S3 answers a VersioningConfiguration without a Status", + "sources": [ + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketVersioning.html" + ], + "call": { + "bucket": "object-tests-versioned", + "op": "s3.get_bucket_versioning" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/object-tests-versioned" + } + }, + { + "at": "/query/versioning", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [ + "content-type", + "x-amz-sdk-checksum-algorithm" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + } + }, + "body": { + "encoding": "utf8", + "data": "\n" + }, + "framing": "chunked" + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/status", + "optional": true, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "refusal": null + }, + { + "id": "management/s3-express/create-bucket", + "profile": "s3-express", + "lane": "core", + "purpose": "Create a directory bucket in an availability zone. The request goes to the regional control endpoint, s3express-control, by path, signed with the account credentials and no session", + "sources": [ + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html", + "https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-Regions-and-Zones.html" + ], + "call": { + "availability_zone": "euc1-az1", + "bucket": "object-tests-created--euc1-az1--x-s3", + "op": "s3.create_bucket" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/object-tests-created--euc1-az1--x-s3" + } + }, + { + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "euc1-az1AvailabilityZoneSingleAvailabilityZoneDirectory" + } + }, + { + "at": "/headers/host", + "optional": false, + "rule": { + "is": "equal", + "value": "s3express-control.eu-central-1.fixture.invalid" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "absent" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "date": { + "from": "now" + }, + "location": "/object-tests-created--euc1-az1--x-s3" + }, + "body": { + "encoding": "empty" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + } + ], + "refusal": null + } + ] +} diff --git a/cases/operations.json b/cases/operations.json index 7acbaca..abb7476 100644 --- a/cases/operations.json +++ b/cases/operations.json @@ -1,5 +1,1083 @@ { "version": 1, + "index": { + "operations/azure-hns/abort-copy": "Abort a pending copy by its copy ID, with x-ms-copy-action: abort", + "operations/azure-hns/abort-copy-finished": "Report an abort of a copy that has finished as an error, 409 NoPendingCopyOperation", + "operations/azure-hns/append-block": "Append a block to an append blob and report its offset", + "operations/azure-hns/append-block-at-wrong-position": "Refuse an append whose position condition does not match the blob length", + "operations/azure-hns/append-block-to-block-blob": "Refuse an append to a block blob", + "operations/azure-hns/commit": "commit", + "operations/azure-hns/commit-container-missing": "commit container missing. A client reports it as container_not_found: the bucket or container is absent, not the object", + "operations/azure-hns/commit-content-properties": "Commit a block list with content properties, sent as x-ms-blob-content-type, -language, -disposition and x-ms-blob-cache-control", + "operations/azure-hns/commit-declaring-md5": "commit declaring md5", + "operations/azure-hns/commit-duplicate-id": "commit duplicate id", + "operations/azure-hns/commit-escaped-id": "commit escaped id", + "operations/azure-hns/commit-key-double-slash": "commit, with the key \"double//slash.txt\"", + "operations/azure-hns/commit-key-hash": "commit, with the key \"hash#tag.txt\"", + "operations/azure-hns/commit-key-non-ascii": "commit, with the key \"café/雪.txt\"", + "operations/azure-hns/commit-key-percent": "commit, with the key \"percent%20.txt\"", + "operations/azure-hns/commit-key-plus": "commit, with the key \"plus+plus.txt\"", + "operations/azure-hns/commit-key-question": "commit, with the key \"question?mark.txt\"", + "operations/azure-hns/commit-key-space": "commit, with the key \"space name.txt\"", + "operations/azure-hns/commit-key-trailing-slash": "commit, with the key \"trailing-slash/\"", + "operations/azure-hns/commit-lost-the-race-to-create": "commit lost the race to create", + "operations/azure-hns/commit-nothing": "commit nothing", + "operations/azure-hns/commit-over-whole-object": "commit over whole object", + "operations/azure-hns/commit-precondition-failed": "commit precondition failed", + "operations/azure-hns/commit-refused": "Report the service authorization error for this operation; signature acceptance is tested separately.", + "operations/azure-hns/commit-reordered": "commit reordered", + "operations/azure-hns/commit-replacement": "commit replacement", + "operations/azure-hns/commit-unstaged-id": "commit unstaged id", + "operations/azure-hns/commit-unstaged-id-code-in-body": "commit unstaged id, with the error code only in the XML body", + "operations/azure-hns/commit-with-tier": "Commit a block list into an access tier, named in x-ms-access-tier", + "operations/azure-hns/copy": "Copy an object to another key in the same container", + "operations/azure-hns/copy-across-containers": "Copy a blob from another container of the same account, which x-ms-copy-source names in its URL", + "operations/azure-hns/copy-if-none-match-exists": "Report a copy with If-None-Match: * onto a blob that exists as a failed condition on the destination", + "operations/azure-hns/copy-missing-source": "Refuse a copy whose source does not exist", + "operations/azure-hns/copy-pending": "Report a copy that Azure answers as pending with its copy ID, so that a caller can follow it with a HEAD or abort it", + "operations/azure-hns/copy-replace-metadata": "Copy a blob with new metadata, which replaces all of the source's. A copy that names no metadata keeps the source's", + "operations/azure-hns/copy-source-if-match": "Copy a blob only if the source still has this ETag, named in x-ms-source-if-match", + "operations/azure-hns/copy-source-if-match-failed": "Report a copy whose source does not have the ETag in x-ms-source-if-match as a failed condition, 412 SourceConditionNotMet", + "operations/azure-hns/copy-source-if-unmodified-since-failed": "Report a copy whose source changed after the time in x-ms-source-if-unmodified-since as a failed condition, 412 SourceConditionNotMet", + "operations/azure-hns/copy-source-key-encoded": "Copy from a key with a space, +, %, é, ? and #. The x-ms-copy-source URL percent-encodes every byte of the key outside letters, digits, -._~ and /", + "operations/azure-hns/copy-sync": "Copy a blob with Copy Blob From URL, x-ms-requires-sync: true, which answers once the copy is done. The source must be readable by URL: by a SAS, or by a bearer token in x-ms-copy-source-authorization", + "operations/azure-hns/copy-tier": "Copy a blob into another access tier, named in x-ms-access-tier", + "operations/azure-hns/create-append": "Create an empty append blob", + "operations/azure-hns/create-page": "Create a page blob of 1,024 bytes, which an HNS account does not support", + "operations/azure-hns/delete-accepted": "delete accepted", + "operations/azure-hns/delete-accepted-key-double-slash": "delete accepted, with the key \"double//slash.txt\"", + "operations/azure-hns/delete-accepted-key-hash": "delete accepted, with the key \"hash#tag.txt\"", + "operations/azure-hns/delete-accepted-key-non-ascii": "delete accepted, with the key \"café/雪.txt\"", + "operations/azure-hns/delete-accepted-key-percent": "delete accepted, with the key \"percent%20.txt\"", + "operations/azure-hns/delete-accepted-key-plus": "delete accepted, with the key \"plus+plus.txt\"", + "operations/azure-hns/delete-accepted-key-question": "delete accepted, with the key \"question?mark.txt\"", + "operations/azure-hns/delete-accepted-key-space": "delete accepted, with the key \"space name.txt\"", + "operations/azure-hns/delete-accepted-key-trailing-slash": "delete accepted, with the key \"trailing-slash/\"", + "operations/azure-hns/delete-container-missing": "delete container missing. A client reports it as container_not_found: the bucket or container is absent, not the object", + "operations/azure-hns/delete-current-version": "delete current version", + "operations/azure-hns/delete-if-match-current": "delete if match current", + "operations/azure-hns/delete-if-unmodified-since-past": "Refuse a delete with 412 when the object changed after If-Unmodified-Since", + "operations/azure-hns/delete-leased-if-match-without-lease-id": "Refuse to delete a leased object whose If-Match holds but that names no lease ID", + "operations/azure-hns/delete-leased-without-lease-id": "Refuse to delete a leased object without its lease ID", + "operations/azure-hns/delete-many": "Delete several objects in one batch and report each result", + "operations/azure-hns/delete-many-256": "Delete 256 keys in one batch, the most Azure takes", + "operations/azure-hns/delete-many-257": "Report a batch of 257 deletions, one more than Azure takes, as an error. Azure answers 202 with one part and no Content-ID, 400 ExceedsMaxBatchRequestCount, for the whole batch, not one part per deletion. A client may refuse it before sending", + "operations/azure-hns/delete-many-answers-out-of-order": "Match each part of a batch answer to its deletion by Content-ID, which links them, not by position. Azure has answered every recorded batch in order, up to 256 parts; this answer is written by hand", + "operations/azure-hns/delete-many-container-missing": "Report a batch in a missing container, which Azure answers 202 with 404 ContainerNotFound for each deletion, as that error for each key and none deleted, or as one error of kind container_not_found", + "operations/azure-hns/delete-many-denied": "Report each deletion of a batch that Azure refuses inside its 202 answer, here every one with 403 AuthorizationPermissionMismatch, as that key's error, not as deleted", + "operations/azure-hns/delete-many-lf-line-endings": "Read a batch answer whose lines end in LF alone correctly, or report it as an error, but never half-read it. Azure has not been seen to send it: HTTP and multipart require CRLF. This answer is the recorded one with every CR removed", + "operations/azure-hns/delete-many-server-busy": "Report a batch that Azure answers as a whole with 503 ServerBusy as an error, never as deleted keys. A client may retry up to five times first", + "operations/azure-hns/delete-many-unauthenticated": "Report a batch whose token Azure does not accept as one error for the whole batch, as Azure answers it, not as an answer per key", + "operations/azure-hns/delete-many-without-content-id": "Report a batch answer whose parts carry no Content-ID as an error. Without one, only the order of the parts would link a result to its key, and a guess could report one key deleted when another failed. Azure echoes the Content-ID of every subrequest; this answer is the recorded one with them removed", + "operations/azure-hns/delete-missing": "delete missing. A client reports it as not_found: the object is absent", + "operations/azure-hns/delete-precondition-failed": "delete precondition failed", + "operations/azure-hns/delete-precondition-failed-code-in-body": "delete precondition failed, with the error code only in the XML body", + "operations/azure-hns/delete-previous-version": "delete previous version", + "operations/azure-hns/delete-refused": "Report the service authorization error for this operation; signature acceptance is tested separately.", + "operations/azure-hns/delete-refused-for-snapshots": "Report the service authorization error for this operation; signature acceptance is tested separately.", + "operations/azure-hns/delete-server-busy": "Report a 503 ServerBusy answer as an error, after at most 5 retries", + "operations/azure-hns/delete-snapshot": "delete snapshot", + "operations/azure-hns/delete-snapshots-only": "delete snapshots only", + "operations/azure-hns/delete-unauthenticated": "Report the service authorization error for this operation; signature acceptance is tested separately.", + "operations/azure-hns/delete-versioned-object": "delete versioned object", + "operations/azure-hns/delete-with-snapshots": "delete with snapshots", + "operations/azure-hns/get-after-snapshots-deleted": "get after snapshots deleted", + "operations/azure-hns/get-body-cut-short": "Report a body that ends before its Content-Length as an error, or resume it, but never return the short body", + "operations/azure-hns/get-committed": "get committed", + "operations/azure-hns/get-committed-nothing": "get committed nothing", + "operations/azure-hns/get-committed-over-whole-object": "get committed over whole object", + "operations/azure-hns/get-container-missing": "get container missing. A client reports it as container_not_found: the bucket or container is absent, not the object", + "operations/azure-hns/get-content-encoding-gzip": "Return the stored gzip bytes and Content-Encoding: gzip without decoding them", + "operations/azure-hns/get-content-properties": "Return the stored content properties from a GET", + "operations/azure-hns/get-current-version": "get current version", + "operations/azure-hns/get-current-version-of-deleted-object": "get current version of deleted object", + "operations/azure-hns/get-deleted-snapshot": "get deleted snapshot", + "operations/azure-hns/get-deleted-versioned-object": "get deleted versioned object", + "operations/azure-hns/get-duplicate-id": "get duplicate id", + "operations/azure-hns/get-empty": "get empty", + "operations/azure-hns/get-if-match-current": "get if match current", + "operations/azure-hns/get-if-modified-since-future": "Report 304 when If-Modified-Since names a future date, which Azure does not ignore", + "operations/azure-hns/get-if-modified-since-past": "Read an object modified since a past date", + "operations/azure-hns/get-if-none-match-other": "get if none match other", + "operations/azure-hns/get-if-unmodified-since-past": "Refuse a read with 412 when the object changed after If-Unmodified-Since", + "operations/azure-hns/get-key-with-hash": "get key with hash", + "operations/azure-hns/get-key-with-non-ascii": "get key unicode", + "operations/azure-hns/get-key-with-percent": "get key with percent", + "operations/azure-hns/get-key-with-plus": "get key with plus", + "operations/azure-hns/get-key-with-question": "get key question", + "operations/azure-hns/get-key-with-separators": "get key separators", + "operations/azure-hns/get-key-with-space": "get key space", + "operations/azure-hns/get-metadata": "get metadata", + "operations/azure-hns/get-metadata-empty-value": "get metadata empty value", + "operations/azure-hns/get-metadata-ignores-unknown-headers": "Surface user metadata; unknown headers must not become metadata.", + "operations/azure-hns/get-metadata-of-snapshot": "get metadata of snapshot", + "operations/azure-hns/get-metadata-replaced": "get metadata replaced", + "operations/azure-hns/get-missing": "get missing. A client reports it as not_found: the object is absent", + "operations/azure-hns/get-missing-code-in-body": "get missing, with the error code only in the XML body. A client reports it as not_found: the object is absent", + "operations/azure-hns/get-noise-tolerance": "get noise tolerance", + "operations/azure-hns/get-not-modified": "get not modified", + "operations/azure-hns/get-page-ranges": "List the written ranges of a page blob, which an HNS account does not support", + "operations/azure-hns/get-precondition-failed": "get precondition failed", + "operations/azure-hns/get-previous-version": "get previous version", + "operations/azure-hns/get-previous-version-of-deleted-object": "get previous version of deleted object", + "operations/azure-hns/get-range": "get range", + "operations/azure-hns/get-range-empty": "Read a range of no bytes, whose start equals its end. HTTP has no form for it: bytes=5-4 is inverted, and the service ignores it and sends the whole object. A client may refuse it instead", + "operations/azure-hns/get-range-inverted": "get range inverted", + "operations/azure-hns/get-range-not-satisfiable": "get range not satisfiable", + "operations/azure-hns/get-range-of-empty-object": "Report a range read of an empty object as 416 InvalidRange: no range of it can be satisfied, not even its first byte", + "operations/azure-hns/get-range-open": "get range open", + "operations/azure-hns/get-range-past-the-end": "Read a range that ends past the object, which the service clips to the object's end. Report the window it served from Content-Range, bytes 28-29/30, so that the caller sees the range was clipped", + "operations/azure-hns/get-range-single-byte": "get range single byte", + "operations/azure-hns/get-reordered": "get reordered", + "operations/azure-hns/get-replacement": "get replacement", + "operations/azure-hns/get-server-busy": "Report a 503 ServerBusy answer as an error, after at most 5 retries", + "operations/azure-hns/get-snapshot": "get snapshot", + "operations/azure-hns/get-staged-only": "get staged only", + "operations/azure-hns/get-suffix": "get suffix", + "operations/azure-hns/get-suffix-longer-than-object": "get suffix longer than object", + "operations/azure-hns/get-tags": "Read the tags of an object, which an HNS account does not support", + "operations/azure-hns/get-unauthenticated": "Report the service authorization error for this operation; signature acceptance is tested separately.", + "operations/azure-hns/get-unknown-snapshot": "get unknown snapshot", + "operations/azure-hns/get-unknown-version": "get unknown version", + "operations/azure-hns/get-whole": "get whole", + "operations/azure-hns/get-with-staged-blocks": "get with staged blocks", + "operations/azure-hns/get-xml-looking": "get xml looking", + "operations/azure-hns/head": "head", + "operations/azure-hns/head-access-tier": "Report a blob's access tier, which Azure sends in x-ms-access-tier", + "operations/azure-hns/head-committed": "head committed", + "operations/azure-hns/head-committed-declaring-md5": "head committed declaring md5", + "operations/azure-hns/head-container-missing": "Report a HEAD of a blob in a missing container as container_not_found. Azure answers 404 without a body, but names ContainerNotFound in x-ms-error-code", + "operations/azure-hns/head-content-properties": "Return the stored content properties from a HEAD", + "operations/azure-hns/head-copy-status": "Report the copy that wrote a blob, its x-ms-copy-status and x-ms-copy-id, from a HEAD of the blob", + "operations/azure-hns/head-if-unmodified-since-past": "Refuse a HEAD with 412 when the object changed after If-Unmodified-Since", + "operations/azure-hns/head-key-double-slash": "head, with the key \"double//slash.txt\"", + "operations/azure-hns/head-key-hash": "head, with the key \"hash#tag.txt\"", + "operations/azure-hns/head-key-non-ascii": "head, with the key \"café/雪.txt\"", + "operations/azure-hns/head-key-percent": "head, with the key \"percent%20.txt\"", + "operations/azure-hns/head-key-plus": "head, with the key \"plus+plus.txt\"", + "operations/azure-hns/head-key-question": "head, with the key \"question?mark.txt\"", + "operations/azure-hns/head-key-space": "head, with the key \"space name.txt\"", + "operations/azure-hns/head-key-trailing-slash": "head, with the key \"trailing-slash/\"", + "operations/azure-hns/head-metadata": "head metadata", + "operations/azure-hns/head-missing": "head missing. A client reports it as not_found: the object is absent", + "operations/azure-hns/head-previous-version": "head previous version", + "operations/azure-hns/head-snapshot": "head snapshot", + "operations/azure-hns/head-written-with-crc64": "head written with crc64", + "operations/azure-hns/head-written-with-md5": "head written with md5", + "operations/azure-hns/lease-acquire": "Acquire a lease on an object with a proposed lease ID", + "operations/azure-hns/lease-acquire-leased": "Refuse a second lease while another lease holds the object", + "operations/azure-hns/lease-break": "Break a lease at once", + "operations/azure-hns/lease-release": "Release a lease", + "operations/azure-hns/list-after-delete-with-versions": "list after delete with versions", + "operations/azure-hns/list-all-empty": "list empty", + "operations/azure-hns/list-all-order": "list order", + "operations/azure-hns/list-bad-marker": "list bad marker", + "operations/azure-hns/list-bad-marker-code-in-body": "list bad marker, with the error code only in the XML body", + "operations/azure-hns/list-container-missing": "list container missing. A client reports it as container_not_found: the bucket or container is absent, not the object", + "operations/azure-hns/list-delimited": "list delimited", + "operations/azure-hns/list-empty": "list empty", + "operations/azure-hns/list-encoded-names": "list encoded names", + "operations/azure-hns/list-first-page": "list first page", + "operations/azure-hns/list-key-equal-to-prefix": "list key equal to prefix", + "operations/azure-hns/list-key-equal-to-prefix-delimited": "list key equal to prefix delimited", + "operations/azure-hns/list-many-segments": "list many segments", + "operations/azure-hns/list-max-keys-zero": "list max keys zero", + "operations/azure-hns/list-metadata": "list metadata", + "operations/azure-hns/list-next-page": "list next page", + "operations/azure-hns/list-operation-timed-out": "Report a 500 OperationTimedOut answer as an error, after at most 5 retries", + "operations/azure-hns/list-order": "list order", + "operations/azure-hns/list-order-delimited": "list order delimited", + "operations/azure-hns/list-other-delimiter": "Report the 400 DelimiterIsInvalidForHNS that an HNS account answers to any delimiter but /", + "operations/azure-hns/list-page": "list page", + "operations/azure-hns/list-page-size-one": "A page of zero entries is out of range, but a page of one is not. Send a page size of 1 and report the one entry and the continuation token.", + "operations/azure-hns/list-pagination": "list pagination", + "operations/azure-hns/list-prefix-without-slash": "list prefix without slash", + "operations/azure-hns/list-separator-keys": "list separator keys", + "operations/azure-hns/list-separator-keys-delimited": "list separator keys delimited", + "operations/azure-hns/list-snapshots": "list snapshots", + "operations/azure-hns/list-snapshots-after-delete": "list snapshots after delete", + "operations/azure-hns/list-snapshots-after-snapshots-deleted": "list snapshots after snapshots deleted", + "operations/azure-hns/list-snapshots-and-versions": "list snapshots and versions", + "operations/azure-hns/list-staged-only": "list staged only", + "operations/azure-hns/list-unauthenticated": "Report the service authorization error for this operation; signature acceptance is tested separately.", + "operations/azure-hns/list-versions": "list versions", + "operations/azure-hns/list-versions-of-deleted-object": "list versions of deleted object", + "operations/azure-hns/list-written-with-hashes": "list written with hashes", + "operations/azure-hns/list-xml-escaped": "list xml escaped", + "operations/azure-hns/put-container-missing": "put container missing. A client reports it as container_not_found: the bucket or container is absent, not the object", + "operations/azure-hns/put-content-disposition-non-ascii": "Write a Content-Disposition whose filename is outside ASCII. Azure refuses a disposition byte outside ASCII with 400 InvalidMetadata, so send an RFC 6266 filename*, which any reader decodes, or refuse the value", + "operations/azure-hns/put-content-encoding-gzip": "Store Content-Encoding: gzip with a write, and the gzip bytes unchanged", + "operations/azure-hns/put-content-properties": "Store Content-Type, Content-Language, Content-Disposition and Cache-Control with a write", + "operations/azure-hns/put-content-type-edge-spaces": "Write a content type with spaces at either end, which HTTP drops, so the service stores it trimmed. A client may refuse it", + "operations/azure-hns/put-content-type-non-ascii": "Write a Content-Type with a parameter outside ASCII, or refuse it. An HNS account takes the UTF-8 bytes but returns é as the byte e9, so they do not read back, and no encoding of a Content-Type parameter is one every reader decodes", + "operations/azure-hns/put-crc64-mismatch": "put crc64 mismatch", + "operations/azure-hns/put-created": "put created", + "operations/azure-hns/put-created-empty": "put created empty", + "operations/azure-hns/put-created-key-double-slash": "put created, with the key \"double//slash.txt\"", + "operations/azure-hns/put-created-key-hash": "put created, with the key \"hash#tag.txt\"", + "operations/azure-hns/put-created-key-non-ascii": "put created, with the key \"café/雪.txt\"", + "operations/azure-hns/put-created-key-percent": "put created, with the key \"percent%20.txt\"", + "operations/azure-hns/put-created-key-plus": "put created, with the key \"plus+plus.txt\"", + "operations/azure-hns/put-created-key-question": "put created, with the key \"question?mark.txt\"", + "operations/azure-hns/put-created-key-space": "put created, with the key \"space name.txt\"", + "operations/azure-hns/put-created-key-trailing-slash": "put created, with the key \"trailing-slash/\"", + "operations/azure-hns/put-first-version": "put first version", + "operations/azure-hns/put-from-url": "Write a block blob from the bytes at a URL with Put Blob From URL: a PUT with x-ms-blob-type: BlockBlob, x-ms-copy-source and no body, which answers once it is written", + "operations/azure-hns/put-if-match-current": "put if match current", + "operations/azure-hns/put-if-none-match-missing": "put if none match missing", + "operations/azure-hns/put-if-unmodified-since-past": "Refuse a write with 412 when the object changed after If-Unmodified-Since", + "operations/azure-hns/put-internal-error": "Report a 500 InternalError answer as an error, after at most 5 retries", + "operations/azure-hns/put-key-1024": "put key 1024", + "operations/azure-hns/put-key-1025": "put key 1025", + "operations/azure-hns/put-key-under-object": "put key under object", + "operations/azure-hns/put-leased-if-match-without-lease-id": "Refuse a write to a leased object whose If-Match holds but that names no lease ID", + "operations/azure-hns/put-leased-with-lease-id": "Write to a leased object with its lease ID", + "operations/azure-hns/put-leased-without-lease-id": "Refuse a write to a leased object that names no lease ID", + "operations/azure-hns/put-lost-the-race-to-create": "put lost the race to create", + "operations/azure-hns/put-md5-mismatch": "put md5 mismatch", + "operations/azure-hns/put-metadata": "put metadata", + "operations/azure-hns/put-metadata-empty-value": "put metadata empty value", + "operations/azure-hns/put-metadata-identifier-name": "An Azure metadata name must be a C# identifier, which may start with an underscore and hold digits. Send _a1; only a name that is no identifier may be refused.", + "operations/azure-hns/put-metadata-invalid-name": "put metadata invalid name", + "operations/azure-hns/put-metadata-non-ascii-value": "put metadata non ascii value", + "operations/azure-hns/put-metadata-replaced": "put metadata replaced", + "operations/azure-hns/put-over-snapshotted": "put over snapshotted", + "operations/azure-hns/put-overwrite": "put overwrite", + "operations/azure-hns/put-precondition-failed": "put precondition failed", + "operations/azure-hns/put-precondition-failed-code-in-body": "put precondition failed, with the error code only in the XML body", + "operations/azure-hns/put-refused": "Report the service authorization error for this operation; signature acceptance is tested separately.", + "operations/azure-hns/put-second-version": "put second version", + "operations/azure-hns/put-unauthenticated": "Report the service authorization error for this operation; signature acceptance is tested separately.", + "operations/azure-hns/put-with-both-hashes": "Reject simultaneous transactional MD5 and CRC64", + "operations/azure-hns/put-with-crc64": "put with crc64", + "operations/azure-hns/put-with-md5": "put with md5", + "operations/azure-hns/put-with-tags": "Write an object with tags, which an HNS account does not support", + "operations/azure-hns/put-with-tier": "Write an object straight into the Cool access tier", + "operations/azure-hns/set-tags": "Replace the tags of an object, which an HNS account does not support", + "operations/azure-hns/set-tier-cool": "Move an object to the Cool access tier", + "operations/azure-hns/set-tier-unknown": "Refuse an access tier the service does not have", + "operations/azure-hns/snapshot": "snapshot", + "operations/azure-hns/stage": "stage", + "operations/azure-hns/stage-empty": "stage empty", + "operations/azure-hns/stage-escaped-id": "stage escaped id", + "operations/azure-hns/stage-from-url": "Stage a block from bytes 0 to 2 at a URL with Put Block From URL, the range named in x-ms-source-range with an inclusive end, as bytes=0-2", + "operations/azure-hns/stage-id-64-bytes": "A block ID decodes to at most 64 bytes, and Azure stages a block whose ID decodes to exactly 64. Send it; only a longer ID may be refused.", + "operations/azure-hns/stage-id-too-long": "stage id too long", + "operations/azure-hns/stage-key-double-slash": "stage, with the key \"double//slash.txt\"", + "operations/azure-hns/stage-key-hash": "stage, with the key \"hash#tag.txt\"", + "operations/azure-hns/stage-key-non-ascii": "stage, with the key \"café/雪.txt\"", + "operations/azure-hns/stage-key-percent": "stage, with the key \"percent%20.txt\"", + "operations/azure-hns/stage-key-plus": "stage, with the key \"plus+plus.txt\"", + "operations/azure-hns/stage-key-question": "stage, with the key \"question?mark.txt\"", + "operations/azure-hns/stage-key-space": "stage, with the key \"space name.txt\"", + "operations/azure-hns/stage-key-trailing-slash": "stage, with the key \"trailing-slash/\"", + "operations/azure-hns/stage-mixed-length-id": "stage mixed length id", + "operations/azure-hns/stage-mixed-length-id-code-in-body": "stage mixed length id, with the error code only in the XML body", + "operations/azure-hns/stage-unauthenticated": "Report the service authorization error for this operation; signature acceptance is tested separately.", + "operations/azure-hns/staged-absent": "staged absent", + "operations/azure-hns/staged-absent-code-in-body": "staged absent, with the error code only in the XML body", + "operations/azure-hns/staged-after-commit": "staged after commit", + "operations/azure-hns/staged-after-replacement": "staged after replacement", + "operations/azure-hns/staged-after-whole-write": "staged after whole write", + "operations/azure-hns/staged-committed-empty": "staged committed empty", + "operations/azure-hns/staged-committed-nothing": "staged committed nothing", + "operations/azure-hns/staged-escaped-id": "staged escaped id", + "operations/azure-hns/staged-replacement": "staged replacement", + "operations/azure-hns/staged-uncommitted": "staged uncommitted", + "operations/azure-hns/staged-uncommitted-only": "staged uncommitted only", + "operations/azure-hns/upload-pages": "Write the first page of a page blob, which an HNS account does not support", + "operations/azure-hns/upload-pages-unaligned": "Refuse a page write that does not start on a 512-byte boundary, which an HNS account does not support", + "operations/azure/abort-copy": "Abort a pending copy by its copy ID, with x-ms-copy-action: abort", + "operations/azure/abort-copy-finished": "Report an abort of a copy that has finished as an error, 409 NoPendingCopyOperation", + "operations/azure/append-block": "Append a block to an append blob and report its offset", + "operations/azure/append-block-at-wrong-position": "Refuse an append whose position condition does not match the blob length", + "operations/azure/append-block-to-block-blob": "Refuse an append to a block blob", + "operations/azure/commit": "commit", + "operations/azure/commit-container-missing": "commit container missing. A client reports it as container_not_found: the bucket or container is absent, not the object", + "operations/azure/commit-content-properties": "Commit a block list with content properties, sent as x-ms-blob-content-type, -language, -disposition and x-ms-blob-cache-control", + "operations/azure/commit-declaring-md5": "commit declaring md5", + "operations/azure/commit-duplicate-id": "commit duplicate id", + "operations/azure/commit-escaped-id": "commit escaped id", + "operations/azure/commit-key-double-slash": "commit, with the key \"double//slash.txt\"", + "operations/azure/commit-key-hash": "commit, with the key \"hash#tag.txt\"", + "operations/azure/commit-key-non-ascii": "commit, with the key \"café/雪.txt\"", + "operations/azure/commit-key-percent": "commit, with the key \"percent%20.txt\"", + "operations/azure/commit-key-plus": "commit, with the key \"plus+plus.txt\"", + "operations/azure/commit-key-question": "commit, with the key \"question?mark.txt\"", + "operations/azure/commit-key-space": "commit, with the key \"space name.txt\"", + "operations/azure/commit-key-trailing-slash": "commit, with the key \"trailing-slash/\"", + "operations/azure/commit-lost-the-race-to-create": "commit lost the race to create", + "operations/azure/commit-nothing": "commit nothing", + "operations/azure/commit-over-whole-object": "commit over whole object", + "operations/azure/commit-precondition-failed": "commit precondition failed", + "operations/azure/commit-refused": "Report the service authorization error for this operation; signature acceptance is tested separately.", + "operations/azure/commit-reordered": "commit reordered", + "operations/azure/commit-replacement": "commit replacement", + "operations/azure/commit-unstaged-id": "commit unstaged id", + "operations/azure/commit-unstaged-id-code-in-body": "commit unstaged id, with the error code only in the XML body", + "operations/azure/commit-with-tags": "Commit a block list with blob index tags, sent URL-encoded in x-ms-tags", + "operations/azure/commit-with-tier": "Commit a block list into an access tier, named in x-ms-access-tier", + "operations/azure/copy": "Copy an object to another key in the same container", + "operations/azure/copy-across-containers": "Copy a blob from another container of the same account, which x-ms-copy-source names in its URL", + "operations/azure/copy-if-none-match-exists": "Report a copy with If-None-Match: * onto a blob that exists as a failed condition on the destination", + "operations/azure/copy-missing-source": "Refuse a copy whose source does not exist", + "operations/azure/copy-pending": "Report a copy that Azure answers as pending with its copy ID, so that a caller can follow it with a HEAD or abort it", + "operations/azure/copy-replace-metadata": "Copy a blob with new metadata, which replaces all of the source's. A copy that names no metadata keeps the source's", + "operations/azure/copy-source-if-match": "Copy a blob only if the source still has this ETag, named in x-ms-source-if-match", + "operations/azure/copy-source-if-match-failed": "Report a copy whose source does not have the ETag in x-ms-source-if-match as a failed condition, 412 SourceConditionNotMet", + "operations/azure/copy-source-if-unmodified-since-failed": "Report a copy whose source changed after the time in x-ms-source-if-unmodified-since as a failed condition, 412 SourceConditionNotMet", + "operations/azure/copy-source-key-encoded": "Copy from a key with a space, +, %, é, ? and #. The x-ms-copy-source URL percent-encodes every byte of the key outside letters, digits, -._~ and /", + "operations/azure/copy-source-version": "Copy an earlier version of a blob, named by versionid in the x-ms-copy-source URL", + "operations/azure/copy-sync": "Copy a blob with Copy Blob From URL, x-ms-requires-sync: true, which answers once the copy is done. The source must be readable by URL: by a SAS, or by a bearer token in x-ms-copy-source-authorization", + "operations/azure/copy-tier": "Copy a blob into another access tier, named in x-ms-access-tier", + "operations/azure/create-append": "Create an empty append blob", + "operations/azure/create-page": "Create a page blob of 1,024 bytes", + "operations/azure/delete-accepted": "delete accepted", + "operations/azure/delete-accepted-key-double-slash": "delete accepted, with the key \"double//slash.txt\"", + "operations/azure/delete-accepted-key-hash": "delete accepted, with the key \"hash#tag.txt\"", + "operations/azure/delete-accepted-key-non-ascii": "delete accepted, with the key \"café/雪.txt\"", + "operations/azure/delete-accepted-key-percent": "delete accepted, with the key \"percent%20.txt\"", + "operations/azure/delete-accepted-key-plus": "delete accepted, with the key \"plus+plus.txt\"", + "operations/azure/delete-accepted-key-question": "delete accepted, with the key \"question?mark.txt\"", + "operations/azure/delete-accepted-key-space": "delete accepted, with the key \"space name.txt\"", + "operations/azure/delete-accepted-key-trailing-slash": "delete accepted, with the key \"trailing-slash/\"", + "operations/azure/delete-container-missing": "delete container missing. A client reports it as container_not_found: the bucket or container is absent, not the object", + "operations/azure/delete-current-version": "delete current version", + "operations/azure/delete-if-match-current": "delete if match current", + "operations/azure/delete-if-unmodified-since-past": "Refuse a delete with 412 when the object changed after If-Unmodified-Since", + "operations/azure/delete-leased-if-match-without-lease-id": "Refuse to delete a leased object whose If-Match holds but that names no lease ID", + "operations/azure/delete-leased-without-lease-id": "Refuse to delete a leased object without its lease ID", + "operations/azure/delete-many": "Delete several objects in one batch and report each result", + "operations/azure/delete-many-256": "Delete 256 keys in one batch, the most Azure takes", + "operations/azure/delete-many-257": "Report a batch of 257 deletions, one more than Azure takes, as an error. Azure answers 202 with one part and no Content-ID, 400 ExceedsMaxBatchRequestCount, for the whole batch, not one part per deletion. A client may refuse it before sending", + "operations/azure/delete-many-answers-out-of-order": "Match each part of a batch answer to its deletion by Content-ID, which links them, not by position. Azure has answered every recorded batch in order, up to 256 parts; this answer is written by hand", + "operations/azure/delete-many-container-missing": "Report a batch in a missing container, which Azure answers 202 with 404 ContainerNotFound for each deletion, as that error for each key and none deleted, or as one error of kind container_not_found", + "operations/azure/delete-many-denied": "Report each deletion of a batch that Azure refuses inside its 202 answer, here every one with 403 AuthorizationPermissionMismatch, as that key's error, not as deleted", + "operations/azure/delete-many-lf-line-endings": "Read a batch answer whose lines end in LF alone correctly, or report it as an error, but never half-read it. Azure has not been seen to send it: HTTP and multipart require CRLF. This answer is the recorded one with every CR removed", + "operations/azure/delete-many-server-busy": "Report a batch that Azure answers as a whole with 503 ServerBusy as an error, never as deleted keys. A client may retry up to five times first", + "operations/azure/delete-many-unauthenticated": "Report a batch whose token Azure does not accept as one error for the whole batch, as Azure answers it, not as an answer per key", + "operations/azure/delete-many-without-content-id": "Report a batch answer whose parts carry no Content-ID as an error. Without one, only the order of the parts would link a result to its key, and a guess could report one key deleted when another failed. Azure echoes the Content-ID of every subrequest; this answer is the recorded one with them removed", + "operations/azure/delete-missing": "delete missing. A client reports it as not_found: the object is absent", + "operations/azure/delete-precondition-failed": "delete precondition failed", + "operations/azure/delete-precondition-failed-code-in-body": "delete precondition failed, with the error code only in the XML body", + "operations/azure/delete-previous-version": "delete previous version", + "operations/azure/delete-refused": "Report the service authorization error for this operation; signature acceptance is tested separately.", + "operations/azure/delete-refused-for-snapshots": "Report the service authorization error for this operation; signature acceptance is tested separately.", + "operations/azure/delete-server-busy": "Report a 503 ServerBusy answer as an error, after at most 5 retries", + "operations/azure/delete-snapshot": "delete snapshot", + "operations/azure/delete-snapshots-only": "delete snapshots only", + "operations/azure/delete-unauthenticated": "Report the service authorization error for this operation; signature acceptance is tested separately.", + "operations/azure/delete-versioned-object": "delete versioned object", + "operations/azure/delete-with-snapshots": "delete with snapshots", + "operations/azure/get-after-snapshots-deleted": "get after snapshots deleted", + "operations/azure/get-body-cut-short": "Report a body that ends before its Content-Length as an error, or resume it, but never return the short body", + "operations/azure/get-committed": "get committed", + "operations/azure/get-committed-nothing": "get committed nothing", + "operations/azure/get-committed-over-whole-object": "get committed over whole object", + "operations/azure/get-container-missing": "get container missing. A client reports it as container_not_found: the bucket or container is absent, not the object", + "operations/azure/get-content-encoding-gzip": "Return the stored gzip bytes and Content-Encoding: gzip without decoding them", + "operations/azure/get-content-properties": "Return the stored content properties from a GET", + "operations/azure/get-current-version": "get current version", + "operations/azure/get-current-version-of-deleted-object": "get current version of deleted object", + "operations/azure/get-deleted-snapshot": "get deleted snapshot", + "operations/azure/get-deleted-versioned-object": "get deleted versioned object", + "operations/azure/get-duplicate-id": "get duplicate id", + "operations/azure/get-empty": "get empty", + "operations/azure/get-if-match-current": "get if match current", + "operations/azure/get-if-modified-since-future": "Report 304 when If-Modified-Since names a future date, which Azure does not ignore", + "operations/azure/get-if-modified-since-past": "Read an object modified since a past date", + "operations/azure/get-if-none-match-other": "get if none match other", + "operations/azure/get-if-unmodified-since-past": "Refuse a read with 412 when the object changed after If-Unmodified-Since", + "operations/azure/get-key-with-hash": "get key with hash", + "operations/azure/get-key-with-non-ascii": "get key unicode", + "operations/azure/get-key-with-percent": "get key with percent", + "operations/azure/get-key-with-plus": "get key with plus", + "operations/azure/get-key-with-question": "get key question", + "operations/azure/get-key-with-separators": "get key separators", + "operations/azure/get-key-with-space": "get key space", + "operations/azure/get-metadata": "get metadata", + "operations/azure/get-metadata-empty-value": "get metadata empty value", + "operations/azure/get-metadata-ignores-unknown-headers": "Surface user metadata; unknown headers must not become metadata.", + "operations/azure/get-metadata-of-snapshot": "get metadata of snapshot", + "operations/azure/get-metadata-replaced": "get metadata replaced", + "operations/azure/get-missing": "get missing. A client reports it as not_found: the object is absent", + "operations/azure/get-missing-code-in-body": "get missing, with the error code only in the XML body. A client reports it as not_found: the object is absent", + "operations/azure/get-noise-tolerance": "get noise tolerance", + "operations/azure/get-not-modified": "get not modified", + "operations/azure/get-page-ranges": "List the written ranges of a page blob", + "operations/azure/get-precondition-failed": "get precondition failed", + "operations/azure/get-previous-version": "get previous version", + "operations/azure/get-previous-version-of-deleted-object": "get previous version of deleted object", + "operations/azure/get-range": "get range", + "operations/azure/get-range-empty": "Read a range of no bytes, whose start equals its end. HTTP has no form for it: bytes=5-4 is inverted, and the service ignores it and sends the whole object. A client may refuse it instead", + "operations/azure/get-range-inverted": "get range inverted", + "operations/azure/get-range-not-satisfiable": "get range not satisfiable", + "operations/azure/get-range-of-empty-object": "Report a range read of an empty object as 416 InvalidRange: no range of it can be satisfied, not even its first byte", + "operations/azure/get-range-open": "get range open", + "operations/azure/get-range-past-the-end": "Read a range that ends past the object, which the service clips to the object's end. Report the window it served from Content-Range, bytes 28-29/30, so that the caller sees the range was clipped", + "operations/azure/get-range-single-byte": "get range single byte", + "operations/azure/get-reordered": "get reordered", + "operations/azure/get-replacement": "get replacement", + "operations/azure/get-server-busy": "Report a 503 ServerBusy answer as an error, after at most 5 retries", + "operations/azure/get-snapshot": "get snapshot", + "operations/azure/get-staged-only": "get staged only", + "operations/azure/get-suffix": "get suffix", + "operations/azure/get-suffix-longer-than-object": "get suffix longer than object", + "operations/azure/get-tags": "Read the tags of an object", + "operations/azure/get-tags-none": "Report no blob index tags for a blob without any, which Azure answers with an empty TagSet", + "operations/azure/get-unauthenticated": "Report the service authorization error for this operation; signature acceptance is tested separately.", + "operations/azure/get-unknown-snapshot": "get unknown snapshot", + "operations/azure/get-unknown-version": "get unknown version", + "operations/azure/get-whole": "get whole", + "operations/azure/get-with-staged-blocks": "get with staged blocks", + "operations/azure/get-xml-looking": "get xml looking", + "operations/azure/head": "head", + "operations/azure/head-access-tier": "Report a blob's access tier, which Azure sends in x-ms-access-tier", + "operations/azure/head-committed": "head committed", + "operations/azure/head-committed-declaring-md5": "head committed declaring md5", + "operations/azure/head-container-missing": "Report a HEAD of a blob in a missing container as container_not_found. Azure answers 404 without a body, but names ContainerNotFound in x-ms-error-code", + "operations/azure/head-content-properties": "Return the stored content properties from a HEAD", + "operations/azure/head-copy-status": "Report the copy that wrote a blob, its x-ms-copy-status and x-ms-copy-id, from a HEAD of the blob", + "operations/azure/head-if-unmodified-since-past": "Refuse a HEAD with 412 when the object changed after If-Unmodified-Since", + "operations/azure/head-key-double-slash": "head, with the key \"double//slash.txt\"", + "operations/azure/head-key-hash": "head, with the key \"hash#tag.txt\"", + "operations/azure/head-key-non-ascii": "head, with the key \"café/雪.txt\"", + "operations/azure/head-key-percent": "head, with the key \"percent%20.txt\"", + "operations/azure/head-key-plus": "head, with the key \"plus+plus.txt\"", + "operations/azure/head-key-question": "head, with the key \"question?mark.txt\"", + "operations/azure/head-key-space": "head, with the key \"space name.txt\"", + "operations/azure/head-key-trailing-slash": "head, with the key \"trailing-slash/\"", + "operations/azure/head-metadata": "head metadata", + "operations/azure/head-missing": "head missing. A client reports it as not_found: the object is absent", + "operations/azure/head-previous-version": "head previous version", + "operations/azure/head-snapshot": "head snapshot", + "operations/azure/head-written-with-crc64": "head written with crc64", + "operations/azure/head-written-with-md5": "head written with md5", + "operations/azure/lease-acquire": "Acquire a lease on an object with a proposed lease ID", + "operations/azure/lease-acquire-leased": "Refuse a second lease while another lease holds the object", + "operations/azure/lease-break": "Break a lease at once", + "operations/azure/lease-release": "Release a lease", + "operations/azure/list-after-delete-with-versions": "list after delete with versions", + "operations/azure/list-all-empty": "list empty", + "operations/azure/list-all-order": "list order", + "operations/azure/list-bad-marker": "list bad marker", + "operations/azure/list-bad-marker-code-in-body": "list bad marker, with the error code only in the XML body", + "operations/azure/list-container-missing": "list container missing. A client reports it as container_not_found: the bucket or container is absent, not the object", + "operations/azure/list-delimited": "list delimited", + "operations/azure/list-empty": "list empty", + "operations/azure/list-encoded-names": "list encoded names", + "operations/azure/list-first-page": "list first page", + "operations/azure/list-key-equal-to-prefix": "list key equal to prefix", + "operations/azure/list-key-equal-to-prefix-delimited": "list key equal to prefix delimited", + "operations/azure/list-many-segments": "list many segments", + "operations/azure/list-max-keys-zero": "list max keys zero", + "operations/azure/list-metadata": "list metadata", + "operations/azure/list-next-page": "list next page", + "operations/azure/list-operation-timed-out": "Report a 500 OperationTimedOut answer as an error, after at most 5 retries", + "operations/azure/list-order": "list order", + "operations/azure/list-order-delimited": "list order delimited", + "operations/azure/list-other-delimiter": "Send the delimiter the caller names. A flat account groups blob names at any delimiter, not only /; here a- groups a-1.txt and a-2.txt", + "operations/azure/list-page": "list page", + "operations/azure/list-page-size-one": "A page of zero entries is out of range, but a page of one is not. Send a page size of 1 and report the one entry and the continuation token.", + "operations/azure/list-pagination": "list pagination", + "operations/azure/list-prefix-without-slash": "list prefix without slash", + "operations/azure/list-separator-keys": "list separator keys", + "operations/azure/list-separator-keys-delimited": "list separator keys delimited", + "operations/azure/list-snapshots": "list snapshots", + "operations/azure/list-snapshots-after-delete": "list snapshots after delete", + "operations/azure/list-snapshots-after-snapshots-deleted": "list snapshots after snapshots deleted", + "operations/azure/list-snapshots-and-versions": "list snapshots and versions", + "operations/azure/list-staged-only": "list staged only", + "operations/azure/list-unauthenticated": "Report the service authorization error for this operation; signature acceptance is tested separately.", + "operations/azure/list-versions": "list versions", + "operations/azure/list-versions-of-deleted-object": "list versions of deleted object", + "operations/azure/list-written-with-hashes": "list written with hashes", + "operations/azure/list-xml-escaped": "list xml escaped", + "operations/azure/put-container-missing": "put container missing. A client reports it as container_not_found: the bucket or container is absent, not the object", + "operations/azure/put-content-disposition-non-ascii": "Write a Content-Disposition whose filename is outside ASCII. Azure refuses a disposition byte outside ASCII with 400 InvalidMetadata, so send an RFC 6266 filename*, which any reader decodes, or refuse the value", + "operations/azure/put-content-encoding-gzip": "Store Content-Encoding: gzip with a write, and the gzip bytes unchanged", + "operations/azure/put-content-properties": "Store Content-Type, Content-Language, Content-Disposition and Cache-Control with a write", + "operations/azure/put-content-type-edge-spaces": "Write a content type with spaces at either end, which HTTP drops, so the service stores it trimmed. A client may refuse it", + "operations/azure/put-content-type-non-ascii": "Write a Content-Type with a parameter outside ASCII as its UTF-8 bytes. A flat account returns them as it got them, so they read back", + "operations/azure/put-crc64-mismatch": "put crc64 mismatch", + "operations/azure/put-created": "put created", + "operations/azure/put-created-empty": "put created empty", + "operations/azure/put-created-key-double-slash": "put created, with the key \"double//slash.txt\"", + "operations/azure/put-created-key-hash": "put created, with the key \"hash#tag.txt\"", + "operations/azure/put-created-key-non-ascii": "put created, with the key \"café/雪.txt\"", + "operations/azure/put-created-key-percent": "put created, with the key \"percent%20.txt\"", + "operations/azure/put-created-key-plus": "put created, with the key \"plus+plus.txt\"", + "operations/azure/put-created-key-question": "put created, with the key \"question?mark.txt\"", + "operations/azure/put-created-key-space": "put created, with the key \"space name.txt\"", + "operations/azure/put-created-key-trailing-slash": "put created, with the key \"trailing-slash/\"", + "operations/azure/put-first-version": "put first version", + "operations/azure/put-from-url": "Write a block blob from the bytes at a URL with Put Blob From URL: a PUT with x-ms-blob-type: BlockBlob, x-ms-copy-source and no body, which answers once it is written", + "operations/azure/put-if-match-current": "put if match current", + "operations/azure/put-if-none-match-missing": "put if none match missing", + "operations/azure/put-if-unmodified-since-past": "Refuse a write with 412 when the object changed after If-Unmodified-Since", + "operations/azure/put-internal-error": "Report a 500 InternalError answer as an error, after at most 5 retries", + "operations/azure/put-key-1024": "put key 1024", + "operations/azure/put-key-1025": "put key 1025", + "operations/azure/put-key-under-object": "put key under object", + "operations/azure/put-leased-if-match-without-lease-id": "Refuse a write to a leased object whose If-Match holds but that names no lease ID", + "operations/azure/put-leased-with-lease-id": "Write to a leased object with its lease ID", + "operations/azure/put-leased-without-lease-id": "Refuse a write to a leased object that names no lease ID", + "operations/azure/put-lost-the-race-to-create": "put lost the race to create", + "operations/azure/put-md5-mismatch": "put md5 mismatch", + "operations/azure/put-metadata": "put metadata", + "operations/azure/put-metadata-empty-value": "put metadata empty value", + "operations/azure/put-metadata-identifier-name": "An Azure metadata name must be a C# identifier, which may start with an underscore and hold digits. Send _a1; only a name that is no identifier may be refused.", + "operations/azure/put-metadata-invalid-name": "put metadata invalid name", + "operations/azure/put-metadata-non-ascii-value": "put metadata non ascii value", + "operations/azure/put-metadata-replaced": "put metadata replaced", + "operations/azure/put-over-snapshotted": "put over snapshotted", + "operations/azure/put-overwrite": "put overwrite", + "operations/azure/put-precondition-failed": "put precondition failed", + "operations/azure/put-precondition-failed-code-in-body": "put precondition failed, with the error code only in the XML body", + "operations/azure/put-refused": "Report the service authorization error for this operation; signature acceptance is tested separately.", + "operations/azure/put-second-version": "put second version", + "operations/azure/put-unauthenticated": "Report the service authorization error for this operation; signature acceptance is tested separately.", + "operations/azure/put-with-both-hashes": "Reject simultaneous transactional MD5 and CRC64", + "operations/azure/put-with-crc64": "put with crc64", + "operations/azure/put-with-md5": "put with md5", + "operations/azure/put-with-tags": "Write an object with tags", + "operations/azure/put-with-tags-duplicate-key": "Report a write whose x-ms-tags names one key twice as an error. A client may refuse it, or report it unsupported where its API cannot repeat a key", + "operations/azure/put-with-tags-special-characters": "Write a blob with an index tag that holds a space and each of + - = . _ : /, percent-encoded in x-ms-tags", + "operations/azure/put-with-tier": "Write an object straight into the Cool access tier", + "operations/azure/set-tags": "Replace the tags of an object", + "operations/azure/set-tags-10-tags": "Set 10 tags, the most an object takes", + "operations/azure/set-tags-11-tags": "Report 11 tags, one more than an object takes, as an error. A client may refuse them", + "operations/azure/set-tags-duplicate-key": "Report blob index tags that name one key twice as an error. A client may refuse them, or report them unsupported where its API cannot repeat a key", + "operations/azure/set-tags-invalid-character": "Report a blob index tag key with @, which Azure does not allow, as an error. A client may refuse it", + "operations/azure/set-tags-key-128": "Set a tag whose key has 128 characters, the longest a key may be", + "operations/azure/set-tags-key-129": "Report a tag key of 129 characters, one more than a key may have, as an error. A client may refuse it", + "operations/azure/set-tags-special-characters": "Set a blob index tag with a space and each of + - = . _ : /, which Azure allows, escaped as XML text", + "operations/azure/set-tags-value-256": "Set a tag whose value has 256 characters, the longest a value may be", + "operations/azure/set-tags-value-257": "Report a tag value of 257 characters, one more than a value may have, as an error. A client may refuse it", + "operations/azure/set-tier-cool": "Move an object to the Cool access tier", + "operations/azure/set-tier-rehydrate": "Report a tier change that Azure accepts with 202, as it does when an archived blob starts to rehydrate, as a success", + "operations/azure/set-tier-unknown": "Refuse an access tier the service does not have", + "operations/azure/snapshot": "snapshot", + "operations/azure/stage": "stage", + "operations/azure/stage-empty": "stage empty", + "operations/azure/stage-escaped-id": "stage escaped id", + "operations/azure/stage-from-url": "Stage a block from bytes 0 to 2 at a URL with Put Block From URL, the range named in x-ms-source-range with an inclusive end, as bytes=0-2", + "operations/azure/stage-id-64-bytes": "A block ID decodes to at most 64 bytes, and Azure stages a block whose ID decodes to exactly 64. Send it; only a longer ID may be refused.", + "operations/azure/stage-id-too-long": "stage id too long", + "operations/azure/stage-key-double-slash": "stage, with the key \"double//slash.txt\"", + "operations/azure/stage-key-hash": "stage, with the key \"hash#tag.txt\"", + "operations/azure/stage-key-non-ascii": "stage, with the key \"café/雪.txt\"", + "operations/azure/stage-key-percent": "stage, with the key \"percent%20.txt\"", + "operations/azure/stage-key-plus": "stage, with the key \"plus+plus.txt\"", + "operations/azure/stage-key-question": "stage, with the key \"question?mark.txt\"", + "operations/azure/stage-key-space": "stage, with the key \"space name.txt\"", + "operations/azure/stage-key-trailing-slash": "stage, with the key \"trailing-slash/\"", + "operations/azure/stage-mixed-length-id": "stage mixed length id", + "operations/azure/stage-mixed-length-id-code-in-body": "stage mixed length id, with the error code only in the XML body", + "operations/azure/stage-unauthenticated": "Report the service authorization error for this operation; signature acceptance is tested separately.", + "operations/azure/staged-absent": "staged absent", + "operations/azure/staged-absent-code-in-body": "staged absent, with the error code only in the XML body", + "operations/azure/staged-after-commit": "staged after commit", + "operations/azure/staged-after-replacement": "staged after replacement", + "operations/azure/staged-after-whole-write": "staged after whole write", + "operations/azure/staged-committed-empty": "staged committed empty", + "operations/azure/staged-committed-nothing": "staged committed nothing", + "operations/azure/staged-escaped-id": "staged escaped id", + "operations/azure/staged-replacement": "staged replacement", + "operations/azure/staged-uncommitted": "staged uncommitted", + "operations/azure/staged-uncommitted-only": "staged uncommitted only", + "operations/azure/upload-pages": "Write the first page of a page blob", + "operations/azure/upload-pages-unaligned": "Refuse a page write that does not start on a 512-byte boundary", + "operations/s3-express/abort": "abort", + "operations/s3-express/abort-after-commit": "abort after commit", + "operations/s3-express/abort-unknown-upload": "abort unknown upload", + "operations/s3-express/commit": "commit", + "operations/s3-express/commit-200-internal-error": "Report a completion answered 200 with an InternalError in the body as an error, never as a success. A client may retry up to 5 times first, and need not retry", + "operations/s3-express/commit-after-abort": "commit after abort", + "operations/s3-express/commit-key-double-slash": "commit, with the key \"double//slash.txt\"", + "operations/s3-express/commit-key-hash": "commit, with the key \"hash#tag.txt\"", + "operations/s3-express/commit-key-non-ascii": "commit, with the key \"café/雪.txt\"", + "operations/s3-express/commit-key-percent": "commit, with the key \"percent%20.txt\"", + "operations/s3-express/commit-key-plus": "commit, with the key \"plus+plus.txt\"", + "operations/s3-express/commit-key-question": "commit, with the key \"question?mark.txt\"", + "operations/s3-express/commit-key-space": "commit, with the key \"space name.txt\"", + "operations/s3-express/commit-key-trailing-slash": "commit, with the key \"trailing-slash/\"", + "operations/s3-express/commit-lost-the-race-to-create": "commit lost the race to create", + "operations/s3-express/commit-nothing": "commit nothing", + "operations/s3-express/commit-object-size": "Send the object size the caller expects in x-amz-mp-object-size; a completion whose parts add up to it succeeds", + "operations/s3-express/commit-object-size-mismatch": "Report S3's refusal of a completion whose parts do not add up to the object size stated in x-amz-mp-object-size", + "operations/s3-express/commit-one-empty-part": "Complete an upload of one empty part, which writes an empty object; a client that refuses a completion of no parts writes an empty object this way", + "operations/s3-express/commit-out-of-order": "commit out of order", + "operations/s3-express/commit-part-too-small": "commit part too small", + "operations/s3-express/commit-precondition-failed": "commit precondition failed", + "operations/s3-express/commit-single-small-part": "commit single small part", + "operations/s3-express/commit-subset": "commit subset", + "operations/s3-express/commit-unstaged-part": "commit unstaged part", + "operations/s3-express/commit-wrong-etag": "commit wrong etag", + "operations/s3-express/complete-multipart-200-error": "complete multipart 200 error", + "operations/s3-express/copy": "Copy an object to another key in the same bucket", + "operations/s3-express/copy-200-internal-error": "Report a copy answered 200 with an InternalError in the body as an error, never as a success. A client may retry up to 5 times first, and need not retry", + "operations/s3-express/copy-missing-source": "Refuse a copy whose source does not exist", + "operations/s3-express/copy-onto-itself": "Copy an object onto itself without changing it. A directory bucket accepts it, where a general-purpose bucket answers 400 InvalidRequest", + "operations/s3-express/copy-onto-itself-replace-metadata": "Copy an object onto itself to replace its metadata, which S3 accepts with x-amz-metadata-directive: REPLACE", + "operations/s3-express/copy-replace-metadata": "Copy an object with new metadata and a new content type. S3 keeps the source's unless x-amz-metadata-directive is REPLACE, so a client that sets either must send it", + "operations/s3-express/copy-source-if-match": "Copy an object only if the source still has this ETag, named in x-amz-copy-source-if-match", + "operations/s3-express/copy-source-if-match-failed": "Report a copy whose source does not have the ETag in x-amz-copy-source-if-match as a failed condition. S3 answers 412 PreconditionFailed and writes nothing", + "operations/s3-express/copy-source-if-modified-since": "Copy an object only if the source changed after a time, named in x-amz-copy-source-if-modified-since as an HTTP date", + "operations/s3-express/copy-source-if-none-match-failed": "Report a copy whose source has the ETag in x-amz-copy-source-if-none-match as a failed condition. A copy answers 412 PreconditionFailed where a read answers 304", + "operations/s3-express/copy-source-if-unmodified-since-failed": "Report a copy whose source changed after the time in x-amz-copy-source-if-unmodified-since as a failed condition, 412 PreconditionFailed", + "operations/s3-express/copy-source-key-encoded": "Copy from a key with a space, +, %, é, ? and #. x-amz-copy-source percent-encodes every byte of the key outside letters, digits, -._~ and /", + "operations/s3-express/delete-accepted": "delete accepted", + "operations/s3-express/delete-accepted-key-double-slash": "delete accepted, with the key \"double//slash.txt\"", + "operations/s3-express/delete-accepted-key-hash": "delete accepted, with the key \"hash#tag.txt\"", + "operations/s3-express/delete-accepted-key-non-ascii": "delete accepted, with the key \"café/雪.txt\"", + "operations/s3-express/delete-accepted-key-percent": "delete accepted, with the key \"percent%20.txt\"", + "operations/s3-express/delete-accepted-key-plus": "delete accepted, with the key \"plus+plus.txt\"", + "operations/s3-express/delete-accepted-key-question": "delete accepted, with the key \"question?mark.txt\"", + "operations/s3-express/delete-accepted-key-space": "delete accepted, with the key \"space name.txt\"", + "operations/s3-express/delete-accepted-key-trailing-slash": "delete accepted, with the key \"trailing-slash/\"", + "operations/s3-express/delete-if-match-current": "delete if match current", + "operations/s3-express/delete-many": "Delete several objects in one request and report each result", + "operations/s3-express/delete-many-1000": "Delete 1,000 keys in one DeleteObjects request, the most S3 takes", + "operations/s3-express/delete-many-1001": "Report a DeleteObjects request of 1,001 keys, one more than S3 takes, as an error. A client may refuse it before sending", + "operations/s3-express/delete-many-errors": "Report each key that S3 lists as an Error in a DeleteObjects answer, here AccessDenied, as that key's error, and the others as deleted", + "operations/s3-express/delete-missing": "delete missing", + "operations/s3-express/delete-precondition-failed": "delete precondition failed", + "operations/s3-express/delete-slow-down": "Report a 503 SlowDown answer as an error, after at most 5 retries", + "operations/s3-express/get-before-commit": "get before commit", + "operations/s3-express/get-body-cut-short": "Report a body that ends before its Content-Length as an error, or resume it, but never return the short body", + "operations/s3-express/get-committed-tail": "get committed tail", + "operations/s3-express/get-content-properties": "Return the stored content properties from a GET", + "operations/s3-express/get-empty": "get empty", + "operations/s3-express/get-if-match-current": "get if match current", + "operations/s3-express/get-if-modified-since-future": "Read an object when If-Modified-Since names a future date", + "operations/s3-express/get-if-modified-since-invalid": "Read an object when If-Modified-Since is not an HTTP date, which S3 ignores. A client may refuse the date instead", + "operations/s3-express/get-if-modified-since-past": "Read an object modified since a past date", + "operations/s3-express/get-if-modified-since-unchanged": "Report an object not changed since the If-Modified-Since date as 304 Not Modified, not as an error of the service or an empty object", + "operations/s3-express/get-if-none-match-other": "get if none match other", + "operations/s3-express/get-if-unmodified-since-past": "Refuse a read with 412 when the object changed after If-Unmodified-Since", + "operations/s3-express/get-key-with-hash": "get key with hash", + "operations/s3-express/get-key-with-non-ascii": "get key unicode", + "operations/s3-express/get-key-with-percent": "get key with percent", + "operations/s3-express/get-key-with-plus": "get key with plus", + "operations/s3-express/get-key-with-question": "get key question", + "operations/s3-express/get-key-with-separators": "get key separators", + "operations/s3-express/get-key-with-space": "get key with space", + "operations/s3-express/get-metadata": "get metadata", + "operations/s3-express/get-metadata-empty-value": "get metadata empty value", + "operations/s3-express/get-metadata-hyphen-name": "get metadata hyphen name", + "operations/s3-express/get-metadata-ignores-unknown-headers": "Surface user metadata; unknown headers must not become metadata.", + "operations/s3-express/get-metadata-malformed-encoded-word": "Leave a value that only looks like an RFC 2047 encoded word as it is: =ZZ is no hexadecimal byte.", + "operations/s3-express/get-metadata-non-ascii-value": "A directory bucket returns an RFC 2047 encoded word as it was stored. A client that encodes on a write decodes it to é; one that keeps metadata to ASCII returns it as stored.", + "operations/s3-express/get-metadata-outside-latin-1": "A directory bucket returns a base64 RFC 2047 encoded word as it was stored. A client that encodes on a write decodes it to 雪; one that keeps metadata to ASCII returns it as stored.", + "operations/s3-express/get-metadata-punctuation-name": "Report a metadata name that holds any character of an HTTP token.", + "operations/s3-express/get-metadata-replaced": "get metadata replaced", + "operations/s3-express/get-metadata-split-encoded-words": "Decode a long metadata value that a directory bucket returns as one encoded word", + "operations/s3-express/get-missing": "get missing. A client reports it as not_found: the object is absent", + "operations/s3-express/get-noise-tolerance": "get noise tolerance", + "operations/s3-express/get-not-modified": "get not modified", + "operations/s3-express/get-precondition-failed": "get precondition failed", + "operations/s3-express/get-range": "get range", + "operations/s3-express/get-range-empty": "Read a range of no bytes, whose start equals its end. HTTP has no form for it: bytes=5-4 is inverted, and the service ignores it and sends the whole object. A client may refuse it instead", + "operations/s3-express/get-range-inverted": "get range inverted", + "operations/s3-express/get-range-not-satisfiable": "get range not satisfiable", + "operations/s3-express/get-range-of-empty-object": "Report a range read of an empty object as 416 InvalidRange: no range of it can be satisfied, not even its first byte", + "operations/s3-express/get-range-open": "get range open", + "operations/s3-express/get-range-past-the-end": "Read a range that ends past the object, which the service clips to the object's end. Report the window it served from Content-Range, bytes 28-29/30, so that the caller sees the range was clipped", + "operations/s3-express/get-range-single-byte": "get range single byte", + "operations/s3-express/get-replaced": "get replaced", + "operations/s3-express/get-session-expired": "Renew a session whose Expiration has passed before using it: ask CreateSession again, and sign the GET with the second session", + "operations/s3-express/get-single-part": "get single part", + "operations/s3-express/get-slow-down": "Report a 503 SlowDown answer as an error, after at most 5 retries", + "operations/s3-express/get-suffix": "get suffix", + "operations/s3-express/get-suffix-longer-than-object": "get suffix longer than object", + "operations/s3-express/get-whole": "get whole", + "operations/s3-express/get-xml-looking": "get xml looking", + "operations/s3-express/head": "head", + "operations/s3-express/head-committed": "head committed", + "operations/s3-express/head-content-properties": "Return the stored content properties from a HEAD", + "operations/s3-express/head-if-unmodified-since-past": "Refuse a HEAD with 412 when the object changed after If-Unmodified-Since", + "operations/s3-express/head-key-double-slash": "head, with the key \"double//slash.txt\"", + "operations/s3-express/head-key-hash": "head, with the key \"hash#tag.txt\"", + "operations/s3-express/head-key-non-ascii": "head, with the key \"café/雪.txt\"", + "operations/s3-express/head-key-percent": "head, with the key \"percent%20.txt\"", + "operations/s3-express/head-key-plus": "head, with the key \"plus+plus.txt\"", + "operations/s3-express/head-key-question": "head, with the key \"question?mark.txt\"", + "operations/s3-express/head-key-space": "head, with the key \"space name.txt\"", + "operations/s3-express/head-key-trailing-slash": "head, with the key \"trailing-slash/\"", + "operations/s3-express/head-metadata": "head metadata", + "operations/s3-express/head-missing": "Report a HEAD answered 404 as not_found or missing. Its answer has no body, so it cannot say whether the object or the bucket is absent", + "operations/s3-express/list-all-empty": "Report an empty bucket as an empty listing", + "operations/s3-express/list-all-pages": "Follow each page's continuation token until a page is not truncated", + "operations/s3-express/list-bad-marker": "Report S3's 400 InvalidArgument for a continuation token it did not issue", + "operations/s3-express/list-bucket-missing": "Report the NoSuchBucket error that CreateSession answers for a missing directory bucket, and send nothing more. A client reports it as container_not_found: the bucket or container is absent, not the object", + "operations/s3-express/list-checksum-algorithm": "Report each listed object's checksum algorithm as one name; S3 keeps one checksum per object, the one a write sent or else CRC64NVME, and lists one ChecksumAlgorithm", + "operations/s3-express/list-delimited": "Send the delimiter, and report the keys it groups as common prefixes, not as entries", + "operations/s3-express/list-empty": "Report a prefix with no objects as no entries, no prefixes and an empty continuation token", + "operations/s3-express/list-encoded-names": "Ask for encoding-type=url, and decode each name once: + is a space and %2B a plus. Without it S3 writes U+0001 as , which XML 1.0 forbids, and a CR that XML turns into LF", + "operations/s3-express/list-encoding-ignored": "Read the keys as sent when a service ignores encoding-type=url and the page has no EncodingType; a % that begins no escape is text, as in URL percent-decoding", + "operations/s3-express/list-entry-properties": "Report each listed object's last-modified time as RFC 3339 in UTC, and its storage class", + "operations/s3-express/list-fetch-owner": "Ask for owners with fetch-owner=true, and report each listed object's owner ID", + "operations/s3-express/list-first-page": "Send page_size as max-keys, and report a truncated page's NextContinuationToken as the continuation token", + "operations/s3-express/list-max-keys-zero": "Send page_size 0 as max-keys=0; S3 answers an empty page that is not truncated", + "operations/s3-express/list-next-page": "Send the continuation token as continuation-token, a + in it as %2B, and report an empty token for the last page", + "operations/s3-express/list-order": "Report the entries in the order a directory bucket sends them, which is not sorted, without sorting them again", + "operations/s3-express/list-order-delimited": "Report the entries and the common prefixes in the order a directory bucket sends them, without sorting them", + "operations/s3-express/list-other-delimiter": "Report the 400 InvalidRequest that a directory bucket answers to a delimiter other than /, or refuse it before sending", + "operations/s3-express/list-over-1000": "List more keys than the service's default page of 1,000 by following the continuation token", + "operations/s3-express/list-page": "List a prefix with ListObjectsV2 (list-type=2), and report each entry's key, size and ETag, quotes included", + "operations/s3-express/list-prefix-special-characters": "Percent-encode the prefix in the query, a space as %20 and a plus as %2B, and decode the common prefixes of a URL-encoded listing as well as the keys", + "operations/s3-express/list-prefix-without-slash": "Report the 400 InvalidRequest that a directory bucket answers to a prefix not ending in /, or refuse it before sending", + "operations/s3-express/list-separator-keys": "Report keys with leading dots, repeated slashes, a space and a trailing slash exactly as stored", + "operations/s3-express/list-separator-keys-delimited": "Group each key at the first delimiter after the prefix, even where the key repeats it or ends with it", + "operations/s3-express/list-service-unavailable": "Report a 503 ServiceUnavailable answer as an error, after at most 5 retries", + "operations/s3-express/list-start-after": "Report the NotSupported error that a directory bucket answers to start-after", + "operations/s3-express/list-truncated-without-token": "Report an error when a truncated page carries no continuation token; do not stop early or list from the start again", + "operations/s3-express/list-xml-escaped": "Read XML character references in listed names, such as & and <, or ask for encoding-type=url and decode the names", + "operations/s3-express/put-computing-crc32": "Compute the CRC32 checksum of the body and send it, base64 of its big-endian bytes, in x-amz-checksum-crc32 or in a trailer of an aws-chunked body", + "operations/s3-express/put-computing-crc32c": "Compute the CRC32C checksum of the body and send it, base64 of its big-endian bytes, in x-amz-checksum-crc32c or in a trailer of an aws-chunked body", + "operations/s3-express/put-computing-crc64nvme": "Compute the CRC64NVME checksum of the body and send it, base64 of its big-endian bytes, in x-amz-checksum-crc64nvme or in a trailer of an aws-chunked body", + "operations/s3-express/put-computing-sha1": "Compute the SHA1 checksum of the body and send it, base64 of its big-endian bytes, in x-amz-checksum-sha1 or in a trailer of an aws-chunked body", + "operations/s3-express/put-computing-sha256": "Compute the SHA256 checksum of the body and send it, base64 of its big-endian bytes, in x-amz-checksum-sha256 or in a trailer of an aws-chunked body", + "operations/s3-express/put-content-disposition-non-ascii": "Write a Content-Disposition whose filename is outside ASCII. A directory bucket refuses a header byte outside ASCII with 400 InvalidRequest, so send an RFC 6266 filename*, which any reader decodes, or refuse the value", + "operations/s3-express/put-content-encoding-gzip": "Report the refusal of Content-Encoding: gzip by a directory bucket", + "operations/s3-express/put-content-properties": "Store Content-Type, Content-Language, Content-Disposition and Cache-Control with a write", + "operations/s3-express/put-content-type-edge-spaces": "Write a content type with spaces at either end, which HTTP drops, so the service stores it trimmed. A client may refuse it", + "operations/s3-express/put-content-type-non-ascii": "Report a Content-Type with a parameter outside ASCII as an error, or refuse it. A directory bucket refuses a header byte outside ASCII with 400 InvalidRequest, and no encoding of a Content-Type parameter is one every reader decodes", + "operations/s3-express/put-created": "put created", + "operations/s3-express/put-created-empty": "put created empty", + "operations/s3-express/put-created-key-double-slash": "put created, with the key \"double//slash.txt\"", + "operations/s3-express/put-created-key-hash": "put created, with the key \"hash#tag.txt\"", + "operations/s3-express/put-created-key-non-ascii": "put created, with the key \"café/雪.txt\"", + "operations/s3-express/put-created-key-percent": "put created, with the key \"percent%20.txt\"", + "operations/s3-express/put-created-key-plus": "put created, with the key \"plus+plus.txt\"", + "operations/s3-express/put-created-key-question": "put created, with the key \"question?mark.txt\"", + "operations/s3-express/put-created-key-space": "put created, with the key \"space name.txt\"", + "operations/s3-express/put-created-key-trailing-slash": "put created, with the key \"trailing-slash/\"", + "operations/s3-express/put-if-match-current": "put if match current", + "operations/s3-express/put-if-none-match-missing": "put if none match missing", + "operations/s3-express/put-internal-error": "Report a 500 InternalError answer as an error, after at most 5 retries", + "operations/s3-express/put-key-1024": "put key 1024", + "operations/s3-express/put-key-1025": "put key 1025", + "operations/s3-express/put-lost-the-race-to-create": "put lost the race to create", + "operations/s3-express/put-md5-mismatch": "Report the 501 NotImplemented that a directory bucket answers to Content-MD5, matching or not", + "operations/s3-express/put-metadata": "put metadata", + "operations/s3-express/put-metadata-empty-value": "put metadata empty value", + "operations/s3-express/put-metadata-hyphen-name": "put metadata hyphen name", + "operations/s3-express/put-metadata-names-differ-in-case": "S3 matches a metadata name without case. A directory bucket refuses two names that differ only in case.", + "operations/s3-express/put-metadata-non-ascii-value": "A directory bucket refuses a header byte outside ASCII, and stores an RFC 2047 encoded word as it came. Send é as an encoded word, or refuse the value if the client keeps metadata to ASCII.", + "operations/s3-express/put-metadata-outside-latin-1": "A directory bucket refuses the UTF-8 bytes of 雪. Send it as an RFC 2047 encoded word, or refuse the value if the client keeps metadata to ASCII.", + "operations/s3-express/put-metadata-punctuation-name": "S3 stores a name that holds any character of an HTTP token, and one that starts with a digit.", + "operations/s3-express/put-metadata-replaced": "put metadata replaced", + "operations/s3-express/put-metadata-value-control-characters": "A control character other than a tab is no valid HTTP field value. Send the value as an RFC 2047 encoded word, which S3 stores and a read decodes again, or refuse it.", + "operations/s3-express/put-metadata-value-edge-whitespace": "HTTP drops spaces and tabs at either end of a header value, so S3 would store a. Send the value as an RFC 2047 encoded word, which a read decodes again, or refuse it.", + "operations/s3-express/put-metadata-value-encoded-word-text": "A general-purpose bucket reads each space-separated token that starts with =? and ends with ?= as an RFC 2047 encoded word: it decodes it, or answers 400 or 500 when it cannot. A directory bucket stores such a token as it is sent. A client that decodes on a read sends the value wrapped in an encoded word of its own; one that keeps metadata to ASCII sends it as it is.", + "operations/s3-express/put-metadata-value-line-break": "CR and LF are no valid HTTP field value. A directory bucket stores an RFC 2047 encoded word as sent, so send the value as one, which a read decodes again, or refuse it.", + "operations/s3-express/put-metadata-value-not-an-encoded-word": "A general-purpose bucket reads each space-separated token that starts with =? and ends with ?= as an RFC 2047 encoded word: it decodes it, or answers 400 or 500 when it cannot. Neither a=?b?=c nor x=?UTF-8?Q?caf=C3=A9?=y is such a token, so S3 stores this value as it is sent, and a read returns it. Send it as it is, or wrapped in an encoded word; do not refuse it.", + "operations/s3-express/put-metadata-value-with-tab": "S3 stores a tab inside a value as it is sent. Send it raw, or inside an RFC 2047 encoded word.", + "operations/s3-express/put-overwrite": "put overwrite", + "operations/s3-express/put-precondition-failed": "put precondition failed", + "operations/s3-express/put-two-checksums": "Report S3's refusal of a write with two additional checksums; S3 keeps one checksum per object and answers 400 InvalidRequest to more than one x-amz-checksum- header", + "operations/s3-express/put-with-crc32": "Send an additional checksum in its x-amz-checksum- header; S3 stores it as the object's one checksum, in place of the CRC64NVME it adds to a write without one", + "operations/s3-express/put-with-crc32c": "Send a CRC32C checksum that the caller gives, in x-amz-checksum-crc32c", + "operations/s3-express/put-with-crc64nvme": "Send a CRC64NVME checksum that the caller gives, in x-amz-checksum-crc64nvme", + "operations/s3-express/put-with-md5": "Report the 501 NotImplemented that a directory bucket answers to Content-MD5, matching or not", + "operations/s3-express/put-with-sha1": "Send a SHA1 checksum that the caller gives, in x-amz-checksum-sha1", + "operations/s3-express/put-with-sha256": "Send a SHA256 checksum that the caller gives, in x-amz-checksum-sha256", + "operations/s3-express/session": "CreateSession returns credentials", + "operations/s3-express/session-unauthenticated": "CreateSession reports access denial", + "operations/s3-express/stage": "stage", + "operations/s3-express/stage-after-abort": "stage after abort", + "operations/s3-express/stage-copy": "Copy a whole object into a part of a multipart upload, with UploadPartCopy", + "operations/s3-express/stage-copy-200-internal-error": "Report a part copy answered 200 with an InternalError in the body as an error, never as a success. A client may retry up to 5 times first, and need not retry", + "operations/s3-express/stage-copy-range": "Copy bytes 0 to 2 of an object into a part, named in x-amz-copy-source-range with an inclusive end, as bytes=0-2", + "operations/s3-express/stage-copy-range-beyond-source": "Copy a part whose range ends past the source. A directory bucket accepts it, where a general-purpose bucket answers 400 InvalidArgument", + "operations/s3-express/stage-empty-part": "Stage an empty part, which S3 takes", + "operations/s3-express/stage-key-double-slash": "stage, with the key \"double//slash.txt\"", + "operations/s3-express/stage-key-hash": "stage, with the key \"hash#tag.txt\"", + "operations/s3-express/stage-key-non-ascii": "stage, with the key \"café/雪.txt\"", + "operations/s3-express/stage-key-percent": "stage, with the key \"percent%20.txt\"", + "operations/s3-express/stage-key-plus": "stage, with the key \"plus+plus.txt\"", + "operations/s3-express/stage-key-question": "stage, with the key \"question?mark.txt\"", + "operations/s3-express/stage-key-space": "stage, with the key \"space name.txt\"", + "operations/s3-express/stage-key-trailing-slash": "stage, with the key \"trailing-slash/\"", + "operations/s3-express/stage-last": "stage last", + "operations/s3-express/stage-part-10000": "Part numbers run from 1 to 10,000. Stage part 10,000; only 0 and 10,001 may be refused.", + "operations/s3-express/stage-part-10001": "stage part 10001", + "operations/s3-express/stage-part-zero": "stage part zero", + "operations/s3-express/stage-unknown-upload": "stage unknown upload", + "operations/s3-express/staged": "staged", + "operations/s3-express/staged-after-abort": "staged after abort", + "operations/s3-express/staged-replacement": "staged replacement", + "operations/s3-express/staged-unknown-upload": "staged unknown upload", + "operations/s3-express/start": "start", + "operations/s3-express/start-content-properties": "Start a multipart upload with content properties, which the completed object keeps", + "operations/s3/abort": "abort", + "operations/s3/abort-after-commit": "abort after commit", + "operations/s3/abort-unknown-upload": "abort unknown upload", + "operations/s3/commit": "commit", + "operations/s3/commit-200-internal-error": "Report a completion answered 200 with an InternalError in the body as an error, never as a success. A client may retry up to 5 times first, and need not retry", + "operations/s3/commit-after-abort": "commit after abort", + "operations/s3/commit-conditional-conflict": "Report a 409 ConditionalRequestConflict to a conditional completion as an error, without sending the completion again: AWS advises a new upload with every part staged again", + "operations/s3/commit-key-double-slash": "commit, with the key \"double//slash.txt\"", + "operations/s3/commit-key-hash": "commit, with the key \"hash#tag.txt\"", + "operations/s3/commit-key-non-ascii": "commit, with the key \"café/雪.txt\"", + "operations/s3/commit-key-percent": "commit, with the key \"percent%20.txt\"", + "operations/s3/commit-key-plus": "commit, with the key \"plus+plus.txt\"", + "operations/s3/commit-key-question": "commit, with the key \"question?mark.txt\"", + "operations/s3/commit-key-space": "commit, with the key \"space name.txt\"", + "operations/s3/commit-key-trailing-slash": "commit, with the key \"trailing-slash/\"", + "operations/s3/commit-lost-the-race-to-create": "commit lost the race to create", + "operations/s3/commit-nothing": "commit nothing", + "operations/s3/commit-object-size": "Send the object size the caller expects in x-amz-mp-object-size; a completion whose parts add up to it succeeds", + "operations/s3/commit-object-size-mismatch": "Report S3's refusal of a completion whose parts do not add up to the object size stated in x-amz-mp-object-size", + "operations/s3/commit-one-empty-part": "Complete an upload of one empty part, which writes an empty object; a client that refuses a completion of no parts writes an empty object this way", + "operations/s3/commit-out-of-order": "commit out of order", + "operations/s3/commit-part-too-small": "commit part too small", + "operations/s3/commit-precondition-failed": "commit precondition failed", + "operations/s3/commit-single-small-part": "commit single small part", + "operations/s3/commit-subset": "commit subset", + "operations/s3/commit-unstaged-part": "commit unstaged part", + "operations/s3/commit-wrong-etag": "commit wrong etag", + "operations/s3/complete-multipart-200-error": "complete multipart 200 error", + "operations/s3/copy": "Copy an object to another key in the same bucket", + "operations/s3/copy-200-internal-error": "Report a copy answered 200 with an InternalError in the body as an error, never as a success. A client may retry up to 5 times first, and need not retry", + "operations/s3/copy-across-buckets": "Copy an object from another bucket, which x-amz-copy-source names before the key", + "operations/s3/copy-missing-source": "Refuse a copy whose source does not exist", + "operations/s3/copy-onto-itself": "Report a copy of an object onto itself that changes nothing as an error. S3 answers 400 InvalidRequest", + "operations/s3/copy-onto-itself-replace-metadata": "Copy an object onto itself to replace its metadata, which S3 accepts with x-amz-metadata-directive: REPLACE", + "operations/s3/copy-replace-metadata": "Copy an object with new metadata and a new content type. S3 keeps the source's unless x-amz-metadata-directive is REPLACE, so a client that sets either must send it", + "operations/s3/copy-replace-tags": "Copy an object with new tags. S3 copies the source's tags unless x-amz-tagging-directive is REPLACE, so a client that sets tags must send it", + "operations/s3/copy-source-if-match": "Copy an object only if the source still has this ETag, named in x-amz-copy-source-if-match", + "operations/s3/copy-source-if-match-failed": "Report a copy whose source does not have the ETag in x-amz-copy-source-if-match as a failed condition. S3 answers 412 PreconditionFailed and writes nothing", + "operations/s3/copy-source-if-modified-since": "Copy an object only if the source changed after a time, named in x-amz-copy-source-if-modified-since as an HTTP date", + "operations/s3/copy-source-if-none-match-failed": "Report a copy whose source has the ETag in x-amz-copy-source-if-none-match as a failed condition. A copy answers 412 PreconditionFailed where a read answers 304", + "operations/s3/copy-source-if-unmodified-since-failed": "Report a copy whose source changed after the time in x-amz-copy-source-if-unmodified-since as a failed condition, 412 PreconditionFailed", + "operations/s3/copy-source-key-encoded": "Copy from a key with a space, +, %, é, ? and #. x-amz-copy-source percent-encodes every byte of the key outside letters, digits, -._~ and /", + "operations/s3/copy-source-version": "Copy an earlier version of an object, named by versionId in x-amz-copy-source", + "operations/s3/copy-storage-class": "Copy an object into another storage class, named in x-amz-storage-class", + "operations/s3/delete-accepted": "delete accepted", + "operations/s3/delete-accepted-key-double-slash": "delete accepted, with the key \"double//slash.txt\"", + "operations/s3/delete-accepted-key-hash": "delete accepted, with the key \"hash#tag.txt\"", + "operations/s3/delete-accepted-key-non-ascii": "delete accepted, with the key \"café/雪.txt\"", + "operations/s3/delete-accepted-key-percent": "delete accepted, with the key \"percent%20.txt\"", + "operations/s3/delete-accepted-key-plus": "delete accepted, with the key \"plus+plus.txt\"", + "operations/s3/delete-accepted-key-question": "delete accepted, with the key \"question?mark.txt\"", + "operations/s3/delete-accepted-key-space": "delete accepted, with the key \"space name.txt\"", + "operations/s3/delete-accepted-key-trailing-slash": "delete accepted, with the key \"trailing-slash/\"", + "operations/s3/delete-bucket-missing": "delete bucket missing. A client reports it as container_not_found: the bucket or container is absent, not the object", + "operations/s3/delete-if-match-current": "delete if match current", + "operations/s3/delete-many": "Delete several objects in one request and report each result", + "operations/s3/delete-many-1000": "Delete 1,000 keys in one DeleteObjects request, the most S3 takes", + "operations/s3/delete-many-1001": "Report a DeleteObjects request of 1,001 keys, one more than S3 takes, as an error. A client may refuse it before sending", + "operations/s3/delete-many-errors": "Report each key that S3 lists as an Error in a DeleteObjects answer, here AccessDenied, as that key's error, and the others as deleted", + "operations/s3/delete-missing": "delete missing", + "operations/s3/delete-precondition-failed": "delete precondition failed", + "operations/s3/delete-slow-down": "Report a 503 SlowDown answer as an error, after at most 5 retries", + "operations/s3/delete-unauthenticated": "Report the service authorization error for this operation; signature acceptance is tested separately.", + "operations/s3/get-before-commit": "get before commit", + "operations/s3/get-body-cut-short": "Report a body that ends before its Content-Length as an error, or resume it, but never return the short body", + "operations/s3/get-bucket-missing": "get bucket missing. A client reports it as container_not_found: the bucket or container is absent, not the object", + "operations/s3/get-committed-tail": "get committed tail", + "operations/s3/get-content-encoding-gzip": "Return the stored gzip bytes and Content-Encoding: gzip without decoding them", + "operations/s3/get-content-properties": "Return the stored content properties from a GET", + "operations/s3/get-empty": "get empty", + "operations/s3/get-if-match-current": "get if match current", + "operations/s3/get-if-modified-since-future": "Read an object when If-Modified-Since names a future date", + "operations/s3/get-if-modified-since-invalid": "Read an object when If-Modified-Since is not an HTTP date, which S3 ignores. A client may refuse the date instead", + "operations/s3/get-if-modified-since-past": "Read an object modified since a past date", + "operations/s3/get-if-modified-since-unchanged": "Report an object not changed since the If-Modified-Since date as 304 Not Modified, not as an error of the service or an empty object", + "operations/s3/get-if-none-match-other": "get if none match other", + "operations/s3/get-if-unmodified-since-past": "Refuse a read with 412 when the object changed after If-Unmodified-Since", + "operations/s3/get-key-with-hash": "get key with hash", + "operations/s3/get-key-with-non-ascii": "get key unicode", + "operations/s3/get-key-with-percent": "get key with percent", + "operations/s3/get-key-with-plus": "get key with plus", + "operations/s3/get-key-with-question": "get key question", + "operations/s3/get-key-with-separators": "get key separators", + "operations/s3/get-key-with-space": "get key with space", + "operations/s3/get-metadata": "get metadata", + "operations/s3/get-metadata-empty-value": "get metadata empty value", + "operations/s3/get-metadata-hyphen-name": "get metadata hyphen name", + "operations/s3/get-metadata-ignores-unknown-headers": "Surface user metadata; unknown headers must not become metadata.", + "operations/s3/get-metadata-malformed-encoded-word": "Leave a value that only looks like an RFC 2047 encoded word as it is: =ZZ is no hexadecimal byte.", + "operations/s3/get-metadata-non-ascii-value": "A general-purpose bucket returns a value outside ASCII as an RFC 2047 encoded word. Decode it, so é reads back as é.", + "operations/s3/get-metadata-outside-latin-1": "Decode a base64 RFC 2047 encoded word, which S3 returns for text that is mostly outside ASCII.", + "operations/s3/get-metadata-punctuation-name": "Report a metadata name that holds any character of an HTTP token.", + "operations/s3/get-metadata-replaced": "get metadata replaced", + "operations/s3/get-metadata-split-encoded-words": "S3 returns a long value as several RFC 2047 encoded words, separated by spaces. Decode each and join them without the spaces.", + "operations/s3/get-missing": "get missing. A client reports it as not_found: the object is absent", + "operations/s3/get-noise-tolerance": "get noise tolerance", + "operations/s3/get-not-modified": "get not modified", + "operations/s3/get-precondition-failed": "get precondition failed", + "operations/s3/get-range": "get range", + "operations/s3/get-range-empty": "Read a range of no bytes, whose start equals its end. HTTP has no form for it: bytes=5-4 is inverted, and the service ignores it and sends the whole object. A client may refuse it instead", + "operations/s3/get-range-inverted": "get range inverted", + "operations/s3/get-range-not-satisfiable": "get range not satisfiable", + "operations/s3/get-range-of-empty-object": "Report a range read of an empty object as 416 InvalidRange: no range of it can be satisfied, not even its first byte", + "operations/s3/get-range-open": "get range open", + "operations/s3/get-range-past-the-end": "Read a range that ends past the object, which the service clips to the object's end. Report the window it served from Content-Range, bytes 28-29/30, so that the caller sees the range was clipped", + "operations/s3/get-range-single-byte": "get range single byte", + "operations/s3/get-replaced": "get replaced", + "operations/s3/get-single-part": "get single part", + "operations/s3/get-slow-down": "Report a 503 SlowDown answer as an error, after at most 5 retries", + "operations/s3/get-suffix": "get suffix", + "operations/s3/get-suffix-longer-than-object": "get suffix longer than object", + "operations/s3/get-tagging": "Read the tags of an object", + "operations/s3/get-tagging-none": "Report no tags for an object without any, which S3 answers with an empty TagSet", + "operations/s3/get-temporary-redirect": "Report a 307 TemporaryRedirect as an error", + "operations/s3/get-unauthenticated": "Report the service authorization error for this operation; signature acceptance is tested separately.", + "operations/s3/get-version": "get version", + "operations/s3/get-whole": "get whole", + "operations/s3/get-wrong-region": "Report a 301 PermanentRedirect from an endpoint in another region as an error", + "operations/s3/get-xml-looking": "get xml looking", + "operations/s3/head": "head", + "operations/s3/head-bucket-missing": "Report a HEAD of an object in a missing bucket as missing, not not_found. S3 answers 404 without a body, the same answer as for a missing object, so a client cannot tell that the object is absent", + "operations/s3/head-committed": "head committed", + "operations/s3/head-content-properties": "Return the stored content properties from a HEAD", + "operations/s3/head-if-unmodified-since-past": "Refuse a HEAD with 412 when the object changed after If-Unmodified-Since", + "operations/s3/head-key-double-slash": "head, with the key \"double//slash.txt\"", + "operations/s3/head-key-hash": "head, with the key \"hash#tag.txt\"", + "operations/s3/head-key-non-ascii": "head, with the key \"café/雪.txt\"", + "operations/s3/head-key-percent": "head, with the key \"percent%20.txt\"", + "operations/s3/head-key-plus": "head, with the key \"plus+plus.txt\"", + "operations/s3/head-key-question": "head, with the key \"question?mark.txt\"", + "operations/s3/head-key-space": "head, with the key \"space name.txt\"", + "operations/s3/head-key-trailing-slash": "head, with the key \"trailing-slash/\"", + "operations/s3/head-metadata": "head metadata", + "operations/s3/head-missing": "Report a HEAD answered 404 as not_found or missing. Its answer has no body, so it cannot say whether the object or the bucket is absent", + "operations/s3/head-storage-class": "Read the storage class of an object", + "operations/s3/list-all-empty": "Report an empty bucket as an empty listing", + "operations/s3/list-all-pages": "Follow each page's continuation token until a page is not truncated", + "operations/s3/list-bad-marker": "Report S3's 400 InvalidArgument for a continuation token it did not issue", + "operations/s3/list-bucket-missing": "Report 404 NoSuchBucket for a bucket that does not exist. A client reports it as container_not_found: the bucket or container is absent, not the object", + "operations/s3/list-checksum-algorithm": "Report each listed object's checksum algorithm as one name; S3 keeps one checksum per object, the one a write sent or else CRC64NVME, and lists one ChecksumAlgorithm", + "operations/s3/list-delimited": "Send the delimiter, and report the keys it groups as common prefixes, not as entries", + "operations/s3/list-empty": "Report a prefix with no objects as no entries, no prefixes and an empty continuation token", + "operations/s3/list-encoded-names": "Ask for encoding-type=url, and decode each name once: + is a space and %2B a plus. Without it S3 writes U+0001 as , which XML 1.0 forbids, and a CR that XML turns into LF", + "operations/s3/list-encoding-ignored": "Read the keys as sent when a service ignores encoding-type=url and the page has no EncodingType; a % that begins no escape is text, as in URL percent-decoding", + "operations/s3/list-entry-properties": "Report each listed object's last-modified time as RFC 3339 in UTC, and its storage class", + "operations/s3/list-fetch-owner": "Ask for owners with fetch-owner=true, and report each listed object's owner ID", + "operations/s3/list-first-page": "Send page_size as max-keys, and report a truncated page's NextContinuationToken as the continuation token", + "operations/s3/list-key-equal-to-prefix": "Report a key that equals the prefix as an entry", + "operations/s3/list-key-equal-to-prefix-delimited": "Report a key that equals the prefix as an entry, and the keys under it as a common prefix", + "operations/s3/list-max-keys-zero": "Send page_size 0 as max-keys=0; S3 answers an empty page that is not truncated", + "operations/s3/list-next-page": "Send the continuation token as continuation-token, a + in it as %2B, and report an empty token for the last page", + "operations/s3/list-order": "Report the entries in the order S3 sends them, without sorting them again", + "operations/s3/list-order-delimited": "Report the entries and the common prefixes in the order S3 sends them, each list on its own", + "operations/s3/list-other-delimiter": "Send the delimiter the caller names. A general-purpose bucket groups keys at any delimiter, not only /; here a- groups a-1.txt and a-2.txt", + "operations/s3/list-over-1000": "List more keys than the service's default page of 1,000 by following the continuation token", + "operations/s3/list-page": "List a prefix with ListObjectsV2 (list-type=2), and report each entry's key, size and ETag, quotes included", + "operations/s3/list-prefix-special-characters": "Percent-encode the prefix in the query, a space as %20 and a plus as %2B, and decode the common prefixes of a URL-encoded listing as well as the keys", + "operations/s3/list-prefix-without-slash": "Match the prefix as the start of the key, not as a directory: object-tests/boa matches object-tests/board/", + "operations/s3/list-separator-keys": "Report keys with leading dots, repeated slashes, a space and a trailing slash exactly as stored", + "operations/s3/list-separator-keys-delimited": "Group each key at the first delimiter after the prefix, even where the key repeats it or ends with it", + "operations/s3/list-service-unavailable": "Report a 503 ServiceUnavailable answer as an error, after at most 5 retries", + "operations/s3/list-start-after": "Send start-after, and list only the keys after it", + "operations/s3/list-start-after-delimited": "Send a start-after that names no key; it skips the keys and common prefixes up to it", + "operations/s3/list-truncated-without-token": "Report an error when a truncated page carries no continuation token; do not stop early or list from the start again", + "operations/s3/list-unauthenticated": "Report the service authorization error for this operation; signature acceptance is tested separately.", + "operations/s3/list-xml-escaped": "Read XML character references in listed names, such as & and <, or ask for encoding-type=url and decode the names", + "operations/s3/put-bucket-missing": "put bucket missing. A client reports it as container_not_found: the bucket or container is absent, not the object", + "operations/s3/put-computing-crc32": "Compute the CRC32 checksum of the body and send it, base64 of its big-endian bytes, in x-amz-checksum-crc32 or in a trailer of an aws-chunked body", + "operations/s3/put-computing-crc32c": "Compute the CRC32C checksum of the body and send it, base64 of its big-endian bytes, in x-amz-checksum-crc32c or in a trailer of an aws-chunked body", + "operations/s3/put-computing-crc64nvme": "Compute the CRC64NVME checksum of the body and send it, base64 of its big-endian bytes, in x-amz-checksum-crc64nvme or in a trailer of an aws-chunked body", + "operations/s3/put-computing-sha1": "Compute the SHA1 checksum of the body and send it, base64 of its big-endian bytes, in x-amz-checksum-sha1 or in a trailer of an aws-chunked body", + "operations/s3/put-computing-sha256": "Compute the SHA256 checksum of the body and send it, base64 of its big-endian bytes, in x-amz-checksum-sha256 or in a trailer of an aws-chunked body", + "operations/s3/put-conditional-conflict": "Report a 409 ConditionalRequestConflict to a conditional put as an error. AWS advises retrying a put, so a client may retry up to 5 times first, and need not retry", + "operations/s3/put-content-disposition-non-ascii": "Write a Content-Disposition whose filename is outside ASCII. A general-purpose bucket returns header bytes as it got them, so the UTF-8 bytes read back; an RFC 6266 filename* is stored as written, and any reader decodes it", + "operations/s3/put-content-encoding-gzip": "Store Content-Encoding: gzip with a write, and the gzip bytes unchanged", + "operations/s3/put-content-properties": "Store Content-Type, Content-Language, Content-Disposition and Cache-Control with a write", + "operations/s3/put-content-type-edge-spaces": "Write a content type with spaces at either end, which HTTP drops, so the service stores it trimmed. A client may refuse it", + "operations/s3/put-content-type-non-ascii": "Write a Content-Type with a parameter outside ASCII as its UTF-8 bytes. A general-purpose bucket returns header bytes as it got them, so they read back", + "operations/s3/put-created": "put created", + "operations/s3/put-created-empty": "put created empty", + "operations/s3/put-created-key-double-slash": "put created, with the key \"double//slash.txt\"", + "operations/s3/put-created-key-hash": "put created, with the key \"hash#tag.txt\"", + "operations/s3/put-created-key-non-ascii": "put created, with the key \"café/雪.txt\"", + "operations/s3/put-created-key-percent": "put created, with the key \"percent%20.txt\"", + "operations/s3/put-created-key-plus": "put created, with the key \"plus+plus.txt\"", + "operations/s3/put-created-key-question": "put created, with the key \"question?mark.txt\"", + "operations/s3/put-created-key-space": "put created, with the key \"space name.txt\"", + "operations/s3/put-created-key-trailing-slash": "put created, with the key \"trailing-slash/\"", + "operations/s3/put-if-match-current": "put if match current", + "operations/s3/put-if-none-match-missing": "put if none match missing", + "operations/s3/put-if-unmodified-since-past": "Report a write with If-Unmodified-Since as an error. S3 takes no date condition on a PutObject and answers 501 NotImplemented. A client may refuse it before sending", + "operations/s3/put-internal-error": "Report a 500 InternalError answer as an error, after at most 5 retries", + "operations/s3/put-key-1024": "put key 1024", + "operations/s3/put-key-1025": "put key 1025", + "operations/s3/put-lost-the-race-to-create": "put lost the race to create", + "operations/s3/put-md5-mismatch": "Declared transactional MD5 must cover the exact body bytes; report service rejection of a mismatch.", + "operations/s3/put-metadata": "put metadata", + "operations/s3/put-metadata-empty-value": "put metadata empty value", + "operations/s3/put-metadata-hyphen-name": "put metadata hyphen name", + "operations/s3/put-metadata-names-differ-in-case": "S3 matches a metadata name without case. A general-purpose bucket merges two names that differ only in case into one pair, dup: one,two, which does not read back as sent, so refuse the call.", + "operations/s3/put-metadata-non-ascii-value": "A general-purpose bucket reads header bytes as ISO-8859-1 and decodes an RFC 2047 encoded word. Send é as the byte e9 or as an encoded word, or refuse the value if the client keeps metadata to ASCII; its UTF-8 bytes store café.", + "operations/s3/put-metadata-outside-latin-1": "No header byte carries 雪, so send it as an RFC 2047 encoded word, or refuse the value if the client keeps metadata to ASCII. A general-purpose bucket stores its UTF-8 bytes as three ISO-8859-1 characters.", + "operations/s3/put-metadata-punctuation-name": "S3 stores a name that holds any character of an HTTP token, and one that starts with a digit.", + "operations/s3/put-metadata-replaced": "put metadata replaced", + "operations/s3/put-metadata-value-control-characters": "A control character other than a tab is no valid HTTP field value. Send the value as an RFC 2047 encoded word, which S3 stores and a read decodes again, or refuse it.", + "operations/s3/put-metadata-value-edge-whitespace": "HTTP drops spaces and tabs at either end of a header value, so S3 would store a. An RFC 2047 encoded word stores them, but a read returns the value unencoded and loses them again. Send an encoded word, or refuse the value.", + "operations/s3/put-metadata-value-encoded-word-text": "A general-purpose bucket reads each space-separated token that starts with =? and ends with ?= as an RFC 2047 encoded word: it decodes it, or answers 400 or 500 when it cannot. So =?UTF-8?Q?caf=C3=A9?= sent as it is stores café. Wrapped in an encoded word of its own it stores the text, but a read returns it unencoded and decodes it again. Wrap it, or refuse it.", + "operations/s3/put-metadata-value-line-break": "CR and LF are no valid HTTP field value, and a general-purpose bucket stores each as a space even inside an RFC 2047 encoded word. No request stores the value, so refuse it.", + "operations/s3/put-metadata-value-not-an-encoded-word": "A general-purpose bucket reads each space-separated token that starts with =? and ends with ?= as an RFC 2047 encoded word: it decodes it, or answers 400 or 500 when it cannot. Neither a=?b?=c nor x=?UTF-8?Q?caf=C3=A9?=y is such a token, so S3 stores this value as it is sent, and a read returns it. Send it as it is, or wrapped in an encoded word; do not refuse it.", + "operations/s3/put-metadata-value-with-tab": "S3 stores a tab inside a value as it is sent. Send it raw, or inside an RFC 2047 encoded word.", + "operations/s3/put-overwrite": "put overwrite", + "operations/s3/put-precondition-failed": "put precondition failed", + "operations/s3/put-tagging": "Replace the tags of an object", + "operations/s3/put-tagging-10-tags": "Set 10 tags, the most an object takes", + "operations/s3/put-tagging-11-tags": "Report 11 tags, one more than an object takes, as an error. A client may refuse them", + "operations/s3/put-tagging-duplicate-key": "Report a tag set that names one key twice as an error. A client may refuse it, or report it unsupported where its API cannot repeat a key", + "operations/s3/put-tagging-invalid-character": "Report a tag key with !, which S3 does not allow, as an error. A client may refuse it", + "operations/s3/put-tagging-key-128": "Set a tag whose key has 128 characters, the longest a key may be", + "operations/s3/put-tagging-key-129": "Report a tag key of 129 characters, one more than a key may have, as an error. A client may refuse it", + "operations/s3/put-tagging-special-characters": "Set a tag with a space and each of + - = . _ : / @, which S3 allows, escaped as XML text", + "operations/s3/put-tagging-value-256": "Set a tag whose value has 256 characters, the longest a value may be", + "operations/s3/put-tagging-value-257": "Report a tag value of 257 characters, one more than a value may have, as an error. A client may refuse it", + "operations/s3/put-two-checksums": "Report S3's refusal of a write with two additional checksums; S3 keeps one checksum per object and answers 400 InvalidRequest to more than one x-amz-checksum- header", + "operations/s3/put-unauthenticated": "Report the service authorization error for this operation; signature acceptance is tested separately.", + "operations/s3/put-with-crc32": "Send an additional checksum in its x-amz-checksum- header; S3 stores it as the object's one checksum, in place of the CRC64NVME it adds to a write without one", + "operations/s3/put-with-crc32c": "Send a CRC32C checksum that the caller gives, in x-amz-checksum-crc32c", + "operations/s3/put-with-crc64nvme": "Send a CRC64NVME checksum that the caller gives, in x-amz-checksum-crc64nvme", + "operations/s3/put-with-md5": "Carry a declared transactional MD5 without substituting a payload or stored-property hash.", + "operations/s3/put-with-sha1": "Send a SHA1 checksum that the caller gives, in x-amz-checksum-sha1", + "operations/s3/put-with-sha256": "Send a SHA256 checksum that the caller gives, in x-amz-checksum-sha256", + "operations/s3/put-with-storage-class": "Write an object into the STANDARD_IA storage class", + "operations/s3/put-with-tags": "Write an object with tags", + "operations/s3/put-with-tags-duplicate-key": "Report a write whose x-amz-tagging names one key twice as an error. A client may refuse it, or report it unsupported where its API cannot repeat a key", + "operations/s3/put-with-tags-special-characters": "Write an object with a tag that holds a space and each of + - = . _ : / @, percent-encoded in x-amz-tagging, so that S3 reads + as a plus and not a space", + "operations/s3/put-with-unknown-storage-class": "Refuse a storage class that S3 does not have", + "operations/s3/stage": "stage", + "operations/s3/stage-after-abort": "stage after abort", + "operations/s3/stage-copy": "Copy a whole object into a part of a multipart upload, with UploadPartCopy", + "operations/s3/stage-copy-200-internal-error": "Report a part copy answered 200 with an InternalError in the body as an error, never as a success. A client may retry up to 5 times first, and need not retry", + "operations/s3/stage-copy-range": "Copy bytes 0 to 2 of an object into a part, named in x-amz-copy-source-range with an inclusive end, as bytes=0-2", + "operations/s3/stage-copy-range-beyond-source": "Report a part copy whose range ends past the source as an error. S3 answers 400 InvalidArgument", + "operations/s3/stage-empty-part": "Stage an empty part, which S3 takes", + "operations/s3/stage-key-double-slash": "stage, with the key \"double//slash.txt\"", + "operations/s3/stage-key-hash": "stage, with the key \"hash#tag.txt\"", + "operations/s3/stage-key-non-ascii": "stage, with the key \"café/雪.txt\"", + "operations/s3/stage-key-percent": "stage, with the key \"percent%20.txt\"", + "operations/s3/stage-key-plus": "stage, with the key \"plus+plus.txt\"", + "operations/s3/stage-key-question": "stage, with the key \"question?mark.txt\"", + "operations/s3/stage-key-space": "stage, with the key \"space name.txt\"", + "operations/s3/stage-key-trailing-slash": "stage, with the key \"trailing-slash/\"", + "operations/s3/stage-last": "stage last", + "operations/s3/stage-part-10000": "Part numbers run from 1 to 10,000. Stage part 10,000; only 0 and 10,001 may be refused.", + "operations/s3/stage-part-10001": "stage part 10001", + "operations/s3/stage-part-zero": "stage part zero", + "operations/s3/stage-unknown-upload": "stage unknown upload", + "operations/s3/staged": "staged", + "operations/s3/staged-after-abort": "staged after abort", + "operations/s3/staged-replacement": "staged replacement", + "operations/s3/staged-unknown-upload": "staged unknown upload", + "operations/s3/start": "start", + "operations/s3/start-bucket-missing": "start bucket missing. A client reports it as container_not_found: the bucket or container is absent, not the object", + "operations/s3/start-content-properties": "Start a multipart upload with content properties, which the completed object keeps", + "operations/s3/start-unauthenticated": "Report the service authorization error for this operation; signature acceptance is tested separately.", + "operations/s3/start-with-storage-class": "Start a multipart upload into a storage class, named in x-amz-storage-class", + "operations/s3/start-with-tags": "Start a multipart upload with tags, sent URL-encoded in x-amz-tagging, which the completed object keeps" + }, "profiles": { "azure": { "provider": "azure", @@ -163,7 +1241,7 @@ "optional": true, "rule": { "is": "matches", - "pattern": "[0-9a-f]{64}|UNSIGNED-PAYLOAD" + "pattern": "[0-9a-f]{64}|UNSIGNED-PAYLOAD|STREAMING-UNSIGNED-PAYLOAD-TRAILER" } }, { @@ -224,7 +1302,7 @@ "optional": true, "rule": { "is": "matches", - "pattern": "[0-9a-f]{64}|UNSIGNED-PAYLOAD" + "pattern": "[0-9a-f]{64}|UNSIGNED-PAYLOAD|STREAMING-UNSIGNED-PAYLOAD-TRAILER" } }, { @@ -268,7 +1346,7 @@ "id": "operations/azure/commit-container-missing", "profile": "azure", "lane": "core", - "purpose": "commit container missing", + "purpose": "commit container missing. A client reports it as container_not_found: the bucket or container is absent, not the object", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], @@ -361,6 +1439,14 @@ "is": "equal", "value": "ContainerNotFound" } + }, + { + "at": "/kind", + "optional": false, + "rule": { + "is": "equal", + "value": "container_not_found" + } } ], "refusal": null @@ -2711,16 +3797,30 @@ "refusal": null }, { - "id": "operations/azure/delete-accepted", + "id": "operations/azure/commit-content-properties", "profile": "azure", "lane": "core", - "purpose": "delete accepted", + "purpose": "Commit a block list with content properties, sent as x-ms-blob-content-type, -language, -disposition and x-ms-blob-cache-control", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "key": "object-tests/remove/present.txt", - "op": "delete" + "blocks": [ + { + "id_base64": "MDAwMDAx", + "kind": "latest" + }, + { + "id_base64": "MDAwMDAy", + "kind": "latest" + } + ], + "cache_control": "max-age=3600", + "content_disposition": "attachment; filename=\"report.txt\"", + "content_language": "nl-NL", + "content_type": "text/plain; charset=utf-8", + "key": "object-tests/multipart/committed.bin", + "op": "azure.commit_blocks" }, "exchanges": [ { @@ -2732,7 +3832,7 @@ "optional": false, "rule": { "is": "equal", - "value": "DELETE" + "value": "PUT" } }, { @@ -2740,28 +3840,73 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/remove/present.txt" + "value": "/fixture/object-tests/multipart/committed.bin" } }, { - "at": "/body_base64", + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "MDAwMDAxMDAwMDAy" + } + }, + { + "at": "/query/comp", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "blocklist" + } + }, + { + "at": "/headers/x-ms-blob-content-type", + "optional": false, + "rule": { + "is": "equal", + "value": "text/plain; charset=utf-8" + } + }, + { + "at": "/headers/x-ms-blob-content-language", + "optional": false, + "rule": { + "is": "equal", + "value": "nl-NL" + } + }, + { + "at": "/headers/x-ms-blob-content-disposition", + "optional": false, + "rule": { + "is": "equal", + "value": "attachment; filename=\"report.txt\"" + } + }, + { + "at": "/headers/x-ms-blob-cache-control", + "optional": false, + "rule": { + "is": "equal", + "value": "max-age=3600" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 202, + "status": 201, "headers": { "date": { "from": "now" }, + "etag": "\"fixture-be8efdb79010\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-request-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.7848460Z" }, "body": { "encoding": "base64", @@ -2780,21 +3925,48 @@ "is": "equal", "value": "ok" } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-be8efdb79010\"" + } + }, + { + "at": "/value/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.7848460Z" + } } ], "refusal": null }, { - "id": "operations/azure/delete-accepted-key-question", + "id": "operations/azure/commit-with-tier", "profile": "azure", "lane": "core", - "purpose": "delete accepted, with the key \"question?mark.txt\"", + "purpose": "Commit a block list into an access tier, named in x-ms-access-tier", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "key": "object-tests/keys/question?mark.txt", - "op": "delete" + "blocks": [ + { + "id_base64": "MDAwMDAx", + "kind": "latest" + }, + { + "id_base64": "MDAwMDAy", + "kind": "latest" + } + ], + "key": "object-tests/multipart/committed.bin", + "op": "azure.commit_blocks", + "tier": "Cool" }, "exchanges": [ { @@ -2806,7 +3978,7 @@ "optional": false, "rule": { "is": "equal", - "value": "DELETE" + "value": "PUT" } }, { @@ -2814,28 +3986,49 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/question?mark.txt" + "value": "/fixture/object-tests/multipart/committed.bin" } }, { - "at": "/body_base64", + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "MDAwMDAxMDAwMDAy" + } + }, + { + "at": "/query/comp", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "blocklist" + } + }, + { + "at": "/headers/x-ms-access-tier", + "optional": false, + "rule": { + "is": "equal", + "value": "Cool" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 202, + "status": 201, "headers": { "date": { "from": "now" }, + "etag": "\"fixture-be8efdb79010\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-request-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.7848460Z" }, "body": { "encoding": "base64", @@ -2854,21 +4047,50 @@ "is": "equal", "value": "ok" } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-be8efdb79010\"" + } + }, + { + "at": "/value/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.7848460Z" + } } ], "refusal": null }, { - "id": "operations/azure/delete-accepted-key-hash", + "id": "operations/azure/commit-with-tags", "profile": "azure", "lane": "core", - "purpose": "delete accepted, with the key \"hash#tag.txt\"", + "purpose": "Commit a block list with blob index tags, sent URL-encoded in x-ms-tags", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "key": "object-tests/keys/hash#tag.txt", - "op": "delete" + "blocks": [ + { + "id_base64": "MDAwMDAx", + "kind": "latest" + }, + { + "id_base64": "MDAwMDAy", + "kind": "latest" + } + ], + "key": "object-tests/multipart/committed.bin", + "op": "azure.commit_blocks", + "tags": { + "project": "object-tests" + } }, "exchanges": [ { @@ -2880,7 +4102,7 @@ "optional": false, "rule": { "is": "equal", - "value": "DELETE" + "value": "PUT" } }, { @@ -2888,28 +4110,49 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/hash#tag.txt" + "value": "/fixture/object-tests/multipart/committed.bin" } }, { - "at": "/body_base64", + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "MDAwMDAxMDAwMDAy" + } + }, + { + "at": "/query/comp", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "blocklist" + } + }, + { + "at": "/headers/x-ms-tags", + "optional": false, + "rule": { + "is": "equal", + "value": "project=object-tests" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 202, + "status": 201, "headers": { "date": { "from": "now" }, + "etag": "\"fixture-be8efdb79010\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-request-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.7848460Z" }, "body": { "encoding": "base64", @@ -2928,20 +4171,36 @@ "is": "equal", "value": "ok" } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-be8efdb79010\"" + } + }, + { + "at": "/value/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.7848460Z" + } } ], "refusal": null }, { - "id": "operations/azure/delete-accepted-key-percent", + "id": "operations/azure/delete-accepted", "profile": "azure", "lane": "core", - "purpose": "delete accepted, with the key \"percent%20.txt\"", + "purpose": "delete accepted", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "key": "object-tests/keys/percent%20.txt", + "key": "object-tests/remove/present.txt", "op": "delete" }, "exchanges": [ @@ -2962,7 +4221,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/percent%20.txt" + "value": "/fixture/object-tests/remove/present.txt" } }, { @@ -3007,15 +4266,15 @@ "refusal": null }, { - "id": "operations/azure/delete-accepted-key-plus", + "id": "operations/azure/delete-accepted-key-question", "profile": "azure", "lane": "core", - "purpose": "delete accepted, with the key \"plus+plus.txt\"", + "purpose": "delete accepted, with the key \"question?mark.txt\"", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "key": "object-tests/keys/plus+plus.txt", + "key": "object-tests/keys/question?mark.txt", "op": "delete" }, "exchanges": [ @@ -3036,7 +4295,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/plus+plus.txt" + "value": "/fixture/object-tests/keys/question?mark.txt" } }, { @@ -3081,15 +4340,15 @@ "refusal": null }, { - "id": "operations/azure/delete-accepted-key-space", + "id": "operations/azure/delete-accepted-key-hash", "profile": "azure", "lane": "core", - "purpose": "delete accepted, with the key \"space name.txt\"", + "purpose": "delete accepted, with the key \"hash#tag.txt\"", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "key": "object-tests/keys/space name.txt", + "key": "object-tests/keys/hash#tag.txt", "op": "delete" }, "exchanges": [ @@ -3110,7 +4369,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/space name.txt" + "value": "/fixture/object-tests/keys/hash#tag.txt" } }, { @@ -3155,15 +4414,15 @@ "refusal": null }, { - "id": "operations/azure/delete-accepted-key-non-ascii", + "id": "operations/azure/delete-accepted-key-percent", "profile": "azure", "lane": "core", - "purpose": "delete accepted, with the key \"café/雪.txt\"", + "purpose": "delete accepted, with the key \"percent%20.txt\"", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "key": "object-tests/keys/café/雪.txt", + "key": "object-tests/keys/percent%20.txt", "op": "delete" }, "exchanges": [ @@ -3184,7 +4443,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/café/雪.txt" + "value": "/fixture/object-tests/keys/percent%20.txt" } }, { @@ -3229,15 +4488,15 @@ "refusal": null }, { - "id": "operations/azure/delete-accepted-key-double-slash", + "id": "operations/azure/delete-accepted-key-plus", "profile": "azure", "lane": "core", - "purpose": "delete accepted, with the key \"double//slash.txt\"", + "purpose": "delete accepted, with the key \"plus+plus.txt\"", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "key": "object-tests/keys/double//slash.txt", + "key": "object-tests/keys/plus+plus.txt", "op": "delete" }, "exchanges": [ @@ -3258,7 +4517,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/double//slash.txt" + "value": "/fixture/object-tests/keys/plus+plus.txt" } }, { @@ -3303,15 +4562,15 @@ "refusal": null }, { - "id": "operations/azure/delete-accepted-key-trailing-slash", + "id": "operations/azure/delete-accepted-key-space", "profile": "azure", "lane": "core", - "purpose": "delete accepted, with the key \"trailing-slash/\"", + "purpose": "delete accepted, with the key \"space name.txt\"", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "key": "object-tests/keys/trailing-slash/", + "key": "object-tests/keys/space name.txt", "op": "delete" }, "exchanges": [ @@ -3332,7 +4591,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/trailing-slash/" + "value": "/fixture/object-tests/keys/space name.txt" } }, { @@ -3377,20 +4636,16 @@ "refusal": null }, { - "id": "operations/azure/delete-many", + "id": "operations/azure/delete-accepted-key-non-ascii", "profile": "azure", "lane": "core", - "purpose": "Delete several objects in one batch and report each result", + "purpose": "delete accepted, with the key \"café/雪.txt\"", "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/blob-batch" + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "keys": [ - "object-tests/batch/a.txt", - "object-tests/batch/b.txt", - "object-tests/batch/absent.txt" - ], - "op": "delete_many" + "key": "object-tests/keys/café/雪.txt", + "op": "delete" }, "exchanges": [ { @@ -3402,7 +4657,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "DELETE" } }, { @@ -3410,39 +4665,15 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" - } - }, - { - "at": "/headers/content-type", - "optional": false, - "rule": { - "is": "matches", - "pattern": "multipart/mixed; boundary=batch_[0-9A-Za-z-]+" - } - }, - { - "at": "/body_text", - "optional": false, - "rule": { - "is": "matches", - "pattern": "(?s).*DELETE (?:https?://[^/]+)?/fixture/object-tests/batch/a\\.txt HTTP/1\\.1.*DELETE (?:https?://[^/]+)?/fixture/object-tests/batch/b\\.txt HTTP/1\\.1.*DELETE (?:https?://[^/]+)?/fixture/object-tests/batch/absent\\.txt HTTP/1\\.1.*" - } - }, - { - "at": "/query/restype", - "optional": false, - "rule": { - "is": "equal", - "value": "container" + "value": "/fixture/object-tests/keys/café/雪.txt" } }, { - "at": "/query/comp", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "batch" + "value": "" } } ], @@ -3451,16 +4682,16 @@ "response": { "status": 202, "headers": { - "content-type": "multipart/mixed; boundary=batchresponse_fixture", "date": { "from": "now" - } + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 0\r\n\r\nHTTP/1.1 202 Accepted\r\nx-ms-request-id: fixture-0\r\nx-ms-delete-type-permanent: true\r\nx-ms-version: 2023-11-03\r\nServer: Windows-Azure-Blob/1.0\r\n\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 1\r\n\r\nHTTP/1.1 202 Accepted\r\nx-ms-request-id: fixture-1\r\nx-ms-delete-type-permanent: true\r\nx-ms-version: 2023-11-03\r\nServer: Windows-Azure-Blob/1.0\r\n\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 2\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture-2\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\nServer: Windows-Azure-Blob/1.0\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture--" - }, - "framing": "chunked" + "encoding": "base64", + "data": "" + } } } ] @@ -3474,46 +4705,20 @@ "is": "equal", "value": "ok" } - }, - { - "at": "/value/deleted", - "optional": false, - "rule": { - "is": "equal", - "value": [ - "object-tests/batch/a.txt", - "object-tests/batch/b.txt" - ] - } - }, - { - "at": "/value/errors", - "optional": false, - "rule": { - "is": "equal", - "value": [ - { - "code": "BlobNotFound", - "key": "object-tests/batch/absent.txt", - "status": 404 - } - ] - } } ], "refusal": null }, { - "id": "operations/azure/delete-leased-if-match-without-lease-id", + "id": "operations/azure/delete-accepted-key-double-slash", "profile": "azure", "lane": "core", - "purpose": "Refuse to delete a leased object whose If-Match holds but that names no lease ID", + "purpose": "delete accepted, with the key \"double//slash.txt\"", "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/lease-blob" + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "if_match": "\"fixture-etag\"", - "key": "object-tests/leases/object.txt", + "key": "object-tests/keys/double//slash.txt", "op": "delete" }, "exchanges": [ @@ -3534,7 +4739,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/leases/object.txt" + "value": "/fixture/object-tests/keys/double//slash.txt" } }, { @@ -3544,30 +4749,22 @@ "is": "equal", "value": "" } - }, - { - "at": "/headers/if-match", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-etag\"" - } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 412, + "status": 202, "headers": { - "content-type": "application/xml", "date": { "from": "now" }, - "x-ms-error-code": "LeaseIdMissing" + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "LeaseIdMissingFixture error" + "encoding": "base64", + "data": "" } } } @@ -3580,38 +4777,22 @@ "optional": false, "rule": { "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 412 - } - }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "equal", - "value": "LeaseIdMissing" + "value": "ok" } } ], "refusal": null }, { - "id": "operations/azure/delete-leased-without-lease-id", + "id": "operations/azure/delete-accepted-key-trailing-slash", "profile": "azure", "lane": "core", - "purpose": "Refuse to delete a leased object without its lease ID", + "purpose": "delete accepted, with the key \"trailing-slash/\"", "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/lease-blob" + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "key": "object-tests/leases/object.txt", + "key": "object-tests/keys/trailing-slash/", "op": "delete" }, "exchanges": [ @@ -3632,7 +4813,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/leases/object.txt" + "value": "/fixture/object-tests/keys/trailing-slash/" } }, { @@ -3647,17 +4828,17 @@ "allow_headers": [], "allow_query": [], "response": { - "status": 412, + "status": 202, "headers": { - "content-type": "application/xml", "date": { "from": "now" }, - "x-ms-error-code": "LeaseIdMissing" + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "LeaseIdMissingFixture error" + "encoding": "base64", + "data": "" } } } @@ -3670,41 +4851,27 @@ "optional": false, "rule": { "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 412 - } - }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "equal", - "value": "LeaseIdMissing" + "value": "ok" } } ], "refusal": null }, { - "id": "operations/azure/delete-server-busy", + "id": "operations/azure/delete-many", "profile": "azure", "lane": "core", - "purpose": "Report a 503 ServerBusy answer as an error, after at most 5 retries", + "purpose": "Delete several objects in one batch and report each result", "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/common-rest-api-error-codes", - "https://learn.microsoft.com/en-us/rest/api/storageservices/blob-service-error-codes" + "https://learn.microsoft.com/en-us/rest/api/storageservices/blob-batch" ], - "origin": "transient", "call": { - "key": "object-tests/remove/present.txt", - "op": "delete" + "keys": [ + "object-tests/batch/a.txt", + "object-tests/batch/b.txt", + "object-tests/batch/absent.txt" + ], + "op": "delete_many" }, "exchanges": [ { @@ -3716,7 +4883,7 @@ "optional": false, "rule": { "is": "equal", - "value": "DELETE" + "value": "POST" } }, { @@ -3724,86 +4891,129 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/remove/present.txt" + "value": "/fixture" } }, { - "at": "/body_base64", + "at": "/headers/content-type", "optional": false, "rule": { - "is": "equal", - "value": "" + "is": "matches", + "pattern": "multipart/mixed; boundary=batch_[0-9A-Za-z-]+" } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 503, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - }, - "x-ms-error-code": "ServerBusy" }, - "body": { - "encoding": "utf8", - "data": "ServerBusyThe server is currently unable to receive requests. Please retry your request." - } - } - } - ] - }, - { - "alternatives": [ - { - "request": [ { - "at": "/method", + "at": "/query/restype", "optional": false, "rule": { "is": "equal", - "value": "DELETE" + "value": "container" } }, { - "at": "/path", + "at": "/query/comp", "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/remove/present.txt" + "value": "batch" } }, { - "at": "/body_base64", + "at": "", "optional": false, "rule": { - "is": "equal", - "value": "" + "is": "blob_batch", + "subrequests": [ + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/a.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/b.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/absent.txt" + } + ] } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 503, + "status": 202, "headers": { - "content-type": "application/xml", + "content-type": "multipart/mixed; boundary=batchresponse_fixture", "date": { "from": "now" - }, - "x-ms-error-code": "ServerBusy" + } }, "body": { "encoding": "utf8", - "data": "ServerBusyThe server is currently unable to receive requests. Please retry your request." - } + "data": "--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 0\r\n\r\nHTTP/1.1 202 Accepted\r\nx-ms-request-id: fixture-0\r\nx-ms-delete-type-permanent: true\r\nx-ms-version: 2023-11-03\r\nServer: Windows-Azure-Blob/1.0\r\n\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 1\r\n\r\nHTTP/1.1 202 Accepted\r\nx-ms-request-id: fixture-1\r\nx-ms-delete-type-permanent: true\r\nx-ms-version: 2023-11-03\r\nServer: Windows-Azure-Blob/1.0\r\n\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 2\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture-2\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\nServer: Windows-Azure-Blob/1.0\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture--" + }, + "framing": "chunked" } } - ], - "optional": true + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/deleted", + "optional": false, + "rule": { + "is": "equal", + "value": [ + "object-tests/batch/a.txt", + "object-tests/batch/b.txt" + ] + } }, + { + "at": "/value/errors", + "optional": false, + "rule": { + "is": "equal", + "value": [ + { + "code": "BlobNotFound", + "key": "object-tests/batch/absent.txt", + "status": 404 + } + ] + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/delete-many-denied", + "profile": "azure", + "lane": "core", + "purpose": "Report each deletion of a batch that Azure refuses inside its 202 answer, here every one with 403 AuthorizationPermissionMismatch, as that key's error, not as deleted", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/blob-batch" + ], + "call": { + "keys": [ + "object-tests/batch/a.txt", + "object-tests/batch/b.txt", + "object-tests/batch/absent.txt" + ], + "op": "delete_many" + }, + "exchanges": [ { "alternatives": [ { @@ -3813,7 +5023,7 @@ "optional": false, "rule": { "is": "equal", - "value": "DELETE" + "value": "POST" } }, { @@ -3821,87 +5031,138 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/remove/present.txt" + "value": "/fixture" } }, { - "at": "/body_base64", + "at": "/headers/content-type", "optional": false, "rule": { - "is": "equal", - "value": "" + "is": "matches", + "pattern": "multipart/mixed; boundary=batch_[0-9A-Za-z-]+" } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 503, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - }, - "x-ms-error-code": "ServerBusy" }, - "body": { - "encoding": "utf8", - "data": "ServerBusyThe server is currently unable to receive requests. Please retry your request." - } - } - } - ], - "optional": true - }, - { - "alternatives": [ - { - "request": [ { - "at": "/method", + "at": "/query/restype", "optional": false, "rule": { "is": "equal", - "value": "DELETE" + "value": "container" } }, { - "at": "/path", + "at": "/query/comp", "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/remove/present.txt" + "value": "batch" } }, { - "at": "/body_base64", + "at": "", "optional": false, "rule": { - "is": "equal", - "value": "" + "is": "blob_batch", + "subrequests": [ + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/a.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/b.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/absent.txt" + } + ] } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 503, + "status": 202, "headers": { - "content-type": "application/xml", + "content-type": "multipart/mixed; boundary=batchresponse_fixture", "date": { "from": "now" - }, - "x-ms-error-code": "ServerBusy" + } }, "body": { "encoding": "utf8", - "data": "ServerBusyThe server is currently unable to receive requests. Please retry your request." - } + "data": "--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 0\r\n\r\nHTTP/1.1 403 This request is not authorized to perform this operation using this permission.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: AuthorizationPermissionMismatch\r\nx-ms-version: 2023-11-03\r\nContent-Length: 129\r\nContent-Type: application/xml\r\n\r\nAuthorizationPermissionMismatchFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 1\r\n\r\nHTTP/1.1 403 This request is not authorized to perform this operation using this permission.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: AuthorizationPermissionMismatch\r\nx-ms-version: 2023-11-03\r\nContent-Length: 129\r\nContent-Type: application/xml\r\n\r\nAuthorizationPermissionMismatchFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 2\r\n\r\nHTTP/1.1 403 This request is not authorized to perform this operation using this permission.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: AuthorizationPermissionMismatch\r\nx-ms-version: 2023-11-03\r\nContent-Length: 129\r\nContent-Type: application/xml\r\n\r\nAuthorizationPermissionMismatchFixture error\r\n--batchresponse_fixture--" + }, + "framing": "chunked" } } - ], - "optional": true + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/deleted", + "optional": false, + "rule": { + "is": "equal", + "value": [] + } }, + { + "at": "/value/errors", + "optional": false, + "rule": { + "is": "equal", + "value": [ + { + "code": "AuthorizationPermissionMismatch", + "key": "object-tests/batch/a.txt", + "status": 403 + }, + { + "code": "AuthorizationPermissionMismatch", + "key": "object-tests/batch/b.txt", + "status": 403 + }, + { + "code": "AuthorizationPermissionMismatch", + "key": "object-tests/batch/absent.txt", + "status": 403 + } + ] + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/delete-many-answers-out-of-order", + "profile": "azure", + "lane": "core", + "purpose": "Match each part of a batch answer to its deletion by Content-ID, which links them, not by position. Azure has answered every recorded batch in order, up to 256 parts; this answer is written by hand", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/blob-batch" + ], + "origin": "constructed", + "derived_from": "operations/azure/delete-many", + "call": { + "keys": [ + "object-tests/batch/a.txt", + "object-tests/batch/b.txt", + "object-tests/batch/absent.txt" + ], + "op": "delete_many" + }, + "exchanges": [ { "alternatives": [ { @@ -3911,7 +5172,7 @@ "optional": false, "rule": { "is": "equal", - "value": "DELETE" + "value": "POST" } }, { @@ -3919,86 +5180,73 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/remove/present.txt" + "value": "/fixture" } }, { - "at": "/body_base64", + "at": "/headers/content-type", "optional": false, "rule": { - "is": "equal", - "value": "" + "is": "matches", + "pattern": "multipart/mixed; boundary=batch_[0-9A-Za-z-]+" } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 503, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - }, - "x-ms-error-code": "ServerBusy" }, - "body": { - "encoding": "utf8", - "data": "ServerBusyThe server is currently unable to receive requests. Please retry your request." - } - } - } - ], - "optional": true - }, - { - "alternatives": [ - { - "request": [ { - "at": "/method", + "at": "/query/restype", "optional": false, "rule": { "is": "equal", - "value": "DELETE" + "value": "container" } }, { - "at": "/path", + "at": "/query/comp", "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/remove/present.txt" + "value": "batch" } }, { - "at": "/body_base64", + "at": "", "optional": false, "rule": { - "is": "equal", - "value": "" + "is": "blob_batch", + "subrequests": [ + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/a.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/b.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/absent.txt" + } + ] } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 503, + "status": 202, "headers": { - "content-type": "application/xml", + "content-type": "multipart/mixed; boundary=batchresponse_fixture", "date": { "from": "now" - }, - "x-ms-error-code": "ServerBusy" + } }, "body": { "encoding": "utf8", - "data": "ServerBusyThe server is currently unable to receive requests. Please retry your request." - } + "data": "--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 2\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 0\r\n\r\nHTTP/1.1 202 Accepted\r\nx-ms-request-id: fixture\r\nx-ms-delete-type-permanent: true\r\nx-ms-version: 2023-11-03\r\n\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 1\r\n\r\nHTTP/1.1 202 Accepted\r\nx-ms-request-id: fixture\r\nx-ms-delete-type-permanent: true\r\nx-ms-version: 2023-11-03\r\n\r\n--batchresponse_fixture--" + }, + "framing": "chunked" } } - ], - "optional": true + ] } ], "expect": [ @@ -4007,40 +5255,54 @@ "optional": false, "rule": { "is": "equal", - "value": "error" + "value": "ok" } }, { - "at": "/status", + "at": "/value/deleted", "optional": false, "rule": { "is": "equal", - "value": 503 + "value": [ + "object-tests/batch/a.txt", + "object-tests/batch/b.txt" + ] } }, { - "at": "/code", + "at": "/value/errors", "optional": false, "rule": { "is": "equal", - "value": "ServerBusy" + "value": [ + { + "code": "BlobNotFound", + "key": "object-tests/batch/absent.txt", + "status": 404 + } + ] } } ], "refusal": null }, { - "id": "operations/azure/delete-if-unmodified-since-past", + "id": "operations/azure/delete-many-lf-line-endings", "profile": "azure", "lane": "core", - "purpose": "Refuse a delete with 412 when the object changed after If-Unmodified-Since", + "purpose": "Read a batch answer whose lines end in LF alone correctly, or report it as an error, but never half-read it. Azure has not been seen to send it: HTTP and multipart require CRLF. This answer is the recorded one with every CR removed", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "https://learn.microsoft.com/en-us/rest/api/storageservices/blob-batch" ], + "origin": "constructed", + "derived_from": "operations/azure/delete-many", "call": { - "if_unmodified_since": "Sat, 01 Jan 2000 00:00:00 GMT", - "key": "object-tests/remove/present.txt", - "op": "delete" + "keys": [ + "object-tests/batch/a.txt", + "object-tests/batch/b.txt", + "object-tests/batch/absent.txt" + ], + "op": "delete_many" }, "exchanges": [ { @@ -4052,7 +5314,7 @@ "optional": false, "rule": { "is": "equal", - "value": "DELETE" + "value": "POST" } }, { @@ -4060,41 +5322,70 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/remove/present.txt" + "value": "/fixture" } }, { - "at": "/body_base64", + "at": "/headers/content-type", + "optional": false, + "rule": { + "is": "matches", + "pattern": "multipart/mixed; boundary=batch_[0-9A-Za-z-]+" + } + }, + { + "at": "/query/restype", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "container" } }, { - "at": "/headers/if-unmodified-since", + "at": "/query/comp", "optional": false, "rule": { "is": "equal", - "value": "Sat, 01 Jan 2000 00:00:00 GMT" + "value": "batch" + } + }, + { + "at": "", + "optional": false, + "rule": { + "is": "blob_batch", + "subrequests": [ + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/a.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/b.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/absent.txt" + } + ] } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 412, + "status": 202, "headers": { - "content-type": "application/xml", + "content-type": "multipart/mixed; boundary=batchresponse_fixture", "date": { "from": "now" - }, - "x-ms-error-code": "ConditionNotMet" + } }, "body": { "encoding": "utf8", - "data": "ConditionNotMetFixture error" - } + "data": "--batchresponse_fixture\nContent-Type: application/http\nContent-ID: 0\n\nHTTP/1.1 202 Accepted\nx-ms-request-id: fixture\nx-ms-delete-type-permanent: true\nx-ms-version: 2023-11-03\n\n--batchresponse_fixture\nContent-Type: application/http\nContent-ID: 1\n\nHTTP/1.1 202 Accepted\nx-ms-request-id: fixture\nx-ms-delete-type-permanent: true\nx-ms-version: 2023-11-03\n\n--batchresponse_fixture\nContent-Type: application/http\nContent-ID: 2\n\nHTTP/1.1 404 The specified blob does not exist.\nx-ms-request-id: fixture\nx-ms-error-code: BlobNotFound\nx-ms-version: 2023-11-03\nContent-Length: 110\nContent-Type: application/xml\n\nBlobNotFoundFixture error\n--batchresponse_fixture--" + }, + "framing": "chunked" } } ] @@ -4105,40 +5396,58 @@ "at": "/outcome", "optional": false, "rule": { - "is": "equal", - "value": "error" + "is": "one_of", + "values": [ + "ok", + "error" + ] } }, { - "at": "/status", - "optional": false, + "at": "/value/deleted", + "optional": true, "rule": { "is": "equal", - "value": 412 + "value": [ + "object-tests/batch/a.txt", + "object-tests/batch/b.txt" + ] } }, { - "at": "/code", - "optional": false, + "at": "/value/errors", + "optional": true, "rule": { "is": "equal", - "value": "ConditionNotMet" + "value": [ + { + "code": "BlobNotFound", + "key": "object-tests/batch/absent.txt", + "status": 404 + } + ] } } ], "refusal": null }, { - "id": "operations/azure/delete-container-missing", + "id": "operations/azure/delete-many-without-content-id", "profile": "azure", "lane": "core", - "purpose": "delete container missing", + "purpose": "Report a batch answer whose parts carry no Content-ID as an error. Without one, only the order of the parts would link a result to its key, and a guess could report one key deleted when another failed. Azure echoes the Content-ID of every subrequest; this answer is the recorded one with them removed", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "https://learn.microsoft.com/en-us/rest/api/storageservices/blob-batch" ], + "origin": "constructed", + "derived_from": "operations/azure/delete-many", "call": { - "key": "object.txt", - "op": "delete" + "keys": [ + "object-tests/batch/a.txt", + "object-tests/batch/b.txt", + "object-tests/batch/absent.txt" + ], + "op": "delete_many" }, "exchanges": [ { @@ -4150,7 +5459,7 @@ "optional": false, "rule": { "is": "equal", - "value": "DELETE" + "value": "POST" } }, { @@ -4158,33 +5467,70 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object.txt" + "value": "/fixture" } }, { - "at": "/body_base64", + "at": "/headers/content-type", + "optional": false, + "rule": { + "is": "matches", + "pattern": "multipart/mixed; boundary=batch_[0-9A-Za-z-]+" + } + }, + { + "at": "/query/restype", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "container" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "batch" + } + }, + { + "at": "", + "optional": false, + "rule": { + "is": "blob_batch", + "subrequests": [ + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/a.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/b.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/absent.txt" + } + ] } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 404, + "status": 202, "headers": { - "content-type": "application/xml", + "content-type": "multipart/mixed; boundary=batchresponse_fixture", "date": { "from": "now" - }, - "x-ms-error-code": "ContainerNotFound" + } }, "body": { "encoding": "utf8", - "data": "ContainerNotFoundFixture error" - } + "data": "--batchresponse_fixture\r\nContent-Type: application/http\r\n\r\nHTTP/1.1 202 Accepted\r\nx-ms-request-id: fixture\r\nx-ms-delete-type-permanent: true\r\nx-ms-version: 2023-11-03\r\n\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\n\r\nHTTP/1.1 202 Accepted\r\nx-ms-request-id: fixture\r\nx-ms-delete-type-permanent: true\r\nx-ms-version: 2023-11-03\r\n\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture--" + }, + "framing": "chunked" } } ] @@ -4198,38 +5544,27 @@ "is": "equal", "value": "error" } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 404 - } - }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "equal", - "value": "ContainerNotFound" - } } ], "refusal": null }, { - "id": "operations/azure/delete-current-version", + "id": "operations/azure/delete-many-server-busy", "profile": "azure", "lane": "core", - "purpose": "delete current version", + "purpose": "Report a batch that Azure answers as a whole with 503 ServerBusy as an error, never as deleted keys. A client may retry up to five times first", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "https://learn.microsoft.com/en-us/rest/api/storageservices/blob-batch" ], + "origin": "transient", + "derived_from": "operations/azure/delete-many", "call": { - "key": "object-tests/versions-mtydohr2/object.txt", - "op": "delete", - "version": "2024-01-01T00:00:00.3326281Z" + "keys": [ + "object-tests/batch/a.txt", + "object-tests/batch/b.txt", + "object-tests/batch/absent.txt" + ], + "op": "delete_many" }, "exchanges": [ { @@ -4241,7 +5576,7 @@ "optional": false, "rule": { "is": "equal", - "value": "DELETE" + "value": "POST" } }, { @@ -4249,88 +5584,74 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/versions-mtydohr2/object.txt" + "value": "/fixture" } }, { - "at": "/body_base64", + "at": "/headers/content-type", + "optional": false, + "rule": { + "is": "matches", + "pattern": "multipart/mixed; boundary=batch_[0-9A-Za-z-]+" + } + }, + { + "at": "/query/restype", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "container" } }, { - "at": "/query/versionid", + "at": "/query/comp", "optional": false, "rule": { "is": "equal", - "value": "2024-01-01T00:00:00.3326281Z" + "value": "batch" + } + }, + { + "at": "", + "optional": false, + "rule": { + "is": "blob_batch", + "subrequests": [ + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/a.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/b.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/absent.txt" + } + ] } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 403, + "status": 503, "headers": { "content-type": "application/xml", "date": { "from": "now" }, - "x-ms-error-code": "OperationNotAllowedOnRootBlob" + "x-ms-error-code": "ServerBusy" }, "body": { "encoding": "utf8", - "data": "OperationNotAllowedOnRootBlobFixture error" + "data": "ServerBusyFixture error" } } } ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 403 - } }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "equal", - "value": "OperationNotAllowedOnRootBlob" - } - } - ], - "refusal": null - }, - { - "id": "operations/azure/delete-if-match-current", - "profile": "azure", - "lane": "core", - "purpose": "delete if match current", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "if_match": "\"fixture-6898e7e8471f\"", - "key": "object-tests/remove/conditional.txt", - "op": "delete" - }, - "exchanges": [ { "alternatives": [ { @@ -4340,7 +5661,7 @@ "optional": false, "rule": { "is": "equal", - "value": "DELETE" + "value": "POST" } }, { @@ -4348,71 +5669,75 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/remove/conditional.txt" + "value": "/fixture" } }, { - "at": "/body_base64", + "at": "/headers/content-type", + "optional": false, + "rule": { + "is": "matches", + "pattern": "multipart/mixed; boundary=batch_[0-9A-Za-z-]+" + } + }, + { + "at": "/query/restype", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "container" } }, { - "at": "/headers/if-match", + "at": "/query/comp", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-6898e7e8471f\"" + "value": "batch" + } + }, + { + "at": "", + "optional": false, + "rule": { + "is": "blob_batch", + "subrequests": [ + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/a.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/b.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/absent.txt" + } + ] } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 202, + "status": 503, "headers": { + "content-type": "application/xml", "date": { "from": "now" }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + "x-ms-error-code": "ServerBusy" }, "body": { - "encoding": "base64", - "data": "" + "encoding": "utf8", + "data": "ServerBusyFixture error" } } } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - } - ], - "refusal": null - }, - { - "id": "operations/azure/delete-missing", - "profile": "azure", - "lane": "core", - "purpose": "delete missing", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "key": "object-tests/remove/absent.txt", - "op": "delete" - }, - "exchanges": [ + ], + "optional": true + }, { "alternatives": [ { @@ -4422,7 +5747,7 @@ "optional": false, "rule": { "is": "equal", - "value": "DELETE" + "value": "POST" } }, { @@ -4430,80 +5755,75 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/remove/absent.txt" + "value": "/fixture" } }, { - "at": "/body_base64", + "at": "/headers/content-type", + "optional": false, + "rule": { + "is": "matches", + "pattern": "multipart/mixed; boundary=batch_[0-9A-Za-z-]+" + } + }, + { + "at": "/query/restype", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "container" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "batch" + } + }, + { + "at": "", + "optional": false, + "rule": { + "is": "blob_batch", + "subrequests": [ + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/a.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/b.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/absent.txt" + } + ] } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 404, + "status": 503, "headers": { "content-type": "application/xml", "date": { "from": "now" }, - "x-ms-error-code": "BlobNotFound" + "x-ms-error-code": "ServerBusy" }, "body": { "encoding": "utf8", - "data": "BlobNotFoundFixture error" + "data": "ServerBusyFixture error" } } } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 404 - } + ], + "optional": true }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "equal", - "value": "BlobNotFound" - } - } - ], - "refusal": null - }, - { - "id": "operations/azure/delete-precondition-failed", - "profile": "azure", - "lane": "core", - "purpose": "delete precondition failed", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "if_match": "\"fixture-088e5dc109cf\"", - "key": "object-tests/remove/conditional.txt", - "op": "delete" - }, - "exchanges": [ { "alternatives": [ { @@ -4513,7 +5833,7 @@ "optional": false, "rule": { "is": "equal", - "value": "DELETE" + "value": "POST" } }, { @@ -4521,91 +5841,75 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/remove/conditional.txt" + "value": "/fixture" } }, { - "at": "/body_base64", + "at": "/headers/content-type", + "optional": false, + "rule": { + "is": "matches", + "pattern": "multipart/mixed; boundary=batch_[0-9A-Za-z-]+" + } + }, + { + "at": "/query/restype", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "container" } }, { - "at": "/headers/if-match", + "at": "/query/comp", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-088e5dc109cf\"" + "value": "batch" + } + }, + { + "at": "", + "optional": false, + "rule": { + "is": "blob_batch", + "subrequests": [ + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/a.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/b.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/absent.txt" + } + ] } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 412, + "status": 503, "headers": { "content-type": "application/xml", "date": { "from": "now" }, - "x-ms-error-code": "ConditionNotMet" + "x-ms-error-code": "ServerBusy" }, "body": { "encoding": "utf8", - "data": "ConditionNotMetFixture error" + "data": "ServerBusyFixture error" } } } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 412 - } + ], + "optional": true }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "equal", - "value": "ConditionNotMet" - } - } - ], - "refusal": null - }, - { - "id": "operations/azure/delete-precondition-failed-code-in-body", - "profile": "azure", - "lane": "core", - "purpose": "delete precondition failed, with the error code only in the XML body", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp", - "https://learn.microsoft.com/en-us/rest/api/storageservices/common-rest-api-error-codes", - "https://learn.microsoft.com/en-us/rest/api/storageservices/blob-service-error-codes" - ], - "origin": "constructed", - "call": { - "if_match": "\"fixture-088e5dc109cf\"", - "key": "object-tests/remove/conditional.txt", - "op": "delete" - }, - "exchanges": [ { "alternatives": [ { @@ -4615,7 +5919,7 @@ "optional": false, "rule": { "is": "equal", - "value": "DELETE" + "value": "POST" } }, { @@ -4623,185 +5927,75 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/remove/conditional.txt" + "value": "/fixture" } }, { - "at": "/body_base64", + "at": "/headers/content-type", + "optional": false, + "rule": { + "is": "matches", + "pattern": "multipart/mixed; boundary=batch_[0-9A-Za-z-]+" + } + }, + { + "at": "/query/restype", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "container" } }, { - "at": "/headers/if-match", + "at": "/query/comp", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-088e5dc109cf\"" + "value": "batch" + } + }, + { + "at": "", + "optional": false, + "rule": { + "is": "blob_batch", + "subrequests": [ + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/a.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/b.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/absent.txt" + } + ] } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 412, + "status": 503, "headers": { "content-type": "application/xml", "date": { "from": "now" - } + }, + "x-ms-error-code": "ServerBusy" }, "body": { "encoding": "utf8", - "data": "ConditionNotMetFixture error" + "data": "ServerBusyFixture error" } } } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 412 - } - }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "equal", - "value": "ConditionNotMet" - } - } - ], - "refusal": null - }, - { - "id": "operations/azure/delete-previous-version", - "profile": "azure", - "lane": "core", - "purpose": "delete previous version", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "key": "object-tests/versions-mtydohr2/object.txt", - "op": "delete", - "version": "2024-01-01T00:00:00.2318906Z" - }, - "exchanges": [ - { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "DELETE" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/versions-mtydohr2/object.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/query/versionid", - "optional": false, - "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.2318906Z" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 403, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - }, - "x-ms-error-code": "OperationNotAllowedOnAutomaticSnapshot" - }, - "body": { - "encoding": "utf8", - "data": "OperationNotAllowedOnAutomaticSnapshotFixture error" - } - } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 403 - } + ], + "optional": true }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "equal", - "value": "OperationNotAllowedOnAutomaticSnapshot" - } - } - ], - "refusal": null - }, - { - "id": "operations/azure/delete-refused-for-snapshots", - "profile": "azure", - "lane": "core", - "purpose": "Report the service authorization error for this operation; signature acceptance is tested separately.", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "key": "object-tests/snapshots/object.txt", - "op": "delete" - }, - "exchanges": [ { "alternatives": [ { @@ -4811,7 +6005,7 @@ "optional": false, "rule": { "is": "equal", - "value": "DELETE" + "value": "POST" } }, { @@ -4819,126 +6013,74 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/snapshots/object.txt" + "value": "/fixture" } }, { - "at": "/body_base64", + "at": "/headers/content-type", "optional": false, "rule": { - "is": "equal", - "value": "" + "is": "matches", + "pattern": "multipart/mixed; boundary=batch_[0-9A-Za-z-]+" } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 409, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - }, - "x-ms-error-code": "SnapshotsPresent" }, - "body": { - "encoding": "utf8", - "data": "SnapshotsPresentFixture error" - } - } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 409 - } - }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "equal", - "value": "SnapshotsPresent" - } - } - ], - "refusal": null - }, - { - "id": "operations/azure/delete-refused", - "profile": "azure", - "lane": "core", - "purpose": "Report the service authorization error for this operation; signature acceptance is tested separately.", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "key": "object.txt", - "op": "delete" - }, - "exchanges": [ - { - "alternatives": [ - { - "request": [ { - "at": "/method", + "at": "/query/restype", "optional": false, "rule": { "is": "equal", - "value": "DELETE" + "value": "container" } }, { - "at": "/path", + "at": "/query/comp", "optional": false, "rule": { "is": "equal", - "value": "/fixture/object.txt" + "value": "batch" } }, { - "at": "/body_base64", + "at": "", "optional": false, "rule": { - "is": "equal", - "value": "" + "is": "blob_batch", + "subrequests": [ + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/a.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/b.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/absent.txt" + } + ] } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 403, + "status": 503, "headers": { "content-type": "application/xml", "date": { "from": "now" }, - "x-ms-error-code": "AuthorizationPermissionMismatch" + "x-ms-error-code": "ServerBusy" }, "body": { "encoding": "utf8", - "data": "AuthorizationPermissionMismatchFixture error" + "data": "ServerBusyFixture error" } } } - ] + ], + "optional": true } ], "expect": [ @@ -4955,7 +6097,7 @@ "optional": false, "rule": { "is": "equal", - "value": 403 + "value": 503 } }, { @@ -4963,24 +6105,280 @@ "optional": false, "rule": { "is": "equal", - "value": "AuthorizationPermissionMismatch" + "value": "ServerBusy" } } ], "refusal": null }, { - "id": "operations/azure/delete-snapshot", + "id": "operations/azure/delete-many-256", "profile": "azure", "lane": "core", - "purpose": "delete snapshot", + "purpose": "Delete 256 keys in one batch, the most Azure takes", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "https://learn.microsoft.com/en-us/rest/api/storageservices/blob-batch" ], "call": { - "key": "object-tests/snapshots/object.txt", - "op": "delete", - "snapshot": "2024-01-01T00:00:00.8085866Z" + "keys": [ + "object-tests/batch/many-0000.txt", + "object-tests/batch/many-0001.txt", + "object-tests/batch/many-0002.txt", + "object-tests/batch/many-0003.txt", + "object-tests/batch/many-0004.txt", + "object-tests/batch/many-0005.txt", + "object-tests/batch/many-0006.txt", + "object-tests/batch/many-0007.txt", + "object-tests/batch/many-0008.txt", + "object-tests/batch/many-0009.txt", + "object-tests/batch/many-0010.txt", + "object-tests/batch/many-0011.txt", + "object-tests/batch/many-0012.txt", + "object-tests/batch/many-0013.txt", + "object-tests/batch/many-0014.txt", + "object-tests/batch/many-0015.txt", + "object-tests/batch/many-0016.txt", + "object-tests/batch/many-0017.txt", + "object-tests/batch/many-0018.txt", + "object-tests/batch/many-0019.txt", + "object-tests/batch/many-0020.txt", + "object-tests/batch/many-0021.txt", + "object-tests/batch/many-0022.txt", + "object-tests/batch/many-0023.txt", + "object-tests/batch/many-0024.txt", + "object-tests/batch/many-0025.txt", + "object-tests/batch/many-0026.txt", + "object-tests/batch/many-0027.txt", + "object-tests/batch/many-0028.txt", + "object-tests/batch/many-0029.txt", + "object-tests/batch/many-0030.txt", + "object-tests/batch/many-0031.txt", + "object-tests/batch/many-0032.txt", + "object-tests/batch/many-0033.txt", + "object-tests/batch/many-0034.txt", + "object-tests/batch/many-0035.txt", + "object-tests/batch/many-0036.txt", + "object-tests/batch/many-0037.txt", + "object-tests/batch/many-0038.txt", + "object-tests/batch/many-0039.txt", + "object-tests/batch/many-0040.txt", + "object-tests/batch/many-0041.txt", + "object-tests/batch/many-0042.txt", + "object-tests/batch/many-0043.txt", + "object-tests/batch/many-0044.txt", + "object-tests/batch/many-0045.txt", + "object-tests/batch/many-0046.txt", + "object-tests/batch/many-0047.txt", + "object-tests/batch/many-0048.txt", + "object-tests/batch/many-0049.txt", + "object-tests/batch/many-0050.txt", + "object-tests/batch/many-0051.txt", + "object-tests/batch/many-0052.txt", + "object-tests/batch/many-0053.txt", + "object-tests/batch/many-0054.txt", + "object-tests/batch/many-0055.txt", + "object-tests/batch/many-0056.txt", + "object-tests/batch/many-0057.txt", + "object-tests/batch/many-0058.txt", + "object-tests/batch/many-0059.txt", + "object-tests/batch/many-0060.txt", + "object-tests/batch/many-0061.txt", + "object-tests/batch/many-0062.txt", + "object-tests/batch/many-0063.txt", + "object-tests/batch/many-0064.txt", + "object-tests/batch/many-0065.txt", + "object-tests/batch/many-0066.txt", + "object-tests/batch/many-0067.txt", + "object-tests/batch/many-0068.txt", + "object-tests/batch/many-0069.txt", + "object-tests/batch/many-0070.txt", + "object-tests/batch/many-0071.txt", + "object-tests/batch/many-0072.txt", + "object-tests/batch/many-0073.txt", + "object-tests/batch/many-0074.txt", + "object-tests/batch/many-0075.txt", + "object-tests/batch/many-0076.txt", + "object-tests/batch/many-0077.txt", + "object-tests/batch/many-0078.txt", + "object-tests/batch/many-0079.txt", + "object-tests/batch/many-0080.txt", + "object-tests/batch/many-0081.txt", + "object-tests/batch/many-0082.txt", + "object-tests/batch/many-0083.txt", + "object-tests/batch/many-0084.txt", + "object-tests/batch/many-0085.txt", + "object-tests/batch/many-0086.txt", + "object-tests/batch/many-0087.txt", + "object-tests/batch/many-0088.txt", + "object-tests/batch/many-0089.txt", + "object-tests/batch/many-0090.txt", + "object-tests/batch/many-0091.txt", + "object-tests/batch/many-0092.txt", + "object-tests/batch/many-0093.txt", + "object-tests/batch/many-0094.txt", + "object-tests/batch/many-0095.txt", + "object-tests/batch/many-0096.txt", + "object-tests/batch/many-0097.txt", + "object-tests/batch/many-0098.txt", + "object-tests/batch/many-0099.txt", + "object-tests/batch/many-0100.txt", + "object-tests/batch/many-0101.txt", + "object-tests/batch/many-0102.txt", + "object-tests/batch/many-0103.txt", + "object-tests/batch/many-0104.txt", + "object-tests/batch/many-0105.txt", + "object-tests/batch/many-0106.txt", + "object-tests/batch/many-0107.txt", + "object-tests/batch/many-0108.txt", + "object-tests/batch/many-0109.txt", + "object-tests/batch/many-0110.txt", + "object-tests/batch/many-0111.txt", + "object-tests/batch/many-0112.txt", + "object-tests/batch/many-0113.txt", + "object-tests/batch/many-0114.txt", + "object-tests/batch/many-0115.txt", + "object-tests/batch/many-0116.txt", + "object-tests/batch/many-0117.txt", + "object-tests/batch/many-0118.txt", + "object-tests/batch/many-0119.txt", + "object-tests/batch/many-0120.txt", + "object-tests/batch/many-0121.txt", + "object-tests/batch/many-0122.txt", + "object-tests/batch/many-0123.txt", + "object-tests/batch/many-0124.txt", + "object-tests/batch/many-0125.txt", + "object-tests/batch/many-0126.txt", + "object-tests/batch/many-0127.txt", + "object-tests/batch/many-0128.txt", + "object-tests/batch/many-0129.txt", + "object-tests/batch/many-0130.txt", + "object-tests/batch/many-0131.txt", + "object-tests/batch/many-0132.txt", + "object-tests/batch/many-0133.txt", + "object-tests/batch/many-0134.txt", + "object-tests/batch/many-0135.txt", + "object-tests/batch/many-0136.txt", + "object-tests/batch/many-0137.txt", + "object-tests/batch/many-0138.txt", + "object-tests/batch/many-0139.txt", + "object-tests/batch/many-0140.txt", + "object-tests/batch/many-0141.txt", + "object-tests/batch/many-0142.txt", + "object-tests/batch/many-0143.txt", + "object-tests/batch/many-0144.txt", + "object-tests/batch/many-0145.txt", + "object-tests/batch/many-0146.txt", + "object-tests/batch/many-0147.txt", + "object-tests/batch/many-0148.txt", + "object-tests/batch/many-0149.txt", + "object-tests/batch/many-0150.txt", + "object-tests/batch/many-0151.txt", + "object-tests/batch/many-0152.txt", + "object-tests/batch/many-0153.txt", + "object-tests/batch/many-0154.txt", + "object-tests/batch/many-0155.txt", + "object-tests/batch/many-0156.txt", + "object-tests/batch/many-0157.txt", + "object-tests/batch/many-0158.txt", + "object-tests/batch/many-0159.txt", + "object-tests/batch/many-0160.txt", + "object-tests/batch/many-0161.txt", + "object-tests/batch/many-0162.txt", + "object-tests/batch/many-0163.txt", + "object-tests/batch/many-0164.txt", + "object-tests/batch/many-0165.txt", + "object-tests/batch/many-0166.txt", + "object-tests/batch/many-0167.txt", + "object-tests/batch/many-0168.txt", + "object-tests/batch/many-0169.txt", + "object-tests/batch/many-0170.txt", + "object-tests/batch/many-0171.txt", + "object-tests/batch/many-0172.txt", + "object-tests/batch/many-0173.txt", + "object-tests/batch/many-0174.txt", + "object-tests/batch/many-0175.txt", + "object-tests/batch/many-0176.txt", + "object-tests/batch/many-0177.txt", + "object-tests/batch/many-0178.txt", + "object-tests/batch/many-0179.txt", + "object-tests/batch/many-0180.txt", + "object-tests/batch/many-0181.txt", + "object-tests/batch/many-0182.txt", + "object-tests/batch/many-0183.txt", + "object-tests/batch/many-0184.txt", + "object-tests/batch/many-0185.txt", + "object-tests/batch/many-0186.txt", + "object-tests/batch/many-0187.txt", + "object-tests/batch/many-0188.txt", + "object-tests/batch/many-0189.txt", + "object-tests/batch/many-0190.txt", + "object-tests/batch/many-0191.txt", + "object-tests/batch/many-0192.txt", + "object-tests/batch/many-0193.txt", + "object-tests/batch/many-0194.txt", + "object-tests/batch/many-0195.txt", + "object-tests/batch/many-0196.txt", + "object-tests/batch/many-0197.txt", + "object-tests/batch/many-0198.txt", + "object-tests/batch/many-0199.txt", + "object-tests/batch/many-0200.txt", + "object-tests/batch/many-0201.txt", + "object-tests/batch/many-0202.txt", + "object-tests/batch/many-0203.txt", + "object-tests/batch/many-0204.txt", + "object-tests/batch/many-0205.txt", + "object-tests/batch/many-0206.txt", + "object-tests/batch/many-0207.txt", + "object-tests/batch/many-0208.txt", + "object-tests/batch/many-0209.txt", + "object-tests/batch/many-0210.txt", + "object-tests/batch/many-0211.txt", + "object-tests/batch/many-0212.txt", + "object-tests/batch/many-0213.txt", + "object-tests/batch/many-0214.txt", + "object-tests/batch/many-0215.txt", + "object-tests/batch/many-0216.txt", + "object-tests/batch/many-0217.txt", + "object-tests/batch/many-0218.txt", + "object-tests/batch/many-0219.txt", + "object-tests/batch/many-0220.txt", + "object-tests/batch/many-0221.txt", + "object-tests/batch/many-0222.txt", + "object-tests/batch/many-0223.txt", + "object-tests/batch/many-0224.txt", + "object-tests/batch/many-0225.txt", + "object-tests/batch/many-0226.txt", + "object-tests/batch/many-0227.txt", + "object-tests/batch/many-0228.txt", + "object-tests/batch/many-0229.txt", + "object-tests/batch/many-0230.txt", + "object-tests/batch/many-0231.txt", + "object-tests/batch/many-0232.txt", + "object-tests/batch/many-0233.txt", + "object-tests/batch/many-0234.txt", + "object-tests/batch/many-0235.txt", + "object-tests/batch/many-0236.txt", + "object-tests/batch/many-0237.txt", + "object-tests/batch/many-0238.txt", + "object-tests/batch/many-0239.txt", + "object-tests/batch/many-0240.txt", + "object-tests/batch/many-0241.txt", + "object-tests/batch/many-0242.txt", + "object-tests/batch/many-0243.txt", + "object-tests/batch/many-0244.txt", + "object-tests/batch/many-0245.txt", + "object-tests/batch/many-0246.txt", + "object-tests/batch/many-0247.txt", + "object-tests/batch/many-0248.txt", + "object-tests/batch/many-0249.txt", + "object-tests/batch/many-0250.txt", + "object-tests/batch/many-0251.txt", + "object-tests/batch/many-0252.txt", + "object-tests/batch/many-0253.txt", + "object-tests/batch/many-0254.txt", + "object-tests/batch/many-0255.txt" + ], + "op": "delete_many" }, "exchanges": [ { @@ -4992,7 +6390,7 @@ "optional": false, "rule": { "is": "equal", - "value": "DELETE" + "value": "POST" } }, { @@ -5000,106 +6398,1064 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/snapshots/object.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/query/snapshot", - "optional": false, - "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.8085866Z" + "value": "/fixture" } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 202, - "headers": { - "date": { - "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" }, - "body": { - "encoding": "base64", - "data": "" - } - } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - } - ], - "refusal": null - }, - { - "id": "operations/azure/delete-snapshots-only", - "profile": "azure", - "lane": "core", - "purpose": "delete snapshots only", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "key": "object-tests/snapshots-only/object.txt", - "op": "delete", - "snapshots": "only" - }, - "exchanges": [ - { - "alternatives": [ - { - "request": [ { - "at": "/method", + "at": "/headers/content-type", "optional": false, "rule": { - "is": "equal", - "value": "DELETE" + "is": "matches", + "pattern": "multipart/mixed; boundary=batch_[0-9A-Za-z-]+" } }, { - "at": "/path", + "at": "/query/restype", "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/snapshots-only/object.txt" + "value": "container" } }, { - "at": "/body_base64", + "at": "/query/comp", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "batch" } }, { - "at": "/headers/x-ms-delete-snapshots", - "optional": false, - "rule": { - "is": "equal", - "value": "only" + "at": "", + "optional": false, + "rule": { + "is": "blob_batch", + "subrequests": [ + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0000.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0001.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0002.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0003.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0004.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0005.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0006.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0007.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0008.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0009.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0010.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0011.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0012.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0013.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0014.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0015.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0016.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0017.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0018.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0019.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0020.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0021.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0022.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0023.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0024.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0025.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0026.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0027.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0028.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0029.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0030.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0031.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0032.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0033.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0034.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0035.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0036.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0037.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0038.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0039.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0040.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0041.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0042.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0043.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0044.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0045.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0046.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0047.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0048.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0049.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0050.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0051.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0052.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0053.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0054.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0055.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0056.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0057.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0058.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0059.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0060.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0061.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0062.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0063.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0064.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0065.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0066.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0067.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0068.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0069.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0070.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0071.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0072.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0073.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0074.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0075.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0076.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0077.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0078.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0079.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0080.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0081.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0082.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0083.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0084.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0085.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0086.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0087.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0088.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0089.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0090.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0091.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0092.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0093.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0094.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0095.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0096.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0097.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0098.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0099.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0100.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0101.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0102.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0103.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0104.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0105.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0106.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0107.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0108.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0109.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0110.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0111.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0112.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0113.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0114.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0115.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0116.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0117.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0118.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0119.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0120.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0121.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0122.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0123.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0124.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0125.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0126.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0127.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0128.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0129.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0130.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0131.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0132.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0133.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0134.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0135.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0136.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0137.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0138.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0139.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0140.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0141.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0142.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0143.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0144.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0145.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0146.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0147.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0148.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0149.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0150.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0151.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0152.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0153.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0154.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0155.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0156.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0157.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0158.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0159.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0160.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0161.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0162.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0163.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0164.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0165.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0166.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0167.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0168.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0169.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0170.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0171.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0172.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0173.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0174.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0175.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0176.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0177.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0178.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0179.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0180.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0181.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0182.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0183.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0184.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0185.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0186.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0187.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0188.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0189.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0190.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0191.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0192.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0193.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0194.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0195.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0196.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0197.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0198.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0199.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0200.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0201.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0202.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0203.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0204.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0205.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0206.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0207.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0208.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0209.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0210.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0211.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0212.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0213.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0214.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0215.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0216.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0217.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0218.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0219.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0220.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0221.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0222.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0223.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0224.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0225.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0226.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0227.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0228.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0229.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0230.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0231.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0232.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0233.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0234.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0235.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0236.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0237.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0238.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0239.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0240.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0241.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0242.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0243.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0244.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0245.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0246.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0247.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0248.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0249.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0250.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0251.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0252.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0253.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0254.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0255.txt" + } + ] } } ], @@ -5108,595 +7464,16 @@ "response": { "status": 202, "headers": { + "content-type": "multipart/mixed; boundary=batchresponse_fixture", "date": { "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" - }, - "body": { - "encoding": "base64", - "data": "" - } - } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - } - ], - "refusal": null - }, - { - "id": "operations/azure/delete-unauthenticated", - "profile": "azure", - "lane": "core", - "purpose": "Report the service authorization error for this operation; signature acceptance is tested separately.", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "key": "object-tests/remove/absent.txt", - "op": "delete" - }, - "exchanges": [ - { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "DELETE" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/remove/absent.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 401, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - }, - "x-ms-error-code": "InvalidAuthenticationInfo" }, "body": { "encoding": "utf8", - "data": "InvalidAuthenticationInfoFixture error" - } - } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 401 - } - }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "equal", - "value": "InvalidAuthenticationInfo" - } - } - ], - "refusal": null - }, - { - "id": "operations/azure/delete-versioned-object", - "profile": "azure", - "lane": "core", - "purpose": "delete versioned object", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "key": "object-tests/versions-mtydohr2/deleted.txt", - "op": "delete" - }, - "exchanges": [ - { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "DELETE" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/versions-mtydohr2/deleted.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 202, - "headers": { - "date": { - "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" - }, - "body": { - "encoding": "base64", - "data": "" - } - } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - } - ], - "refusal": null - }, - { - "id": "operations/azure/delete-with-snapshots", - "profile": "azure", - "lane": "core", - "purpose": "delete with snapshots", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "key": "object-tests/snapshots-all/object.txt", - "op": "delete", - "snapshots": "include" - }, - "exchanges": [ - { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "DELETE" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/snapshots-all/object.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/headers/x-ms-delete-snapshots", - "optional": false, - "rule": { - "is": "equal", - "value": "include" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 202, - "headers": { - "date": { - "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" - }, - "body": { - "encoding": "base64", - "data": "" - } - } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - } - ], - "refusal": null - }, - { - "id": "operations/azure/get-after-snapshots-deleted", - "profile": "azure", - "lane": "core", - "purpose": "get after snapshots deleted", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "key": "object-tests/snapshots-only/object.txt", - "op": "get" - }, - "exchanges": [ - { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/snapshots-only/object.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-md5": "TYtghPPRZ7dsrGaiKpG+Ag==", - "content-type": "application/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-44077842caa7\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true", - "x-ms-version-id": "2024-01-01T00:00:00.6170785Z" - }, - "body": { - "encoding": "base64", - "data": "a2VwdA==" - } - } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-44077842caa7\"" - } - }, - { - "at": "/value/size", - "optional": false, - "rule": { - "is": "equal", - "value": 4 - } - }, - { - "at": "/value/content_type", - "optional": false, - "rule": { - "is": "equal", - "value": "application/octet-stream" - } - }, - { - "at": "/value/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "TYtghPPRZ7dsrGaiKpG+Ag==" - } - }, - { - "at": "/value/version", - "optional": false, - "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.6170785Z" - } - }, - { - "at": "/value/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "a2VwdA==" - } - } - ], - "refusal": null - }, - { - "id": "operations/azure/get-committed-nothing", - "profile": "azure", - "lane": "core", - "purpose": "get committed nothing", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "key": "object-tests/multipart/empty.bin", - "op": "get" - }, - "exchanges": [ - { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/multipart/empty.bin" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-type": "application/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-265df060a55b\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true", - "x-ms-version-id": "2024-01-01T00:00:00.6728312Z" - }, - "body": { - "encoding": "base64", - "data": "" - } - } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-265df060a55b\"" - } - }, - { - "at": "/value/size", - "optional": false, - "rule": { - "is": "equal", - "value": 0 - } - }, - { - "at": "/value/content_type", - "optional": false, - "rule": { - "is": "equal", - "value": "application/octet-stream" - } - }, - { - "at": "/value/version", - "optional": false, - "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.6728312Z" - } - }, - { - "at": "/value/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - } - ], - "refusal": null - }, - { - "id": "operations/azure/get-committed-over-whole-object", - "profile": "azure", - "lane": "core", - "purpose": "get committed over whole object", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "key": "object-tests/multipart/over.bin", - "op": "get" - }, - "exchanges": [ - { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/multipart/over.bin" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-type": "application/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-d09c03f972e2\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true", - "x-ms-version-id": "2024-01-01T00:00:00.8049977Z" + "data": "--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 0\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 1\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 2\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 3\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 4\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 5\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 6\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 7\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 8\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 9\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 10\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 11\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 12\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 13\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 14\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 15\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 16\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 17\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 18\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 19\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 20\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 21\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 22\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 23\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 24\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 25\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 26\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 27\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 28\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 29\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 30\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 31\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 32\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 33\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 34\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 35\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 36\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 37\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 38\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 39\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 40\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 41\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 42\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 43\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 44\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 45\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 46\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 47\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 48\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 49\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 50\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 51\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 52\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 53\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 54\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 55\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 56\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 57\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 58\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 59\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 60\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 61\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 62\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 63\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 64\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 65\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 66\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 67\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 68\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 69\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 70\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 71\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 72\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 73\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 74\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 75\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 76\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 77\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 78\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 79\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 80\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 81\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 82\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 83\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 84\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 85\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 86\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 87\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 88\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 89\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 90\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 91\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 92\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 93\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 94\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 95\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 96\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 97\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 98\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 99\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 100\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 101\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 102\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 103\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 104\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 105\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 106\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 107\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 108\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 109\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 110\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 111\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 112\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 113\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 114\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 115\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 116\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 117\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 118\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 119\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 120\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 121\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 122\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 123\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 124\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 125\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 126\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 127\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 128\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 129\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 130\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 131\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 132\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 133\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 134\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 135\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 136\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 137\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 138\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 139\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 140\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 141\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 142\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 143\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 144\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 145\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 146\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 147\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 148\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 149\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 150\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 151\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 152\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 153\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 154\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 155\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 156\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 157\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 158\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 159\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 160\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 161\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 162\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 163\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 164\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 165\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 166\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 167\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 168\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 169\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 170\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 171\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 172\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 173\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 174\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 175\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 176\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 177\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 178\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 179\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 180\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 181\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 182\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 183\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 184\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 185\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 186\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 187\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 188\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 189\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 190\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 191\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 192\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 193\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 194\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 195\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 196\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 197\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 198\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 199\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 200\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 201\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 202\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 203\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 204\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 205\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 206\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 207\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 208\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 209\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 210\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 211\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 212\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 213\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 214\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 215\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 216\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 217\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 218\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 219\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 220\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 221\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 222\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 223\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 224\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 225\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 226\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 227\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 228\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 229\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 230\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 231\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 232\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 233\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 234\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 235\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 236\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 237\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 238\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 239\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 240\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 241\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 242\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 243\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 244\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 245\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 246\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 247\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 248\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 249\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 250\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 251\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 252\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 253\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 254\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 255\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture--" }, - "body": { - "encoding": "base64", - "data": "YmxvY2s=" - } + "framing": "chunked" } } ] @@ -5712,111 +7489,26771 @@ } }, { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-d09c03f972e2\"" - } - }, - { - "at": "/value/size", - "optional": false, - "rule": { - "is": "equal", - "value": 5 - } - }, - { - "at": "/value/content_type", - "optional": false, - "rule": { - "is": "equal", - "value": "application/octet-stream" - } - }, - { - "at": "/value/version", + "at": "/value/deleted", "optional": false, "rule": { "is": "equal", - "value": "2024-01-01T00:00:00.8049977Z" + "value": [] } }, { - "at": "/value/body_base64", + "at": "/value/errors", "optional": false, "rule": { "is": "equal", - "value": "YmxvY2s=" - } - } - ], - "refusal": null - }, - { - "id": "operations/azure/get-committed", - "profile": "azure", - "lane": "core", - "purpose": "get committed", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "key": "object-tests/multipart/committed.bin", - "op": "get" - }, - "exchanges": [ - { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/multipart/committed.bin" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-type": "application/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-be8efdb79010\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true", - "x-ms-version-id": "2024-01-01T00:00:00.7848460Z" - }, - "body": { - "encoding": "base64", - "data": "Zmlyc3RzZWNvbmQ=" + "value": [ + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0000.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0001.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0002.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0003.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0004.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0005.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0006.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0007.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0008.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0009.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0010.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0011.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0012.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0013.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0014.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0015.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0016.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0017.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0018.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0019.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0020.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0021.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0022.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0023.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0024.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0025.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0026.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0027.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0028.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0029.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0030.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0031.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0032.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0033.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0034.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0035.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0036.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0037.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0038.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0039.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0040.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0041.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0042.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0043.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0044.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0045.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0046.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0047.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0048.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0049.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0050.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0051.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0052.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0053.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0054.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0055.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0056.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0057.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0058.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0059.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0060.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0061.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0062.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0063.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0064.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0065.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0066.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0067.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0068.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0069.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0070.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0071.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0072.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0073.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0074.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0075.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0076.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0077.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0078.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0079.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0080.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0081.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0082.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0083.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0084.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0085.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0086.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0087.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0088.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0089.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0090.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0091.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0092.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0093.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0094.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0095.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0096.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0097.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0098.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0099.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0100.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0101.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0102.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0103.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0104.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0105.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0106.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0107.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0108.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0109.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0110.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0111.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0112.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0113.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0114.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0115.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0116.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0117.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0118.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0119.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0120.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0121.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0122.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0123.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0124.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0125.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0126.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0127.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0128.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0129.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0130.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0131.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0132.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0133.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0134.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0135.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0136.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0137.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0138.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0139.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0140.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0141.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0142.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0143.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0144.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0145.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0146.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0147.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0148.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0149.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0150.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0151.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0152.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0153.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0154.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0155.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0156.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0157.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0158.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0159.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0160.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0161.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0162.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0163.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0164.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0165.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0166.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0167.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0168.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0169.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0170.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0171.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0172.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0173.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0174.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0175.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0176.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0177.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0178.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0179.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0180.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0181.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0182.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0183.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0184.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0185.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0186.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0187.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0188.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0189.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0190.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0191.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0192.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0193.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0194.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0195.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0196.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0197.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0198.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0199.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0200.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0201.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0202.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0203.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0204.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0205.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0206.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0207.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0208.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0209.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0210.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0211.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0212.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0213.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0214.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0215.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0216.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0217.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0218.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0219.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0220.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0221.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0222.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0223.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0224.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0225.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0226.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0227.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0228.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0229.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0230.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0231.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0232.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0233.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0234.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0235.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0236.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0237.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0238.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0239.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0240.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0241.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0242.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0243.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0244.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0245.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0246.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0247.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0248.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0249.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0250.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0251.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0252.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0253.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0254.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0255.txt", + "status": 404 + } + ] + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/delete-many-257", + "profile": "azure", + "lane": "core", + "purpose": "Report a batch of 257 deletions, one more than Azure takes, as an error. Azure answers 202 with one part and no Content-ID, 400 ExceedsMaxBatchRequestCount, for the whole batch, not one part per deletion. A client may refuse it before sending", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/blob-batch" + ], + "call": { + "keys": [ + "object-tests/batch/many-0000.txt", + "object-tests/batch/many-0001.txt", + "object-tests/batch/many-0002.txt", + "object-tests/batch/many-0003.txt", + "object-tests/batch/many-0004.txt", + "object-tests/batch/many-0005.txt", + "object-tests/batch/many-0006.txt", + "object-tests/batch/many-0007.txt", + "object-tests/batch/many-0008.txt", + "object-tests/batch/many-0009.txt", + "object-tests/batch/many-0010.txt", + "object-tests/batch/many-0011.txt", + "object-tests/batch/many-0012.txt", + "object-tests/batch/many-0013.txt", + "object-tests/batch/many-0014.txt", + "object-tests/batch/many-0015.txt", + "object-tests/batch/many-0016.txt", + "object-tests/batch/many-0017.txt", + "object-tests/batch/many-0018.txt", + "object-tests/batch/many-0019.txt", + "object-tests/batch/many-0020.txt", + "object-tests/batch/many-0021.txt", + "object-tests/batch/many-0022.txt", + "object-tests/batch/many-0023.txt", + "object-tests/batch/many-0024.txt", + "object-tests/batch/many-0025.txt", + "object-tests/batch/many-0026.txt", + "object-tests/batch/many-0027.txt", + "object-tests/batch/many-0028.txt", + "object-tests/batch/many-0029.txt", + "object-tests/batch/many-0030.txt", + "object-tests/batch/many-0031.txt", + "object-tests/batch/many-0032.txt", + "object-tests/batch/many-0033.txt", + "object-tests/batch/many-0034.txt", + "object-tests/batch/many-0035.txt", + "object-tests/batch/many-0036.txt", + "object-tests/batch/many-0037.txt", + "object-tests/batch/many-0038.txt", + "object-tests/batch/many-0039.txt", + "object-tests/batch/many-0040.txt", + "object-tests/batch/many-0041.txt", + "object-tests/batch/many-0042.txt", + "object-tests/batch/many-0043.txt", + "object-tests/batch/many-0044.txt", + "object-tests/batch/many-0045.txt", + "object-tests/batch/many-0046.txt", + "object-tests/batch/many-0047.txt", + "object-tests/batch/many-0048.txt", + "object-tests/batch/many-0049.txt", + "object-tests/batch/many-0050.txt", + "object-tests/batch/many-0051.txt", + "object-tests/batch/many-0052.txt", + "object-tests/batch/many-0053.txt", + "object-tests/batch/many-0054.txt", + "object-tests/batch/many-0055.txt", + "object-tests/batch/many-0056.txt", + "object-tests/batch/many-0057.txt", + "object-tests/batch/many-0058.txt", + "object-tests/batch/many-0059.txt", + "object-tests/batch/many-0060.txt", + "object-tests/batch/many-0061.txt", + "object-tests/batch/many-0062.txt", + "object-tests/batch/many-0063.txt", + "object-tests/batch/many-0064.txt", + "object-tests/batch/many-0065.txt", + "object-tests/batch/many-0066.txt", + "object-tests/batch/many-0067.txt", + "object-tests/batch/many-0068.txt", + "object-tests/batch/many-0069.txt", + "object-tests/batch/many-0070.txt", + "object-tests/batch/many-0071.txt", + "object-tests/batch/many-0072.txt", + "object-tests/batch/many-0073.txt", + "object-tests/batch/many-0074.txt", + "object-tests/batch/many-0075.txt", + "object-tests/batch/many-0076.txt", + "object-tests/batch/many-0077.txt", + "object-tests/batch/many-0078.txt", + "object-tests/batch/many-0079.txt", + "object-tests/batch/many-0080.txt", + "object-tests/batch/many-0081.txt", + "object-tests/batch/many-0082.txt", + "object-tests/batch/many-0083.txt", + "object-tests/batch/many-0084.txt", + "object-tests/batch/many-0085.txt", + "object-tests/batch/many-0086.txt", + "object-tests/batch/many-0087.txt", + "object-tests/batch/many-0088.txt", + "object-tests/batch/many-0089.txt", + "object-tests/batch/many-0090.txt", + "object-tests/batch/many-0091.txt", + "object-tests/batch/many-0092.txt", + "object-tests/batch/many-0093.txt", + "object-tests/batch/many-0094.txt", + "object-tests/batch/many-0095.txt", + "object-tests/batch/many-0096.txt", + "object-tests/batch/many-0097.txt", + "object-tests/batch/many-0098.txt", + "object-tests/batch/many-0099.txt", + "object-tests/batch/many-0100.txt", + "object-tests/batch/many-0101.txt", + "object-tests/batch/many-0102.txt", + "object-tests/batch/many-0103.txt", + "object-tests/batch/many-0104.txt", + "object-tests/batch/many-0105.txt", + "object-tests/batch/many-0106.txt", + "object-tests/batch/many-0107.txt", + "object-tests/batch/many-0108.txt", + "object-tests/batch/many-0109.txt", + "object-tests/batch/many-0110.txt", + "object-tests/batch/many-0111.txt", + "object-tests/batch/many-0112.txt", + "object-tests/batch/many-0113.txt", + "object-tests/batch/many-0114.txt", + "object-tests/batch/many-0115.txt", + "object-tests/batch/many-0116.txt", + "object-tests/batch/many-0117.txt", + "object-tests/batch/many-0118.txt", + "object-tests/batch/many-0119.txt", + "object-tests/batch/many-0120.txt", + "object-tests/batch/many-0121.txt", + "object-tests/batch/many-0122.txt", + "object-tests/batch/many-0123.txt", + "object-tests/batch/many-0124.txt", + "object-tests/batch/many-0125.txt", + "object-tests/batch/many-0126.txt", + "object-tests/batch/many-0127.txt", + "object-tests/batch/many-0128.txt", + "object-tests/batch/many-0129.txt", + "object-tests/batch/many-0130.txt", + "object-tests/batch/many-0131.txt", + "object-tests/batch/many-0132.txt", + "object-tests/batch/many-0133.txt", + "object-tests/batch/many-0134.txt", + "object-tests/batch/many-0135.txt", + "object-tests/batch/many-0136.txt", + "object-tests/batch/many-0137.txt", + "object-tests/batch/many-0138.txt", + "object-tests/batch/many-0139.txt", + "object-tests/batch/many-0140.txt", + "object-tests/batch/many-0141.txt", + "object-tests/batch/many-0142.txt", + "object-tests/batch/many-0143.txt", + "object-tests/batch/many-0144.txt", + "object-tests/batch/many-0145.txt", + "object-tests/batch/many-0146.txt", + "object-tests/batch/many-0147.txt", + "object-tests/batch/many-0148.txt", + "object-tests/batch/many-0149.txt", + "object-tests/batch/many-0150.txt", + "object-tests/batch/many-0151.txt", + "object-tests/batch/many-0152.txt", + "object-tests/batch/many-0153.txt", + "object-tests/batch/many-0154.txt", + "object-tests/batch/many-0155.txt", + "object-tests/batch/many-0156.txt", + "object-tests/batch/many-0157.txt", + "object-tests/batch/many-0158.txt", + "object-tests/batch/many-0159.txt", + "object-tests/batch/many-0160.txt", + "object-tests/batch/many-0161.txt", + "object-tests/batch/many-0162.txt", + "object-tests/batch/many-0163.txt", + "object-tests/batch/many-0164.txt", + "object-tests/batch/many-0165.txt", + "object-tests/batch/many-0166.txt", + "object-tests/batch/many-0167.txt", + "object-tests/batch/many-0168.txt", + "object-tests/batch/many-0169.txt", + "object-tests/batch/many-0170.txt", + "object-tests/batch/many-0171.txt", + "object-tests/batch/many-0172.txt", + "object-tests/batch/many-0173.txt", + "object-tests/batch/many-0174.txt", + "object-tests/batch/many-0175.txt", + "object-tests/batch/many-0176.txt", + "object-tests/batch/many-0177.txt", + "object-tests/batch/many-0178.txt", + "object-tests/batch/many-0179.txt", + "object-tests/batch/many-0180.txt", + "object-tests/batch/many-0181.txt", + "object-tests/batch/many-0182.txt", + "object-tests/batch/many-0183.txt", + "object-tests/batch/many-0184.txt", + "object-tests/batch/many-0185.txt", + "object-tests/batch/many-0186.txt", + "object-tests/batch/many-0187.txt", + "object-tests/batch/many-0188.txt", + "object-tests/batch/many-0189.txt", + "object-tests/batch/many-0190.txt", + "object-tests/batch/many-0191.txt", + "object-tests/batch/many-0192.txt", + "object-tests/batch/many-0193.txt", + "object-tests/batch/many-0194.txt", + "object-tests/batch/many-0195.txt", + "object-tests/batch/many-0196.txt", + "object-tests/batch/many-0197.txt", + "object-tests/batch/many-0198.txt", + "object-tests/batch/many-0199.txt", + "object-tests/batch/many-0200.txt", + "object-tests/batch/many-0201.txt", + "object-tests/batch/many-0202.txt", + "object-tests/batch/many-0203.txt", + "object-tests/batch/many-0204.txt", + "object-tests/batch/many-0205.txt", + "object-tests/batch/many-0206.txt", + "object-tests/batch/many-0207.txt", + "object-tests/batch/many-0208.txt", + "object-tests/batch/many-0209.txt", + "object-tests/batch/many-0210.txt", + "object-tests/batch/many-0211.txt", + "object-tests/batch/many-0212.txt", + "object-tests/batch/many-0213.txt", + "object-tests/batch/many-0214.txt", + "object-tests/batch/many-0215.txt", + "object-tests/batch/many-0216.txt", + "object-tests/batch/many-0217.txt", + "object-tests/batch/many-0218.txt", + "object-tests/batch/many-0219.txt", + "object-tests/batch/many-0220.txt", + "object-tests/batch/many-0221.txt", + "object-tests/batch/many-0222.txt", + "object-tests/batch/many-0223.txt", + "object-tests/batch/many-0224.txt", + "object-tests/batch/many-0225.txt", + "object-tests/batch/many-0226.txt", + "object-tests/batch/many-0227.txt", + "object-tests/batch/many-0228.txt", + "object-tests/batch/many-0229.txt", + "object-tests/batch/many-0230.txt", + "object-tests/batch/many-0231.txt", + "object-tests/batch/many-0232.txt", + "object-tests/batch/many-0233.txt", + "object-tests/batch/many-0234.txt", + "object-tests/batch/many-0235.txt", + "object-tests/batch/many-0236.txt", + "object-tests/batch/many-0237.txt", + "object-tests/batch/many-0238.txt", + "object-tests/batch/many-0239.txt", + "object-tests/batch/many-0240.txt", + "object-tests/batch/many-0241.txt", + "object-tests/batch/many-0242.txt", + "object-tests/batch/many-0243.txt", + "object-tests/batch/many-0244.txt", + "object-tests/batch/many-0245.txt", + "object-tests/batch/many-0246.txt", + "object-tests/batch/many-0247.txt", + "object-tests/batch/many-0248.txt", + "object-tests/batch/many-0249.txt", + "object-tests/batch/many-0250.txt", + "object-tests/batch/many-0251.txt", + "object-tests/batch/many-0252.txt", + "object-tests/batch/many-0253.txt", + "object-tests/batch/many-0254.txt", + "object-tests/batch/many-0255.txt", + "object-tests/batch/many-0256.txt" + ], + "op": "delete_many" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "POST" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture" + } + }, + { + "at": "/headers/content-type", + "optional": false, + "rule": { + "is": "matches", + "pattern": "multipart/mixed; boundary=batch_[0-9A-Za-z-]+" + } + }, + { + "at": "/query/restype", + "optional": false, + "rule": { + "is": "equal", + "value": "container" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "batch" + } + }, + { + "at": "", + "optional": false, + "rule": { + "is": "blob_batch", + "subrequests": [ + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0000.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0001.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0002.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0003.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0004.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0005.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0006.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0007.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0008.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0009.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0010.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0011.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0012.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0013.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0014.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0015.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0016.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0017.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0018.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0019.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0020.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0021.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0022.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0023.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0024.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0025.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0026.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0027.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0028.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0029.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0030.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0031.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0032.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0033.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0034.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0035.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0036.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0037.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0038.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0039.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0040.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0041.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0042.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0043.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0044.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0045.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0046.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0047.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0048.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0049.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0050.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0051.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0052.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0053.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0054.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0055.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0056.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0057.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0058.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0059.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0060.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0061.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0062.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0063.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0064.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0065.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0066.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0067.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0068.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0069.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0070.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0071.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0072.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0073.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0074.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0075.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0076.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0077.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0078.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0079.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0080.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0081.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0082.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0083.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0084.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0085.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0086.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0087.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0088.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0089.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0090.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0091.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0092.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0093.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0094.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0095.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0096.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0097.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0098.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0099.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0100.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0101.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0102.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0103.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0104.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0105.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0106.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0107.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0108.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0109.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0110.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0111.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0112.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0113.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0114.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0115.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0116.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0117.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0118.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0119.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0120.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0121.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0122.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0123.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0124.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0125.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0126.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0127.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0128.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0129.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0130.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0131.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0132.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0133.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0134.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0135.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0136.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0137.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0138.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0139.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0140.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0141.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0142.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0143.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0144.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0145.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0146.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0147.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0148.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0149.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0150.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0151.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0152.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0153.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0154.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0155.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0156.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0157.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0158.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0159.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0160.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0161.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0162.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0163.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0164.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0165.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0166.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0167.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0168.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0169.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0170.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0171.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0172.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0173.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0174.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0175.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0176.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0177.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0178.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0179.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0180.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0181.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0182.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0183.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0184.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0185.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0186.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0187.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0188.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0189.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0190.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0191.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0192.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0193.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0194.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0195.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0196.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0197.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0198.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0199.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0200.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0201.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0202.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0203.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0204.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0205.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0206.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0207.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0208.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0209.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0210.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0211.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0212.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0213.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0214.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0215.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0216.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0217.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0218.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0219.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0220.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0221.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0222.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0223.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0224.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0225.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0226.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0227.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0228.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0229.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0230.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0231.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0232.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0233.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0234.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0235.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0236.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0237.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0238.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0239.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0240.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0241.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0242.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0243.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0244.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0245.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0246.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0247.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0248.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0249.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0250.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0251.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0252.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0253.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0254.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0255.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0256.txt" + } + ] + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 202, + "headers": { + "content-type": "multipart/mixed; boundary=batchresponse_fixture", + "date": { + "from": "now" + } + }, + "body": { + "encoding": "utf8", + "data": "--batchresponse_fixture\r\nContent-Type: application/http\r\n\r\nHTTP/1.1 400 The batch operation exceeds maximum number of allowed subrequests.\r\nx-ms-error-code: ExceedsMaxBatchRequestCount\r\nx-ms-request-id: fixture\r\nx-ms-version: 2023-11-03\r\nContent-Length: 125\r\nContent-Type: application/xml\r\n\r\nExceedsMaxBatchRequestCountFixture error\r\n--batchresponse_fixture--" + }, + "framing": "chunked" + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 400 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "ExceedsMaxBatchRequestCount" + } + } + ], + "refusal": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "refused" + } + }, + { + "at": "/kind", + "optional": false, + "rule": { + "is": "matches", + "pattern": ".+" + } + }, + { + "at": "/parameter", + "optional": false, + "rule": { + "is": "equal", + "value": "keys" + } + }, + { + "at": "/status", + "optional": true, + "rule": { + "is": "equal", + "value": 400 + } + }, + { + "at": "/code", + "optional": true, + "rule": { + "is": "equal", + "value": "ExceedsMaxBatchRequestCount" + } + } + ] + }, + { + "id": "operations/azure/delete-many-unauthenticated", + "profile": "azure", + "lane": "core", + "purpose": "Report a batch whose token Azure does not accept as one error for the whole batch, as Azure answers it, not as an answer per key", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/blob-batch" + ], + "call": { + "keys": [ + "object-tests/batch/a.txt", + "object-tests/batch/b.txt", + "object-tests/batch/absent.txt" + ], + "op": "delete_many" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "POST" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture" + } + }, + { + "at": "/headers/content-type", + "optional": false, + "rule": { + "is": "matches", + "pattern": "multipart/mixed; boundary=batch_[0-9A-Za-z-]+" + } + }, + { + "at": "/query/restype", + "optional": false, + "rule": { + "is": "equal", + "value": "container" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "batch" + } + }, + { + "at": "", + "optional": false, + "rule": { + "is": "blob_batch", + "subrequests": [ + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/a.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/b.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/absent.txt" + } + ] + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 401, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "InvalidAuthenticationInfo" + }, + "body": { + "encoding": "utf8", + "data": "InvalidAuthenticationInfoFixture error" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 401 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "InvalidAuthenticationInfo" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/delete-many-container-missing", + "profile": "azure", + "lane": "core", + "purpose": "Report a batch in a missing container, which Azure answers 202 with 404 ContainerNotFound for each deletion, as that error for each key and none deleted, or as one error of kind container_not_found", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/blob-batch" + ], + "call": { + "keys": [ + "object-tests/batch/a.txt", + "object-tests/batch/b.txt", + "object-tests/batch/absent.txt" + ], + "op": "delete_many" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "POST" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture" + } + }, + { + "at": "/headers/content-type", + "optional": false, + "rule": { + "is": "matches", + "pattern": "multipart/mixed; boundary=batch_[0-9A-Za-z-]+" + } + }, + { + "at": "/query/restype", + "optional": false, + "rule": { + "is": "equal", + "value": "container" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "batch" + } + }, + { + "at": "", + "optional": false, + "rule": { + "is": "blob_batch", + "subrequests": [ + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/a.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/b.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/absent.txt" + } + ] + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 202, + "headers": { + "content-type": "multipart/mixed; boundary=batchresponse_fixture", + "date": { + "from": "now" + } + }, + "body": { + "encoding": "utf8", + "data": "--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 0\r\n\r\nHTTP/1.1 404 The specified container does not exist.\r\nx-ms-error-code: ContainerNotFound\r\nx-ms-request-id: fixture\r\nx-ms-version: 2023-11-03\r\nContent-Length: 115\r\nContent-Type: application/xml\r\n\r\nContainerNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 1\r\n\r\nHTTP/1.1 404 The specified container does not exist.\r\nx-ms-error-code: ContainerNotFound\r\nx-ms-request-id: fixture\r\nx-ms-version: 2023-11-03\r\nContent-Length: 115\r\nContent-Type: application/xml\r\n\r\nContainerNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 2\r\n\r\nHTTP/1.1 404 The specified container does not exist.\r\nx-ms-error-code: ContainerNotFound\r\nx-ms-request-id: fixture\r\nx-ms-version: 2023-11-03\r\nContent-Length: 115\r\nContent-Type: application/xml\r\n\r\nContainerNotFoundFixture error\r\n--batchresponse_fixture--" + }, + "framing": "chunked" + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "one_of", + "values": [ + "ok", + "error" + ] + } + }, + { + "at": "/value/deleted", + "optional": true, + "rule": { + "is": "equal", + "value": [] + } + }, + { + "at": "/value/errors", + "optional": true, + "rule": { + "is": "equal", + "value": [ + { + "code": "ContainerNotFound", + "key": "object-tests/batch/a.txt", + "status": 404 + }, + { + "code": "ContainerNotFound", + "key": "object-tests/batch/b.txt", + "status": 404 + }, + { + "code": "ContainerNotFound", + "key": "object-tests/batch/absent.txt", + "status": 404 + } + ] + } + }, + { + "at": "/kind", + "optional": true, + "rule": { + "is": "equal", + "value": "container_not_found" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/delete-leased-if-match-without-lease-id", + "profile": "azure", + "lane": "core", + "purpose": "Refuse to delete a leased object whose If-Match holds but that names no lease ID", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/lease-blob" + ], + "call": { + "if_match": "\"fixture-etag\"", + "key": "object-tests/leases/object.txt", + "op": "delete" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "DELETE" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/leases/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/if-match", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-etag\"" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 412, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "LeaseIdMissing" + }, + "body": { + "encoding": "utf8", + "data": "LeaseIdMissingFixture error" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 412 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "LeaseIdMissing" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/delete-leased-without-lease-id", + "profile": "azure", + "lane": "core", + "purpose": "Refuse to delete a leased object without its lease ID", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/lease-blob" + ], + "call": { + "key": "object-tests/leases/object.txt", + "op": "delete" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "DELETE" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/leases/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 412, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "LeaseIdMissing" + }, + "body": { + "encoding": "utf8", + "data": "LeaseIdMissingFixture error" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 412 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "LeaseIdMissing" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/delete-server-busy", + "profile": "azure", + "lane": "core", + "purpose": "Report a 503 ServerBusy answer as an error, after at most 5 retries", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/common-rest-api-error-codes", + "https://learn.microsoft.com/en-us/rest/api/storageservices/blob-service-error-codes" + ], + "origin": "transient", + "call": { + "key": "object-tests/remove/present.txt", + "op": "delete" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "DELETE" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/remove/present.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 503, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "ServerBusy" + }, + "body": { + "encoding": "utf8", + "data": "ServerBusyThe server is currently unable to receive requests. Please retry your request." + } + } + } + ] + }, + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "DELETE" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/remove/present.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 503, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "ServerBusy" + }, + "body": { + "encoding": "utf8", + "data": "ServerBusyThe server is currently unable to receive requests. Please retry your request." + } + } + } + ], + "optional": true + }, + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "DELETE" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/remove/present.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 503, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "ServerBusy" + }, + "body": { + "encoding": "utf8", + "data": "ServerBusyThe server is currently unable to receive requests. Please retry your request." + } + } + } + ], + "optional": true + }, + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "DELETE" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/remove/present.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 503, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "ServerBusy" + }, + "body": { + "encoding": "utf8", + "data": "ServerBusyThe server is currently unable to receive requests. Please retry your request." + } + } + } + ], + "optional": true + }, + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "DELETE" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/remove/present.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 503, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "ServerBusy" + }, + "body": { + "encoding": "utf8", + "data": "ServerBusyThe server is currently unable to receive requests. Please retry your request." + } + } + } + ], + "optional": true + }, + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "DELETE" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/remove/present.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 503, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "ServerBusy" + }, + "body": { + "encoding": "utf8", + "data": "ServerBusyThe server is currently unable to receive requests. Please retry your request." + } + } + } + ], + "optional": true + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 503 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "ServerBusy" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/delete-if-unmodified-since-past", + "profile": "azure", + "lane": "core", + "purpose": "Refuse a delete with 412 when the object changed after If-Unmodified-Since", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "if_unmodified_since": "Sat, 01 Jan 2000 00:00:00 GMT", + "key": "object-tests/remove/present.txt", + "op": "delete" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "DELETE" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/remove/present.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/if-unmodified-since", + "optional": false, + "rule": { + "is": "equal", + "value": "Sat, 01 Jan 2000 00:00:00 GMT" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 412, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "ConditionNotMet" + }, + "body": { + "encoding": "utf8", + "data": "ConditionNotMetFixture error" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 412 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "ConditionNotMet" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/delete-container-missing", + "profile": "azure", + "lane": "core", + "purpose": "delete container missing. A client reports it as container_not_found: the bucket or container is absent, not the object", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "key": "object.txt", + "op": "delete" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "DELETE" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 404, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "ContainerNotFound" + }, + "body": { + "encoding": "utf8", + "data": "ContainerNotFoundFixture error" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 404 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "ContainerNotFound" + } + }, + { + "at": "/kind", + "optional": false, + "rule": { + "is": "equal", + "value": "container_not_found" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/delete-current-version", + "profile": "azure", + "lane": "core", + "purpose": "delete current version", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "key": "object-tests/versions-mtydohr2/object.txt", + "op": "delete", + "version": "2024-01-01T00:00:00.3326281Z" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "DELETE" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/versions-mtydohr2/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/versionid", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.3326281Z" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 403, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "OperationNotAllowedOnRootBlob" + }, + "body": { + "encoding": "utf8", + "data": "OperationNotAllowedOnRootBlobFixture error" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 403 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "OperationNotAllowedOnRootBlob" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/delete-if-match-current", + "profile": "azure", + "lane": "core", + "purpose": "delete if match current", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "if_match": "\"fixture-6898e7e8471f\"", + "key": "object-tests/remove/conditional.txt", + "op": "delete" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "DELETE" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/remove/conditional.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/if-match", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-6898e7e8471f\"" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 202, + "headers": { + "date": { + "from": "now" + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/delete-missing", + "profile": "azure", + "lane": "core", + "purpose": "delete missing. A client reports it as not_found: the object is absent", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "key": "object-tests/remove/absent.txt", + "op": "delete" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "DELETE" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/remove/absent.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 404, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "BlobNotFound" + }, + "body": { + "encoding": "utf8", + "data": "BlobNotFoundFixture error" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 404 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "BlobNotFound" + } + }, + { + "at": "/kind", + "optional": false, + "rule": { + "is": "equal", + "value": "not_found" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/delete-precondition-failed", + "profile": "azure", + "lane": "core", + "purpose": "delete precondition failed", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "if_match": "\"fixture-088e5dc109cf\"", + "key": "object-tests/remove/conditional.txt", + "op": "delete" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "DELETE" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/remove/conditional.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/if-match", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-088e5dc109cf\"" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 412, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "ConditionNotMet" + }, + "body": { + "encoding": "utf8", + "data": "ConditionNotMetFixture error" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 412 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "ConditionNotMet" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/delete-precondition-failed-code-in-body", + "profile": "azure", + "lane": "core", + "purpose": "delete precondition failed, with the error code only in the XML body", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp", + "https://learn.microsoft.com/en-us/rest/api/storageservices/common-rest-api-error-codes", + "https://learn.microsoft.com/en-us/rest/api/storageservices/blob-service-error-codes" + ], + "origin": "constructed", + "call": { + "if_match": "\"fixture-088e5dc109cf\"", + "key": "object-tests/remove/conditional.txt", + "op": "delete" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "DELETE" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/remove/conditional.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/if-match", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-088e5dc109cf\"" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 412, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + } + }, + "body": { + "encoding": "utf8", + "data": "ConditionNotMetFixture error" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 412 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "ConditionNotMet" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/delete-previous-version", + "profile": "azure", + "lane": "core", + "purpose": "delete previous version", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "key": "object-tests/versions-mtydohr2/object.txt", + "op": "delete", + "version": "2024-01-01T00:00:00.2318906Z" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "DELETE" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/versions-mtydohr2/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/versionid", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.2318906Z" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 403, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "OperationNotAllowedOnAutomaticSnapshot" + }, + "body": { + "encoding": "utf8", + "data": "OperationNotAllowedOnAutomaticSnapshotFixture error" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 403 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "OperationNotAllowedOnAutomaticSnapshot" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/delete-refused-for-snapshots", + "profile": "azure", + "lane": "core", + "purpose": "Report the service authorization error for this operation; signature acceptance is tested separately.", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "key": "object-tests/snapshots/object.txt", + "op": "delete" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "DELETE" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/snapshots/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 409, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "SnapshotsPresent" + }, + "body": { + "encoding": "utf8", + "data": "SnapshotsPresentFixture error" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 409 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "SnapshotsPresent" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/delete-refused", + "profile": "azure", + "lane": "core", + "purpose": "Report the service authorization error for this operation; signature acceptance is tested separately.", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "key": "object.txt", + "op": "delete" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "DELETE" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 403, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "AuthorizationPermissionMismatch" + }, + "body": { + "encoding": "utf8", + "data": "AuthorizationPermissionMismatchFixture error" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 403 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "AuthorizationPermissionMismatch" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/delete-snapshot", + "profile": "azure", + "lane": "core", + "purpose": "delete snapshot", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "key": "object-tests/snapshots/object.txt", + "op": "delete", + "snapshot": "2024-01-01T00:00:00.8085866Z" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "DELETE" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/snapshots/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/snapshot", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.8085866Z" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 202, + "headers": { + "date": { + "from": "now" + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/delete-snapshots-only", + "profile": "azure", + "lane": "core", + "purpose": "delete snapshots only", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "key": "object-tests/snapshots-only/object.txt", + "op": "delete", + "snapshots": "only" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "DELETE" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/snapshots-only/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/x-ms-delete-snapshots", + "optional": false, + "rule": { + "is": "equal", + "value": "only" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 202, + "headers": { + "date": { + "from": "now" + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/delete-unauthenticated", + "profile": "azure", + "lane": "core", + "purpose": "Report the service authorization error for this operation; signature acceptance is tested separately.", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "key": "object-tests/remove/absent.txt", + "op": "delete" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "DELETE" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/remove/absent.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 401, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "InvalidAuthenticationInfo" + }, + "body": { + "encoding": "utf8", + "data": "InvalidAuthenticationInfoFixture error" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 401 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "InvalidAuthenticationInfo" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/delete-versioned-object", + "profile": "azure", + "lane": "core", + "purpose": "delete versioned object", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "key": "object-tests/versions-mtydohr2/deleted.txt", + "op": "delete" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "DELETE" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/versions-mtydohr2/deleted.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 202, + "headers": { + "date": { + "from": "now" + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/delete-with-snapshots", + "profile": "azure", + "lane": "core", + "purpose": "delete with snapshots", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "key": "object-tests/snapshots-all/object.txt", + "op": "delete", + "snapshots": "include" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "DELETE" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/snapshots-all/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/x-ms-delete-snapshots", + "optional": false, + "rule": { + "is": "equal", + "value": "include" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 202, + "headers": { + "date": { + "from": "now" + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/get-after-snapshots-deleted", + "profile": "azure", + "lane": "core", + "purpose": "get after snapshots deleted", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "key": "object-tests/snapshots-only/object.txt", + "op": "get" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/snapshots-only/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-md5": "TYtghPPRZ7dsrGaiKpG+Ag==", + "content-type": "application/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-44077842caa7\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.6170785Z" + }, + "body": { + "encoding": "base64", + "data": "a2VwdA==" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-44077842caa7\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 4 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "application/octet-stream" + } + }, + { + "at": "/value/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "TYtghPPRZ7dsrGaiKpG+Ag==" + } + }, + { + "at": "/value/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.6170785Z" + } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "a2VwdA==" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/get-committed-nothing", + "profile": "azure", + "lane": "core", + "purpose": "get committed nothing", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "key": "object-tests/multipart/empty.bin", + "op": "get" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/multipart/empty.bin" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-265df060a55b\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.6728312Z" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-265df060a55b\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 0 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "application/octet-stream" + } + }, + { + "at": "/value/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.6728312Z" + } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/get-committed-over-whole-object", + "profile": "azure", + "lane": "core", + "purpose": "get committed over whole object", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "key": "object-tests/multipart/over.bin", + "op": "get" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/multipart/over.bin" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-d09c03f972e2\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.8049977Z" + }, + "body": { + "encoding": "base64", + "data": "YmxvY2s=" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-d09c03f972e2\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 5 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "application/octet-stream" + } + }, + { + "at": "/value/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.8049977Z" + } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "YmxvY2s=" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/get-committed", + "profile": "azure", + "lane": "core", + "purpose": "get committed", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "key": "object-tests/multipart/committed.bin", + "op": "get" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/multipart/committed.bin" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-be8efdb79010\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.7848460Z" + }, + "body": { + "encoding": "base64", + "data": "Zmlyc3RzZWNvbmQ=" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-be8efdb79010\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 11 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "application/octet-stream" + } + }, + { + "at": "/value/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.7848460Z" + } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "Zmlyc3RzZWNvbmQ=" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/get-container-missing", + "profile": "azure", + "lane": "core", + "purpose": "get container missing. A client reports it as container_not_found: the bucket or container is absent, not the object", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "key": "object.txt", + "op": "get" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 404, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "ContainerNotFound" + }, + "body": { + "encoding": "utf8", + "data": "ContainerNotFoundFixture error" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 404 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "ContainerNotFound" + } + }, + { + "at": "/kind", + "optional": false, + "rule": { + "is": "equal", + "value": "container_not_found" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/head-container-missing", + "profile": "azure", + "lane": "core", + "purpose": "Report a HEAD of a blob in a missing container as container_not_found. Azure answers 404 without a body, but names ContainerNotFound in x-ms-error-code", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "key": "object.txt", + "op": "head" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "HEAD" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 404, + "headers": { + "date": { + "from": "now" + }, + "x-ms-error-code": "ContainerNotFound" + }, + "body": { + "encoding": "empty" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 404 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "ContainerNotFound" + } + }, + { + "at": "/kind", + "optional": false, + "rule": { + "is": "equal", + "value": "container_not_found" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/get-current-version-of-deleted-object", + "profile": "azure", + "lane": "core", + "purpose": "get current version of deleted object", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "key": "object-tests/versions-mtydohr2/deleted.txt", + "op": "get", + "version": "2024-01-01T00:00:00.3127057Z" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/versions-mtydohr2/deleted.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/versionid", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.3127057Z" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-md5": "4cgEiIU9hqudbez+MNiTDw==", + "content-type": "application/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-2fd2c5abfb9e\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.3127057Z" + }, + "body": { + "encoding": "base64", + "data": "ZzI=" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-2fd2c5abfb9e\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 2 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "application/octet-stream" + } + }, + { + "at": "/value/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "4cgEiIU9hqudbez+MNiTDw==" + } + }, + { + "at": "/value/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.3127057Z" + } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "ZzI=" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/get-current-version", + "profile": "azure", + "lane": "core", + "purpose": "get current version", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "key": "object-tests/versions-mtydohr2/object.txt", + "op": "get" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/versions-mtydohr2/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-md5": "GyZ2GcSBLMRu4oF0eITKUA==", + "content-type": "application/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-4768de772705\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.3326281Z" + }, + "body": { + "encoding": "base64", + "data": "djI=" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-4768de772705\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 2 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "application/octet-stream" + } + }, + { + "at": "/value/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "GyZ2GcSBLMRu4oF0eITKUA==" + } + }, + { + "at": "/value/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.3326281Z" + } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "djI=" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/get-deleted-snapshot", + "profile": "azure", + "lane": "core", + "purpose": "get deleted snapshot", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "key": "object-tests/snapshots/object.txt", + "op": "get", + "snapshot": "2024-01-01T00:00:00.8085866Z" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/snapshots/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/snapshot", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.8085866Z" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 404, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "BlobNotFound" + }, + "body": { + "encoding": "utf8", + "data": "BlobNotFoundFixture error" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 404 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "BlobNotFound" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/get-deleted-versioned-object", + "profile": "azure", + "lane": "core", + "purpose": "get deleted versioned object", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "key": "object-tests/versions-mtydohr2/deleted.txt", + "op": "get" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/versions-mtydohr2/deleted.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 404, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "BlobNotFound" + }, + "body": { + "encoding": "utf8", + "data": "BlobNotFoundFixture error" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 404 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "BlobNotFound" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/get-duplicate-id", + "profile": "azure", + "lane": "core", + "purpose": "get duplicate id", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "key": "object-tests/multipart/duplicate.bin", + "op": "get" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/multipart/duplicate.bin" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-3792ba4cfc79\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.6153683Z" + }, + "body": { + "encoding": "base64", + "data": "c2FtZXNhbWU=" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-3792ba4cfc79\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 8 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "application/octet-stream" + } + }, + { + "at": "/value/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.6153683Z" + } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "c2FtZXNhbWU=" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/get-empty", + "profile": "azure", + "lane": "core", + "purpose": "get empty", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "key": "object-tests/write/empty.bin", + "op": "get" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/write/empty.bin" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-md5": "1B2M2Y8AsgTpgAmY7PhCfg==", + "content-type": "application/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-ee13937a1c94\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.7573734Z" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-ee13937a1c94\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 0 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "application/octet-stream" + } + }, + { + "at": "/value/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "1B2M2Y8AsgTpgAmY7PhCfg==" + } + }, + { + "at": "/value/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.7573734Z" + } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/get-range-of-empty-object", + "profile": "azure", + "lane": "core", + "purpose": "Report a range read of an empty object as 416 InvalidRange: no range of it can be satisfied, not even its first byte", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "key": "object-tests/write/empty.bin", + "op": "get", + "range": { + "end": 1, + "start": 0 + } + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/write/empty.bin" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/range", + "optional": false, + "rule": { + "is": "equal", + "value": "bytes=0-0" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 416, + "headers": { + "content-range": "bytes */0", + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "InvalidRange" + }, + "body": { + "encoding": "utf8", + "data": "InvalidRangeFixture error" + } + } + }, + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/write/empty.bin" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/x-ms-range", + "optional": false, + "rule": { + "is": "equal", + "value": "bytes=0-0" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 416, + "headers": { + "content-range": "bytes */0", + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "InvalidRange" + }, + "body": { + "encoding": "utf8", + "data": "InvalidRangeFixture error" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 416 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "InvalidRange" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/get-if-match-current", + "profile": "azure", + "lane": "core", + "purpose": "get if match current", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "if_match": "\"fixture-16c44f0af72d\"", + "key": "object-tests/read/object.txt", + "op": "get" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/read/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/if-match", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-16c44f0af72d\"" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-md5": "H1VC0PNTmj+yaCRN4U931g==", + "content-type": "application/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-16c44f0af72d\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.7556278Z" + }, + "body": { + "encoding": "base64", + "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-16c44f0af72d\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 30 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "application/octet-stream" + } + }, + { + "at": "/value/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "H1VC0PNTmj+yaCRN4U931g==" + } + }, + { + "at": "/value/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.7556278Z" + } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/get-if-none-match-other", + "profile": "azure", + "lane": "core", + "purpose": "get if none match other", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "if_none_match": "\"fixture-088e5dc109cf\"", + "key": "object-tests/read/object.txt", + "op": "get" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/read/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/if-none-match", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-088e5dc109cf\"" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-md5": "H1VC0PNTmj+yaCRN4U931g==", + "content-type": "application/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-16c44f0af72d\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.7556278Z" + }, + "body": { + "encoding": "base64", + "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-16c44f0af72d\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 30 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "application/octet-stream" + } + }, + { + "at": "/value/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "H1VC0PNTmj+yaCRN4U931g==" + } + }, + { + "at": "/value/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.7556278Z" + } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/get-key-with-hash", + "profile": "azure", + "lane": "core", + "purpose": "get key with hash", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "key": "object-tests/names/hash#tag.txt", + "op": "get" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/names/hash#tag.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-md5": "xMpCOKC5I4INzFCab3WEmw==", + "content-type": "application/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-25c967601e53\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.9185620Z" + }, + "body": { + "encoding": "base64", + "data": "MQ==" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-25c967601e53\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "application/octet-stream" + } + }, + { + "at": "/value/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "xMpCOKC5I4INzFCab3WEmw==" + } + }, + { + "at": "/value/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.9185620Z" + } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MQ==" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/get-key-with-percent", + "profile": "azure", + "lane": "core", + "purpose": "get key with percent", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "key": "object-tests/names/percent%20.txt", + "op": "get" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/names/percent%20.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-md5": "xMpCOKC5I4INzFCab3WEmw==", + "content-type": "application/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-a88830604904\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.5807236Z" + }, + "body": { + "encoding": "base64", + "data": "MQ==" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-a88830604904\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "application/octet-stream" + } + }, + { + "at": "/value/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "xMpCOKC5I4INzFCab3WEmw==" + } + }, + { + "at": "/value/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.5807236Z" + } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MQ==" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/get-key-with-plus", + "profile": "azure", + "lane": "core", + "purpose": "get key with plus", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "key": "object-tests/names/plus+plus.txt", + "op": "get" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/names/plus+plus.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-md5": "xMpCOKC5I4INzFCab3WEmw==", + "content-type": "application/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-3d8677cc8a95\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.8000075Z" + }, + "body": { + "encoding": "base64", + "data": "MQ==" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-3d8677cc8a95\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "application/octet-stream" + } + }, + { + "at": "/value/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "xMpCOKC5I4INzFCab3WEmw==" + } + }, + { + "at": "/value/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.8000075Z" + } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MQ==" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/get-key-with-space", + "profile": "azure", + "lane": "core", + "purpose": "get key space", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/get-blob" + ], + "call": { + "key": "a b", + "op": "get" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/a b" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-request-id": "fixture-request-id", + "x-ms-request-server-encrypted": "true", + "x-ms-server-encrypted": "true", + "x-ms-version": "2023-11-03" + }, + "body": { + "encoding": "base64", + "data": "aGVsbG8=" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "aGVsbG8=" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/get-key-with-question", + "profile": "azure", + "lane": "core", + "purpose": "get key question", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/get-blob" + ], + "call": { + "key": "a?b", + "op": "get" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/a?b" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-request-id": "fixture-request-id", + "x-ms-request-server-encrypted": "true", + "x-ms-server-encrypted": "true", + "x-ms-version": "2023-11-03" + }, + "body": { + "encoding": "base64", + "data": "aGVsbG8=" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "aGVsbG8=" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/get-key-with-non-ascii", + "profile": "azure", + "lane": "core", + "purpose": "get key unicode", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/get-blob" + ], + "call": { + "key": "café/雪", + "op": "get" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/café/雪" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-request-id": "fixture-request-id", + "x-ms-request-server-encrypted": "true", + "x-ms-server-encrypted": "true", + "x-ms-version": "2023-11-03" + }, + "body": { + "encoding": "base64", + "data": "aGVsbG8=" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "aGVsbG8=" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/get-key-with-separators", + "profile": "azure", + "lane": "core", + "purpose": "get key separators", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/get-blob" + ], + "call": { + "key": "a//b/", + "op": "get" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/a//b/" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-request-id": "fixture-request-id", + "x-ms-request-server-encrypted": "true", + "x-ms-server-encrypted": "true", + "x-ms-version": "2023-11-03" + }, + "body": { + "encoding": "base64", + "data": "aGVsbG8=" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "aGVsbG8=" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/get-metadata-empty-value", + "profile": "azure", + "lane": "core", + "purpose": "get metadata empty value", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "key": "object-tests/metadata/empty-value.txt", + "op": "get" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/metadata/empty-value.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-md5": "xMpCOKC5I4INzFCab3WEmw==", + "content-type": "application/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-333d95b64818\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-meta-empty": "", + "x-ms-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.9480929Z" + }, + "body": { + "encoding": "base64", + "data": "MQ==" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-333d95b64818\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "application/octet-stream" + } + }, + { + "at": "/value/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "xMpCOKC5I4INzFCab3WEmw==" + } + }, + { + "at": "/value/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.9480929Z" + } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MQ==" + } + }, + { + "at": "/value/metadata", + "optional": false, + "rule": { + "is": "equal", + "value": { + "empty": "" + } + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/get-metadata-of-snapshot", + "profile": "azure", + "lane": "core", + "purpose": "get metadata of snapshot", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "key": "object-tests/metadata/snapshotted.txt", + "op": "get", + "snapshot": "2024-01-01T00:00:00.1300046Z" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/metadata/snapshotted.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/snapshot", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.1300046Z" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-md5": "xMpCOKC5I4INzFCab3WEmw==", + "content-type": "application/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-b4e7f3b8fb36\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-meta-name": "value", + "x-ms-server-encrypted": "true" + }, + "body": { + "encoding": "base64", + "data": "MQ==" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-b4e7f3b8fb36\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "application/octet-stream" + } + }, + { + "at": "/value/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "xMpCOKC5I4INzFCab3WEmw==" + } + }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MQ==" + } + }, + { + "at": "/value/metadata", + "optional": false, + "rule": { + "is": "equal", + "value": { + "name": "value" + } + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/get-metadata-replaced", + "profile": "azure", + "lane": "core", + "purpose": "get metadata replaced", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "key": "object-tests/metadata/replaced.txt", + "op": "get" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/metadata/replaced.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-md5": "yB5yjZ1ML2NvBn+JzBSGLA==", + "content-type": "application/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-37b036d8c13f\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.7487600Z" + }, + "body": { + "encoding": "base64", + "data": "Mg==" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-37b036d8c13f\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "application/octet-stream" + } + }, + { + "at": "/value/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "yB5yjZ1ML2NvBn+JzBSGLA==" + } + }, + { + "at": "/value/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.7487600Z" + } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "Mg==" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/get-metadata", + "profile": "azure", + "lane": "core", + "purpose": "get metadata", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "key": "object-tests/metadata/object.txt", + "op": "get" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/metadata/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-md5": "xMpCOKC5I4INzFCab3WEmw==", + "content-type": "application/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-9abbc5e374ca\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-meta-name": "value", + "x-ms-meta-second": "2", + "x-ms-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.7035036Z" + }, + "body": { + "encoding": "base64", + "data": "MQ==" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-9abbc5e374ca\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "application/octet-stream" + } + }, + { + "at": "/value/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "xMpCOKC5I4INzFCab3WEmw==" + } + }, + { + "at": "/value/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.7035036Z" + } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MQ==" + } + }, + { + "at": "/value/metadata", + "optional": false, + "rule": { + "is": "equal", + "value": { + "name": "value", + "second": "2" + } + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/get-metadata-ignores-unknown-headers", + "profile": "azure", + "lane": "core", + "purpose": "Surface user metadata; unknown headers must not become metadata.", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/get-blob" + ], + "call": { + "key": "object", + "op": "get" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-meta-author": "Ada", + "x-ms-request-id": "fixture-request-id", + "x-ms-request-server-encrypted": "true", + "x-ms-server-encrypted": "true", + "x-ms-version": "2023-11-03", + "x-unrelated": "not metadata" + }, + "body": { + "encoding": "base64", + "data": "aGVsbG8=" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "aGVsbG8=" + } + }, + { + "at": "/value/metadata", + "optional": false, + "rule": { + "is": "equal", + "value": { + "author": "Ada" + } + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/get-missing", + "profile": "azure", + "lane": "core", + "purpose": "get missing. A client reports it as not_found: the object is absent", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "key": "object-tests/read/absent.txt", + "op": "get" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/read/absent.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 404, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "BlobNotFound" + }, + "body": { + "encoding": "utf8", + "data": "BlobNotFoundFixture error" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 404 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "BlobNotFound" + } + }, + { + "at": "/kind", + "optional": false, + "rule": { + "is": "equal", + "value": "not_found" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/get-missing-code-in-body", + "profile": "azure", + "lane": "core", + "purpose": "get missing, with the error code only in the XML body. A client reports it as not_found: the object is absent", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp", + "https://learn.microsoft.com/en-us/rest/api/storageservices/common-rest-api-error-codes", + "https://learn.microsoft.com/en-us/rest/api/storageservices/blob-service-error-codes" + ], + "origin": "constructed", + "call": { + "key": "object-tests/read/absent.txt", + "op": "get" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/read/absent.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 404, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + } + }, + "body": { + "encoding": "utf8", + "data": "BlobNotFoundFixture error" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 404 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "BlobNotFound" + } + }, + { + "at": "/kind", + "optional": false, + "rule": { + "is": "equal", + "value": "not_found" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/get-not-modified", + "profile": "azure", + "lane": "core", + "purpose": "get not modified", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "if_none_match": "\"fixture-16c44f0af72d\"", + "key": "object-tests/read/object.txt", + "op": "get" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/read/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/if-none-match", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-16c44f0af72d\"" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 304, + "headers": { + "date": { + "from": "now" + }, + "x-ms-error-code": "ConditionNotMet" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 304 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "ConditionNotMet" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/get-precondition-failed", + "profile": "azure", + "lane": "core", + "purpose": "get precondition failed", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "if_match": "\"fixture-088e5dc109cf\"", + "key": "object-tests/read/object.txt", + "op": "get" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/read/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/if-match", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-088e5dc109cf\"" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 412, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "ConditionNotMet" + }, + "body": { + "encoding": "utf8", + "data": "ConditionNotMetFixture error" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 412 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "ConditionNotMet" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/get-previous-version-of-deleted-object", + "profile": "azure", + "lane": "core", + "purpose": "get previous version of deleted object", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "key": "object-tests/versions-mtydohr2/deleted.txt", + "op": "get", + "version": "2024-01-01T00:00:00.0160641Z" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/versions-mtydohr2/deleted.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/versionid", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.0160641Z" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-md5": "ASCk+RlqX5659SPzH5FNpw==", + "content-type": "application/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-3f26f9cf7bbe\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.0160641Z" + }, + "body": { + "encoding": "base64", + "data": "ZzE=" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-3f26f9cf7bbe\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 2 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "application/octet-stream" + } + }, + { + "at": "/value/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "ASCk+RlqX5659SPzH5FNpw==" + } + }, + { + "at": "/value/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.0160641Z" + } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "ZzE=" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/get-previous-version", + "profile": "azure", + "lane": "core", + "purpose": "get previous version", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "key": "object-tests/versions-mtydohr2/object.txt", + "op": "get", + "version": "2024-01-01T00:00:00.2318906Z" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/versions-mtydohr2/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/versionid", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.2318906Z" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-md5": "ZlTHNMyrj0QP8IJetEPcfw==", + "content-type": "application/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-5769a0807b46\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.2318906Z" + }, + "body": { + "encoding": "base64", + "data": "djE=" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-5769a0807b46\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 2 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "application/octet-stream" + } + }, + { + "at": "/value/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "ZlTHNMyrj0QP8IJetEPcfw==" + } + }, + { + "at": "/value/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.2318906Z" + } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "djE=" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/get-range-inverted", + "profile": "azure", + "lane": "core", + "purpose": "get range inverted", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "key": "object-tests/read/object.txt", + "op": "get", + "range": { + "end": 2, + "start": 6 + } + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/read/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/range", + "optional": false, + "rule": { + "is": "equal", + "value": "bytes=6-1" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-md5": "H1VC0PNTmj+yaCRN4U931g==", + "content-type": "application/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-16c44f0af72d\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.7556278Z" + }, + "body": { + "encoding": "base64", + "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + } + } + }, + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/read/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/x-ms-range", + "optional": false, + "rule": { + "is": "equal", + "value": "bytes=6-1" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-md5": "H1VC0PNTmj+yaCRN4U931g==", + "content-type": "application/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-16c44f0af72d\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.7556278Z" + }, + "body": { + "encoding": "base64", + "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-16c44f0af72d\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 30 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "application/octet-stream" + } + }, + { + "at": "/value/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "H1VC0PNTmj+yaCRN4U931g==" + } + }, + { + "at": "/value/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.7556278Z" + } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + } + } + ], + "refusal": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "refused" + } + }, + { + "at": "/kind", + "optional": false, + "rule": { + "is": "matches", + "pattern": ".+" + } + }, + { + "at": "/parameter", + "optional": false, + "rule": { + "is": "equal", + "value": "range" + } + } + ], + "decline_permitted": true + }, + { + "id": "operations/azure/get-range-empty", + "profile": "azure", + "lane": "core", + "purpose": "Read a range of no bytes, whose start equals its end. HTTP has no form for it: bytes=5-4 is inverted, and the service ignores it and sends the whole object. A client may refuse it instead", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "key": "object-tests/read/object.txt", + "op": "get", + "range": { + "end": 5, + "start": 5 + } + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/read/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/range", + "optional": false, + "rule": { + "is": "equal", + "value": "bytes=5-4" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-md5": "H1VC0PNTmj+yaCRN4U931g==", + "content-type": "application/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-16c44f0af72d\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.7556278Z" + }, + "body": { + "encoding": "base64", + "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + } + } + }, + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/read/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/x-ms-range", + "optional": false, + "rule": { + "is": "equal", + "value": "bytes=5-4" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-md5": "H1VC0PNTmj+yaCRN4U931g==", + "content-type": "application/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-16c44f0af72d\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.7556278Z" + }, + "body": { + "encoding": "base64", + "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-16c44f0af72d\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 30 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "application/octet-stream" + } + }, + { + "at": "/value/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "H1VC0PNTmj+yaCRN4U931g==" + } + }, + { + "at": "/value/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.7556278Z" + } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + } + } + ], + "refusal": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "refused" + } + }, + { + "at": "/kind", + "optional": false, + "rule": { + "is": "matches", + "pattern": ".+" + } + }, + { + "at": "/parameter", + "optional": false, + "rule": { + "is": "equal", + "value": "range" + } + } + ], + "decline_permitted": true + }, + { + "id": "operations/azure/get-range-not-satisfiable", + "profile": "azure", + "lane": "core", + "purpose": "get range not satisfiable", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "key": "object-tests/read/object.txt", + "op": "get", + "range": { + "start": 40 + } + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/read/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/range", + "optional": false, + "rule": { + "is": "equal", + "value": "bytes=40-" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 416, + "headers": { + "content-range": "bytes */30", + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "InvalidRange" + }, + "body": { + "encoding": "utf8", + "data": "InvalidRangeFixture error" + } + } + }, + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/read/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/x-ms-range", + "optional": false, + "rule": { + "is": "equal", + "value": "bytes=40-" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 416, + "headers": { + "content-range": "bytes */30", + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "InvalidRange" + }, + "body": { + "encoding": "utf8", + "data": "InvalidRangeFixture error" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 416 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "InvalidRange" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/get-range-past-the-end", + "profile": "azure", + "lane": "core", + "purpose": "Read a range that ends past the object, which the service clips to the object's end. Report the window it served from Content-Range, bytes 28-29/30, so that the caller sees the range was clipped", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "key": "object-tests/read/object.txt", + "op": "get", + "range": { + "end": 64, + "start": 28 + } + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/read/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/range", + "optional": false, + "rule": { + "is": "equal", + "value": "bytes=28-63" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 206, + "headers": { + "content-range": "bytes 28-29/30", + "content-type": "application/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-16c44f0af72d\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.7556278Z" + }, + "body": { + "encoding": "base64", + "data": "Y3Q=" + } + } + }, + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/read/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/x-ms-range", + "optional": false, + "rule": { + "is": "equal", + "value": "bytes=28-63" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 206, + "headers": { + "content-range": "bytes 28-29/30", + "content-type": "application/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-16c44f0af72d\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.7556278Z" + }, + "body": { + "encoding": "base64", + "data": "Y3Q=" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-16c44f0af72d\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 2 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "application/octet-stream" + } + }, + { + "at": "/value/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.7556278Z" + } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "Y3Q=" + } + }, + { + "at": "/value/content_range", + "optional": false, + "rule": { + "is": "equal", + "value": "bytes 28-29/30" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/get-range-single-byte", + "profile": "azure", + "lane": "core", + "purpose": "get range single byte", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "key": "object-tests/read/object.txt", + "op": "get", + "range": { + "end": 1, + "start": 0 + } + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/read/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/range", + "optional": false, + "rule": { + "is": "equal", + "value": "bytes=0-0" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 206, + "headers": { + "content-range": "bytes 0-0/30", + "content-type": "application/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-16c44f0af72d\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.7556278Z" + }, + "body": { + "encoding": "base64", + "data": "MA==" + } + } + }, + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/read/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/x-ms-range", + "optional": false, + "rule": { + "is": "equal", + "value": "bytes=0-0" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 206, + "headers": { + "content-range": "bytes 0-0/30", + "content-type": "application/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-16c44f0af72d\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.7556278Z" + }, + "body": { + "encoding": "base64", + "data": "MA==" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-16c44f0af72d\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "application/octet-stream" + } + }, + { + "at": "/value/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.7556278Z" + } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MA==" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/get-range", + "profile": "azure", + "lane": "core", + "purpose": "get range", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "key": "object-tests/read/object.txt", + "op": "get", + "range": { + "end": 6, + "start": 2 + } + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/read/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/range", + "optional": false, + "rule": { + "is": "equal", + "value": "bytes=2-5" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 206, + "headers": { + "content-range": "bytes 2-5/30", + "content-type": "application/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-16c44f0af72d\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.7556278Z" + }, + "body": { + "encoding": "base64", + "data": "MjM0NQ==" + } + } + }, + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/read/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/x-ms-range", + "optional": false, + "rule": { + "is": "equal", + "value": "bytes=2-5" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 206, + "headers": { + "content-range": "bytes 2-5/30", + "content-type": "application/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-16c44f0af72d\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.7556278Z" + }, + "body": { + "encoding": "base64", + "data": "MjM0NQ==" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-16c44f0af72d\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 4 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "application/octet-stream" + } + }, + { + "at": "/value/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.7556278Z" + } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MjM0NQ==" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/get-range-open", + "profile": "azure", + "lane": "core", + "purpose": "get range open", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/get-blob" + ], + "call": { + "key": "object", + "op": "get", + "range": { + "start": 3 + } + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/range", + "optional": false, + "rule": { + "is": "equal", + "value": "bytes=3-" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 206, + "headers": { + "content-range": "bytes 3-4/5", + "content-type": "application/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-request-id": "fixture-request-id", + "x-ms-request-server-encrypted": "true", + "x-ms-server-encrypted": "true", + "x-ms-version": "2023-11-03" + }, + "body": { + "encoding": "base64", + "data": "bG8=" + } + } + }, + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/x-ms-range", + "optional": false, + "rule": { + "is": "equal", + "value": "bytes=3-" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 206, + "headers": { + "content-range": "bytes 3-4/5", + "content-type": "application/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-request-id": "fixture-request-id", + "x-ms-request-server-encrypted": "true", + "x-ms-server-encrypted": "true", + "x-ms-version": "2023-11-03" + }, + "body": { + "encoding": "base64", + "data": "bG8=" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "bG8=" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/get-reordered", + "profile": "azure", + "lane": "core", + "purpose": "get reordered", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "key": "object-tests/multipart/reordered.bin", + "op": "get" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/multipart/reordered.bin" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-8d8ae06ceb7d\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.2664276Z" + }, + "body": { + "encoding": "base64", + "data": "c2Vjb25kZmlyc3Q=" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-8d8ae06ceb7d\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 11 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "application/octet-stream" + } + }, + { + "at": "/value/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.2664276Z" + } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "c2Vjb25kZmlyc3Q=" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/get-replacement", + "profile": "azure", + "lane": "core", + "purpose": "get replacement", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "key": "object-tests/multipart/replaced.bin", + "op": "get" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/multipart/replaced.bin" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-2184b3e6c2c3\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.5387802Z" + }, + "body": { + "encoding": "base64", + "data": "RklSU1Q=" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-2184b3e6c2c3\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 5 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "application/octet-stream" + } + }, + { + "at": "/value/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.5387802Z" + } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "RklSU1Q=" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/get-snapshot", + "profile": "azure", + "lane": "core", + "purpose": "get snapshot", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "key": "object-tests/snapshots/object.txt", + "op": "get", + "snapshot": "2024-01-01T00:00:00.7351568Z" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/snapshots/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/snapshot", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.7351568Z" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-md5": "+XxdKZQb+xsv2rCHSQargg==", + "content-type": "application/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-e3698635ab53\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-server-encrypted": "true" + }, + "body": { + "encoding": "base64", + "data": "b25l" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-e3698635ab53\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 3 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "application/octet-stream" + } + }, + { + "at": "/value/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "+XxdKZQb+xsv2rCHSQargg==" + } + }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "b25l" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/get-staged-only", + "profile": "azure", + "lane": "core", + "purpose": "get staged only", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "key": "object-tests/multipart/staged.bin", + "op": "get" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/multipart/staged.bin" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 404, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "BlobNotFound" + }, + "body": { + "encoding": "utf8", + "data": "BlobNotFoundFixture error" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 404 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "BlobNotFound" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/get-suffix-longer-than-object", + "profile": "azure", + "lane": "core", + "purpose": "get suffix longer than object", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "key": "object-tests/read/object.txt", + "op": "get", + "range": { + "suffix": 100 + } + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/read/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/range", + "optional": false, + "rule": { + "is": "equal", + "value": "bytes=-100" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-md5": "H1VC0PNTmj+yaCRN4U931g==", + "content-type": "application/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-16c44f0af72d\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.7556278Z" + }, + "body": { + "encoding": "base64", + "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + } + } + }, + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/read/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/x-ms-range", + "optional": false, + "rule": { + "is": "equal", + "value": "bytes=-100" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-md5": "H1VC0PNTmj+yaCRN4U931g==", + "content-type": "application/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-16c44f0af72d\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.7556278Z" + }, + "body": { + "encoding": "base64", + "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-16c44f0af72d\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 30 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "application/octet-stream" + } + }, + { + "at": "/value/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "H1VC0PNTmj+yaCRN4U931g==" + } + }, + { + "at": "/value/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.7556278Z" + } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + } + } + ], + "refusal": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "refused" + } + }, + { + "at": "/kind", + "optional": false, + "rule": { + "is": "matches", + "pattern": ".+" + } + }, + { + "at": "/parameter", + "optional": false, + "rule": { + "is": "equal", + "value": "range" + } + } + ], + "decline_permitted": true + }, + { + "id": "operations/azure/get-suffix", + "profile": "azure", + "lane": "core", + "purpose": "get suffix", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "key": "object-tests/read/object.txt", + "op": "get", + "range": { + "suffix": 6 + } + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/read/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/range", + "optional": false, + "rule": { + "is": "equal", + "value": "bytes=-6" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-md5": "H1VC0PNTmj+yaCRN4U931g==", + "content-type": "application/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-16c44f0af72d\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.7556278Z" + }, + "body": { + "encoding": "base64", + "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + } + } + }, + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/read/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/x-ms-range", + "optional": false, + "rule": { + "is": "equal", + "value": "bytes=-6" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-md5": "H1VC0PNTmj+yaCRN4U931g==", + "content-type": "application/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-16c44f0af72d\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.7556278Z" + }, + "body": { + "encoding": "base64", + "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-16c44f0af72d\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 30 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "application/octet-stream" + } + }, + { + "at": "/value/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "H1VC0PNTmj+yaCRN4U931g==" + } + }, + { + "at": "/value/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.7556278Z" + } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + } + } + ], + "refusal": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "refused" + } + }, + { + "at": "/kind", + "optional": false, + "rule": { + "is": "matches", + "pattern": ".+" + } + }, + { + "at": "/parameter", + "optional": false, + "rule": { + "is": "equal", + "value": "range" + } + } + ], + "decline_permitted": true + }, + { + "id": "operations/azure/get-unauthenticated", + "profile": "azure", + "lane": "core", + "purpose": "Report the service authorization error for this operation; signature acceptance is tested separately.", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "key": "object-tests/read/object.txt", + "op": "get" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/read/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 401, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "InvalidAuthenticationInfo" + }, + "body": { + "encoding": "utf8", + "data": "InvalidAuthenticationInfoFixture error" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 401 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "InvalidAuthenticationInfo" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/get-unknown-snapshot", + "profile": "azure", + "lane": "core", + "purpose": "get unknown snapshot", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "key": "object-tests/snapshots/object.txt", + "op": "get", + "snapshot": "2024-01-01T00:00:00.4364169Z" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/snapshots/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/snapshot", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.4364169Z" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 404, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "BlobNotFound" + }, + "body": { + "encoding": "utf8", + "data": "BlobNotFoundFixture error" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 404 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "BlobNotFound" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/get-unknown-version", + "profile": "azure", + "lane": "core", + "purpose": "get unknown version", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "key": "object-tests/versions-mtydohr2/object.txt", + "op": "get", + "version": "2024-01-01T00:00:00.4364169Z" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/versions-mtydohr2/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/versionid", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.4364169Z" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 404, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "BlobNotFound" + }, + "body": { + "encoding": "utf8", + "data": "BlobNotFoundFixture error" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 404 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "BlobNotFound" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/get-whole", + "profile": "azure", + "lane": "core", + "purpose": "get whole", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "key": "object-tests/read/object.txt", + "op": "get" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/read/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-md5": "H1VC0PNTmj+yaCRN4U931g==", + "content-type": "application/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-16c44f0af72d\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.7556278Z" + }, + "body": { + "encoding": "base64", + "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-16c44f0af72d\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 30 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "application/octet-stream" + } + }, + { + "at": "/value/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "H1VC0PNTmj+yaCRN4U931g==" + } + }, + { + "at": "/value/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.7556278Z" + } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/get-xml-looking", + "profile": "azure", + "lane": "core", + "purpose": "get xml looking", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/get-blob" + ], + "call": { + "key": "object", + "op": "get" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-request-id": "fixture-request-id", + "x-ms-request-server-encrypted": "true", + "x-ms-server-encrypted": "true", + "x-ms-version": "2023-11-03" + }, + "body": { + "encoding": "base64", + "data": "PEVycm9yPnN0aWxsIG9iamVjdCBieXRlczwvRXJyb3I+" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "PEVycm9yPnN0aWxsIG9iamVjdCBieXRlczwvRXJyb3I+" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/get-noise-tolerance", + "profile": "azure", + "lane": "core", + "purpose": "get noise tolerance", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/get-blob" + ], + "origin": "constructed", + "call": { + "key": "object", + "op": "get" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"a-different-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-fixture-unknown": "ignored", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-request-id": "another-id", + "x-ms-request-server-encrypted": "true", + "x-ms-server-encrypted": "true", + "x-ms-version": "2023-11-03" + }, + "body": { + "encoding": "base64", + "data": "aGVsbG8=" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "aGVsbG8=" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/get-body-cut-short", + "profile": "azure", + "lane": "core", + "purpose": "Report a body that ends before its Content-Length as an error, or resume it, but never return the short body", + "sources": [ + "https://www.rfc-editor.org/rfc/rfc9112#section-8", + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_client.cpp" + ], + "origin": "transient", + "call": { + "key": "object-tests/read/object.txt", + "op": "get" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/read/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-md5": "H1VC0PNTmj+yaCRN4U931g==", + "content-type": "application/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-16c44f0af72d\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.7556278Z" + }, + "body": { + "encoding": "base64", + "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + }, + "truncate_body_after": 15 + } + } + ] + }, + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/read/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-md5": "H1VC0PNTmj+yaCRN4U931g==", + "content-type": "application/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-16c44f0af72d\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.7556278Z" + }, + "body": { + "encoding": "base64", + "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + } + } + }, + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/read/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/range", + "optional": false, + "rule": { + "is": "equal", + "value": "bytes=15-" + } + }, + { + "at": "/headers/if-match", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-16c44f0af72d\"" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 206, + "headers": { + "content-range": "bytes 15-29/30", + "content-type": "application/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-16c44f0af72d\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.7556278Z" + }, + "body": { + "encoding": "base64", + "data": "Y3QtdGVzdHMtb2JqZWN0" + } + } + }, + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/read/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/x-ms-range", + "optional": false, + "rule": { + "is": "equal", + "value": "bytes=15-" + } + }, + { + "at": "/headers/if-match", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-16c44f0af72d\"" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 206, + "headers": { + "content-range": "bytes 15-29/30", + "content-type": "application/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-16c44f0af72d\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.7556278Z" + }, + "body": { + "encoding": "base64", + "data": "Y3QtdGVzdHMtb2JqZWN0" + } + } + } + ], + "optional": true + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "one_of", + "values": [ + "error", + "ok" + ] + } + }, + { + "at": "/value/body_base64", + "optional": true, + "rule": { + "is": "equal", + "value": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/get-server-busy", + "profile": "azure", + "lane": "core", + "purpose": "Report a 503 ServerBusy answer as an error, after at most 5 retries", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/common-rest-api-error-codes", + "https://learn.microsoft.com/en-us/rest/api/storageservices/blob-service-error-codes" + ], + "origin": "transient", + "call": { + "key": "object-tests/read/object.txt", + "op": "get" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/read/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 503, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "ServerBusy" + }, + "body": { + "encoding": "utf8", + "data": "ServerBusyThe server is currently unable to receive requests. Please retry your request." + } + } + } + ] + }, + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/read/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 503, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "ServerBusy" + }, + "body": { + "encoding": "utf8", + "data": "ServerBusyThe server is currently unable to receive requests. Please retry your request." + } + } + } + ], + "optional": true + }, + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/read/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 503, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "ServerBusy" + }, + "body": { + "encoding": "utf8", + "data": "ServerBusyThe server is currently unable to receive requests. Please retry your request." + } + } + } + ], + "optional": true + }, + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/read/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 503, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "ServerBusy" + }, + "body": { + "encoding": "utf8", + "data": "ServerBusyThe server is currently unable to receive requests. Please retry your request." + } + } + } + ], + "optional": true + }, + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/read/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 503, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "ServerBusy" + }, + "body": { + "encoding": "utf8", + "data": "ServerBusyThe server is currently unable to receive requests. Please retry your request." + } + } + } + ], + "optional": true + }, + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/read/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 503, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "ServerBusy" + }, + "body": { + "encoding": "utf8", + "data": "ServerBusyThe server is currently unable to receive requests. Please retry your request." + } + } + } + ], + "optional": true + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 503 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "ServerBusy" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/get-if-unmodified-since-past", + "profile": "azure", + "lane": "core", + "purpose": "Refuse a read with 412 when the object changed after If-Unmodified-Since", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "if_unmodified_since": "Sat, 01 Jan 2000 00:00:00 GMT", + "key": "object-tests/read/object.txt", + "op": "get" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/read/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/if-unmodified-since", + "optional": false, + "rule": { + "is": "equal", + "value": "Sat, 01 Jan 2000 00:00:00 GMT" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 412, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "ConditionNotMet" + }, + "body": { + "encoding": "utf8", + "data": "ConditionNotMetFixture error" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 412 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "ConditionNotMet" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/get-if-modified-since-future", + "profile": "azure", + "lane": "core", + "purpose": "Report 304 when If-Modified-Since names a future date, which Azure does not ignore", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "if_modified_since": "Fri, 01 Jan 2100 00:00:00 GMT", + "key": "object-tests/read/object.txt", + "op": "get" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/read/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/if-modified-since", + "optional": false, + "rule": { + "is": "equal", + "value": "Fri, 01 Jan 2100 00:00:00 GMT" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 304, + "headers": { + "date": { + "from": "now" + }, + "x-ms-error-code": "ConditionNotMet" + }, + "body": { + "encoding": "empty" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 304 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "ConditionNotMet" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/get-if-modified-since-past", + "profile": "azure", + "lane": "core", + "purpose": "Read an object modified since a past date", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "if_modified_since": "Sat, 01 Jan 2000 00:00:00 GMT", + "key": "object-tests/read/object.txt", + "op": "get" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/read/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/if-modified-since", + "optional": false, + "rule": { + "is": "equal", + "value": "Sat, 01 Jan 2000 00:00:00 GMT" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-md5": "H1VC0PNTmj+yaCRN4U931g==", + "content-type": "application/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-16c44f0af72d\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.7556278Z" + }, + "body": { + "encoding": "base64", + "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-16c44f0af72d\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 30 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "application/octet-stream" + } + }, + { + "at": "/value/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "H1VC0PNTmj+yaCRN4U931g==" + } + }, + { + "at": "/value/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.7556278Z" + } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/get-content-encoding-gzip", + "profile": "azure", + "lane": "core", + "purpose": "Return the stored gzip bytes and Content-Encoding: gzip without decoding them", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "key": "object-tests/read/object.txt", + "op": "get" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/read/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-encoding": "gzip", + "content-md5": "CVsDGvNMZH4SPA4MSLswrA==", + "content-type": "application/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-16c44f0af72d\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.7556278Z" + }, + "body": { + "encoding": "base64", + "data": "H4sIAAAAAAACA0vOzy0oSi0uTk1RyM9TKCgtKsgvTuUCAAHVPIcWAAAA" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-16c44f0af72d\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 42 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "application/octet-stream" + } + }, + { + "at": "/value/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "CVsDGvNMZH4SPA4MSLswrA==" + } + }, + { + "at": "/value/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.7556278Z" + } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "H4sIAAAAAAACA0vOzy0oSi0uTk1RyM9TKCgtKsgvTuUCAAHVPIcWAAAA" + } + }, + { + "at": "/value/content_encoding", + "optional": false, + "rule": { + "is": "equal", + "value": "gzip" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/get-content-properties", + "profile": "azure", + "lane": "core", + "purpose": "Return the stored content properties from a GET", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "key": "object-tests/read/object.txt", + "op": "get" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/read/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "cache-control": "max-age=3600", + "content-disposition": "attachment; filename=\"report.txt\"", + "content-language": "nl-NL", + "content-md5": "H1VC0PNTmj+yaCRN4U931g==", + "content-type": "text/plain; charset=utf-8", + "date": { + "from": "now" + }, + "etag": "\"fixture-16c44f0af72d\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.7556278Z" + }, + "body": { + "encoding": "base64", + "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-16c44f0af72d\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 30 + } + }, + { + "at": "/value/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "H1VC0PNTmj+yaCRN4U931g==" + } + }, + { + "at": "/value/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.7556278Z" + } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "text/plain; charset=utf-8" + } + }, + { + "at": "/value/content_language", + "optional": false, + "rule": { + "is": "equal", + "value": "nl-NL" + } + }, + { + "at": "/value/content_disposition", + "optional": false, + "rule": { + "is": "equal", + "value": "attachment; filename=\"report.txt\"" + } + }, + { + "at": "/value/cache_control", + "optional": false, + "rule": { + "is": "equal", + "value": "max-age=3600" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/get-with-staged-blocks", + "profile": "azure", + "lane": "core", + "purpose": "get with staged blocks", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "key": "object-tests/multipart/pending.bin", + "op": "get" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/multipart/pending.bin" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-9c5ca12bcfc9\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.6314295Z" + }, + "body": { + "encoding": "base64", + "data": "Zmlyc3RzZWNvbmQ=" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-9c5ca12bcfc9\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 11 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "application/octet-stream" + } + }, + { + "at": "/value/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.6314295Z" + } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "Zmlyc3RzZWNvbmQ=" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/head-committed-declaring-md5", + "profile": "azure", + "lane": "core", + "purpose": "head committed declaring md5", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "key": "object-tests/hashes/committed.bin", + "op": "head" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "HEAD" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/hashes/committed.bin" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-length": "13", + "content-md5": "N6YZkbg+Lyfxtskwn8iRCg==", + "content-type": "application/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-39ee25525bc6\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.2802899Z" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-39ee25525bc6\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 13 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "application/octet-stream" + } + }, + { + "at": "/value/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "N6YZkbg+Lyfxtskwn8iRCg==" + } + }, + { + "at": "/value/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.2802899Z" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/head-committed", + "profile": "azure", + "lane": "core", + "purpose": "head committed", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "key": "object-tests/multipart/committed.bin", + "op": "head" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "HEAD" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/multipart/committed.bin" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-length": "11", + "content-type": "application/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-be8efdb79010\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.7848460Z" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-be8efdb79010\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 11 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "application/octet-stream" + } + }, + { + "at": "/value/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.7848460Z" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/head-metadata", + "profile": "azure", + "lane": "core", + "purpose": "head metadata", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "key": "object-tests/metadata/object.txt", + "op": "head" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "HEAD" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/metadata/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-length": "1", + "content-md5": "xMpCOKC5I4INzFCab3WEmw==", + "content-type": "application/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-9abbc5e374ca\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-meta-name": "value", + "x-ms-meta-second": "2", + "x-ms-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.7035036Z" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-9abbc5e374ca\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "application/octet-stream" + } + }, + { + "at": "/value/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "xMpCOKC5I4INzFCab3WEmw==" + } + }, + { + "at": "/value/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.7035036Z" + } + }, + { + "at": "/value/metadata", + "optional": false, + "rule": { + "is": "equal", + "value": { + "name": "value", + "second": "2" + } + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/head-missing", + "profile": "azure", + "lane": "core", + "purpose": "head missing. A client reports it as not_found: the object is absent", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "key": "object-tests/read/absent.txt", + "op": "head" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "HEAD" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/read/absent.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 404, + "headers": { + "date": { + "from": "now" + }, + "x-ms-error-code": "BlobNotFound" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 404 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "BlobNotFound" + } + }, + { + "at": "/kind", + "optional": false, + "rule": { + "is": "equal", + "value": "not_found" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/head-previous-version", + "profile": "azure", + "lane": "core", + "purpose": "head previous version", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "key": "object-tests/versions-mtydohr2/object.txt", + "op": "head", + "version": "2024-01-01T00:00:00.2318906Z" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "HEAD" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/versions-mtydohr2/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/versionid", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.2318906Z" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-length": "2", + "content-md5": "ZlTHNMyrj0QP8IJetEPcfw==", + "content-type": "application/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-5769a0807b46\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.2318906Z" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-5769a0807b46\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 2 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "application/octet-stream" + } + }, + { + "at": "/value/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "ZlTHNMyrj0QP8IJetEPcfw==" + } + }, + { + "at": "/value/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.2318906Z" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/head-snapshot", + "profile": "azure", + "lane": "core", + "purpose": "head snapshot", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "key": "object-tests/snapshots/object.txt", + "op": "head", + "snapshot": "2024-01-01T00:00:00.7351568Z" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "HEAD" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/snapshots/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/snapshot", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.7351568Z" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-length": "3", + "content-md5": "+XxdKZQb+xsv2rCHSQargg==", + "content-type": "application/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-e3698635ab53\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-server-encrypted": "true" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-e3698635ab53\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 3 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "application/octet-stream" + } + }, + { + "at": "/value/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "+XxdKZQb+xsv2rCHSQargg==" + } + }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/head-written-with-crc64", + "profile": "azure", + "lane": "core", + "purpose": "head written with crc64", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "key": "object-tests/hashes/crc64.txt", + "op": "head" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "HEAD" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/hashes/crc64.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-length": "13", + "content-md5": "N6YZkbg+Lyfxtskwn8iRCg==", + "content-type": "application/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-90cfcb93036b\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.1153123Z" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-90cfcb93036b\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 13 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "application/octet-stream" + } + }, + { + "at": "/value/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "N6YZkbg+Lyfxtskwn8iRCg==" + } + }, + { + "at": "/value/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.1153123Z" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/head-written-with-md5", + "profile": "azure", + "lane": "core", + "purpose": "head written with md5", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "key": "object-tests/hashes/md5.txt", + "op": "head" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "HEAD" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/hashes/md5.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-length": "13", + "content-md5": "N6YZkbg+Lyfxtskwn8iRCg==", + "content-type": "application/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-494ad7275bf7\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.7803759Z" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-494ad7275bf7\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 13 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "application/octet-stream" + } + }, + { + "at": "/value/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "N6YZkbg+Lyfxtskwn8iRCg==" + } + }, + { + "at": "/value/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.7803759Z" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/head", + "profile": "azure", + "lane": "core", + "purpose": "head", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "key": "object-tests/read/object.txt", + "op": "head" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "HEAD" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/read/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-length": "30", + "content-md5": "H1VC0PNTmj+yaCRN4U931g==", + "content-type": "application/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-16c44f0af72d\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.7556278Z" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-16c44f0af72d\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 30 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "application/octet-stream" + } + }, + { + "at": "/value/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "H1VC0PNTmj+yaCRN4U931g==" + } + }, + { + "at": "/value/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.7556278Z" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/head-key-question", + "profile": "azure", + "lane": "core", + "purpose": "head, with the key \"question?mark.txt\"", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "key": "object-tests/keys/question?mark.txt", + "op": "head" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "HEAD" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/keys/question?mark.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-length": "30", + "content-md5": "H1VC0PNTmj+yaCRN4U931g==", + "content-type": "application/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-16c44f0af72d\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.7556278Z" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-16c44f0af72d\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 30 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "application/octet-stream" + } + }, + { + "at": "/value/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "H1VC0PNTmj+yaCRN4U931g==" + } + }, + { + "at": "/value/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.7556278Z" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/head-key-hash", + "profile": "azure", + "lane": "core", + "purpose": "head, with the key \"hash#tag.txt\"", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "key": "object-tests/keys/hash#tag.txt", + "op": "head" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "HEAD" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/keys/hash#tag.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-length": "30", + "content-md5": "H1VC0PNTmj+yaCRN4U931g==", + "content-type": "application/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-16c44f0af72d\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.7556278Z" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-16c44f0af72d\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 30 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "application/octet-stream" + } + }, + { + "at": "/value/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "H1VC0PNTmj+yaCRN4U931g==" + } + }, + { + "at": "/value/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.7556278Z" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/head-key-percent", + "profile": "azure", + "lane": "core", + "purpose": "head, with the key \"percent%20.txt\"", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "key": "object-tests/keys/percent%20.txt", + "op": "head" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "HEAD" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/keys/percent%20.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-length": "30", + "content-md5": "H1VC0PNTmj+yaCRN4U931g==", + "content-type": "application/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-16c44f0af72d\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.7556278Z" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-16c44f0af72d\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 30 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "application/octet-stream" + } + }, + { + "at": "/value/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "H1VC0PNTmj+yaCRN4U931g==" + } + }, + { + "at": "/value/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.7556278Z" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/head-key-plus", + "profile": "azure", + "lane": "core", + "purpose": "head, with the key \"plus+plus.txt\"", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "key": "object-tests/keys/plus+plus.txt", + "op": "head" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "HEAD" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/keys/plus+plus.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-length": "30", + "content-md5": "H1VC0PNTmj+yaCRN4U931g==", + "content-type": "application/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-16c44f0af72d\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.7556278Z" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-16c44f0af72d\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 30 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "application/octet-stream" + } + }, + { + "at": "/value/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "H1VC0PNTmj+yaCRN4U931g==" + } + }, + { + "at": "/value/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.7556278Z" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/head-key-space", + "profile": "azure", + "lane": "core", + "purpose": "head, with the key \"space name.txt\"", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "key": "object-tests/keys/space name.txt", + "op": "head" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "HEAD" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/keys/space name.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-length": "30", + "content-md5": "H1VC0PNTmj+yaCRN4U931g==", + "content-type": "application/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-16c44f0af72d\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.7556278Z" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-16c44f0af72d\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 30 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "application/octet-stream" + } + }, + { + "at": "/value/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "H1VC0PNTmj+yaCRN4U931g==" + } + }, + { + "at": "/value/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.7556278Z" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/head-key-non-ascii", + "profile": "azure", + "lane": "core", + "purpose": "head, with the key \"café/雪.txt\"", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "key": "object-tests/keys/café/雪.txt", + "op": "head" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "HEAD" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/keys/café/雪.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-length": "30", + "content-md5": "H1VC0PNTmj+yaCRN4U931g==", + "content-type": "application/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-16c44f0af72d\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.7556278Z" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-16c44f0af72d\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 30 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "application/octet-stream" + } + }, + { + "at": "/value/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "H1VC0PNTmj+yaCRN4U931g==" + } + }, + { + "at": "/value/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.7556278Z" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/head-key-double-slash", + "profile": "azure", + "lane": "core", + "purpose": "head, with the key \"double//slash.txt\"", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "key": "object-tests/keys/double//slash.txt", + "op": "head" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "HEAD" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/keys/double//slash.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-length": "30", + "content-md5": "H1VC0PNTmj+yaCRN4U931g==", + "content-type": "application/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-16c44f0af72d\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.7556278Z" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-16c44f0af72d\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 30 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "application/octet-stream" + } + }, + { + "at": "/value/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "H1VC0PNTmj+yaCRN4U931g==" + } + }, + { + "at": "/value/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.7556278Z" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/head-key-trailing-slash", + "profile": "azure", + "lane": "core", + "purpose": "head, with the key \"trailing-slash/\"", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "key": "object-tests/keys/trailing-slash/", + "op": "head" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "HEAD" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/keys/trailing-slash/" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-length": "30", + "content-md5": "H1VC0PNTmj+yaCRN4U931g==", + "content-type": "application/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-16c44f0af72d\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.7556278Z" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-16c44f0af72d\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 30 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "application/octet-stream" + } + }, + { + "at": "/value/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "H1VC0PNTmj+yaCRN4U931g==" + } + }, + { + "at": "/value/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.7556278Z" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/head-content-properties", + "profile": "azure", + "lane": "core", + "purpose": "Return the stored content properties from a HEAD", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "key": "object-tests/read/object.txt", + "op": "head" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "HEAD" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/read/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "cache-control": "max-age=3600", + "content-disposition": "attachment; filename=\"report.txt\"", + "content-language": "nl-NL", + "content-length": "30", + "content-md5": "H1VC0PNTmj+yaCRN4U931g==", + "content-type": "text/plain; charset=utf-8", + "date": { + "from": "now" + }, + "etag": "\"fixture-16c44f0af72d\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.7556278Z" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-16c44f0af72d\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 30 + } + }, + { + "at": "/value/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "H1VC0PNTmj+yaCRN4U931g==" + } + }, + { + "at": "/value/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.7556278Z" + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "text/plain; charset=utf-8" + } + }, + { + "at": "/value/content_language", + "optional": false, + "rule": { + "is": "equal", + "value": "nl-NL" + } + }, + { + "at": "/value/content_disposition", + "optional": false, + "rule": { + "is": "equal", + "value": "attachment; filename=\"report.txt\"" + } + }, + { + "at": "/value/cache_control", + "optional": false, + "rule": { + "is": "equal", + "value": "max-age=3600" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/head-if-unmodified-since-past", + "profile": "azure", + "lane": "core", + "purpose": "Refuse a HEAD with 412 when the object changed after If-Unmodified-Since", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "if_unmodified_since": "Sat, 01 Jan 2000 00:00:00 GMT", + "key": "object-tests/read/object.txt", + "op": "head" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "HEAD" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/read/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/if-unmodified-since", + "optional": false, + "rule": { + "is": "equal", + "value": "Sat, 01 Jan 2000 00:00:00 GMT" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 412, + "headers": { + "date": { + "from": "now" + }, + "x-ms-error-code": "ConditionNotMet" + }, + "body": { + "encoding": "empty" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 412 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "ConditionNotMet" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/head-copy-status", + "profile": "azure", + "lane": "core", + "purpose": "Report the copy that wrote a blob, its x-ms-copy-status and x-ms-copy-id, from a HEAD of the blob", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/get-blob-properties" + ], + "call": { + "key": "object-tests/copy/target.txt", + "op": "head" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "HEAD" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/copy/target.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-length": "5", + "content-type": "application/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-16c44f0af72d\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-copy-completion-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-copy-id": "fixture-copy-id", + "x-ms-copy-progress": "5/5", + "x-ms-copy-source": "https://fixture.blob.core.windows.net/fixture/object-tests/copy/source.txt", + "x-ms-copy-status": "success", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true" + }, + "body": { + "encoding": "empty" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/copy_status", + "optional": false, + "rule": { + "is": "equal", + "value": "success" + } + }, + { + "at": "/value/copy_id", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-copy-id" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/head-access-tier", + "profile": "azure", + "lane": "core", + "purpose": "Report a blob's access tier, which Azure sends in x-ms-access-tier", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "key": "object-tests/read/object.txt", + "op": "head" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "HEAD" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/read/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-length": "30", + "content-md5": "H1VC0PNTmj+yaCRN4U931g==", + "content-type": "application/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-16c44f0af72d\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-access-tier": "Cool", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.7556278Z" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/access_tier", + "optional": false, + "rule": { + "is": "equal", + "value": "Cool" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/list-after-delete-with-versions", + "profile": "azure", + "lane": "core", + "purpose": "list after delete with versions", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "op": "list_page", + "prefix": "object-tests/versions-mtydohr2/deleted.txt" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/restype", + "optional": false, + "rule": { + "is": "equal", + "value": "container" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "list" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/versions-mtydohr2/deleted.txt" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "utf8", + "data": "object-tests/versions-mtydohr2/deleted.txt" + }, + "framing": "chunked" + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/entries", + "optional": false, + "rule": { + "is": "array_length", + "value": 0 + } + }, + { + "at": "/value/prefixes", + "optional": false, + "rule": { + "is": "array_length", + "value": 0 + } + }, + { + "at": "/value/continuation_token", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/list-bad-marker", + "profile": "azure", + "lane": "core", + "purpose": "list bad marker", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "continuation_token": "fixture-marker+/1d52c72a655f=", + "op": "list_page", + "prefix": "object-tests/board/" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/restype", + "optional": false, + "rule": { + "is": "equal", + "value": "container" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "list" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/" + } + }, + { + "at": "/query/marker", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-marker+/1d52c72a655f=" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 400, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "InvalidQueryParameterValue" + }, + "body": { + "encoding": "utf8", + "data": "InvalidQueryParameterValueFixture error" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 400 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "InvalidQueryParameterValue" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/list-bad-marker-code-in-body", + "profile": "azure", + "lane": "core", + "purpose": "list bad marker, with the error code only in the XML body", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp", + "https://learn.microsoft.com/en-us/rest/api/storageservices/common-rest-api-error-codes", + "https://learn.microsoft.com/en-us/rest/api/storageservices/blob-service-error-codes" + ], + "origin": "constructed", + "call": { + "continuation_token": "fixture-marker+/1d52c72a655f=", + "op": "list_page", + "prefix": "object-tests/board/" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/restype", + "optional": false, + "rule": { + "is": "equal", + "value": "container" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "list" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/" + } + }, + { + "at": "/query/marker", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-marker+/1d52c72a655f=" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 400, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + } + }, + "body": { + "encoding": "utf8", + "data": "InvalidQueryParameterValueFixture error" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 400 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "InvalidQueryParameterValue" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/list-container-missing", + "profile": "azure", + "lane": "core", + "purpose": "list container missing. A client reports it as container_not_found: the bucket or container is absent, not the object", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "op": "list_page", + "prefix": "" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/restype", + "optional": false, + "rule": { + "is": "equal", + "value": "container" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "list" + } + }, + { + "at": "/query/prefix", + "optional": true, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 404, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "ContainerNotFound" + }, + "body": { + "encoding": "utf8", + "data": "ContainerNotFoundFixture error" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 404 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "ContainerNotFound" + } + }, + { + "at": "/kind", + "optional": false, + "rule": { + "is": "equal", + "value": "container_not_found" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/list-delimited", + "profile": "azure", + "lane": "core", + "purpose": "list delimited", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "delimiter": "/", + "op": "list_page", + "prefix": "object-tests/board/" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/restype", + "optional": false, + "rule": { + "is": "equal", + "value": "container" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "list" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/" + } + }, + { + "at": "/query/delimiter", + "optional": false, + "rule": { + "is": "equal", + "value": "/" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "utf8", + "data": "object-tests/board//object-tests/board/a.txt2024-01-01T00:00:00.9908400ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-704c5ddfc8cb8application/octet-streamJdVa0oOqQAr0ZMdtcTwHrQ==BlockBlobHottrueunlockedavailabletrueobject-tests/board/nested/object-tests/board/z.txt2024-01-01T00:00:00.3834597ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-b905747bf74f2application/octet-streamJe0by0I7C3IA9IX8X/ccjg==BlockBlobHottrueunlockedavailabletrue" + }, + "framing": "chunked" + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/entries/0/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/a.txt" + } + }, + { + "at": "/value/entries/0/size", + "optional": false, + "rule": { + "is": "equal", + "value": 8 + } + }, + { + "at": "/value/entries/0/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-704c5ddfc8cb" + } + }, + { + "at": "/value/entries/0/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.9908400Z" + } + }, + { + "at": "/value/entries/0/is_current_version", + "optional": false, + "rule": { + "is": "equal", + "value": true + } + }, + { + "at": "/value/entries/0/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "JdVa0oOqQAr0ZMdtcTwHrQ==" + } + }, + { + "at": "/value/entries/1/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/z.txt" + } + }, + { + "at": "/value/entries/1/size", + "optional": false, + "rule": { + "is": "equal", + "value": 2 + } + }, + { + "at": "/value/entries/1/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-b905747bf74f" + } + }, + { + "at": "/value/entries/1/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/1/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.3834597Z" + } + }, + { + "at": "/value/entries/1/is_current_version", + "optional": false, + "rule": { + "is": "equal", + "value": true + } + }, + { + "at": "/value/entries/1/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "Je0by0I7C3IA9IX8X/ccjg==" + } + }, + { + "at": "/value/entries", + "optional": false, + "rule": { + "is": "array_length", + "value": 2 + } + }, + { + "at": "/value/prefixes/0", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/nested/" + } + }, + { + "at": "/value/prefixes", + "optional": false, + "rule": { + "is": "array_length", + "value": 1 + } + }, + { + "at": "/value/continuation_token", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/list-other-delimiter", + "profile": "azure", + "lane": "core", + "purpose": "Send the delimiter the caller names. A flat account groups blob names at any delimiter, not only /; here a- groups a-1.txt and a-2.txt", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "delimiter": "-", + "op": "list_page", + "prefix": "object-tests/dashes/" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/restype", + "optional": false, + "rule": { + "is": "equal", + "value": "container" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "list" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/dashes/" + } + }, + { + "at": "/query/delimiter", + "optional": false, + "rule": { + "is": "equal", + "value": "-" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "utf8", + "data": "object-tests/dashes/-object-tests/dashes/a-object-tests/dashes/b.txt2024-01-01T00:00:00.9908400ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-704c5ddfc8cb1application/octet-streamkutf/uauL+w61xx3dTFXjw==BlockBlobHottrueunlockedavailabletrue" + }, + "framing": "chunked" + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/entries/0/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/dashes/b.txt" + } + }, + { + "at": "/value/entries/0/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/0/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-704c5ddfc8cb" + } + }, + { + "at": "/value/entries/0/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.9908400Z" + } + }, + { + "at": "/value/entries", + "optional": false, + "rule": { + "is": "array_length", + "value": 1 + } + }, + { + "at": "/value/prefixes/0", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/dashes/a-" + } + }, + { + "at": "/value/prefixes", + "optional": false, + "rule": { + "is": "array_length", + "value": 1 + } + }, + { + "at": "/value/continuation_token", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/list-empty", + "profile": "azure", + "lane": "core", + "purpose": "list empty", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "op": "list_page", + "prefix": "object-tests/nothing/" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/restype", + "optional": false, + "rule": { + "is": "equal", + "value": "container" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "list" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/nothing/" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "utf8", + "data": "object-tests/nothing/" + }, + "framing": "chunked" + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/entries", + "optional": false, + "rule": { + "is": "array_length", + "value": 0 + } + }, + { + "at": "/value/prefixes", + "optional": false, + "rule": { + "is": "array_length", + "value": 0 + } + }, + { + "at": "/value/continuation_token", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/list-all-empty", + "profile": "azure", + "lane": "core", + "purpose": "list empty", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/list-blobs" + ], + "call": { + "op": "list", + "prefix": "" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/restype", + "optional": false, + "rule": { + "is": "equal", + "value": "container" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "list" + } + }, + { + "at": "/query/prefix", + "optional": true, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-request-id": "fixture-request-id", + "x-ms-request-server-encrypted": "true", + "x-ms-server-encrypted": "true", + "x-ms-version": "2023-11-03" + }, + "body": { + "encoding": "base64", + "data": "PEVudW1lcmF0aW9uUmVzdWx0cyBTZXJ2aWNlRW5kcG9pbnQ9Imh0dHA6Ly9maXh0dXJlLyIgQ29udGFpbmVyTmFtZT0iZml4dHVyZSI+PFByZWZpeD48L1ByZWZpeD48QmxvYnM+PC9CbG9icz48TmV4dE1hcmtlcj48L05leHRNYXJrZXI+PC9FbnVtZXJhdGlvblJlc3VsdHM+" + }, + "framing": "chunked" + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/keys", + "optional": false, + "rule": { + "is": "equal", + "value": [] + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/list-encoded-names", + "profile": "azure", + "lane": "core", + "purpose": "list encoded names", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "op": "list_page", + "prefix": "object-tests/names/" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/restype", + "optional": false, + "rule": { + "is": "equal", + "value": "container" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "list" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/names/" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "utf8", + "data": "object-tests/names/object-tests%2Fnames%2F100%25-%EF%BF%BE-name.txt2024-01-01T00:00:00.6773769ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-b0016e7eea411application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/names/a&b.txt2024-01-01T00:00:00.9293679ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-e0cf2e36cfe61application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/names/back/slash.txt2024-01-01T00:00:00.8649025ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-fb1ea388bc8f1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/names/café.txt2024-01-01T00:00:00.0714249ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-4dfcbd136b001application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/names/hash#tag.txt2024-01-01T00:00:00.9185620ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-a7996d03132f1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/names/percent%20.txt2024-01-01T00:00:00.5807236ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-5e82da751e9c1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/names/plus+plus.txt2024-01-01T00:00:00.8000075ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-7dc03e94613e1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/names/q?mark.txt2024-01-01T00:00:00.3314072ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-91f727e794361application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrue" + }, + "framing": "chunked" + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/entries/0/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/names/100%-￾-name.txt" + } + }, + { + "at": "/value/entries/0/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/0/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-b0016e7eea41" + } + }, + { + "at": "/value/entries/0/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.6773769Z" + } + }, + { + "at": "/value/entries/0/is_current_version", + "optional": false, + "rule": { + "is": "equal", + "value": true + } + }, + { + "at": "/value/entries/0/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "xMpCOKC5I4INzFCab3WEmw==" + } + }, + { + "at": "/value/entries/1/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/names/a&b.txt" + } + }, + { + "at": "/value/entries/1/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/1/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-e0cf2e36cfe6" + } + }, + { + "at": "/value/entries/1/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/1/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.9293679Z" + } + }, + { + "at": "/value/entries/1/is_current_version", + "optional": false, + "rule": { + "is": "equal", + "value": true + } + }, + { + "at": "/value/entries/1/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "xMpCOKC5I4INzFCab3WEmw==" + } + }, + { + "at": "/value/entries/2/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/names/back/slash.txt" + } + }, + { + "at": "/value/entries/2/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/2/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-fb1ea388bc8f" + } + }, + { + "at": "/value/entries/2/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/2/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.8649025Z" + } + }, + { + "at": "/value/entries/2/is_current_version", + "optional": false, + "rule": { + "is": "equal", + "value": true + } + }, + { + "at": "/value/entries/2/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "xMpCOKC5I4INzFCab3WEmw==" + } + }, + { + "at": "/value/entries/3/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/names/café.txt" + } + }, + { + "at": "/value/entries/3/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/3/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-4dfcbd136b00" + } + }, + { + "at": "/value/entries/3/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/3/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.0714249Z" + } + }, + { + "at": "/value/entries/3/is_current_version", + "optional": false, + "rule": { + "is": "equal", + "value": true + } + }, + { + "at": "/value/entries/3/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "xMpCOKC5I4INzFCab3WEmw==" + } + }, + { + "at": "/value/entries/4/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/names/hash#tag.txt" + } + }, + { + "at": "/value/entries/4/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/4/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-a7996d03132f" + } + }, + { + "at": "/value/entries/4/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/4/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.9185620Z" + } + }, + { + "at": "/value/entries/4/is_current_version", + "optional": false, + "rule": { + "is": "equal", + "value": true + } + }, + { + "at": "/value/entries/4/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "xMpCOKC5I4INzFCab3WEmw==" + } + }, + { + "at": "/value/entries/5/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/names/percent%20.txt" + } + }, + { + "at": "/value/entries/5/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/5/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-5e82da751e9c" + } + }, + { + "at": "/value/entries/5/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/5/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.5807236Z" + } + }, + { + "at": "/value/entries/5/is_current_version", + "optional": false, + "rule": { + "is": "equal", + "value": true + } + }, + { + "at": "/value/entries/5/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "xMpCOKC5I4INzFCab3WEmw==" + } + }, + { + "at": "/value/entries/6/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/names/plus+plus.txt" + } + }, + { + "at": "/value/entries/6/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/6/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-7dc03e94613e" + } + }, + { + "at": "/value/entries/6/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/6/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.8000075Z" + } + }, + { + "at": "/value/entries/6/is_current_version", + "optional": false, + "rule": { + "is": "equal", + "value": true + } + }, + { + "at": "/value/entries/6/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "xMpCOKC5I4INzFCab3WEmw==" + } + }, + { + "at": "/value/entries/7/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/names/q?mark.txt" + } + }, + { + "at": "/value/entries/7/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/7/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-91f727e79436" + } + }, + { + "at": "/value/entries/7/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/7/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.3314072Z" + } + }, + { + "at": "/value/entries/7/is_current_version", + "optional": false, + "rule": { + "is": "equal", + "value": true + } + }, + { + "at": "/value/entries/7/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "xMpCOKC5I4INzFCab3WEmw==" + } + }, + { + "at": "/value/entries", + "optional": false, + "rule": { + "is": "array_length", + "value": 8 + } + }, + { + "at": "/value/prefixes", + "optional": false, + "rule": { + "is": "array_length", + "value": 0 + } + }, + { + "at": "/value/continuation_token", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/list-xml-escaped", + "profile": "azure", + "lane": "core", + "purpose": "list xml escaped", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/list-blobs" + ], + "call": { + "op": "list", + "prefix": "" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/restype", + "optional": false, + "rule": { + "is": "equal", + "value": "container" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "list" + } + }, + { + "at": "/query/prefix", + "optional": true, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-request-id": "fixture-request-id", + "x-ms-request-server-encrypted": "true", + "x-ms-server-encrypted": "true", + "x-ms-version": "2023-11-03" + }, + "body": { + "encoding": "base64", + "data": "PEVudW1lcmF0aW9uUmVzdWx0cyBTZXJ2aWNlRW5kcG9pbnQ9Imh0dHA6Ly9maXh0dXJlLyIgQ29udGFpbmVyTmFtZT0iZml4dHVyZSI+PFByZWZpeD48L1ByZWZpeD48QmxvYnM+PEJsb2I+PE5hbWU+YSZhbXA7YjwvTmFtZT48UHJvcGVydGllcz48TGFzdC1Nb2RpZmllZD5Nb24sIDAxIEphbiAyMDI0IDAwOjAwOjAwIEdNVDwvTGFzdC1Nb2RpZmllZD48RXRhZz4iZml4dHVyZSI8L0V0YWc+PENvbnRlbnQtTGVuZ3RoPjU8L0NvbnRlbnQtTGVuZ3RoPjxCbG9iVHlwZT5CbG9ja0Jsb2I8L0Jsb2JUeXBlPjwvUHJvcGVydGllcz48L0Jsb2I+PEJsb2I+PE5hbWU+YyZsdDtkPC9OYW1lPjxQcm9wZXJ0aWVzPjxMYXN0LU1vZGlmaWVkPk1vbiwgMDEgSmFuIDIwMjQgMDA6MDA6MDAgR01UPC9MYXN0LU1vZGlmaWVkPjxFdGFnPiJmaXh0dXJlIjwvRXRhZz48Q29udGVudC1MZW5ndGg+NTwvQ29udGVudC1MZW5ndGg+PEJsb2JUeXBlPkJsb2NrQmxvYjwvQmxvYlR5cGU+PC9Qcm9wZXJ0aWVzPjwvQmxvYj48L0Jsb2JzPjxOZXh0TWFya2VyPjwvTmV4dE1hcmtlcj48L0VudW1lcmF0aW9uUmVzdWx0cz4=" + }, + "framing": "chunked" + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/keys", + "optional": false, + "rule": { + "is": "equal", + "value": [ + "a&b", + "cobject-tests/board/2object-tests/board/a.txt2024-01-01T00:00:00.9908400ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-704c5ddfc8cb8application/octet-streamJdVa0oOqQAr0ZMdtcTwHrQ==BlockBlobHottrueunlockedavailabletrueobject-tests/board/nested/c.txt2024-01-01T00:00:00.7881326ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-48ff0e151ab71application/octet-streamSooI8J03tzeVZJA4QItfMw==BlockBlobHottrueunlockedavailabletruefixture-marker+/c42f89fa82e8=" + }, + "framing": "chunked" + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/entries/0/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/a.txt" + } + }, + { + "at": "/value/entries/0/size", + "optional": false, + "rule": { + "is": "equal", + "value": 8 + } + }, + { + "at": "/value/entries/0/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-704c5ddfc8cb" + } + }, + { + "at": "/value/entries/0/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.9908400Z" + } + }, + { + "at": "/value/entries/0/is_current_version", + "optional": false, + "rule": { + "is": "equal", + "value": true + } + }, + { + "at": "/value/entries/0/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "JdVa0oOqQAr0ZMdtcTwHrQ==" + } + }, + { + "at": "/value/entries/1/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/nested/c.txt" + } + }, + { + "at": "/value/entries/1/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/1/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-48ff0e151ab7" + } + }, + { + "at": "/value/entries/1/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/1/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.7881326Z" + } + }, + { + "at": "/value/entries/1/is_current_version", + "optional": false, + "rule": { + "is": "equal", + "value": true + } + }, + { + "at": "/value/entries/1/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "SooI8J03tzeVZJA4QItfMw==" + } + }, + { + "at": "/value/entries", + "optional": false, + "rule": { + "is": "array_length", + "value": 2 + } + }, + { + "at": "/value/prefixes", + "optional": false, + "rule": { + "is": "array_length", + "value": 0 + } + }, + { + "at": "/value/continuation_token", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-marker+/c42f89fa82e8=" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/list-page-size-one", + "profile": "azure", + "lane": "core", + "purpose": "A page of zero entries is out of range, but a page of one is not. Send a page size of 1 and report the one entry and the continuation token.", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "op": "list_page", + "page_size": 1, + "prefix": "object-tests/board/" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/restype", + "optional": false, + "rule": { + "is": "equal", + "value": "container" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "list" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/" + } + }, + { + "at": "/query/maxresults", + "optional": false, + "rule": { + "is": "equal", + "value": "1" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "utf8", + "data": "object-tests/board/1object-tests/board/a.txt2024-01-01T00:00:00.9908400ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-704c5ddfc8cb8application/octet-streamJdVa0oOqQAr0ZMdtcTwHrQ==BlockBlobHottrueunlockedavailabletruefixture-marker+/c42f89fa82e8=" + }, + "framing": "chunked" + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/entries/0/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/a.txt" + } + }, + { + "at": "/value/entries/0/size", + "optional": false, + "rule": { + "is": "equal", + "value": 8 + } + }, + { + "at": "/value/entries/0/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-704c5ddfc8cb" + } + }, + { + "at": "/value/entries/0/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.9908400Z" + } + }, + { + "at": "/value/entries/0/is_current_version", + "optional": false, + "rule": { + "is": "equal", + "value": true + } + }, + { + "at": "/value/entries/0/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "JdVa0oOqQAr0ZMdtcTwHrQ==" + } + }, + { + "at": "/value/entries", + "optional": false, + "rule": { + "is": "array_length", + "value": 1 + } + }, + { + "at": "/value/prefixes", + "optional": false, + "rule": { + "is": "array_length", + "value": 0 + } + }, + { + "at": "/value/continuation_token", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-marker+/c42f89fa82e8=" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/list-operation-timed-out", + "profile": "azure", + "lane": "core", + "purpose": "Report a 500 OperationTimedOut answer as an error, after at most 5 retries", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/common-rest-api-error-codes", + "https://learn.microsoft.com/en-us/rest/api/storageservices/blob-service-error-codes" + ], + "origin": "transient", + "call": { + "op": "list_page", + "page_size": 2, + "prefix": "object-tests/board/" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/restype", + "optional": false, + "rule": { + "is": "equal", + "value": "container" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "list" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/" + } + }, + { + "at": "/query/maxresults", + "optional": false, + "rule": { + "is": "equal", + "value": "2" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 500, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "OperationTimedOut" + }, + "body": { + "encoding": "utf8", + "data": "OperationTimedOutThe operation could not be completed within the permitted time." + } + } + } + ] + }, + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/restype", + "optional": false, + "rule": { + "is": "equal", + "value": "container" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "list" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/" + } + }, + { + "at": "/query/maxresults", + "optional": false, + "rule": { + "is": "equal", + "value": "2" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 500, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "OperationTimedOut" + }, + "body": { + "encoding": "utf8", + "data": "OperationTimedOutThe operation could not be completed within the permitted time." + } + } + } + ], + "optional": true + }, + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/restype", + "optional": false, + "rule": { + "is": "equal", + "value": "container" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "list" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/" + } + }, + { + "at": "/query/maxresults", + "optional": false, + "rule": { + "is": "equal", + "value": "2" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 500, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "OperationTimedOut" + }, + "body": { + "encoding": "utf8", + "data": "OperationTimedOutThe operation could not be completed within the permitted time." + } + } + } + ], + "optional": true + }, + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/restype", + "optional": false, + "rule": { + "is": "equal", + "value": "container" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "list" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/" + } + }, + { + "at": "/query/maxresults", + "optional": false, + "rule": { + "is": "equal", + "value": "2" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 500, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "OperationTimedOut" + }, + "body": { + "encoding": "utf8", + "data": "OperationTimedOutThe operation could not be completed within the permitted time." + } + } + } + ], + "optional": true + }, + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/restype", + "optional": false, + "rule": { + "is": "equal", + "value": "container" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "list" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/" + } + }, + { + "at": "/query/maxresults", + "optional": false, + "rule": { + "is": "equal", + "value": "2" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 500, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "OperationTimedOut" + }, + "body": { + "encoding": "utf8", + "data": "OperationTimedOutThe operation could not be completed within the permitted time." + } + } + } + ], + "optional": true + }, + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/restype", + "optional": false, + "rule": { + "is": "equal", + "value": "container" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "list" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/" + } + }, + { + "at": "/query/maxresults", + "optional": false, + "rule": { + "is": "equal", + "value": "2" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 500, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "OperationTimedOut" + }, + "body": { + "encoding": "utf8", + "data": "OperationTimedOutThe operation could not be completed within the permitted time." + } + } + } + ], + "optional": true + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 500 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "OperationTimedOut" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/list-key-equal-to-prefix-delimited", + "profile": "azure", + "lane": "core", + "purpose": "list key equal to prefix delimited", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "delimiter": "/", + "op": "list_page", + "prefix": "object-tests/exact" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/restype", + "optional": false, + "rule": { + "is": "equal", + "value": "container" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "list" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/exact" + } + }, + { + "at": "/query/delimiter", + "optional": false, + "rule": { + "is": "equal", + "value": "/" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "utf8", + "data": "object-tests/exact/object-tests/exact2024-01-01T00:00:00.9097158ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-aad9350ee3141application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/exact/" + }, + "framing": "chunked" + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/entries/0/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/exact" + } + }, + { + "at": "/value/entries/0/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/0/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-aad9350ee314" + } + }, + { + "at": "/value/entries/0/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.9097158Z" + } + }, + { + "at": "/value/entries/0/is_current_version", + "optional": false, + "rule": { + "is": "equal", + "value": true + } + }, + { + "at": "/value/entries/0/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "xMpCOKC5I4INzFCab3WEmw==" + } + }, + { + "at": "/value/entries", + "optional": false, + "rule": { + "is": "array_length", + "value": 1 + } + }, + { + "at": "/value/prefixes/0", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/exact/" + } + }, + { + "at": "/value/prefixes", + "optional": false, + "rule": { + "is": "array_length", + "value": 1 + } + }, + { + "at": "/value/continuation_token", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/list-key-equal-to-prefix", + "profile": "azure", + "lane": "core", + "purpose": "list key equal to prefix", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "op": "list_page", + "prefix": "object-tests/exact" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/restype", + "optional": false, + "rule": { + "is": "equal", + "value": "container" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "list" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/exact" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "utf8", + "data": "object-tests/exactobject-tests/exact2024-01-01T00:00:00.9097158ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-aad9350ee3141application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/exact/child2024-01-01T00:00:00.1462797ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-bc7e3365fd2c1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrue" + }, + "framing": "chunked" + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/entries/0/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/exact" + } + }, + { + "at": "/value/entries/0/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/0/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-aad9350ee314" + } + }, + { + "at": "/value/entries/0/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.9097158Z" + } + }, + { + "at": "/value/entries/0/is_current_version", + "optional": false, + "rule": { + "is": "equal", + "value": true + } + }, + { + "at": "/value/entries/0/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "xMpCOKC5I4INzFCab3WEmw==" + } + }, + { + "at": "/value/entries/1/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/exact/child" + } + }, + { + "at": "/value/entries/1/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/1/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-bc7e3365fd2c" + } + }, + { + "at": "/value/entries/1/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/1/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.1462797Z" + } + }, + { + "at": "/value/entries/1/is_current_version", + "optional": false, + "rule": { + "is": "equal", + "value": true + } + }, + { + "at": "/value/entries/1/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "xMpCOKC5I4INzFCab3WEmw==" + } + }, + { + "at": "/value/entries", + "optional": false, + "rule": { + "is": "array_length", + "value": 2 + } + }, + { + "at": "/value/prefixes", + "optional": false, + "rule": { + "is": "array_length", + "value": 0 + } + }, + { + "at": "/value/continuation_token", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/list-many-segments", + "profile": "azure", + "lane": "core", + "purpose": "list many segments", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "op": "list_page", + "prefix": "object-tests/s/" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/restype", + "optional": false, + "rule": { + "is": "equal", + "value": "container" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "list" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/s/" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "utf8", + "data": "object-tests/s/object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s2024-01-01T00:00:00.1683367ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-bdb8a3090de61application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrue" + }, + "framing": "chunked" + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/entries/0/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" + } + }, + { + "at": "/value/entries/0/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/0/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-bdb8a3090de6" + } + }, + { + "at": "/value/entries/0/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.1683367Z" + } + }, + { + "at": "/value/entries/0/is_current_version", + "optional": false, + "rule": { + "is": "equal", + "value": true + } + }, + { + "at": "/value/entries/0/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "xMpCOKC5I4INzFCab3WEmw==" + } + }, + { + "at": "/value/entries", + "optional": false, + "rule": { + "is": "array_length", + "value": 1 + } + }, + { + "at": "/value/prefixes", + "optional": false, + "rule": { + "is": "array_length", + "value": 0 + } + }, + { + "at": "/value/continuation_token", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/list-max-keys-zero", + "profile": "azure", + "lane": "core", + "purpose": "list max keys zero", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "op": "list_page", + "page_size": 0, + "prefix": "object-tests/board/" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/restype", + "optional": false, + "rule": { + "is": "equal", + "value": "container" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "list" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/" + } + }, + { + "at": "/query/maxresults", + "optional": false, + "rule": { + "is": "equal", + "value": "0" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 400, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "OutOfRangeQueryParameterValue" + }, + "body": { + "encoding": "utf8", + "data": "OutOfRangeQueryParameterValueFixture error" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 400 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "OutOfRangeQueryParameterValue" + } + } + ], + "refusal": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "refused" + } + }, + { + "at": "/kind", + "optional": false, + "rule": { + "is": "matches", + "pattern": ".+" + } + }, + { + "at": "/parameter", + "optional": false, + "rule": { + "is": "equal", + "value": "page_size" + } + }, + { + "at": "/status", + "optional": true, + "rule": { + "is": "equal", + "value": 400 + } + }, + { + "at": "/code", + "optional": true, + "rule": { + "is": "equal", + "value": "OutOfRangeQueryParameterValue" + } + } + ] + }, + { + "id": "operations/azure/list-metadata", + "profile": "azure", + "lane": "core", + "purpose": "list metadata", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "include": [ + "metadata" + ], + "op": "list_page", + "prefix": "object-tests/metadata-listed/" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/restype", + "optional": false, + "rule": { + "is": "equal", + "value": "container" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "list" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/metadata-listed/" + } + }, + { + "at": "/query/include", + "optional": false, + "rule": { + "is": "equal", + "value": "metadata" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "utf8", + "data": "object-tests/metadata-listed/object-tests/metadata-listed/plain.txt2024-01-01T00:00:00.4469276ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-9a0b44f4b9e91application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/metadata-listed/shadowed.txt2024-01-01T00:00:00.9968398ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-cd8bb50852bd1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletruex" + }, + "framing": "chunked" + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/entries/0/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/metadata-listed/plain.txt" + } + }, + { + "at": "/value/entries/0/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/0/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-9a0b44f4b9e9" + } + }, + { + "at": "/value/entries/0/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.4469276Z" + } + }, + { + "at": "/value/entries/0/is_current_version", + "optional": false, + "rule": { + "is": "equal", + "value": true + } + }, + { + "at": "/value/entries/0/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "xMpCOKC5I4INzFCab3WEmw==" + } + }, + { + "at": "/value/entries/1/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/metadata-listed/shadowed.txt" + } + }, + { + "at": "/value/entries/1/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/1/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-cd8bb50852bd" + } + }, + { + "at": "/value/entries/1/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/1/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.9968398Z" + } + }, + { + "at": "/value/entries/1/is_current_version", + "optional": false, + "rule": { + "is": "equal", + "value": true + } + }, + { + "at": "/value/entries/1/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "xMpCOKC5I4INzFCab3WEmw==" + } + }, + { + "at": "/value/entries", + "optional": false, + "rule": { + "is": "array_length", + "value": 2 + } + }, + { + "at": "/value/prefixes", + "optional": false, + "rule": { + "is": "array_length", + "value": 0 + } + }, + { + "at": "/value/continuation_token", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/value/entries/0/metadata", + "optional": false, + "rule": { + "is": "equal", + "value": { + "label": "c" + } + } + }, + { + "at": "/value/entries/1/metadata", + "optional": false, + "rule": { + "is": "equal", + "value": { + "Metadata": "x", + "label": "b" + } + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/list-next-page", + "profile": "azure", + "lane": "core", + "purpose": "list next page", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "continuation_token": "fixture-marker+/c42f89fa82e8=", + "op": "list_page", + "page_size": 2, + "prefix": "object-tests/board/" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/restype", + "optional": false, + "rule": { + "is": "equal", + "value": "container" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "list" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/" + } + }, + { + "at": "/query/maxresults", + "optional": false, + "rule": { + "is": "equal", + "value": "2" + } + }, + { + "at": "/query/marker", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-marker+/c42f89fa82e8=" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "utf8", + "data": "object-tests/board/fixture-marker+/c42f89fa82e8=2object-tests/board/z.txt2024-01-01T00:00:00.3834597ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-b905747bf74f2application/octet-streamJe0by0I7C3IA9IX8X/ccjg==BlockBlobHottrueunlockedavailabletrue" + }, + "framing": "chunked" + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/entries/0/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/z.txt" + } + }, + { + "at": "/value/entries/0/size", + "optional": false, + "rule": { + "is": "equal", + "value": 2 + } + }, + { + "at": "/value/entries/0/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-b905747bf74f" + } + }, + { + "at": "/value/entries/0/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.3834597Z" + } + }, + { + "at": "/value/entries/0/is_current_version", + "optional": false, + "rule": { + "is": "equal", + "value": true + } + }, + { + "at": "/value/entries/0/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "Je0by0I7C3IA9IX8X/ccjg==" + } + }, + { + "at": "/value/entries", + "optional": false, + "rule": { + "is": "array_length", + "value": 1 + } + }, + { + "at": "/value/prefixes", + "optional": false, + "rule": { + "is": "array_length", + "value": 0 + } + }, + { + "at": "/value/continuation_token", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/list-pagination", + "profile": "azure", + "lane": "core", + "purpose": "list pagination", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/list-blobs" + ], + "call": { + "op": "list", + "page_size": 1, + "prefix": "" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/restype", + "optional": false, + "rule": { + "is": "equal", + "value": "container" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "list" + } + }, + { + "at": "/query/prefix", + "optional": true, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/maxresults", + "optional": false, + "rule": { + "is": "equal", + "value": "1" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-request-id": "fixture-request-id", + "x-ms-request-server-encrypted": "true", + "x-ms-server-encrypted": "true", + "x-ms-version": "2023-11-03" + }, + "body": { + "encoding": "base64", + "data": "PEVudW1lcmF0aW9uUmVzdWx0cyBTZXJ2aWNlRW5kcG9pbnQ9Imh0dHA6Ly9maXh0dXJlLyIgQ29udGFpbmVyTmFtZT0iZml4dHVyZSI+PFByZWZpeD48L1ByZWZpeD48QmxvYnM+PEJsb2I+PE5hbWU+Zmlyc3Q8L05hbWU+PFByb3BlcnRpZXM+PExhc3QtTW9kaWZpZWQ+TW9uLCAwMSBKYW4gMjAyNCAwMDowMDowMCBHTVQ8L0xhc3QtTW9kaWZpZWQ+PEV0YWc+ImZpeHR1cmUiPC9FdGFnPjxDb250ZW50LUxlbmd0aD41PC9Db250ZW50LUxlbmd0aD48QmxvYlR5cGU+QmxvY2tCbG9iPC9CbG9iVHlwZT48L1Byb3BlcnRpZXM+PC9CbG9iPjwvQmxvYnM+PE5leHRNYXJrZXI+b3BhcXVlKy89PC9OZXh0TWFya2VyPjwvRW51bWVyYXRpb25SZXN1bHRzPg==" + }, + "framing": "chunked" + } + } + ] + }, + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/restype", + "optional": false, + "rule": { + "is": "equal", + "value": "container" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "list" + } + }, + { + "at": "/query/marker", + "optional": false, + "rule": { + "is": "equal", + "value": "opaque+/=" + } + }, + { + "at": "/query/prefix", + "optional": true, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/maxresults", + "optional": false, + "rule": { + "is": "equal", + "value": "1" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-request-id": "fixture-request-id", + "x-ms-request-server-encrypted": "true", + "x-ms-server-encrypted": "true", + "x-ms-version": "2023-11-03" + }, + "body": { + "encoding": "base64", + "data": "PEVudW1lcmF0aW9uUmVzdWx0cyBTZXJ2aWNlRW5kcG9pbnQ9Imh0dHA6Ly9maXh0dXJlLyIgQ29udGFpbmVyTmFtZT0iZml4dHVyZSI+PFByZWZpeD48L1ByZWZpeD48QmxvYnM+PEJsb2I+PE5hbWU+c2Vjb25kPC9OYW1lPjxQcm9wZXJ0aWVzPjxMYXN0LU1vZGlmaWVkPk1vbiwgMDEgSmFuIDIwMjQgMDA6MDA6MDAgR01UPC9MYXN0LU1vZGlmaWVkPjxFdGFnPiJmaXh0dXJlIjwvRXRhZz48Q29udGVudC1MZW5ndGg+NTwvQ29udGVudC1MZW5ndGg+PEJsb2JUeXBlPkJsb2NrQmxvYjwvQmxvYlR5cGU+PC9Qcm9wZXJ0aWVzPjwvQmxvYj48L0Jsb2JzPjxOZXh0TWFya2VyPjwvTmV4dE1hcmtlcj48L0VudW1lcmF0aW9uUmVzdWx0cz4=" + }, + "framing": "chunked" + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/keys", + "optional": false, + "rule": { + "is": "equal", + "value": [ + "first", + "second" + ] + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/list-order-delimited", + "profile": "azure", + "lane": "core", + "purpose": "list order delimited", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "delimiter": "/", + "op": "list_page", + "prefix": "object-tests/order/" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/restype", + "optional": false, + "rule": { + "is": "equal", + "value": "container" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "list" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/order/" + } + }, + { + "at": "/query/delimiter", + "optional": false, + "rule": { + "is": "equal", + "value": "/" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "utf8", + "data": "object-tests/order//object-tests/order/A2024-01-01T00:00:00.6802950ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-b1567b296bf41application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/order/a2024-01-01T00:00:00.6196984ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-522bf336fec01application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/order/a-b2024-01-01T00:00:00.7288701ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-ffd1d6ff8b0f1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/order/a.txt2024-01-01T00:00:00.2739144ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-1b029c6aa2e91application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/order/a/object-tests/order/a02024-01-01T00:00:00.7594151ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-238f35f044af1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/order/b2024-01-01T00:00:00.4152572ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-91f7dfa02cf51application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/order/é2024-01-01T00:00:00.1938992ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-e8b6d1d5f3fb1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrue" + }, + "framing": "chunked" + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/entries/0/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/order/A" + } + }, + { + "at": "/value/entries/0/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/0/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-b1567b296bf4" + } + }, + { + "at": "/value/entries/0/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.6802950Z" + } + }, + { + "at": "/value/entries/0/is_current_version", + "optional": false, + "rule": { + "is": "equal", + "value": true + } + }, + { + "at": "/value/entries/0/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "xMpCOKC5I4INzFCab3WEmw==" + } + }, + { + "at": "/value/entries/1/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/order/a" + } + }, + { + "at": "/value/entries/1/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/1/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-522bf336fec0" + } + }, + { + "at": "/value/entries/1/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/1/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.6196984Z" + } + }, + { + "at": "/value/entries/1/is_current_version", + "optional": false, + "rule": { + "is": "equal", + "value": true + } + }, + { + "at": "/value/entries/1/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "xMpCOKC5I4INzFCab3WEmw==" + } + }, + { + "at": "/value/entries/2/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/order/a-b" + } + }, + { + "at": "/value/entries/2/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/2/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-ffd1d6ff8b0f" + } + }, + { + "at": "/value/entries/2/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/2/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.7288701Z" + } + }, + { + "at": "/value/entries/2/is_current_version", + "optional": false, + "rule": { + "is": "equal", + "value": true + } + }, + { + "at": "/value/entries/2/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "xMpCOKC5I4INzFCab3WEmw==" + } + }, + { + "at": "/value/entries/3/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/order/a.txt" + } + }, + { + "at": "/value/entries/3/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/3/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-1b029c6aa2e9" + } + }, + { + "at": "/value/entries/3/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/3/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.2739144Z" + } + }, + { + "at": "/value/entries/3/is_current_version", + "optional": false, + "rule": { + "is": "equal", + "value": true + } + }, + { + "at": "/value/entries/3/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "xMpCOKC5I4INzFCab3WEmw==" + } + }, + { + "at": "/value/entries/4/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/order/a0" + } + }, + { + "at": "/value/entries/4/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/4/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-238f35f044af" + } + }, + { + "at": "/value/entries/4/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/4/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.7594151Z" + } + }, + { + "at": "/value/entries/4/is_current_version", + "optional": false, + "rule": { + "is": "equal", + "value": true + } + }, + { + "at": "/value/entries/4/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "xMpCOKC5I4INzFCab3WEmw==" + } + }, + { + "at": "/value/entries/5/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/order/b" + } + }, + { + "at": "/value/entries/5/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/5/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-91f7dfa02cf5" + } + }, + { + "at": "/value/entries/5/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/5/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.4152572Z" + } + }, + { + "at": "/value/entries/5/is_current_version", + "optional": false, + "rule": { + "is": "equal", + "value": true + } + }, + { + "at": "/value/entries/5/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "xMpCOKC5I4INzFCab3WEmw==" + } + }, + { + "at": "/value/entries/6/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/order/é" + } + }, + { + "at": "/value/entries/6/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/6/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-e8b6d1d5f3fb" + } + }, + { + "at": "/value/entries/6/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/6/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.1938992Z" + } + }, + { + "at": "/value/entries/6/is_current_version", + "optional": false, + "rule": { + "is": "equal", + "value": true + } + }, + { + "at": "/value/entries/6/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "xMpCOKC5I4INzFCab3WEmw==" + } + }, + { + "at": "/value/entries", + "optional": false, + "rule": { + "is": "array_length", + "value": 7 + } + }, + { + "at": "/value/prefixes/0", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/order/a/" + } + }, + { + "at": "/value/prefixes", + "optional": false, + "rule": { + "is": "array_length", + "value": 1 + } + }, + { + "at": "/value/continuation_token", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/list-order", + "profile": "azure", + "lane": "core", + "purpose": "list order", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "op": "list_page", + "prefix": "object-tests/order/" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/restype", + "optional": false, + "rule": { + "is": "equal", + "value": "container" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "list" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/order/" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "utf8", + "data": "object-tests/order/object-tests/order/A2024-01-01T00:00:00.6802950ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-b1567b296bf41application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/order/a2024-01-01T00:00:00.6196984ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-522bf336fec01application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/order/a-b2024-01-01T00:00:00.7288701ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-ffd1d6ff8b0f1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/order/a.txt2024-01-01T00:00:00.2739144ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-1b029c6aa2e91application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/order/a/b2024-01-01T00:00:00.2584945ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-8a57ec6c44921application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/order/a02024-01-01T00:00:00.7594151ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-238f35f044af1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/order/b2024-01-01T00:00:00.4152572ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-91f7dfa02cf51application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/order/é2024-01-01T00:00:00.1938992ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-e8b6d1d5f3fb1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrue" + }, + "framing": "chunked" + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/entries/0/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/order/A" + } + }, + { + "at": "/value/entries/0/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/0/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-b1567b296bf4" + } + }, + { + "at": "/value/entries/0/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.6802950Z" + } + }, + { + "at": "/value/entries/0/is_current_version", + "optional": false, + "rule": { + "is": "equal", + "value": true + } + }, + { + "at": "/value/entries/0/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "xMpCOKC5I4INzFCab3WEmw==" + } + }, + { + "at": "/value/entries/1/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/order/a" + } + }, + { + "at": "/value/entries/1/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/1/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-522bf336fec0" + } + }, + { + "at": "/value/entries/1/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/1/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.6196984Z" + } + }, + { + "at": "/value/entries/1/is_current_version", + "optional": false, + "rule": { + "is": "equal", + "value": true + } + }, + { + "at": "/value/entries/1/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "xMpCOKC5I4INzFCab3WEmw==" + } + }, + { + "at": "/value/entries/2/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/order/a-b" + } + }, + { + "at": "/value/entries/2/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/2/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-ffd1d6ff8b0f" + } + }, + { + "at": "/value/entries/2/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/2/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.7288701Z" + } + }, + { + "at": "/value/entries/2/is_current_version", + "optional": false, + "rule": { + "is": "equal", + "value": true + } + }, + { + "at": "/value/entries/2/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "xMpCOKC5I4INzFCab3WEmw==" + } + }, + { + "at": "/value/entries/3/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/order/a.txt" + } + }, + { + "at": "/value/entries/3/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/3/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-1b029c6aa2e9" + } + }, + { + "at": "/value/entries/3/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/3/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.2739144Z" + } + }, + { + "at": "/value/entries/3/is_current_version", + "optional": false, + "rule": { + "is": "equal", + "value": true + } + }, + { + "at": "/value/entries/3/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "xMpCOKC5I4INzFCab3WEmw==" + } + }, + { + "at": "/value/entries/4/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/order/a/b" + } + }, + { + "at": "/value/entries/4/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/4/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-8a57ec6c4492" + } + }, + { + "at": "/value/entries/4/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/4/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.2584945Z" + } + }, + { + "at": "/value/entries/4/is_current_version", + "optional": false, + "rule": { + "is": "equal", + "value": true + } + }, + { + "at": "/value/entries/4/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "xMpCOKC5I4INzFCab3WEmw==" + } + }, + { + "at": "/value/entries/5/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/order/a0" + } + }, + { + "at": "/value/entries/5/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/5/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-238f35f044af" + } + }, + { + "at": "/value/entries/5/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/5/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.7594151Z" + } + }, + { + "at": "/value/entries/5/is_current_version", + "optional": false, + "rule": { + "is": "equal", + "value": true + } + }, + { + "at": "/value/entries/5/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "xMpCOKC5I4INzFCab3WEmw==" + } + }, + { + "at": "/value/entries/6/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/order/b" + } + }, + { + "at": "/value/entries/6/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/6/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-91f7dfa02cf5" + } + }, + { + "at": "/value/entries/6/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/6/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.4152572Z" + } + }, + { + "at": "/value/entries/6/is_current_version", + "optional": false, + "rule": { + "is": "equal", + "value": true + } + }, + { + "at": "/value/entries/6/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "xMpCOKC5I4INzFCab3WEmw==" + } + }, + { + "at": "/value/entries/7/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/order/é" + } + }, + { + "at": "/value/entries/7/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/7/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-e8b6d1d5f3fb" + } + }, + { + "at": "/value/entries/7/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/7/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.1938992Z" + } + }, + { + "at": "/value/entries/7/is_current_version", + "optional": false, + "rule": { + "is": "equal", + "value": true + } + }, + { + "at": "/value/entries/7/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "xMpCOKC5I4INzFCab3WEmw==" + } + }, + { + "at": "/value/entries", + "optional": false, + "rule": { + "is": "array_length", + "value": 8 + } + }, + { + "at": "/value/prefixes", + "optional": false, + "rule": { + "is": "array_length", + "value": 0 + } + }, + { + "at": "/value/continuation_token", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/list-all-order", + "profile": "azure", + "lane": "core", + "purpose": "list order", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/list-blobs" + ], + "call": { + "op": "list", + "prefix": "" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/restype", + "optional": false, + "rule": { + "is": "equal", + "value": "container" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "list" + } + }, + { + "at": "/query/prefix", + "optional": true, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-request-id": "fixture-request-id", + "x-ms-request-server-encrypted": "true", + "x-ms-server-encrypted": "true", + "x-ms-version": "2023-11-03" + }, + "body": { + "encoding": "base64", + "data": "PEVudW1lcmF0aW9uUmVzdWx0cyBTZXJ2aWNlRW5kcG9pbnQ9Imh0dHA6Ly9maXh0dXJlLyIgQ29udGFpbmVyTmFtZT0iZml4dHVyZSI+PFByZWZpeD48L1ByZWZpeD48QmxvYnM+PEJsb2I+PE5hbWU+YTwvTmFtZT48UHJvcGVydGllcz48TGFzdC1Nb2RpZmllZD5Nb24sIDAxIEphbiAyMDI0IDAwOjAwOjAwIEdNVDwvTGFzdC1Nb2RpZmllZD48RXRhZz4iZml4dHVyZSI8L0V0YWc+PENvbnRlbnQtTGVuZ3RoPjU8L0NvbnRlbnQtTGVuZ3RoPjxCbG9iVHlwZT5CbG9ja0Jsb2I8L0Jsb2JUeXBlPjwvUHJvcGVydGllcz48L0Jsb2I+PEJsb2I+PE5hbWU+ejwvTmFtZT48UHJvcGVydGllcz48TGFzdC1Nb2RpZmllZD5Nb24sIDAxIEphbiAyMDI0IDAwOjAwOjAwIEdNVDwvTGFzdC1Nb2RpZmllZD48RXRhZz4iZml4dHVyZSI8L0V0YWc+PENvbnRlbnQtTGVuZ3RoPjU8L0NvbnRlbnQtTGVuZ3RoPjxCbG9iVHlwZT5CbG9ja0Jsb2I8L0Jsb2JUeXBlPjwvUHJvcGVydGllcz48L0Jsb2I+PC9CbG9icz48TmV4dE1hcmtlcj48L05leHRNYXJrZXI+PC9FbnVtZXJhdGlvblJlc3VsdHM+" + }, + "framing": "chunked" + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/keys", + "optional": false, + "rule": { + "is": "equal", + "value": [ + "a", + "z" + ] + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/list-page", + "profile": "azure", + "lane": "core", + "purpose": "list page", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "op": "list_page", + "prefix": "object-tests/board/" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/restype", + "optional": false, + "rule": { + "is": "equal", + "value": "container" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "list" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "utf8", + "data": "object-tests/board/object-tests/board/a.txt2024-01-01T00:00:00.9908400ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-704c5ddfc8cb8application/octet-streamJdVa0oOqQAr0ZMdtcTwHrQ==BlockBlobHottrueunlockedavailabletrueobject-tests/board/nested/c.txt2024-01-01T00:00:00.7881326ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-48ff0e151ab71application/octet-streamSooI8J03tzeVZJA4QItfMw==BlockBlobHottrueunlockedavailabletrueobject-tests/board/z.txt2024-01-01T00:00:00.3834597ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-b905747bf74f2application/octet-streamJe0by0I7C3IA9IX8X/ccjg==BlockBlobHottrueunlockedavailabletrue" + }, + "framing": "chunked" + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/entries/0/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/a.txt" + } + }, + { + "at": "/value/entries/0/size", + "optional": false, + "rule": { + "is": "equal", + "value": 8 + } + }, + { + "at": "/value/entries/0/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-704c5ddfc8cb" + } + }, + { + "at": "/value/entries/0/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.9908400Z" + } + }, + { + "at": "/value/entries/0/is_current_version", + "optional": false, + "rule": { + "is": "equal", + "value": true + } + }, + { + "at": "/value/entries/0/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "JdVa0oOqQAr0ZMdtcTwHrQ==" + } + }, + { + "at": "/value/entries/1/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/nested/c.txt" + } + }, + { + "at": "/value/entries/1/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/1/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-48ff0e151ab7" + } + }, + { + "at": "/value/entries/1/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/1/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.7881326Z" + } + }, + { + "at": "/value/entries/1/is_current_version", + "optional": false, + "rule": { + "is": "equal", + "value": true + } + }, + { + "at": "/value/entries/1/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "SooI8J03tzeVZJA4QItfMw==" + } + }, + { + "at": "/value/entries/2/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/z.txt" + } + }, + { + "at": "/value/entries/2/size", + "optional": false, + "rule": { + "is": "equal", + "value": 2 + } + }, + { + "at": "/value/entries/2/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-b905747bf74f" + } + }, + { + "at": "/value/entries/2/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/2/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.3834597Z" + } + }, + { + "at": "/value/entries/2/is_current_version", + "optional": false, + "rule": { + "is": "equal", + "value": true + } + }, + { + "at": "/value/entries/2/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "Je0by0I7C3IA9IX8X/ccjg==" + } + }, + { + "at": "/value/entries", + "optional": false, + "rule": { + "is": "array_length", + "value": 3 + } + }, + { + "at": "/value/prefixes", + "optional": false, + "rule": { + "is": "array_length", + "value": 0 + } + }, + { + "at": "/value/continuation_token", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/list-prefix-without-slash", + "profile": "azure", + "lane": "core", + "purpose": "list prefix without slash", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "op": "list_page", + "prefix": "object-tests/boa" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/restype", + "optional": false, + "rule": { + "is": "equal", + "value": "container" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "list" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/boa" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "utf8", + "data": "object-tests/boaobject-tests/board/a.txt2024-01-01T00:00:00.9908400ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-704c5ddfc8cb8application/octet-streamJdVa0oOqQAr0ZMdtcTwHrQ==BlockBlobHottrueunlockedavailabletrueobject-tests/board/nested/c.txt2024-01-01T00:00:00.7881326ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-48ff0e151ab71application/octet-streamSooI8J03tzeVZJA4QItfMw==BlockBlobHottrueunlockedavailabletrueobject-tests/board/z.txt2024-01-01T00:00:00.3834597ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-b905747bf74f2application/octet-streamJe0by0I7C3IA9IX8X/ccjg==BlockBlobHottrueunlockedavailabletrue" + }, + "framing": "chunked" + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/entries/0/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/a.txt" + } + }, + { + "at": "/value/entries/0/size", + "optional": false, + "rule": { + "is": "equal", + "value": 8 + } + }, + { + "at": "/value/entries/0/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-704c5ddfc8cb" + } + }, + { + "at": "/value/entries/0/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.9908400Z" + } + }, + { + "at": "/value/entries/0/is_current_version", + "optional": false, + "rule": { + "is": "equal", + "value": true + } + }, + { + "at": "/value/entries/0/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "JdVa0oOqQAr0ZMdtcTwHrQ==" + } + }, + { + "at": "/value/entries/1/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/nested/c.txt" + } + }, + { + "at": "/value/entries/1/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/1/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-48ff0e151ab7" + } + }, + { + "at": "/value/entries/1/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/1/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.7881326Z" + } + }, + { + "at": "/value/entries/1/is_current_version", + "optional": false, + "rule": { + "is": "equal", + "value": true + } + }, + { + "at": "/value/entries/1/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "SooI8J03tzeVZJA4QItfMw==" + } + }, + { + "at": "/value/entries/2/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/z.txt" + } + }, + { + "at": "/value/entries/2/size", + "optional": false, + "rule": { + "is": "equal", + "value": 2 + } + }, + { + "at": "/value/entries/2/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-b905747bf74f" + } + }, + { + "at": "/value/entries/2/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/2/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.3834597Z" + } + }, + { + "at": "/value/entries/2/is_current_version", + "optional": false, + "rule": { + "is": "equal", + "value": true + } + }, + { + "at": "/value/entries/2/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "Je0by0I7C3IA9IX8X/ccjg==" + } + }, + { + "at": "/value/entries", + "optional": false, + "rule": { + "is": "array_length", + "value": 3 + } + }, + { + "at": "/value/prefixes", + "optional": false, + "rule": { + "is": "array_length", + "value": 0 + } + }, + { + "at": "/value/continuation_token", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/list-separator-keys-delimited", + "profile": "azure", + "lane": "core", + "purpose": "list separator keys delimited", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "delimiter": "/", + "op": "list_page", + "prefix": "object-tests/separators/" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/restype", + "optional": false, + "rule": { + "is": "equal", + "value": "container" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "list" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/separators/" + } + }, + { + "at": "/query/delimiter", + "optional": false, + "rule": { + "is": "equal", + "value": "/" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "utf8", + "data": "object-tests/separators//object-tests/separators/..leading2024-01-01T00:00:00.1857029ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-99f23038e5ea1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/separators/a.b/object-tests/separators/dot2024-01-01T00:00:00.2106231ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-ccbcb2d755851application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/separators/double/object-tests/separators/space /object-tests/separators/trailing/" + }, + "framing": "chunked" + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/entries/0/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/separators/..leading" + } + }, + { + "at": "/value/entries/0/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/0/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-99f23038e5ea" + } + }, + { + "at": "/value/entries/0/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.1857029Z" + } + }, + { + "at": "/value/entries/0/is_current_version", + "optional": false, + "rule": { + "is": "equal", + "value": true + } + }, + { + "at": "/value/entries/0/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "xMpCOKC5I4INzFCab3WEmw==" + } + }, + { + "at": "/value/entries/1/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/separators/dot" + } + }, + { + "at": "/value/entries/1/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/1/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-ccbcb2d75585" + } + }, + { + "at": "/value/entries/1/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/1/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.2106231Z" + } + }, + { + "at": "/value/entries/1/is_current_version", + "optional": false, + "rule": { + "is": "equal", + "value": true + } + }, + { + "at": "/value/entries/1/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "xMpCOKC5I4INzFCab3WEmw==" + } + }, + { + "at": "/value/entries", + "optional": false, + "rule": { + "is": "array_length", + "value": 2 + } + }, + { + "at": "/value/prefixes/0", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/separators/a.b/" + } + }, + { + "at": "/value/prefixes/1", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/separators/double/" + } + }, + { + "at": "/value/prefixes/2", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/separators/space /" + } + }, + { + "at": "/value/prefixes/3", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/separators/trailing/" + } + }, + { + "at": "/value/prefixes", + "optional": false, + "rule": { + "is": "array_length", + "value": 4 + } + }, + { + "at": "/value/continuation_token", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/list-separator-keys", + "profile": "azure", + "lane": "core", + "purpose": "list separator keys", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "op": "list_page", + "prefix": "object-tests/separators/" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/restype", + "optional": false, + "rule": { + "is": "equal", + "value": "container" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "list" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/separators/" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "utf8", + "data": "object-tests/separators/object-tests/separators/..leading2024-01-01T00:00:00.1857029ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-99f23038e5ea1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/separators/a.b/c2024-01-01T00:00:00.4918444ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-4a4f8766cc8e1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/separators/dot2024-01-01T00:00:00.2106231ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-ccbcb2d755851application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/separators/double//slash2024-01-01T00:00:00.9957719ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-32b8d82fce871application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/separators/space /x2024-01-01T00:00:00.8166959ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-0b64e32539cd1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/separators/trailing/2024-01-01T00:00:00.6886650ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-3be5b05a5c3b1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrue" + }, + "framing": "chunked" + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/entries/0/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/separators/..leading" + } + }, + { + "at": "/value/entries/0/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/0/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-99f23038e5ea" + } + }, + { + "at": "/value/entries/0/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.1857029Z" + } + }, + { + "at": "/value/entries/0/is_current_version", + "optional": false, + "rule": { + "is": "equal", + "value": true + } + }, + { + "at": "/value/entries/0/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "xMpCOKC5I4INzFCab3WEmw==" + } + }, + { + "at": "/value/entries/1/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/separators/a.b/c" + } + }, + { + "at": "/value/entries/1/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/1/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-4a4f8766cc8e" + } + }, + { + "at": "/value/entries/1/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/1/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.4918444Z" + } + }, + { + "at": "/value/entries/1/is_current_version", + "optional": false, + "rule": { + "is": "equal", + "value": true + } + }, + { + "at": "/value/entries/1/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "xMpCOKC5I4INzFCab3WEmw==" + } + }, + { + "at": "/value/entries/2/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/separators/dot" + } + }, + { + "at": "/value/entries/2/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/2/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-ccbcb2d75585" + } + }, + { + "at": "/value/entries/2/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/2/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.2106231Z" + } + }, + { + "at": "/value/entries/2/is_current_version", + "optional": false, + "rule": { + "is": "equal", + "value": true + } + }, + { + "at": "/value/entries/2/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "xMpCOKC5I4INzFCab3WEmw==" + } + }, + { + "at": "/value/entries/3/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/separators/double//slash" + } + }, + { + "at": "/value/entries/3/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/3/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-32b8d82fce87" + } + }, + { + "at": "/value/entries/3/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/3/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.9957719Z" + } + }, + { + "at": "/value/entries/3/is_current_version", + "optional": false, + "rule": { + "is": "equal", + "value": true + } + }, + { + "at": "/value/entries/3/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "xMpCOKC5I4INzFCab3WEmw==" + } + }, + { + "at": "/value/entries/4/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/separators/space /x" + } + }, + { + "at": "/value/entries/4/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/4/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-0b64e32539cd" + } + }, + { + "at": "/value/entries/4/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/4/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.8166959Z" + } + }, + { + "at": "/value/entries/4/is_current_version", + "optional": false, + "rule": { + "is": "equal", + "value": true + } + }, + { + "at": "/value/entries/4/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "xMpCOKC5I4INzFCab3WEmw==" + } + }, + { + "at": "/value/entries/5/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/separators/trailing/" + } + }, + { + "at": "/value/entries/5/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/5/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-3be5b05a5c3b" + } + }, + { + "at": "/value/entries/5/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/5/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.6886650Z" + } + }, + { + "at": "/value/entries/5/is_current_version", + "optional": false, + "rule": { + "is": "equal", + "value": true + } + }, + { + "at": "/value/entries/5/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "xMpCOKC5I4INzFCab3WEmw==" + } + }, + { + "at": "/value/entries", + "optional": false, + "rule": { + "is": "array_length", + "value": 6 + } + }, + { + "at": "/value/prefixes", + "optional": false, + "rule": { + "is": "array_length", + "value": 0 + } + }, + { + "at": "/value/continuation_token", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/list-snapshots-after-delete", + "profile": "azure", + "lane": "core", + "purpose": "list snapshots after delete", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "include": [ + "snapshots" + ], + "op": "list_page", + "prefix": "object-tests/snapshots-all/" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/restype", + "optional": false, + "rule": { + "is": "equal", + "value": "container" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "list" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/snapshots-all/" + } + }, + { + "at": "/query/include", + "optional": false, + "rule": { + "is": "equal", + "value": "snapshots" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "utf8", + "data": "object-tests/snapshots-all/" + }, + "framing": "chunked" + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/entries", + "optional": false, + "rule": { + "is": "array_length", + "value": 0 + } + }, + { + "at": "/value/prefixes", + "optional": false, + "rule": { + "is": "array_length", + "value": 0 + } + }, + { + "at": "/value/continuation_token", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/list-snapshots-after-snapshots-deleted", + "profile": "azure", + "lane": "core", + "purpose": "list snapshots after snapshots deleted", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "include": [ + "snapshots" + ], + "op": "list_page", + "prefix": "object-tests/snapshots-only/" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/restype", + "optional": false, + "rule": { + "is": "equal", + "value": "container" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "list" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/snapshots-only/" + } + }, + { + "at": "/query/include", + "optional": false, + "rule": { + "is": "equal", + "value": "snapshots" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "utf8", + "data": "object-tests/snapshots-only/object-tests/snapshots-only/object.txt2024-01-01T00:00:00.6170785ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-493478beeeaf4application/octet-streamTYtghPPRZ7dsrGaiKpG+Ag==BlockBlobHottrueunlockedavailabletrue" + }, + "framing": "chunked" + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/entries/0/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/snapshots-only/object.txt" + } + }, + { + "at": "/value/entries/0/size", + "optional": false, + "rule": { + "is": "equal", + "value": 4 + } + }, + { + "at": "/value/entries/0/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-493478beeeaf" + } + }, + { + "at": "/value/entries/0/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.6170785Z" + } + }, + { + "at": "/value/entries/0/is_current_version", + "optional": false, + "rule": { + "is": "equal", + "value": true + } + }, + { + "at": "/value/entries/0/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "TYtghPPRZ7dsrGaiKpG+Ag==" + } + }, + { + "at": "/value/entries", + "optional": false, + "rule": { + "is": "array_length", + "value": 1 + } + }, + { + "at": "/value/prefixes", + "optional": false, + "rule": { + "is": "array_length", + "value": 0 + } + }, + { + "at": "/value/continuation_token", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/list-snapshots-and-versions", + "profile": "azure", + "lane": "core", + "purpose": "list snapshots and versions", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "include": [ + "snapshots", + "versions" + ], + "op": "list_page", + "prefix": "object-tests/snapshots/" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/restype", + "optional": false, + "rule": { + "is": "equal", + "value": "container" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "list" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/snapshots/" + } + }, + { + "at": "/query/include", + "optional": false, + "rule": { + "is": "equal", + "value": "snapshots,versions" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "utf8", + "data": "object-tests/snapshots/object-tests/snapshots/object.txt2024-01-01T00:00:00.4877091ZMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-7adbbe4768f33application/octet-stream+XxdKZQb+xsv2rCHSQargg==BlockBlobHottruetrueobject-tests/snapshots/object.txt2024-01-01T00:00:00.7351568ZMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-7adbbe4768f33application/octet-stream+XxdKZQb+xsv2rCHSQargg==BlockBlobHottruetrueobject-tests/snapshots/object.txt2024-01-01T00:00:00.8746441ZMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-7adbbe4768f33application/octet-stream+XxdKZQb+xsv2rCHSQargg==BlockBlobHottruetrueobject-tests/snapshots/object.txt2024-01-01T00:00:00.6268993ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-222f410e528f3application/octet-streamuKn3Fdu2T9XFbneDxoIKYQ==BlockBlobHottrueunlockedavailabletrue" + }, + "framing": "chunked" + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/entries/0/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/snapshots/object.txt" + } + }, + { + "at": "/value/entries/0/size", + "optional": false, + "rule": { + "is": "equal", + "value": 3 + } + }, + { + "at": "/value/entries/0/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-7adbbe4768f3" + } + }, + { + "at": "/value/entries/0/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.4877091Z" + } + }, + { + "at": "/value/entries/0/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/0/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "+XxdKZQb+xsv2rCHSQargg==" + } + }, + { + "at": "/value/entries/1/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/snapshots/object.txt" + } + }, + { + "at": "/value/entries/1/size", + "optional": false, + "rule": { + "is": "equal", + "value": 3 + } + }, + { + "at": "/value/entries/1/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-7adbbe4768f3" + } + }, + { + "at": "/value/entries/1/snapshot", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.7351568Z" + } + }, + { + "at": "/value/entries/1/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/1/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/1/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "+XxdKZQb+xsv2rCHSQargg==" + } + }, + { + "at": "/value/entries/2/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/snapshots/object.txt" + } + }, + { + "at": "/value/entries/2/size", + "optional": false, + "rule": { + "is": "equal", + "value": 3 + } + }, + { + "at": "/value/entries/2/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-7adbbe4768f3" + } + }, + { + "at": "/value/entries/2/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/2/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.8746441Z" + } + }, + { + "at": "/value/entries/2/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/2/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "+XxdKZQb+xsv2rCHSQargg==" + } + }, + { + "at": "/value/entries/3/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/snapshots/object.txt" + } + }, + { + "at": "/value/entries/3/size", + "optional": false, + "rule": { + "is": "equal", + "value": 3 + } + }, + { + "at": "/value/entries/3/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-222f410e528f" + } + }, + { + "at": "/value/entries/3/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/3/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.6268993Z" + } + }, + { + "at": "/value/entries/3/is_current_version", + "optional": false, + "rule": { + "is": "equal", + "value": true + } + }, + { + "at": "/value/entries/3/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "uKn3Fdu2T9XFbneDxoIKYQ==" + } + }, + { + "at": "/value/entries", + "optional": false, + "rule": { + "is": "array_length", + "value": 4 + } + }, + { + "at": "/value/prefixes", + "optional": false, + "rule": { + "is": "array_length", + "value": 0 + } + }, + { + "at": "/value/continuation_token", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/list-snapshots", + "profile": "azure", + "lane": "core", + "purpose": "list snapshots", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "include": [ + "snapshots" + ], + "op": "list_page", + "prefix": "object-tests/snapshots/" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/restype", + "optional": false, + "rule": { + "is": "equal", + "value": "container" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "list" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/snapshots/" + } + }, + { + "at": "/query/include", + "optional": false, + "rule": { + "is": "equal", + "value": "snapshots" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "utf8", + "data": "object-tests/snapshots/object-tests/snapshots/object.txt2024-01-01T00:00:00.7351568ZMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-7adbbe4768f33application/octet-stream+XxdKZQb+xsv2rCHSQargg==BlockBlobHottruetrueobject-tests/snapshots/object.txt2024-01-01T00:00:00.6268993ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-222f410e528f3application/octet-streamuKn3Fdu2T9XFbneDxoIKYQ==BlockBlobHottrueunlockedavailabletrue" + }, + "framing": "chunked" + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/entries/0/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/snapshots/object.txt" + } + }, + { + "at": "/value/entries/0/size", + "optional": false, + "rule": { + "is": "equal", + "value": 3 + } + }, + { + "at": "/value/entries/0/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-7adbbe4768f3" + } + }, + { + "at": "/value/entries/0/snapshot", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.7351568Z" + } + }, + { + "at": "/value/entries/0/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/0/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "+XxdKZQb+xsv2rCHSQargg==" + } + }, + { + "at": "/value/entries/1/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/snapshots/object.txt" + } + }, + { + "at": "/value/entries/1/size", + "optional": false, + "rule": { + "is": "equal", + "value": 3 + } + }, + { + "at": "/value/entries/1/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-222f410e528f" + } + }, + { + "at": "/value/entries/1/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/1/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.6268993Z" + } + }, + { + "at": "/value/entries/1/is_current_version", + "optional": false, + "rule": { + "is": "equal", + "value": true + } + }, + { + "at": "/value/entries/1/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "uKn3Fdu2T9XFbneDxoIKYQ==" + } + }, + { + "at": "/value/entries", + "optional": false, + "rule": { + "is": "array_length", + "value": 2 + } + }, + { + "at": "/value/prefixes", + "optional": false, + "rule": { + "is": "array_length", + "value": 0 + } + }, + { + "at": "/value/continuation_token", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/list-staged-only", + "profile": "azure", + "lane": "core", + "purpose": "list staged only", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "op": "list_page", + "prefix": "object-tests/multipart/staged.bin" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/restype", + "optional": false, + "rule": { + "is": "equal", + "value": "container" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "list" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/multipart/staged.bin" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "utf8", + "data": "object-tests/multipart/staged.bin" + }, + "framing": "chunked" + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/entries", + "optional": false, + "rule": { + "is": "array_length", + "value": 0 + } + }, + { + "at": "/value/prefixes", + "optional": false, + "rule": { + "is": "array_length", + "value": 0 + } + }, + { + "at": "/value/continuation_token", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/list-unauthenticated", + "profile": "azure", + "lane": "core", + "purpose": "Report the service authorization error for this operation; signature acceptance is tested separately.", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "op": "list_page", + "prefix": "object-tests/" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/restype", + "optional": false, + "rule": { + "is": "equal", + "value": "container" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "list" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 401, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "InvalidAuthenticationInfo" + }, + "body": { + "encoding": "utf8", + "data": "InvalidAuthenticationInfoFixture error" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 401 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "InvalidAuthenticationInfo" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/list-versions-of-deleted-object", + "profile": "azure", + "lane": "core", + "purpose": "list versions of deleted object", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "include": [ + "versions" + ], + "op": "list_page", + "prefix": "object-tests/versions-mtydohr2/deleted.txt" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/restype", + "optional": false, + "rule": { + "is": "equal", + "value": "container" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "list" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/versions-mtydohr2/deleted.txt" + } + }, + { + "at": "/query/include", + "optional": false, + "rule": { + "is": "equal", + "value": "versions" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "utf8", + "data": "object-tests/versions-mtydohr2/deleted.txtobject-tests/versions-mtydohr2/deleted.txt2024-01-01T00:00:00.0160641ZMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-3b1602b981e92application/octet-streamASCk+RlqX5659SPzH5FNpw==BlockBlobHottruetrueobject-tests/versions-mtydohr2/deleted.txt2024-01-01T00:00:00.3127057ZMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-629d3a1755352application/octet-stream4cgEiIU9hqudbez+MNiTDw==BlockBlobHottruetrueobject-tests/versions-mtydohr2/deleted.txt2024-01-01T00:00:00.0760252ZMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-4de1996d2b4b2application/octet-streamip/X39qAKSH9xAefmlKM6A==BlockBlobHottruetrue" + }, + "framing": "chunked" + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/entries/0/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/versions-mtydohr2/deleted.txt" + } + }, + { + "at": "/value/entries/0/size", + "optional": false, + "rule": { + "is": "equal", + "value": 2 + } + }, + { + "at": "/value/entries/0/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-3b1602b981e9" + } + }, + { + "at": "/value/entries/0/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.0160641Z" + } + }, + { + "at": "/value/entries/0/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/0/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "ASCk+RlqX5659SPzH5FNpw==" + } + }, + { + "at": "/value/entries/1/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/versions-mtydohr2/deleted.txt" + } + }, + { + "at": "/value/entries/1/size", + "optional": false, + "rule": { + "is": "equal", + "value": 2 + } + }, + { + "at": "/value/entries/1/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-629d3a175535" + } + }, + { + "at": "/value/entries/1/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/1/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.3127057Z" + } + }, + { + "at": "/value/entries/1/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/1/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "4cgEiIU9hqudbez+MNiTDw==" + } + }, + { + "at": "/value/entries/2/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/versions-mtydohr2/deleted.txt" + } + }, + { + "at": "/value/entries/2/size", + "optional": false, + "rule": { + "is": "equal", + "value": 2 + } + }, + { + "at": "/value/entries/2/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-4de1996d2b4b" + } + }, + { + "at": "/value/entries/2/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/2/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.0760252Z" + } + }, + { + "at": "/value/entries/2/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/2/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "ip/X39qAKSH9xAefmlKM6A==" + } + }, + { + "at": "/value/entries", + "optional": false, + "rule": { + "is": "array_length", + "value": 3 + } + }, + { + "at": "/value/prefixes", + "optional": false, + "rule": { + "is": "array_length", + "value": 0 + } + }, + { + "at": "/value/continuation_token", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/list-versions", + "profile": "azure", + "lane": "core", + "purpose": "list versions", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "include": [ + "versions" + ], + "op": "list_page", + "prefix": "object-tests/versions-mtydohr2/" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/restype", + "optional": false, + "rule": { + "is": "equal", + "value": "container" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "list" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/versions-mtydohr2/" + } + }, + { + "at": "/query/include", + "optional": false, + "rule": { + "is": "equal", + "value": "versions" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "utf8", + "data": "object-tests/versions-mtydohr2/object-tests/versions-mtydohr2/object.txt2024-01-01T00:00:00.2318906ZMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-9dc9ff8bf5132application/octet-streamZlTHNMyrj0QP8IJetEPcfw==BlockBlobHottruetrueobject-tests/versions-mtydohr2/object.txt2024-01-01T00:00:00.3326281ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-9e3bb87be41c2application/octet-streamGyZ2GcSBLMRu4oF0eITKUA==BlockBlobHottrueunlockedavailabletrue" + }, + "framing": "chunked" + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/entries/0/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/versions-mtydohr2/object.txt" + } + }, + { + "at": "/value/entries/0/size", + "optional": false, + "rule": { + "is": "equal", + "value": 2 + } + }, + { + "at": "/value/entries/0/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-9dc9ff8bf513" + } + }, + { + "at": "/value/entries/0/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.2318906Z" + } + }, + { + "at": "/value/entries/0/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/0/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "ZlTHNMyrj0QP8IJetEPcfw==" + } + }, + { + "at": "/value/entries/1/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/versions-mtydohr2/object.txt" + } + }, + { + "at": "/value/entries/1/size", + "optional": false, + "rule": { + "is": "equal", + "value": 2 + } + }, + { + "at": "/value/entries/1/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-9e3bb87be41c" + } + }, + { + "at": "/value/entries/1/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/1/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.3326281Z" + } + }, + { + "at": "/value/entries/1/is_current_version", + "optional": false, + "rule": { + "is": "equal", + "value": true + } + }, + { + "at": "/value/entries/1/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "GyZ2GcSBLMRu4oF0eITKUA==" + } + }, + { + "at": "/value/entries", + "optional": false, + "rule": { + "is": "array_length", + "value": 2 + } + }, + { + "at": "/value/prefixes", + "optional": false, + "rule": { + "is": "array_length", + "value": 0 + } + }, + { + "at": "/value/continuation_token", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/list-written-with-hashes", + "profile": "azure", + "lane": "core", + "purpose": "list written with hashes", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "op": "list_page", + "prefix": "object-tests/hashes/" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/restype", + "optional": false, + "rule": { + "is": "equal", + "value": "container" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "list" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/hashes/" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "utf8", + "data": "object-tests/hashes/object-tests/hashes/committed.bin2024-01-01T00:00:00.2802899ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-879f71a2d23b13application/octet-streamN6YZkbg+Lyfxtskwn8iRCg==BlockBlobHottrueunlockedavailabletrueobject-tests/hashes/crc64.txt2024-01-01T00:00:00.1153123ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-c55cf5f18aae13application/octet-stream9XBvAwWoR9o=N6YZkbg+Lyfxtskwn8iRCg==BlockBlobHottrueunlockedavailabletrueobject-tests/hashes/md5.txt2024-01-01T00:00:00.7803759ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-1f199b777f0713application/octet-streamN6YZkbg+Lyfxtskwn8iRCg==BlockBlobHottrueunlockedavailabletrue" + }, + "framing": "chunked" + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/entries/0/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/hashes/committed.bin" + } + }, + { + "at": "/value/entries/0/size", + "optional": false, + "rule": { + "is": "equal", + "value": 13 + } + }, + { + "at": "/value/entries/0/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-879f71a2d23b" + } + }, + { + "at": "/value/entries/0/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.2802899Z" + } + }, + { + "at": "/value/entries/0/is_current_version", + "optional": false, + "rule": { + "is": "equal", + "value": true + } + }, + { + "at": "/value/entries/0/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "N6YZkbg+Lyfxtskwn8iRCg==" + } + }, + { + "at": "/value/entries/1/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/hashes/crc64.txt" + } + }, + { + "at": "/value/entries/1/size", + "optional": false, + "rule": { + "is": "equal", + "value": 13 + } + }, + { + "at": "/value/entries/1/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-c55cf5f18aae" + } + }, + { + "at": "/value/entries/1/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/1/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.1153123Z" + } + }, + { + "at": "/value/entries/1/is_current_version", + "optional": false, + "rule": { + "is": "equal", + "value": true + } + }, + { + "at": "/value/entries/1/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "N6YZkbg+Lyfxtskwn8iRCg==" + } + }, + { + "at": "/value/entries/1/content_crc64_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "9XBvAwWoR9o=" + } + }, + { + "at": "/value/entries/2/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/hashes/md5.txt" + } + }, + { + "at": "/value/entries/2/size", + "optional": false, + "rule": { + "is": "equal", + "value": 13 + } + }, + { + "at": "/value/entries/2/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-1f199b777f07" + } + }, + { + "at": "/value/entries/2/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/2/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.7803759Z" + } + }, + { + "at": "/value/entries/2/is_current_version", + "optional": false, + "rule": { + "is": "equal", + "value": true + } + }, + { + "at": "/value/entries/2/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "N6YZkbg+Lyfxtskwn8iRCg==" + } + }, + { + "at": "/value/entries", + "optional": false, + "rule": { + "is": "array_length", + "value": 3 + } + }, + { + "at": "/value/prefixes", + "optional": false, + "rule": { + "is": "array_length", + "value": 0 + } + }, + { + "at": "/value/continuation_token", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/put-container-missing", + "profile": "azure", + "lane": "core", + "purpose": "put container missing. A client reports it as container_not_found: the bucket or container is absent, not the object", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "body_base64": "bm90aGluZyBpcyBzdG9yZWQ=", + "key": "object.txt", + "op": "put" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "bm90aGluZyBpcyBzdG9yZWQ=" + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "BlockBlob" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 404, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "ContainerNotFound" + }, + "body": { + "encoding": "utf8", + "data": "ContainerNotFoundFixture error" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 404 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "ContainerNotFound" + } + }, + { + "at": "/kind", + "optional": false, + "rule": { + "is": "equal", + "value": "container_not_found" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/put-crc64-mismatch", + "profile": "azure", + "lane": "core", + "purpose": "put crc64 mismatch", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "body_base64": "ZGVjbGFyZWQtYm9keQ==", + "checksum": { + "algorithm": "azure_crc64", + "value_base64": "khqMBK+EUSA=" + }, + "key": "object-tests/hashes/crc64-mismatch.txt", + "op": "put" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/hashes/crc64-mismatch.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "ZGVjbGFyZWQtYm9keQ==" + } + }, + { + "at": "/headers/x-ms-content-crc64", + "optional": false, + "rule": { + "is": "equal", + "value": "khqMBK+EUSA=" + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "BlockBlob" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 400, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "Crc64Mismatch" + }, + "body": { + "encoding": "utf8", + "data": "Crc64MismatchFixture error" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 400 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "Crc64Mismatch" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/put-created-empty", + "profile": "azure", + "lane": "core", + "purpose": "put created empty", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "body_base64": "", + "key": "object-tests/write/empty.bin", + "op": "put" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/write/empty.bin" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "BlockBlob" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 201, + "headers": { + "content-md5": "1B2M2Y8AsgTpgAmY7PhCfg==", + "date": { + "from": "now" + }, + "etag": "\"fixture-ee13937a1c94\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-request-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.7573734Z" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-ee13937a1c94\"" + } + }, + { + "at": "/value/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.7573734Z" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/put-created", + "profile": "azure", + "lane": "core", + "purpose": "put created", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "body_base64": "MDEyMzQ1Njc4OQ==", + "key": "object-tests/write/object.txt", + "op": "put" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/write/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MDEyMzQ1Njc4OQ==" + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "BlockBlob" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 201, + "headers": { + "content-md5": "eB5eJF1ptWaXm4bijSPyxw==", + "date": { + "from": "now" + }, + "etag": "\"fixture-b9991ef94e3d\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-request-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.2084665Z" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-b9991ef94e3d\"" + } + }, + { + "at": "/value/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.2084665Z" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/put-created-key-question", + "profile": "azure", + "lane": "core", + "purpose": "put created, with the key \"question?mark.txt\"", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "body_base64": "MDEyMzQ1Njc4OQ==", + "key": "object-tests/keys/question?mark.txt", + "op": "put" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/keys/question?mark.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MDEyMzQ1Njc4OQ==" + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "BlockBlob" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 201, + "headers": { + "content-md5": "eB5eJF1ptWaXm4bijSPyxw==", + "date": { + "from": "now" + }, + "etag": "\"fixture-b9991ef94e3d\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-request-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.2084665Z" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-b9991ef94e3d\"" + } + }, + { + "at": "/value/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.2084665Z" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/put-created-key-hash", + "profile": "azure", + "lane": "core", + "purpose": "put created, with the key \"hash#tag.txt\"", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "body_base64": "MDEyMzQ1Njc4OQ==", + "key": "object-tests/keys/hash#tag.txt", + "op": "put" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/keys/hash#tag.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MDEyMzQ1Njc4OQ==" + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "BlockBlob" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 201, + "headers": { + "content-md5": "eB5eJF1ptWaXm4bijSPyxw==", + "date": { + "from": "now" + }, + "etag": "\"fixture-b9991ef94e3d\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-request-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.2084665Z" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-b9991ef94e3d\"" + } + }, + { + "at": "/value/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.2084665Z" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/put-created-key-percent", + "profile": "azure", + "lane": "core", + "purpose": "put created, with the key \"percent%20.txt\"", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "body_base64": "MDEyMzQ1Njc4OQ==", + "key": "object-tests/keys/percent%20.txt", + "op": "put" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/keys/percent%20.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MDEyMzQ1Njc4OQ==" + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "BlockBlob" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 201, + "headers": { + "content-md5": "eB5eJF1ptWaXm4bijSPyxw==", + "date": { + "from": "now" + }, + "etag": "\"fixture-b9991ef94e3d\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-request-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.2084665Z" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-b9991ef94e3d\"" + } + }, + { + "at": "/value/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.2084665Z" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/put-created-key-plus", + "profile": "azure", + "lane": "core", + "purpose": "put created, with the key \"plus+plus.txt\"", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "body_base64": "MDEyMzQ1Njc4OQ==", + "key": "object-tests/keys/plus+plus.txt", + "op": "put" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/keys/plus+plus.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MDEyMzQ1Njc4OQ==" + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "BlockBlob" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 201, + "headers": { + "content-md5": "eB5eJF1ptWaXm4bijSPyxw==", + "date": { + "from": "now" + }, + "etag": "\"fixture-b9991ef94e3d\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-request-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.2084665Z" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-b9991ef94e3d\"" + } + }, + { + "at": "/value/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.2084665Z" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/put-created-key-space", + "profile": "azure", + "lane": "core", + "purpose": "put created, with the key \"space name.txt\"", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "body_base64": "MDEyMzQ1Njc4OQ==", + "key": "object-tests/keys/space name.txt", + "op": "put" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/keys/space name.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MDEyMzQ1Njc4OQ==" + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "BlockBlob" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 201, + "headers": { + "content-md5": "eB5eJF1ptWaXm4bijSPyxw==", + "date": { + "from": "now" + }, + "etag": "\"fixture-b9991ef94e3d\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-request-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.2084665Z" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-b9991ef94e3d\"" + } + }, + { + "at": "/value/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.2084665Z" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/put-created-key-non-ascii", + "profile": "azure", + "lane": "core", + "purpose": "put created, with the key \"café/雪.txt\"", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "body_base64": "MDEyMzQ1Njc4OQ==", + "key": "object-tests/keys/café/雪.txt", + "op": "put" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/keys/café/雪.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MDEyMzQ1Njc4OQ==" + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "BlockBlob" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 201, + "headers": { + "content-md5": "eB5eJF1ptWaXm4bijSPyxw==", + "date": { + "from": "now" + }, + "etag": "\"fixture-b9991ef94e3d\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-request-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.2084665Z" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-b9991ef94e3d\"" + } + }, + { + "at": "/value/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.2084665Z" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/put-created-key-double-slash", + "profile": "azure", + "lane": "core", + "purpose": "put created, with the key \"double//slash.txt\"", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "body_base64": "MDEyMzQ1Njc4OQ==", + "key": "object-tests/keys/double//slash.txt", + "op": "put" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/keys/double//slash.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MDEyMzQ1Njc4OQ==" + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "BlockBlob" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 201, + "headers": { + "content-md5": "eB5eJF1ptWaXm4bijSPyxw==", + "date": { + "from": "now" + }, + "etag": "\"fixture-b9991ef94e3d\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-request-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.2084665Z" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-b9991ef94e3d\"" + } + }, + { + "at": "/value/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.2084665Z" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/put-created-key-trailing-slash", + "profile": "azure", + "lane": "core", + "purpose": "put created, with the key \"trailing-slash/\"", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "body_base64": "MDEyMzQ1Njc4OQ==", + "key": "object-tests/keys/trailing-slash/", + "op": "put" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/keys/trailing-slash/" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MDEyMzQ1Njc4OQ==" + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "BlockBlob" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 201, + "headers": { + "content-md5": "eB5eJF1ptWaXm4bijSPyxw==", + "date": { + "from": "now" + }, + "etag": "\"fixture-b9991ef94e3d\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-request-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.2084665Z" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-b9991ef94e3d\"" + } + }, + { + "at": "/value/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.2084665Z" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/copy-missing-source", + "profile": "azure", + "lane": "core", + "purpose": "Refuse a copy whose source does not exist", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/copy-blob" + ], + "call": { + "key": "object-tests/copy/target.txt", + "op": "copy", + "source_key": "object-tests/copy/absent.txt" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/copy/target.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/x-ms-copy-source", + "optional": false, + "rule": { + "is": "matches", + "pattern": "https?://[^/]+/fixture/object-tests/copy/absent\\.txt" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 404, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "BlobNotFound" + }, + "body": { + "encoding": "utf8", + "data": "BlobNotFoundFixture error" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 404 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "BlobNotFound" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/copy", + "profile": "azure", + "lane": "core", + "purpose": "Copy an object to another key in the same container", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/copy-blob" + ], + "call": { + "key": "object-tests/copy/target.txt", + "op": "copy", + "source_key": "object-tests/copy/source.txt" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/copy/target.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/x-ms-copy-source", + "optional": false, + "rule": { + "is": "matches", + "pattern": "https?://[^/]+/fixture/object-tests/copy/source\\.txt" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 202, + "headers": { + "date": { + "from": "now" + }, + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-copy-id": "fixture-copy-id", + "x-ms-copy-status": "success" + }, + "body": { + "encoding": "empty" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/copy_status", + "optional": false, + "rule": { + "is": "equal", + "value": "success" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/copy-replace-metadata", + "profile": "azure", + "lane": "core", + "purpose": "Copy a blob with new metadata, which replaces all of the source's. A copy that names no metadata keeps the source's", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/copy-blob" + ], + "call": { + "key": "object-tests/copy/target.txt", + "metadata": { + "colour": "blue" + }, + "op": "copy", + "source_key": "object-tests/copy/source.txt" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/copy/target.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/x-ms-copy-source", + "optional": false, + "rule": { + "is": "matches", + "pattern": "https?://[^/]+/fixture/object-tests/copy/source\\.txt" + } + }, + { + "at": "/headers/x-ms-meta-colour", + "optional": false, + "rule": { + "is": "equal", + "value": "blue" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 202, + "headers": { + "date": { + "from": "now" + }, + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-copy-id": "fixture-copy-id", + "x-ms-copy-status": "success" + }, + "body": { + "encoding": "empty" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/copy_status", + "optional": false, + "rule": { + "is": "equal", + "value": "success" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/copy-source-if-match", + "profile": "azure", + "lane": "core", + "purpose": "Copy a blob only if the source still has this ETag, named in x-ms-source-if-match", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/copy-blob" + ], + "call": { + "key": "object-tests/copy/target.txt", + "op": "copy", + "source_if_match": "\"fixture-etag\"", + "source_key": "object-tests/copy/source.txt" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/copy/target.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/x-ms-copy-source", + "optional": false, + "rule": { + "is": "matches", + "pattern": "https?://[^/]+/fixture/object-tests/copy/source\\.txt" + } + }, + { + "at": "/headers/x-ms-source-if-match", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-etag\"" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 202, + "headers": { + "date": { + "from": "now" + }, + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-copy-id": "fixture-copy-id", + "x-ms-copy-status": "success" + }, + "body": { + "encoding": "empty" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/copy_status", + "optional": false, + "rule": { + "is": "equal", + "value": "success" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/copy-source-if-match-failed", + "profile": "azure", + "lane": "core", + "purpose": "Report a copy whose source does not have the ETag in x-ms-source-if-match as a failed condition, 412 SourceConditionNotMet", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/copy-blob" + ], + "call": { + "key": "object-tests/copy/target.txt", + "op": "copy", + "source_if_match": "\"fixture-0123456789ab\"", + "source_key": "object-tests/copy/source.txt" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/copy/target.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/x-ms-copy-source", + "optional": false, + "rule": { + "is": "matches", + "pattern": "https?://[^/]+/fixture/object-tests/copy/source\\.txt" + } + }, + { + "at": "/headers/x-ms-source-if-match", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-0123456789ab\"" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 412, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "SourceConditionNotMet" + }, + "body": { + "encoding": "utf8", + "data": "SourceConditionNotMetFixture error" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 412 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "SourceConditionNotMet" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/copy-source-if-unmodified-since-failed", + "profile": "azure", + "lane": "core", + "purpose": "Report a copy whose source changed after the time in x-ms-source-if-unmodified-since as a failed condition, 412 SourceConditionNotMet", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/copy-blob" + ], + "call": { + "key": "object-tests/copy/target.txt", + "op": "copy", + "source_if_unmodified_since": "Mon, 01 Jan 2024 00:00:00 GMT", + "source_key": "object-tests/copy/source.txt" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/copy/target.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/x-ms-copy-source", + "optional": false, + "rule": { + "is": "matches", + "pattern": "https?://[^/]+/fixture/object-tests/copy/source\\.txt" + } + }, + { + "at": "/headers/x-ms-source-if-unmodified-since", + "optional": false, + "rule": { + "is": "equal", + "value": "Mon, 01 Jan 2024 00:00:00 GMT" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 412, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "SourceConditionNotMet" + }, + "body": { + "encoding": "utf8", + "data": "SourceConditionNotMetFixture error" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 412 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "SourceConditionNotMet" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/copy-if-none-match-exists", + "profile": "azure", + "lane": "core", + "purpose": "Report a copy with If-None-Match: * onto a blob that exists as a failed condition on the destination", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/copy-blob" + ], + "call": { + "if_none_match": "*", + "key": "object-tests/copy/target.txt", + "op": "copy", + "source_key": "object-tests/copy/source.txt" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/copy/target.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/x-ms-copy-source", + "optional": false, + "rule": { + "is": "matches", + "pattern": "https?://[^/]+/fixture/object-tests/copy/source\\.txt" + } + }, + { + "at": "/headers/if-none-match", + "optional": false, + "rule": { + "is": "equal", + "value": "*" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 409, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "BlobAlreadyExists" + }, + "body": { + "encoding": "utf8", + "data": "BlobAlreadyExistsFixture error" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 409 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "BlobAlreadyExists" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/copy-across-containers", + "profile": "azure", + "lane": "core", + "purpose": "Copy a blob from another container of the same account, which x-ms-copy-source names in its URL", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/copy-blob" + ], + "call": { + "key": "object-tests/copy/target.txt", + "op": "copy", + "source_container": "source", + "source_key": "object-tests/copy/source.txt" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/copy/target.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/x-ms-copy-source", + "optional": false, + "rule": { + "is": "matches", + "pattern": "https?://[^/]+/source/object-tests/copy/source\\.txt" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 202, + "headers": { + "date": { + "from": "now" + }, + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-copy-id": "fixture-copy-id", + "x-ms-copy-status": "success" + }, + "body": { + "encoding": "empty" } } } @@ -5833,59 +34270,222 @@ } }, { - "at": "/value/etag", + "at": "/value/copy_status", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-be8efdb79010\"" + "value": "success" } - }, + } + ], + "refusal": null + }, + { + "id": "operations/azure/copy-tier", + "profile": "azure", + "lane": "core", + "purpose": "Copy a blob into another access tier, named in x-ms-access-tier", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/copy-blob" + ], + "call": { + "key": "object-tests/copy/target.txt", + "op": "copy", + "source_key": "object-tests/copy/source.txt", + "tier": "Cool" + }, + "exchanges": [ { - "at": "/value/size", + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/copy/target.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/x-ms-copy-source", + "optional": false, + "rule": { + "is": "matches", + "pattern": "https?://[^/]+/fixture/object-tests/copy/source\\.txt" + } + }, + { + "at": "/headers/x-ms-access-tier", + "optional": false, + "rule": { + "is": "equal", + "value": "Cool" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 202, + "headers": { + "date": { + "from": "now" + }, + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-copy-id": "fixture-copy-id", + "x-ms-copy-status": "success" + }, + "body": { + "encoding": "empty" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": 11 + "value": "ok" } }, { - "at": "/value/content_type", + "at": "/value/copy_status", "optional": false, "rule": { "is": "equal", - "value": "application/octet-stream" + "value": "success" } - }, + } + ], + "refusal": null + }, + { + "id": "operations/azure/copy-source-key-encoded", + "profile": "azure", + "lane": "core", + "purpose": "Copy from a key with a space, +, %, é, ? and #. The x-ms-copy-source URL percent-encodes every byte of the key outside letters, digits, -._~ and /", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/copy-blob" + ], + "call": { + "key": "object-tests/copy/target.txt", + "op": "copy", + "source_key": "object-tests/copy/a b+c%é?#.txt" + }, + "exchanges": [ { - "at": "/value/version", + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/copy/target.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/x-ms-copy-source", + "optional": false, + "rule": { + "is": "matches", + "pattern": "https?://[^/]+/fixture/object-tests/copy/a%20b%2[Bb]c%25%[Cc]3%[Aa]9%3[Ff]%23\\.txt" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 202, + "headers": { + "date": { + "from": "now" + }, + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-copy-id": "fixture-copy-id", + "x-ms-copy-status": "success" + }, + "body": { + "encoding": "empty" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "2024-01-01T00:00:00.7848460Z" + "value": "ok" } }, { - "at": "/value/body_base64", + "at": "/value/copy_status", "optional": false, "rule": { "is": "equal", - "value": "Zmlyc3RzZWNvbmQ=" + "value": "success" } } ], "refusal": null }, { - "id": "operations/azure/get-container-missing", + "id": "operations/azure/copy-source-version", "profile": "azure", "lane": "core", - "purpose": "get container missing", + "purpose": "Copy an earlier version of a blob, named by versionid in the x-ms-copy-source URL", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "https://learn.microsoft.com/en-us/rest/api/storageservices/copy-blob" ], "call": { - "key": "object.txt", - "op": "get" + "key": "object-tests/copy/target.txt", + "op": "copy", + "source_key": "object-tests/copy/source.txt", + "source_version": "2024-01-01T00:00:00.0000000Z" }, "exchanges": [ { @@ -5897,7 +34497,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -5905,7 +34505,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object.txt" + "value": "/fixture/object-tests/copy/target.txt" } }, { @@ -5915,22 +34515,31 @@ "is": "equal", "value": "" } + }, + { + "at": "/headers/x-ms-copy-source", + "optional": false, + "rule": { + "is": "matches", + "pattern": "https?://[^/]+/fixture/object-tests/copy/source\\.txt\\?versionid=2024-01-01T00(?:%3[Aa]|:)00(?:%3[Aa]|:)00\\.0000000Z" + } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 404, + "status": 202, "headers": { - "content-type": "application/xml", "date": { "from": "now" }, - "x-ms-error-code": "ContainerNotFound" + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-copy-id": "fixture-copy-id", + "x-ms-copy-status": "success" }, "body": { - "encoding": "utf8", - "data": "ContainerNotFoundFixture error" + "encoding": "empty" } } } @@ -5943,39 +34552,33 @@ "optional": false, "rule": { "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 404 + "value": "ok" } }, { - "at": "/code", + "at": "/value/copy_status", "optional": false, "rule": { "is": "equal", - "value": "ContainerNotFound" + "value": "success" } } ], "refusal": null }, { - "id": "operations/azure/list-containers", + "id": "operations/azure/copy-sync", "profile": "azure", "lane": "core", - "purpose": "List the containers whose names start with a prefix", + "purpose": "Copy a blob with Copy Blob From URL, x-ms-requires-sync: true, which answers once the copy is done. The source must be readable by URL: by a SAS, or by a bearer token in x-ms-copy-source-authorization", "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/list-containers2" + "https://learn.microsoft.com/en-us/rest/api/storageservices/copy-blob-from-url" ], "call": { - "op": "azure.list_containers", - "prefix": "otc-listed-" + "key": "object-tests/copy/target.txt", + "op": "copy", + "source_key": "object-tests/copy/source.txt", + "sync": true }, "exchanges": [ { @@ -5987,7 +34590,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -5995,7 +34598,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/" + "value": "/fixture/object-tests/copy/target.txt" } }, { @@ -6007,37 +34610,40 @@ } }, { - "at": "/query/comp", + "at": "/headers/x-ms-copy-source", "optional": false, "rule": { - "is": "equal", - "value": "list" + "is": "matches", + "pattern": "https?://[^/]+/fixture/object-tests/copy/source\\.txt" } }, { - "at": "/query/prefix", + "at": "/headers/x-ms-requires-sync", "optional": false, "rule": { "is": "equal", - "value": "otc-listed-" + "value": "true" } } ], - "allow_headers": [], + "allow_headers": [ + "x-ms-copy-source-authorization" + ], "allow_query": [], "response": { - "status": 200, + "status": 202, "headers": { - "content-type": "application/xml", "date": { "from": "now" - } + }, + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-copy-id": "fixture-copy-id", + "x-ms-copy-status": "success" }, "body": { - "encoding": "utf8", - "data": "otc-listed-otc-listed-aMon, 01 Jan 2024 00:00:00 GMT\"fixture-etag\"unlockedavailablefalsefalseotc-listed-bMon, 01 Jan 2024 00:00:00 GMT\"fixture-etag\"unlockedavailablefalsefalse" - }, - "framing": "chunked" + "encoding": "empty" + } } } ] @@ -6053,30 +34659,30 @@ } }, { - "at": "/value/containers", + "at": "/value/copy_status", "optional": false, "rule": { "is": "equal", - "value": [ - "otc-listed-a", - "otc-listed-b" - ] + "value": "success" } } ], "refusal": null }, { - "id": "operations/azure/container-properties-absent", + "id": "operations/azure/copy-pending", "profile": "azure", "lane": "core", - "purpose": "Report a missing container when reading its properties", + "purpose": "Report a copy that Azure answers as pending with its copy ID, so that a caller can follow it with a HEAD or abort it", "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/get-container-properties" + "https://learn.microsoft.com/en-us/rest/api/storageservices/copy-blob" ], + "origin": "transient", + "derived_from": "operations/azure/copy", "call": { - "container": "otc-absent", - "op": "azure.container_properties" + "key": "object-tests/copy/target.txt", + "op": "copy", + "source_key": "object-tests/copy/source.txt" }, "exchanges": [ { @@ -6088,7 +34694,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -6096,7 +34702,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/otc-absent" + "value": "/fixture/object-tests/copy/target.txt" } }, { @@ -6108,28 +34714,29 @@ } }, { - "at": "/query/restype", + "at": "/headers/x-ms-copy-source", "optional": false, "rule": { - "is": "equal", - "value": "container" + "is": "matches", + "pattern": "https?://[^/]+/fixture/object-tests/copy/source\\.txt" } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 404, + "status": 202, "headers": { - "content-type": "application/xml", "date": { "from": "now" }, - "x-ms-error-code": "ContainerNotFound" + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-copy-id": "fixture-copy-id", + "x-ms-copy-status": "pending" }, "body": { - "encoding": "utf8", - "data": "ContainerNotFoundFixture error" + "encoding": "empty" } } } @@ -6142,39 +34749,40 @@ "optional": false, "rule": { "is": "equal", - "value": "error" + "value": "ok" } }, { - "at": "/status", + "at": "/value/copy_status", "optional": false, "rule": { "is": "equal", - "value": 404 + "value": "pending" } }, { - "at": "/code", + "at": "/value/copy_id", "optional": false, "rule": { "is": "equal", - "value": "ContainerNotFound" + "value": "fixture-copy-id" } } ], "refusal": null }, { - "id": "operations/azure/container-properties", + "id": "operations/azure/put-from-url", "profile": "azure", "lane": "core", - "purpose": "Read the properties of a container", + "purpose": "Write a block blob from the bytes at a URL with Put Blob From URL: a PUT with x-ms-blob-type: BlockBlob, x-ms-copy-source and no body, which answers once it is written", "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/get-container-properties" + "https://learn.microsoft.com/en-us/rest/api/storageservices/put-blob-from-url" ], "call": { - "container": "otc-read", - "op": "azure.container_properties" + "key": "object-tests/copy/target.txt", + "op": "azure.put_from_url", + "source_key": "object-tests/copy/source.txt" }, "exchanges": [ { @@ -6186,7 +34794,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -6194,7 +34802,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/otc-read" + "value": "/fixture/object-tests/copy/target.txt" } }, { @@ -6206,28 +34814,36 @@ } }, { - "at": "/query/restype", + "at": "/headers/x-ms-copy-source", + "optional": false, + "rule": { + "is": "matches", + "pattern": "https?://[^/]+/fixture/object-tests/copy/source\\.txt" + } + }, + { + "at": "/headers/x-ms-blob-type", "optional": false, "rule": { "is": "equal", - "value": "container" + "value": "BlockBlob" } } ], - "allow_headers": [], + "allow_headers": [ + "x-ms-copy-source-authorization", + "x-ms-copy-source-blob-properties" + ], "allow_query": [], "response": { - "status": 200, + "status": 201, "headers": { "date": { "from": "now" }, "etag": "\"fixture-etag\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-has-immutability-policy": "false", - "x-ms-has-legal-hold": "false", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked" + "x-ms-request-server-encrypted": "true" }, "body": { "encoding": "empty" @@ -6245,21 +34861,32 @@ "is": "equal", "value": "ok" } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-etag\"" + } } ], "refusal": null }, { - "id": "operations/azure/delete-container-absent", + "id": "operations/azure/abort-copy", "profile": "azure", "lane": "core", - "purpose": "Report a missing container on delete", + "purpose": "Abort a pending copy by its copy ID, with x-ms-copy-action: abort", "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/delete-container" + "https://learn.microsoft.com/en-us/rest/api/storageservices/abort-copy-blob" ], + "origin": "transient", + "derived_from": "operations/azure/abort-copy-finished", "call": { - "container": "otc-absent", - "op": "azure.delete_container" + "copy_id": "fixture-copy-id", + "key": "object-tests/copy/target.txt", + "op": "azure.abort_copy" }, "exchanges": [ { @@ -6271,7 +34898,7 @@ "optional": false, "rule": { "is": "equal", - "value": "DELETE" + "value": "PUT" } }, { @@ -6279,7 +34906,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/otc-absent" + "value": "/fixture/object-tests/copy/target.txt" } }, { @@ -6291,28 +34918,140 @@ } }, { - "at": "/query/restype", + "at": "/query/comp", "optional": false, "rule": { "is": "equal", - "value": "container" + "value": "copy" + } + }, + { + "at": "/query/copyid", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-copy-id" + } + }, + { + "at": "/headers/x-ms-copy-action", + "optional": false, + "rule": { + "is": "equal", + "value": "abort" } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 404, + "status": 204, + "headers": { + "date": { + "from": "now" + } + }, + "body": { + "encoding": "empty" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/abort-copy-finished", + "profile": "azure", + "lane": "core", + "purpose": "Report an abort of a copy that has finished as an error, 409 NoPendingCopyOperation", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/abort-copy-blob" + ], + "call": { + "copy_id": "fixture-copy-id", + "key": "object-tests/copy/target.txt", + "op": "azure.abort_copy" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/copy/target.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "copy" + } + }, + { + "at": "/query/copyid", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-copy-id" + } + }, + { + "at": "/headers/x-ms-copy-action", + "optional": false, + "rule": { + "is": "equal", + "value": "abort" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 409, "headers": { "content-type": "application/xml", "date": { "from": "now" }, - "x-ms-error-code": "ContainerNotFound" + "x-ms-error-code": "NoPendingCopyOperation" }, "body": { "encoding": "utf8", - "data": "ContainerNotFoundFixture error" + "data": "NoPendingCopyOperationFixture error" } } } @@ -6333,7 +35072,7 @@ "optional": false, "rule": { "is": "equal", - "value": 404 + "value": 409 } }, { @@ -6341,23 +35080,23 @@ "optional": false, "rule": { "is": "equal", - "value": "ContainerNotFound" + "value": "NoPendingCopyOperation" } } ], "refusal": null }, { - "id": "operations/azure/delete-container", + "id": "operations/azure/get-page-ranges", "profile": "azure", "lane": "core", - "purpose": "Delete a container", + "purpose": "List the written ranges of a page blob", "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/delete-container" + "https://learn.microsoft.com/en-us/rest/api/storageservices/get-page-ranges" ], "call": { - "container": "otc-deleted", - "op": "azure.delete_container" + "key": "object-tests/pages/object.vhd", + "op": "azure.get_page_ranges" }, "exchanges": [ { @@ -6369,7 +35108,7 @@ "optional": false, "rule": { "is": "equal", - "value": "DELETE" + "value": "GET" } }, { @@ -6377,7 +35116,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/otc-deleted" + "value": "/fixture/object-tests/pages/object.vhd" } }, { @@ -6389,26 +35128,32 @@ } }, { - "at": "/query/restype", + "at": "/query/comp", "optional": false, "rule": { "is": "equal", - "value": "container" + "value": "pagelist" } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 202, + "status": 200, "headers": { + "content-type": "application/xml", "date": { "from": "now" - } + }, + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-content-length": "1024" }, "body": { - "encoding": "empty" - } + "encoding": "utf8", + "data": "0511" + }, + "framing": "chunked" } } ] @@ -6422,21 +35167,36 @@ "is": "equal", "value": "ok" } + }, + { + "at": "/value/ranges", + "optional": false, + "rule": { + "is": "equal", + "value": [ + { + "end": 512, + "start": 0 + } + ] + } } ], "refusal": null }, { - "id": "operations/azure/create-container-invalid-name", + "id": "operations/azure/upload-pages-unaligned", "profile": "azure", "lane": "core", - "purpose": "Refuse a container name with capitals and an underscore", + "purpose": "Refuse a page write that does not start on a 512-byte boundary", "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/naming-and-referencing-containers--blobs--and-metadata" + "https://learn.microsoft.com/en-us/rest/api/storageservices/put-page" ], "call": { - "container": "Otc_Invalid", - "op": "azure.create_container" + "body_base64": "cHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHA=", + "key": "object-tests/pages/object.vhd", + "offset": 1, + "op": "azure.upload_pages" }, "exchanges": [ { @@ -6456,7 +35216,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/Otc_Invalid" + "value": "/fixture/object-tests/pages/object.vhd" } }, { @@ -6464,15 +35224,31 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "cHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHA=" } }, { - "at": "/query/restype", + "at": "/query/comp", "optional": false, "rule": { "is": "equal", - "value": "container" + "value": "page" + } + }, + { + "at": "/headers/x-ms-page-write", + "optional": false, + "rule": { + "is": "equal", + "value": "update" + } + }, + { + "at": "/headers/x-ms-range", + "optional": false, + "rule": { + "is": "equal", + "value": "bytes=1-512" } } ], @@ -6485,11 +35261,11 @@ "date": { "from": "now" }, - "x-ms-error-code": "InvalidResourceName" + "x-ms-error-code": "InvalidHeaderValue" }, "body": { "encoding": "utf8", - "data": "InvalidResourceNameFixture error" + "data": "InvalidHeaderValueFixture error" } } } @@ -6518,23 +35294,25 @@ "optional": false, "rule": { "is": "equal", - "value": "InvalidResourceName" + "value": "InvalidHeaderValue" } } ], "refusal": null }, { - "id": "operations/azure/create-container-exists", + "id": "operations/azure/upload-pages", "profile": "azure", "lane": "core", - "purpose": "Refuse to create a container that exists", + "purpose": "Write the first page of a page blob", "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/create-container" + "https://learn.microsoft.com/en-us/rest/api/storageservices/put-page" ], "call": { - "container": "otc-existing", - "op": "azure.create_container" + "body_base64": "cHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHA=", + "key": "object-tests/pages/object.vhd", + "offset": 0, + "op": "azure.upload_pages" }, "exchanges": [ { @@ -6554,7 +35332,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/otc-existing" + "value": "/fixture/object-tests/pages/object.vhd" } }, { @@ -6562,32 +35340,49 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "cHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHA=" } }, { - "at": "/query/restype", + "at": "/query/comp", "optional": false, "rule": { "is": "equal", - "value": "container" + "value": "page" + } + }, + { + "at": "/headers/x-ms-page-write", + "optional": false, + "rule": { + "is": "equal", + "value": "update" + } + }, + { + "at": "/headers/x-ms-range", + "optional": false, + "rule": { + "is": "equal", + "value": "bytes=0-511" } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 409, + "status": 201, "headers": { - "content-type": "application/xml", "date": { "from": "now" }, - "x-ms-error-code": "ContainerAlreadyExists" + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-sequence-number": "0", + "x-ms-request-server-encrypted": "true" }, "body": { - "encoding": "utf8", - "data": "ContainerAlreadyExistsFixture error" + "encoding": "empty" } } } @@ -6600,39 +35395,24 @@ "optional": false, "rule": { "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 409 - } - }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "equal", - "value": "ContainerAlreadyExists" + "value": "ok" } } ], "refusal": null }, { - "id": "operations/azure/create-container", + "id": "operations/azure/create-page", "profile": "azure", "lane": "core", - "purpose": "Create a container", + "purpose": "Create a page blob of 1,024 bytes", "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/create-container" + "https://learn.microsoft.com/en-us/rest/api/storageservices/put-blob" ], "call": { - "container": "otc-created", - "op": "azure.create_container" + "key": "object-tests/pages/object.vhd", + "op": "azure.create_page", + "size": 1024 }, "exchanges": [ { @@ -6652,7 +35432,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/otc-created" + "value": "/fixture/object-tests/pages/object.vhd" } }, { @@ -6664,11 +35444,19 @@ } }, { - "at": "/query/restype", + "at": "/headers/x-ms-blob-type", "optional": false, "rule": { "is": "equal", - "value": "container" + "value": "PageBlob" + } + }, + { + "at": "/headers/x-ms-blob-content-length", + "optional": false, + "rule": { + "is": "equal", + "value": "1024" } } ], @@ -6681,7 +35469,8 @@ "from": "now" }, "etag": "\"fixture-etag\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-request-server-encrypted": "true" }, "body": { "encoding": "empty" @@ -6704,17 +35493,17 @@ "refusal": null }, { - "id": "operations/azure/get-current-version-of-deleted-object", + "id": "operations/azure/append-block-to-block-blob", "profile": "azure", "lane": "core", - "purpose": "get current version of deleted object", + "purpose": "Refuse an append to a block blob", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "https://learn.microsoft.com/en-us/rest/api/storageservices/append-block" ], "call": { - "key": "object-tests/versions-mtydohr2/deleted.txt", - "op": "get", - "version": "2024-01-01T00:00:00.3127057Z" + "body_base64": "c2Vjb25k", + "key": "object-tests/append/object.log", + "op": "azure.append_block" }, "exchanges": [ { @@ -6726,7 +35515,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -6734,7 +35523,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/versions-mtydohr2/deleted.txt" + "value": "/fixture/object-tests/append/object.log" } }, { @@ -6742,38 +35531,32 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "c2Vjb25k" } }, { - "at": "/query/versionid", + "at": "/query/comp", "optional": false, "rule": { "is": "equal", - "value": "2024-01-01T00:00:00.3127057Z" + "value": "appendblock" } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 200, + "status": 409, "headers": { - "content-md5": "4cgEiIU9hqudbez+MNiTDw==", - "content-type": "application/octet-stream", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-2fd2c5abfb9e\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-server-encrypted": "true", - "x-ms-version-id": "2024-01-01T00:00:00.3127057Z" + "x-ms-error-code": "InvalidBlobType" }, "body": { - "encoding": "base64", - "data": "ZzI=" + "encoding": "utf8", + "data": "InvalidBlobTypeFixture error" } } } @@ -6786,71 +35569,148 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "error" } }, { - "at": "/value/etag", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-2fd2c5abfb9e\"" + "value": 409 } }, { - "at": "/value/size", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": 2 + "value": "InvalidBlobType" } - }, + } + ], + "refusal": null + }, + { + "id": "operations/azure/append-block-at-wrong-position", + "profile": "azure", + "lane": "core", + "purpose": "Refuse an append whose position condition does not match the blob length", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/append-block" + ], + "call": { + "append_position": 0, + "body_base64": "c2Vjb25k", + "key": "object-tests/append/object.log", + "op": "azure.append_block" + }, + "exchanges": [ { - "at": "/value/content_type", - "optional": false, - "rule": { - "is": "equal", - "value": "application/octet-stream" - } - }, + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/append/object.log" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "c2Vjb25k" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "appendblock" + } + }, + { + "at": "/headers/x-ms-blob-condition-appendpos", + "optional": false, + "rule": { + "is": "equal", + "value": "0" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 412, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "AppendPositionConditionNotMet" + }, + "body": { + "encoding": "utf8", + "data": "AppendPositionConditionNotMetFixture error" + } + } + } + ] + } + ], + "expect": [ { - "at": "/value/content_md5_base64", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "4cgEiIU9hqudbez+MNiTDw==" + "value": "error" } }, { - "at": "/value/version", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "2024-01-01T00:00:00.3127057Z" + "value": 412 } }, { - "at": "/value/body_base64", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": "ZzI=" + "value": "AppendPositionConditionNotMet" } } ], "refusal": null }, { - "id": "operations/azure/get-current-version", + "id": "operations/azure/append-block", "profile": "azure", "lane": "core", - "purpose": "get current version", + "purpose": "Append a block to an append blob and report its offset", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "https://learn.microsoft.com/en-us/rest/api/storageservices/append-block" ], "call": { - "key": "object-tests/versions-mtydohr2/object.txt", - "op": "get" + "body_base64": "c2Vjb25k", + "key": "object-tests/append/object.log", + "op": "azure.append_block" }, "exchanges": [ { @@ -6862,7 +35722,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -6870,7 +35730,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/versions-mtydohr2/object.txt" + "value": "/fixture/object-tests/append/object.log" } }, { @@ -6878,32 +35738,34 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "c2Vjb25k" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "appendblock" } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 200, + "status": 201, "headers": { - "content-md5": "GyZ2GcSBLMRu4oF0eITKUA==", - "content-type": "application/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-4768de772705\"", + "etag": "\"fixture-etag\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true", - "x-ms-version-id": "2024-01-01T00:00:00.3326281Z" + "x-ms-blob-append-offset": "5", + "x-ms-blob-committed-block-count": "2", + "x-ms-request-server-encrypted": "true" }, "body": { - "encoding": "base64", - "data": "djI=" + "encoding": "empty" } } } @@ -6920,68 +35782,227 @@ } }, { - "at": "/value/etag", + "at": "/value/append_offset", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-4768de772705\"" + "value": 5 } }, { - "at": "/value/size", + "at": "/value/committed_block_count", "optional": false, "rule": { "is": "equal", "value": 2 } - }, + } + ], + "refusal": null + }, + { + "id": "operations/azure/create-append", + "profile": "azure", + "lane": "core", + "purpose": "Create an empty append blob", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/put-blob" + ], + "call": { + "key": "object-tests/append/object.log", + "op": "azure.create_append" + }, + "exchanges": [ { - "at": "/value/content_type", + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/append/object.log" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "AppendBlob" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 201, + "headers": { + "date": { + "from": "now" + }, + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-request-server-encrypted": "true" + }, + "body": { + "encoding": "empty" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "application/octet-stream" + "value": "ok" } - }, + } + ], + "refusal": null + }, + { + "id": "operations/azure/put-leased-if-match-without-lease-id", + "profile": "azure", + "lane": "core", + "purpose": "Refuse a write to a leased object whose If-Match holds but that names no lease ID", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/lease-blob" + ], + "call": { + "body_base64": "c2Vjb25k", + "if_match": "\"fixture-etag\"", + "key": "object-tests/leases/object.txt", + "op": "put" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/leases/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "c2Vjb25k" + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "BlockBlob" + } + }, + { + "at": "/headers/if-match", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-etag\"" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 412, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "LeaseIdMissing" + }, + "body": { + "encoding": "utf8", + "data": "LeaseIdMissingFixture error" + } + } + } + ] + } + ], + "expect": [ { - "at": "/value/content_md5_base64", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "GyZ2GcSBLMRu4oF0eITKUA==" + "value": "error" } }, { - "at": "/value/version", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "2024-01-01T00:00:00.3326281Z" + "value": 412 } }, { - "at": "/value/body_base64", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": "djI=" + "value": "LeaseIdMissing" } } ], "refusal": null }, { - "id": "operations/azure/get-deleted-snapshot", + "id": "operations/azure/put-leased-with-lease-id", "profile": "azure", "lane": "core", - "purpose": "get deleted snapshot", + "purpose": "Write to a leased object with its lease ID", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "https://learn.microsoft.com/en-us/rest/api/storageservices/lease-blob" ], "call": { - "key": "object-tests/snapshots/object.txt", - "op": "get", - "snapshot": "2024-01-01T00:00:00.8085866Z" + "body_base64": "c2Vjb25k", + "key": "object-tests/leases/object.txt", + "lease_id": "11111111-2222-3333-4444-555555555555", + "op": "put" }, "exchanges": [ { @@ -6993,7 +36014,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -7001,7 +36022,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/snapshots/object.txt" + "value": "/fixture/object-tests/leases/object.txt" } }, { @@ -7009,32 +36030,40 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "c2Vjb25k" } }, { - "at": "/query/snapshot", + "at": "/headers/x-ms-blob-type", "optional": false, "rule": { "is": "equal", - "value": "2024-01-01T00:00:00.8085866Z" + "value": "BlockBlob" + } + }, + { + "at": "/headers/x-ms-lease-id", + "optional": false, + "rule": { + "is": "equal", + "value": "11111111-2222-3333-4444-555555555555" } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 404, + "status": 201, "headers": { - "content-type": "application/xml", "date": { "from": "now" }, - "x-ms-error-code": "BlobNotFound" + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-request-server-encrypted": "true" }, "body": { - "encoding": "utf8", - "data": "BlobNotFoundFixture error" + "encoding": "empty" } } } @@ -7047,39 +36076,24 @@ "optional": false, "rule": { "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 404 - } - }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "equal", - "value": "BlobNotFound" + "value": "ok" } } ], "refusal": null }, { - "id": "operations/azure/get-deleted-versioned-object", + "id": "operations/azure/put-leased-without-lease-id", "profile": "azure", "lane": "core", - "purpose": "get deleted versioned object", + "purpose": "Refuse a write to a leased object that names no lease ID", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "https://learn.microsoft.com/en-us/rest/api/storageservices/lease-blob" ], "call": { - "key": "object-tests/versions-mtydohr2/deleted.txt", - "op": "get" + "body_base64": "c2Vjb25k", + "key": "object-tests/leases/object.txt", + "op": "put" }, "exchanges": [ { @@ -7091,7 +36105,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -7099,7 +36113,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/versions-mtydohr2/deleted.txt" + "value": "/fixture/object-tests/leases/object.txt" } }, { @@ -7107,24 +36121,32 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "c2Vjb25k" + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "BlockBlob" } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 404, + "status": 412, "headers": { "content-type": "application/xml", "date": { "from": "now" }, - "x-ms-error-code": "BlobNotFound" + "x-ms-error-code": "LeaseIdMissing" }, "body": { "encoding": "utf8", - "data": "BlobNotFoundFixture error" + "data": "LeaseIdMissingFixture error" } } } @@ -7145,7 +36167,7 @@ "optional": false, "rule": { "is": "equal", - "value": 404 + "value": 412 } }, { @@ -7153,23 +36175,25 @@ "optional": false, "rule": { "is": "equal", - "value": "BlobNotFound" + "value": "LeaseIdMissing" } } ], "refusal": null }, { - "id": "operations/azure/get-duplicate-id", + "id": "operations/azure/lease-break", "profile": "azure", "lane": "core", - "purpose": "get duplicate id", + "purpose": "Break a lease at once", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "https://learn.microsoft.com/en-us/rest/api/storageservices/lease-blob" ], "call": { - "key": "object-tests/multipart/duplicate.bin", - "op": "get" + "action": "break", + "break_period": 0, + "key": "object-tests/leases/object.txt", + "op": "azure.lease" }, "exchanges": [ { @@ -7181,7 +36205,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -7189,7 +36213,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/duplicate.bin" + "value": "/fixture/object-tests/leases/object.txt" } }, { @@ -7199,29 +36223,46 @@ "is": "equal", "value": "" } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "lease" + } + }, + { + "at": "/headers/x-ms-lease-action", + "optional": false, + "rule": { + "is": "equal", + "value": "break" + } + }, + { + "at": "/headers/x-ms-lease-break-period", + "optional": false, + "rule": { + "is": "equal", + "value": "0" + } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 200, + "status": 202, "headers": { - "content-type": "application/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-3792ba4cfc79\"", + "etag": "\"fixture-etag\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true", - "x-ms-version-id": "2024-01-01T00:00:00.6153683Z" + "x-ms-lease-time": "0" }, "body": { - "encoding": "base64", - "data": "c2FtZXNhbWU=" + "encoding": "empty" } } } @@ -7236,61 +36277,23 @@ "is": "equal", "value": "ok" } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-3792ba4cfc79\"" - } - }, - { - "at": "/value/size", - "optional": false, - "rule": { - "is": "equal", - "value": 8 - } - }, - { - "at": "/value/content_type", - "optional": false, - "rule": { - "is": "equal", - "value": "application/octet-stream" - } - }, - { - "at": "/value/version", - "optional": false, - "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.6153683Z" - } - }, - { - "at": "/value/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "c2FtZXNhbWU=" - } } ], "refusal": null }, { - "id": "operations/azure/get-empty", + "id": "operations/azure/lease-release", "profile": "azure", "lane": "core", - "purpose": "get empty", + "purpose": "Release a lease", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "https://learn.microsoft.com/en-us/rest/api/storageservices/lease-blob" ], "call": { - "key": "object-tests/write/empty.bin", - "op": "get" + "action": "release", + "key": "object-tests/leases/object.txt", + "lease_id": "11111111-2222-3333-4444-555555555555", + "op": "azure.lease" }, "exchanges": [ { @@ -7302,7 +36305,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -7310,7 +36313,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/write/empty.bin" + "value": "/fixture/object-tests/leases/object.txt" } }, { @@ -7320,6 +36323,30 @@ "is": "equal", "value": "" } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "lease" + } + }, + { + "at": "/headers/x-ms-lease-action", + "optional": false, + "rule": { + "is": "equal", + "value": "release" + } + }, + { + "at": "/headers/x-ms-lease-id", + "optional": false, + "rule": { + "is": "equal", + "value": "11111111-2222-3333-4444-555555555555" + } } ], "allow_headers": [], @@ -7327,23 +36354,14 @@ "response": { "status": 200, "headers": { - "content-md5": "1B2M2Y8AsgTpgAmY7PhCfg==", - "content-type": "application/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-ee13937a1c94\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true", - "x-ms-version-id": "2024-01-01T00:00:00.7573734Z" + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "" + "encoding": "empty" } } } @@ -7358,70 +36376,24 @@ "is": "equal", "value": "ok" } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-ee13937a1c94\"" - } - }, - { - "at": "/value/size", - "optional": false, - "rule": { - "is": "equal", - "value": 0 - } - }, - { - "at": "/value/content_type", - "optional": false, - "rule": { - "is": "equal", - "value": "application/octet-stream" - } - }, - { - "at": "/value/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "1B2M2Y8AsgTpgAmY7PhCfg==" - } - }, - { - "at": "/value/version", - "optional": false, - "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.7573734Z" - } - }, - { - "at": "/value/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } } ], "refusal": null }, { - "id": "operations/azure/get-if-match-current", + "id": "operations/azure/lease-acquire-leased", "profile": "azure", "lane": "core", - "purpose": "get if match current", + "purpose": "Refuse a second lease while another lease holds the object", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "https://learn.microsoft.com/en-us/rest/api/storageservices/lease-blob" ], "call": { - "if_match": "\"fixture-16c44f0af72d\"", - "key": "object-tests/read/object.txt", - "op": "get" + "action": "acquire", + "duration": 15, + "key": "object-tests/leases/object.txt", + "op": "azure.lease", + "proposed_lease_id": "66666666-7777-8888-9999-000000000000" }, "exchanges": [ { @@ -7433,7 +36405,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -7441,7 +36413,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "/fixture/object-tests/leases/object.txt" } }, { @@ -7453,36 +36425,52 @@ } }, { - "at": "/headers/if-match", + "at": "/query/comp", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-16c44f0af72d\"" + "value": "lease" + } + }, + { + "at": "/headers/x-ms-lease-action", + "optional": false, + "rule": { + "is": "equal", + "value": "acquire" + } + }, + { + "at": "/headers/x-ms-lease-duration", + "optional": false, + "rule": { + "is": "equal", + "value": "15" + } + }, + { + "at": "/headers/x-ms-proposed-lease-id", + "optional": false, + "rule": { + "is": "equal", + "value": "66666666-7777-8888-9999-000000000000" } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 200, + "status": 409, "headers": { - "content-md5": "H1VC0PNTmj+yaCRN4U931g==", - "content-type": "application/octet-stream", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-16c44f0af72d\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true", - "x-ms-version-id": "2024-01-01T00:00:00.7556278Z" + "x-ms-error-code": "LeaseAlreadyPresent" }, "body": { - "encoding": "base64", - "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + "encoding": "utf8", + "data": "LeaseAlreadyPresentFixture error" } } } @@ -7495,72 +36483,42 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-16c44f0af72d\"" - } - }, - { - "at": "/value/size", - "optional": false, - "rule": { - "is": "equal", - "value": 30 - } - }, - { - "at": "/value/content_type", - "optional": false, - "rule": { - "is": "equal", - "value": "application/octet-stream" - } - }, - { - "at": "/value/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "H1VC0PNTmj+yaCRN4U931g==" + "value": "error" } }, { - "at": "/value/version", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "2024-01-01T00:00:00.7556278Z" + "value": 409 } }, { - "at": "/value/body_base64", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + "value": "LeaseAlreadyPresent" } } ], "refusal": null }, { - "id": "operations/azure/get-if-none-match-other", + "id": "operations/azure/lease-acquire", "profile": "azure", "lane": "core", - "purpose": "get if none match other", + "purpose": "Acquire a lease on an object with a proposed lease ID", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "https://learn.microsoft.com/en-us/rest/api/storageservices/lease-blob" ], "call": { - "if_none_match": "\"fixture-088e5dc109cf\"", - "key": "object-tests/read/object.txt", - "op": "get" + "action": "acquire", + "duration": 15, + "key": "object-tests/leases/object.txt", + "op": "azure.lease", + "proposed_lease_id": "11111111-2222-3333-4444-555555555555" }, "exchanges": [ { @@ -7572,7 +36530,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -7580,7 +36538,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "/fixture/object-tests/leases/object.txt" } }, { @@ -7592,36 +36550,52 @@ } }, { - "at": "/headers/if-none-match", + "at": "/query/comp", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-088e5dc109cf\"" + "value": "lease" + } + }, + { + "at": "/headers/x-ms-lease-action", + "optional": false, + "rule": { + "is": "equal", + "value": "acquire" + } + }, + { + "at": "/headers/x-ms-lease-duration", + "optional": false, + "rule": { + "is": "equal", + "value": "15" + } + }, + { + "at": "/headers/x-ms-proposed-lease-id", + "optional": false, + "rule": { + "is": "equal", + "value": "11111111-2222-3333-4444-555555555555" } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 200, + "status": 201, "headers": { - "content-md5": "H1VC0PNTmj+yaCRN4U931g==", - "content-type": "application/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-16c44f0af72d\"", + "etag": "\"fixture-etag\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true", - "x-ms-version-id": "2024-01-01T00:00:00.7556278Z" + "x-ms-lease-id": "11111111-2222-3333-4444-555555555555" }, "body": { - "encoding": "base64", - "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + "encoding": "empty" } } } @@ -7638,67 +36612,31 @@ } }, { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-16c44f0af72d\"" - } - }, - { - "at": "/value/size", - "optional": false, - "rule": { - "is": "equal", - "value": 30 - } - }, - { - "at": "/value/content_type", - "optional": false, - "rule": { - "is": "equal", - "value": "application/octet-stream" - } - }, - { - "at": "/value/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "H1VC0PNTmj+yaCRN4U931g==" - } - }, - { - "at": "/value/version", - "optional": false, - "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.7556278Z" - } - }, - { - "at": "/value/body_base64", + "at": "/value/lease_id", "optional": false, "rule": { "is": "equal", - "value": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + "value": "11111111-2222-3333-4444-555555555555" } } ], "refusal": null }, { - "id": "operations/azure/get-key-with-hash", + "id": "operations/azure/put-with-tags", "profile": "azure", "lane": "core", - "purpose": "get key with hash", + "purpose": "Write an object with tags", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "https://learn.microsoft.com/en-us/rest/api/storageservices/put-blob" ], "call": { - "key": "object-tests/names/hash#tag.txt", - "op": "get" + "body_base64": "Zmlyc3Q=", + "key": "object-tests/tags/object.txt", + "op": "put", + "tags": { + "project": "object-tests" + } }, "exchanges": [ { @@ -7710,7 +36648,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -7718,7 +36656,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/names/hash#tag.txt" + "value": "/fixture/object-tests/tags/object.txt" } }, { @@ -7726,32 +36664,40 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "Zmlyc3Q=" + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "BlockBlob" + } + }, + { + "at": "/headers/x-ms-tags", + "optional": false, + "rule": { + "is": "equal", + "value": "project=object-tests" } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 200, + "status": 201, "headers": { - "content-md5": "xMpCOKC5I4INzFCab3WEmw==", - "content-type": "application/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-25c967601e53\"", + "etag": "\"fixture-etag\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true", - "x-ms-version-id": "2024-01-01T00:00:00.9185620Z" + "x-ms-request-server-encrypted": "true" }, "body": { - "encoding": "base64", - "data": "MQ==" + "encoding": "empty" } } } @@ -7766,69 +36712,25 @@ "is": "equal", "value": "ok" } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-25c967601e53\"" - } - }, - { - "at": "/value/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/content_type", - "optional": false, - "rule": { - "is": "equal", - "value": "application/octet-stream" - } - }, - { - "at": "/value/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "xMpCOKC5I4INzFCab3WEmw==" - } - }, - { - "at": "/value/version", - "optional": false, - "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.9185620Z" - } - }, - { - "at": "/value/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "MQ==" - } } ], "refusal": null }, { - "id": "operations/azure/get-key-with-percent", + "id": "operations/azure/put-with-tags-special-characters", "profile": "azure", "lane": "core", - "purpose": "get key with percent", + "purpose": "Write a blob with an index tag that holds a space and each of + - = . _ : /, percent-encoded in x-ms-tags", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "https://learn.microsoft.com/en-us/rest/api/storageservices/put-blob" ], "call": { - "key": "object-tests/names/percent%20.txt", - "op": "get" + "body_base64": "Zmlyc3Q=", + "key": "object-tests/tags/object.txt", + "op": "put", + "tags": { + "a b+c-d=e.f_g:h/i": "k l+m-n=o.p_q:r/s" + } }, "exchanges": [ { @@ -7840,7 +36742,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -7848,7 +36750,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/names/percent%20.txt" + "value": "/fixture/object-tests/tags/object.txt" } }, { @@ -7856,32 +36758,43 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "Zmlyc3Q=" + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "BlockBlob" + } + }, + { + "at": "/headers/x-ms-tags", + "optional": false, + "rule": { + "is": "one_of", + "values": [ + "a%20b%2Bc-d%3De.f_g%3Ah%2Fi=k%20l%2Bm-n%3Do.p_q%3Ar%2Fs", + "a%20b%2Bc-d%3De.f_g:h/i=k%20l%2Bm-n%3Do.p_q:r/s" + ] } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 200, + "status": 201, "headers": { - "content-md5": "xMpCOKC5I4INzFCab3WEmw==", - "content-type": "application/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-a88830604904\"", + "etag": "\"fixture-etag\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true", - "x-ms-version-id": "2024-01-01T00:00:00.5807236Z" + "x-ms-request-server-encrypted": "true" }, "body": { - "encoding": "base64", - "data": "MQ==" + "encoding": "empty" } } } @@ -7896,69 +36809,32 @@ "is": "equal", "value": "ok" } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-a88830604904\"" - } - }, - { - "at": "/value/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/content_type", - "optional": false, - "rule": { - "is": "equal", - "value": "application/octet-stream" - } - }, - { - "at": "/value/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "xMpCOKC5I4INzFCab3WEmw==" - } - }, - { - "at": "/value/version", - "optional": false, - "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.5807236Z" - } - }, - { - "at": "/value/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "MQ==" - } } ], "refusal": null }, { - "id": "operations/azure/get-key-with-plus", + "id": "operations/azure/put-with-tags-duplicate-key", "profile": "azure", "lane": "core", - "purpose": "get key with plus", + "purpose": "Report a write whose x-ms-tags names one key twice as an error. A client may refuse it, or report it unsupported where its API cannot repeat a key", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "https://learn.microsoft.com/en-us/rest/api/storageservices/put-blob" ], "call": { - "key": "object-tests/names/plus+plus.txt", - "op": "get" + "body_base64": "Zmlyc3Q=", + "key": "object-tests/tags/object.txt", + "op": "put", + "tags": [ + { + "key": "project", + "value": "a" + }, + { + "key": "project", + "value": "b" + } + ] }, "exchanges": [ { @@ -7970,7 +36846,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -7978,7 +36854,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/names/plus+plus.txt" + "value": "/fixture/object-tests/tags/object.txt" } }, { @@ -7986,32 +36862,40 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "Zmlyc3Q=" + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "BlockBlob" + } + }, + { + "at": "/headers/x-ms-tags", + "optional": false, + "rule": { + "is": "equal", + "value": "project=a&project=b" } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 200, + "status": 400, "headers": { - "content-md5": "xMpCOKC5I4INzFCab3WEmw==", - "content-type": "application/octet-stream", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-3d8677cc8a95\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true", - "x-ms-version-id": "2024-01-01T00:00:00.8000075Z" + "x-ms-error-code": "DuplicateTagNames" }, "body": { - "encoding": "base64", - "data": "MQ==" + "encoding": "utf8", + "data": "DuplicateTagNamesFixture error" } } } @@ -8024,71 +36908,81 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "error" } }, { - "at": "/value/etag", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-3d8677cc8a95\"" + "value": 400 } }, { - "at": "/value/size", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": 1 + "value": "DuplicateTagNames" } - }, + } + ], + "refusal": [ { - "at": "/value/content_type", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "application/octet-stream" + "value": "refused" } }, { - "at": "/value/content_md5_base64", + "at": "/kind", "optional": false, "rule": { - "is": "equal", - "value": "xMpCOKC5I4INzFCab3WEmw==" + "is": "matches", + "pattern": ".+" } }, { - "at": "/value/version", + "at": "/parameter", "optional": false, "rule": { "is": "equal", - "value": "2024-01-01T00:00:00.8000075Z" + "value": "tags" } }, { - "at": "/value/body_base64", - "optional": false, + "at": "/status", + "optional": true, "rule": { "is": "equal", - "value": "MQ==" + "value": 400 + } + }, + { + "at": "/code", + "optional": true, + "rule": { + "is": "equal", + "value": "DuplicateTagNames" } } ], - "refusal": null + "decline_permitted": true }, { - "id": "operations/azure/get-key-with-space", + "id": "operations/azure/get-tags", "profile": "azure", "lane": "core", - "purpose": "get key space", + "purpose": "Read the tags of an object", "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/get-blob" + "https://learn.microsoft.com/en-us/rest/api/storageservices/get-blob-tags" ], "call": { - "key": "a b", - "op": "get" + "key": "object-tests/tags/object.txt", + "op": "azure.get_tags" }, "exchanges": [ { @@ -8108,7 +37002,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/a b" + "value": "/fixture/object-tests/tags/object.txt" } }, { @@ -8118,6 +37012,14 @@ "is": "equal", "value": "" } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "tags" + } } ], "allow_headers": [], @@ -8125,24 +37027,14 @@ "response": { "status": 200, "headers": { - "content-type": "application/octet-stream", + "content-type": "application/xml", "date": { "from": "now" - }, - "etag": "\"fixture-etag\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-request-id": "fixture-request-id", - "x-ms-request-server-encrypted": "true", - "x-ms-server-encrypted": "true", - "x-ms-version": "2023-11-03" + } }, "body": { - "encoding": "base64", - "data": "aGVsbG8=" + "encoding": "utf8", + "data": "projectobject-tests" } } } @@ -8159,27 +37051,29 @@ } }, { - "at": "/value/body_base64", + "at": "/value/tags", "optional": false, "rule": { "is": "equal", - "value": "aGVsbG8=" + "value": { + "project": "object-tests" + } } } ], "refusal": null }, { - "id": "operations/azure/get-key-with-question", + "id": "operations/azure/get-tags-none", "profile": "azure", "lane": "core", - "purpose": "get key question", + "purpose": "Report no blob index tags for a blob without any, which Azure answers with an empty TagSet", "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/get-blob" + "https://learn.microsoft.com/en-us/rest/api/storageservices/get-blob-tags" ], "call": { - "key": "a?b", - "op": "get" + "key": "object-tests/tags/object.txt", + "op": "azure.get_tags" }, "exchanges": [ { @@ -8199,7 +37093,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/a?b" + "value": "/fixture/object-tests/tags/object.txt" } }, { @@ -8209,6 +37103,14 @@ "is": "equal", "value": "" } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "tags" + } } ], "allow_headers": [], @@ -8216,24 +37118,14 @@ "response": { "status": 200, "headers": { - "content-type": "application/octet-stream", + "content-type": "application/xml", "date": { "from": "now" - }, - "etag": "\"fixture-etag\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-request-id": "fixture-request-id", - "x-ms-request-server-encrypted": "true", - "x-ms-server-encrypted": "true", - "x-ms-version": "2023-11-03" + } }, "body": { - "encoding": "base64", - "data": "aGVsbG8=" + "encoding": "utf8", + "data": "" } } } @@ -8250,27 +37142,30 @@ } }, { - "at": "/value/body_base64", + "at": "/value/tags", "optional": false, "rule": { "is": "equal", - "value": "aGVsbG8=" + "value": {} } } ], "refusal": null }, { - "id": "operations/azure/get-key-with-non-ascii", + "id": "operations/azure/set-tags", "profile": "azure", "lane": "core", - "purpose": "get key unicode", + "purpose": "Replace the tags of an object", "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/get-blob" + "https://learn.microsoft.com/en-us/rest/api/storageservices/set-blob-tags" ], "call": { - "key": "café/雪", - "op": "get" + "key": "object-tests/tags/object.txt", + "op": "azure.set_tags", + "tags": { + "project": "object-tests" + } }, "exchanges": [ { @@ -8282,7 +37177,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -8290,41 +37185,48 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/café/雪" + "value": "/fixture/object-tests/tags/object.txt" } }, { - "at": "/body_base64", + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "projectobject-tests" + } + }, + { + "at": "/query/comp", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "tags" + } + }, + { + "at": "/headers/content-type", + "optional": false, + "rule": { + "is": "one_of", + "values": [ + "application/xml", + "application/xml; charset=UTF-8" + ] } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 200, + "status": 204, "headers": { - "content-type": "application/octet-stream", "date": { "from": "now" - }, - "etag": "\"fixture-etag\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-request-id": "fixture-request-id", - "x-ms-request-server-encrypted": "true", - "x-ms-server-encrypted": "true", - "x-ms-version": "2023-11-03" + } }, "body": { - "encoding": "base64", - "data": "aGVsbG8=" + "encoding": "empty" } } } @@ -8339,29 +37241,33 @@ "is": "equal", "value": "ok" } - }, - { - "at": "/value/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "aGVsbG8=" - } } ], "refusal": null }, { - "id": "operations/azure/get-key-with-separators", + "id": "operations/azure/set-tags-10-tags", "profile": "azure", "lane": "core", - "purpose": "get key separators", + "purpose": "Set 10 tags, the most an object takes", "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/get-blob" + "https://learn.microsoft.com/en-us/rest/api/storageservices/set-blob-tags" ], "call": { - "key": "a//b/", - "op": "get" + "key": "object-tests/tags/object.txt", + "op": "azure.set_tags", + "tags": { + "tag00": "value0", + "tag01": "value1", + "tag02": "value2", + "tag03": "value3", + "tag04": "value4", + "tag05": "value5", + "tag06": "value6", + "tag07": "value7", + "tag08": "value8", + "tag09": "value9" + } }, "exchanges": [ { @@ -8373,7 +37279,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -8381,41 +37287,48 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/a//b/" + "value": "/fixture/object-tests/tags/object.txt" } }, { - "at": "/body_base64", + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "tag00value0tag01value1tag02value2tag03value3tag04value4tag05value5tag06value6tag07value7tag08value8tag09value9" + } + }, + { + "at": "/query/comp", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "tags" + } + }, + { + "at": "/headers/content-type", + "optional": false, + "rule": { + "is": "one_of", + "values": [ + "application/xml", + "application/xml; charset=UTF-8" + ] } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 200, + "status": 204, "headers": { - "content-type": "application/octet-stream", "date": { "from": "now" - }, - "etag": "\"fixture-etag\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-request-id": "fixture-request-id", - "x-ms-request-server-encrypted": "true", - "x-ms-server-encrypted": "true", - "x-ms-version": "2023-11-03" + } }, "body": { - "encoding": "base64", - "data": "aGVsbG8=" + "encoding": "empty" } } } @@ -8430,29 +37343,34 @@ "is": "equal", "value": "ok" } - }, - { - "at": "/value/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "aGVsbG8=" - } } ], "refusal": null }, { - "id": "operations/azure/get-metadata-empty-value", + "id": "operations/azure/set-tags-11-tags", "profile": "azure", "lane": "core", - "purpose": "get metadata empty value", + "purpose": "Report 11 tags, one more than an object takes, as an error. A client may refuse them", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "https://learn.microsoft.com/en-us/rest/api/storageservices/set-blob-tags" ], "call": { - "key": "object-tests/metadata/empty-value.txt", - "op": "get" + "key": "object-tests/tags/object.txt", + "op": "azure.set_tags", + "tags": { + "tag00": "value0", + "tag01": "value1", + "tag02": "value2", + "tag03": "value3", + "tag04": "value4", + "tag05": "value5", + "tag06": "value6", + "tag07": "value7", + "tag08": "value8", + "tag09": "value9", + "tag10": "value10" + } }, "exchanges": [ { @@ -8464,7 +37382,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -8472,41 +37390,51 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/metadata/empty-value.txt" + "value": "/fixture/object-tests/tags/object.txt" } }, { - "at": "/body_base64", + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "tag00value0tag01value1tag02value2tag03value3tag04value4tag05value5tag06value6tag07value7tag08value8tag09value9tag10value10" + } + }, + { + "at": "/query/comp", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "tags" + } + }, + { + "at": "/headers/content-type", + "optional": false, + "rule": { + "is": "one_of", + "values": [ + "application/xml", + "application/xml; charset=UTF-8" + ] } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 200, + "status": 400, "headers": { - "content-md5": "xMpCOKC5I4INzFCab3WEmw==", - "content-type": "application/octet-stream", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-333d95b64818\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-meta-empty": "", - "x-ms-server-encrypted": "true", - "x-ms-version-id": "2024-01-01T00:00:00.9480929Z" + "x-ms-error-code": "TagsTooLarge" }, "body": { - "encoding": "base64", - "data": "MQ==" + "encoding": "utf8", + "data": "TagsTooLargeFixture error" } } } @@ -8519,82 +37447,176 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "error" } }, { - "at": "/value/etag", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-333d95b64818\"" + "value": 400 } }, { - "at": "/value/size", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": 1 + "value": "TagsTooLarge" } - }, + } + ], + "refusal": [ { - "at": "/value/content_type", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "application/octet-stream" + "value": "refused" } }, { - "at": "/value/content_md5_base64", + "at": "/kind", "optional": false, "rule": { - "is": "equal", - "value": "xMpCOKC5I4INzFCab3WEmw==" + "is": "matches", + "pattern": ".+" } }, { - "at": "/value/version", + "at": "/parameter", "optional": false, "rule": { "is": "equal", - "value": "2024-01-01T00:00:00.9480929Z" + "value": "tags" } }, { - "at": "/value/body_base64", - "optional": false, + "at": "/status", + "optional": true, "rule": { "is": "equal", - "value": "MQ==" + "value": 400 } }, { - "at": "/value/metadata", - "optional": false, + "at": "/code", + "optional": true, "rule": { "is": "equal", - "value": { - "empty": "" + "value": "TagsTooLarge" + } + } + ] + }, + { + "id": "operations/azure/set-tags-key-128", + "profile": "azure", + "lane": "core", + "purpose": "Set a tag whose key has 128 characters, the longest a key may be", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/set-blob-tags" + ], + "call": { + "key": "object-tests/tags/object.txt", + "op": "azure.set_tags", + "tags": { + "kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk": "v" + } + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/tags/object.txt" + } + }, + { + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkv" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "tags" + } + }, + { + "at": "/headers/content-type", + "optional": false, + "rule": { + "is": "one_of", + "values": [ + "application/xml", + "application/xml; charset=UTF-8" + ] + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 204, + "headers": { + "date": { + "from": "now" + } + }, + "body": { + "encoding": "empty" + } + } } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" } } ], "refusal": null }, { - "id": "operations/azure/get-metadata-of-snapshot", + "id": "operations/azure/set-tags-key-129", "profile": "azure", "lane": "core", - "purpose": "get metadata of snapshot", + "purpose": "Report a tag key of 129 characters, one more than a key may have, as an error. A client may refuse it", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "https://learn.microsoft.com/en-us/rest/api/storageservices/set-blob-tags" ], "call": { - "key": "object-tests/metadata/snapshotted.txt", - "op": "get", - "snapshot": "2024-01-01T00:00:00.1300046Z" + "key": "object-tests/tags/object.txt", + "op": "azure.set_tags", + "tags": { + "kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk": "v" + } }, "exchanges": [ { @@ -8606,7 +37628,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -8614,46 +37636,51 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/metadata/snapshotted.txt" + "value": "/fixture/object-tests/tags/object.txt" } }, { - "at": "/body_base64", + "at": "/body_text", "optional": false, "rule": { - "is": "equal", - "value": "" + "is": "xml", + "value": "kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkv" } }, { - "at": "/query/snapshot", + "at": "/query/comp", "optional": false, "rule": { "is": "equal", - "value": "2024-01-01T00:00:00.1300046Z" + "value": "tags" + } + }, + { + "at": "/headers/content-type", + "optional": false, + "rule": { + "is": "one_of", + "values": [ + "application/xml", + "application/xml; charset=UTF-8" + ] } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 200, + "status": 400, "headers": { - "content-md5": "xMpCOKC5I4INzFCab3WEmw==", - "content-type": "application/octet-stream", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-b4e7f3b8fb36\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-meta-name": "value", - "x-ms-server-encrypted": "true" + "x-ms-error-code": "TagsTooLarge" }, "body": { - "encoding": "base64", - "data": "MQ==" + "encoding": "utf8", + "data": "TagsTooLargeFixture error" } } } @@ -8666,84 +37693,83 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "error" } }, { - "at": "/value/etag", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-b4e7f3b8fb36\"" + "value": 400 } }, { - "at": "/value/size", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": 1 + "value": "TagsTooLarge" } - }, + } + ], + "refusal": [ { - "at": "/value/content_type", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "application/octet-stream" + "value": "refused" } }, { - "at": "/value/content_md5_base64", + "at": "/kind", "optional": false, "rule": { - "is": "equal", - "value": "xMpCOKC5I4INzFCab3WEmw==" + "is": "matches", + "pattern": ".+" } }, { - "at": "/value/version", - "optional": true, + "at": "/parameter", + "optional": false, "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "is": "equal", + "value": "tags" } }, { - "at": "/value/body_base64", - "optional": false, + "at": "/status", + "optional": true, "rule": { "is": "equal", - "value": "MQ==" + "value": 400 } }, { - "at": "/value/metadata", - "optional": false, + "at": "/code", + "optional": true, "rule": { "is": "equal", - "value": { - "name": "value" - } + "value": "TagsTooLarge" } } - ], - "refusal": null + ] }, { - "id": "operations/azure/get-metadata-replaced", + "id": "operations/azure/set-tags-value-256", "profile": "azure", "lane": "core", - "purpose": "get metadata replaced", + "purpose": "Set a tag whose value has 256 characters, the longest a value may be", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "https://learn.microsoft.com/en-us/rest/api/storageservices/set-blob-tags" ], "call": { - "key": "object-tests/metadata/replaced.txt", - "op": "get" + "key": "object-tests/tags/object.txt", + "op": "azure.set_tags", + "tags": { + "k": "vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv" + } }, "exchanges": [ { @@ -8755,7 +37781,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -8763,40 +37789,48 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/metadata/replaced.txt" + "value": "/fixture/object-tests/tags/object.txt" } }, { - "at": "/body_base64", + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "kvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv" + } + }, + { + "at": "/query/comp", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "tags" + } + }, + { + "at": "/headers/content-type", + "optional": false, + "rule": { + "is": "one_of", + "values": [ + "application/xml", + "application/xml; charset=UTF-8" + ] } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 200, + "status": 204, "headers": { - "content-md5": "yB5yjZ1ML2NvBn+JzBSGLA==", - "content-type": "application/octet-stream", "date": { "from": "now" - }, - "etag": "\"fixture-37b036d8c13f\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true", - "x-ms-version-id": "2024-01-01T00:00:00.7487600Z" + } }, "body": { - "encoding": "base64", - "data": "Mg==" + "encoding": "empty" } } } @@ -8811,69 +37845,24 @@ "is": "equal", "value": "ok" } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-37b036d8c13f\"" - } - }, - { - "at": "/value/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/content_type", - "optional": false, - "rule": { - "is": "equal", - "value": "application/octet-stream" - } - }, - { - "at": "/value/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "yB5yjZ1ML2NvBn+JzBSGLA==" - } - }, - { - "at": "/value/version", - "optional": false, - "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.7487600Z" - } - }, - { - "at": "/value/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "Mg==" - } } ], "refusal": null }, { - "id": "operations/azure/get-metadata", + "id": "operations/azure/set-tags-value-257", "profile": "azure", "lane": "core", - "purpose": "get metadata", + "purpose": "Report a tag value of 257 characters, one more than a value may have, as an error. A client may refuse it", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "https://learn.microsoft.com/en-us/rest/api/storageservices/set-blob-tags" ], "call": { - "key": "object-tests/metadata/object.txt", - "op": "get" + "key": "object-tests/tags/object.txt", + "op": "azure.set_tags", + "tags": { + "k": "vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv" + } }, "exchanges": [ { @@ -8885,7 +37874,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -8893,42 +37882,51 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/metadata/object.txt" + "value": "/fixture/object-tests/tags/object.txt" } }, { - "at": "/body_base64", + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "kvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv" + } + }, + { + "at": "/query/comp", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "tags" + } + }, + { + "at": "/headers/content-type", + "optional": false, + "rule": { + "is": "one_of", + "values": [ + "application/xml", + "application/xml; charset=UTF-8" + ] } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 200, + "status": 400, "headers": { - "content-md5": "xMpCOKC5I4INzFCab3WEmw==", - "content-type": "application/octet-stream", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-9abbc5e374ca\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-meta-name": "value", - "x-ms-meta-second": "2", - "x-ms-server-encrypted": "true", - "x-ms-version-id": "2024-01-01T00:00:00.7035036Z" + "x-ms-error-code": "TagsTooLarge" }, "body": { - "encoding": "base64", - "data": "MQ==" + "encoding": "utf8", + "data": "TagsTooLargeFixture error" } } } @@ -8941,82 +37939,83 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "error" } }, { - "at": "/value/etag", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-9abbc5e374ca\"" + "value": 400 } }, { - "at": "/value/size", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": 1 + "value": "TagsTooLarge" } - }, + } + ], + "refusal": [ { - "at": "/value/content_type", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "application/octet-stream" + "value": "refused" } }, { - "at": "/value/content_md5_base64", + "at": "/kind", "optional": false, "rule": { - "is": "equal", - "value": "xMpCOKC5I4INzFCab3WEmw==" + "is": "matches", + "pattern": ".+" } }, { - "at": "/value/version", + "at": "/parameter", "optional": false, "rule": { "is": "equal", - "value": "2024-01-01T00:00:00.7035036Z" + "value": "tags" } }, { - "at": "/value/body_base64", - "optional": false, + "at": "/status", + "optional": true, "rule": { "is": "equal", - "value": "MQ==" + "value": 400 } }, { - "at": "/value/metadata", - "optional": false, + "at": "/code", + "optional": true, "rule": { "is": "equal", - "value": { - "name": "value", - "second": "2" - } + "value": "TagsTooLarge" } } - ], - "refusal": null + ] }, { - "id": "operations/azure/get-metadata-ignores-unknown-headers", + "id": "operations/azure/set-tags-special-characters", "profile": "azure", "lane": "core", - "purpose": "Surface user metadata; unknown headers must not become metadata.", + "purpose": "Set a blob index tag with a space and each of + - = . _ : /, which Azure allows, escaped as XML text", "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/get-blob" + "https://learn.microsoft.com/en-us/rest/api/storageservices/set-blob-tags" ], "call": { - "key": "object", - "op": "get" + "key": "object-tests/tags/object.txt", + "op": "azure.set_tags", + "tags": { + "a b+c-d=e.f_g:h/i": "k l+m-n=o.p_q:r/s" + } }, "exchanges": [ { @@ -9028,7 +38027,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -9036,43 +38035,48 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object" + "value": "/fixture/object-tests/tags/object.txt" } }, { - "at": "/body_base64", + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "a b+c-d=e.f_g:h/ik l+m-n=o.p_q:r/s" + } + }, + { + "at": "/query/comp", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "tags" + } + }, + { + "at": "/headers/content-type", + "optional": false, + "rule": { + "is": "one_of", + "values": [ + "application/xml", + "application/xml; charset=UTF-8" + ] } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 200, + "status": 204, "headers": { - "content-type": "application/octet-stream", "date": { "from": "now" - }, - "etag": "\"fixture-etag\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-meta-author": "Ada", - "x-ms-request-id": "fixture-request-id", - "x-ms-request-server-encrypted": "true", - "x-ms-server-encrypted": "true", - "x-ms-version": "2023-11-03", - "x-unrelated": "not metadata" + } }, "body": { - "encoding": "base64", - "data": "aGVsbG8=" + "encoding": "empty" } } } @@ -9087,39 +38091,24 @@ "is": "equal", "value": "ok" } - }, - { - "at": "/value/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "aGVsbG8=" - } - }, - { - "at": "/value/metadata", - "optional": false, - "rule": { - "is": "equal", - "value": { - "author": "Ada" - } - } } ], "refusal": null }, { - "id": "operations/azure/get-missing", + "id": "operations/azure/set-tags-invalid-character", "profile": "azure", "lane": "core", - "purpose": "get missing", + "purpose": "Report a blob index tag key with @, which Azure does not allow, as an error. A client may refuse it", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "https://learn.microsoft.com/en-us/rest/api/storageservices/set-blob-tags" ], "call": { - "key": "object-tests/read/absent.txt", - "op": "get" + "key": "object-tests/tags/object.txt", + "op": "azure.set_tags", + "tags": { + "a@b": "c" + } }, "exchanges": [ { @@ -9131,7 +38120,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -9139,32 +38128,51 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/absent.txt" + "value": "/fixture/object-tests/tags/object.txt" } }, { - "at": "/body_base64", + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "a@bc" + } + }, + { + "at": "/query/comp", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "tags" + } + }, + { + "at": "/headers/content-type", + "optional": false, + "rule": { + "is": "one_of", + "values": [ + "application/xml", + "application/xml; charset=UTF-8" + ] } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 404, + "status": 400, "headers": { "content-type": "application/xml", "date": { "from": "now" }, - "x-ms-error-code": "BlobNotFound" + "x-ms-error-code": "InvalidTag" }, "body": { "encoding": "utf8", - "data": "BlobNotFoundFixture error" + "data": "InvalidTagFixture error" } } } @@ -9185,7 +38193,7 @@ "optional": false, "rule": { "is": "equal", - "value": 404 + "value": 400 } }, { @@ -9193,26 +38201,74 @@ "optional": false, "rule": { "is": "equal", - "value": "BlobNotFound" + "value": "InvalidTag" } } ], - "refusal": null + "refusal": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "refused" + } + }, + { + "at": "/kind", + "optional": false, + "rule": { + "is": "matches", + "pattern": ".+" + } + }, + { + "at": "/parameter", + "optional": false, + "rule": { + "is": "equal", + "value": "tags" + } + }, + { + "at": "/status", + "optional": true, + "rule": { + "is": "equal", + "value": 400 + } + }, + { + "at": "/code", + "optional": true, + "rule": { + "is": "equal", + "value": "InvalidTag" + } + } + ] }, { - "id": "operations/azure/get-missing-code-in-body", + "id": "operations/azure/set-tags-duplicate-key", "profile": "azure", "lane": "core", - "purpose": "get missing, with the error code only in the XML body", + "purpose": "Report blob index tags that name one key twice as an error. A client may refuse them, or report them unsupported where its API cannot repeat a key", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp", - "https://learn.microsoft.com/en-us/rest/api/storageservices/common-rest-api-error-codes", - "https://learn.microsoft.com/en-us/rest/api/storageservices/blob-service-error-codes" + "https://learn.microsoft.com/en-us/rest/api/storageservices/set-blob-tags" ], - "origin": "constructed", "call": { - "key": "object-tests/read/absent.txt", - "op": "get" + "key": "object-tests/tags/object.txt", + "op": "azure.set_tags", + "tags": [ + { + "key": "project", + "value": "a" + }, + { + "key": "project", + "value": "b" + } + ] }, "exchanges": [ { @@ -9224,7 +38280,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -9232,31 +38288,51 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/absent.txt" + "value": "/fixture/object-tests/tags/object.txt" } }, { - "at": "/body_base64", + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "projectaprojectb" + } + }, + { + "at": "/query/comp", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "tags" + } + }, + { + "at": "/headers/content-type", + "optional": false, + "rule": { + "is": "one_of", + "values": [ + "application/xml", + "application/xml; charset=UTF-8" + ] } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 404, + "status": 400, "headers": { "content-type": "application/xml", "date": { "from": "now" - } + }, + "x-ms-error-code": "InvalidXmlDocument" }, "body": { "encoding": "utf8", - "data": "BlobNotFoundFixture error" + "data": "InvalidXmlDocumentFixture error" } } } @@ -9277,7 +38353,7 @@ "optional": false, "rule": { "is": "equal", - "value": 404 + "value": 400 } }, { @@ -9285,24 +38361,67 @@ "optional": false, "rule": { "is": "equal", - "value": "BlobNotFound" + "value": "InvalidXmlDocument" } } ], - "refusal": null + "refusal": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "refused" + } + }, + { + "at": "/kind", + "optional": false, + "rule": { + "is": "matches", + "pattern": ".+" + } + }, + { + "at": "/parameter", + "optional": false, + "rule": { + "is": "equal", + "value": "tags" + } + }, + { + "at": "/status", + "optional": true, + "rule": { + "is": "equal", + "value": 400 + } + }, + { + "at": "/code", + "optional": true, + "rule": { + "is": "equal", + "value": "InvalidXmlDocument" + } + } + ], + "decline_permitted": true }, { - "id": "operations/azure/get-not-modified", + "id": "operations/azure/put-with-tier", "profile": "azure", "lane": "core", - "purpose": "get not modified", + "purpose": "Write an object straight into the Cool access tier", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "https://learn.microsoft.com/en-us/rest/api/storageservices/put-blob" ], "call": { - "if_none_match": "\"fixture-16c44f0af72d\"", - "key": "object-tests/read/object.txt", - "op": "get" + "body_base64": "Zmlyc3Q=", + "key": "object-tests/tiers/object.txt", + "op": "put", + "tier": "Cool" }, "exchanges": [ { @@ -9314,7 +38433,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -9322,7 +38441,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "/fixture/object-tests/tiers/object.txt" } }, { @@ -9330,31 +38449,40 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "Zmlyc3Q=" } }, { - "at": "/headers/if-none-match", + "at": "/headers/x-ms-blob-type", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-16c44f0af72d\"" + "value": "BlockBlob" + } + }, + { + "at": "/headers/x-ms-access-tier", + "optional": false, + "rule": { + "is": "equal", + "value": "Cool" } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 304, + "status": 201, "headers": { "date": { "from": "now" }, - "x-ms-error-code": "ConditionNotMet" + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-request-server-encrypted": "true" }, "body": { - "encoding": "base64", - "data": "" + "encoding": "empty" } } } @@ -9367,40 +38495,24 @@ "optional": false, "rule": { "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 304 - } - }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "equal", - "value": "ConditionNotMet" + "value": "ok" } } ], "refusal": null }, { - "id": "operations/azure/get-precondition-failed", + "id": "operations/azure/set-tier-unknown", "profile": "azure", "lane": "core", - "purpose": "get precondition failed", + "purpose": "Refuse an access tier the service does not have", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "https://learn.microsoft.com/en-us/rest/api/storageservices/set-blob-tier" ], "call": { - "if_match": "\"fixture-088e5dc109cf\"", - "key": "object-tests/read/object.txt", - "op": "get" + "key": "object-tests/tiers/object.txt", + "op": "azure.set_tier", + "tier": "Warm" }, "exchanges": [ { @@ -9412,7 +38524,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -9420,7 +38532,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "/fixture/object-tests/tiers/object.txt" } }, { @@ -9432,28 +38544,36 @@ } }, { - "at": "/headers/if-match", + "at": "/query/comp", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-088e5dc109cf\"" + "value": "tier" + } + }, + { + "at": "/headers/x-ms-access-tier", + "optional": false, + "rule": { + "is": "equal", + "value": "Warm" } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 412, + "status": 400, "headers": { "content-type": "application/xml", "date": { "from": "now" }, - "x-ms-error-code": "ConditionNotMet" + "x-ms-error-code": "InvalidHeaderValue" }, "body": { "encoding": "utf8", - "data": "ConditionNotMetFixture error" + "data": "InvalidHeaderValueFixture error" } } } @@ -9474,7 +38594,7 @@ "optional": false, "rule": { "is": "equal", - "value": 412 + "value": 400 } }, { @@ -9482,24 +38602,24 @@ "optional": false, "rule": { "is": "equal", - "value": "ConditionNotMet" + "value": "InvalidHeaderValue" } } ], "refusal": null }, { - "id": "operations/azure/get-previous-version-of-deleted-object", + "id": "operations/azure/set-tier-cool", "profile": "azure", "lane": "core", - "purpose": "get previous version of deleted object", + "purpose": "Move an object to the Cool access tier", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "https://learn.microsoft.com/en-us/rest/api/storageservices/set-blob-tier" ], "call": { - "key": "object-tests/versions-mtydohr2/deleted.txt", - "op": "get", - "version": "2024-01-01T00:00:00.0160641Z" + "key": "object-tests/tiers/object.txt", + "op": "azure.set_tier", + "tier": "Cool" }, "exchanges": [ { @@ -9511,7 +38631,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -9519,7 +38639,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/versions-mtydohr2/deleted.txt" + "value": "/fixture/object-tests/tiers/object.txt" } }, { @@ -9531,11 +38651,19 @@ } }, { - "at": "/query/versionid", + "at": "/query/comp", "optional": false, "rule": { "is": "equal", - "value": "2024-01-01T00:00:00.0160641Z" + "value": "tier" + } + }, + { + "at": "/headers/x-ms-access-tier", + "optional": false, + "rule": { + "is": "equal", + "value": "Cool" } } ], @@ -9544,21 +38672,12 @@ "response": { "status": 200, "headers": { - "content-md5": "ASCk+RlqX5659SPzH5FNpw==", - "content-type": "application/octet-stream", "date": { "from": "now" - }, - "etag": "\"fixture-3f26f9cf7bbe\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-server-encrypted": "true", - "x-ms-version-id": "2024-01-01T00:00:00.0160641Z" + } }, "body": { - "encoding": "base64", - "data": "ZzE=" + "encoding": "empty" } } } @@ -9573,70 +38692,22 @@ "is": "equal", "value": "ok" } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-3f26f9cf7bbe\"" - } - }, - { - "at": "/value/size", - "optional": false, - "rule": { - "is": "equal", - "value": 2 - } - }, - { - "at": "/value/content_type", - "optional": false, - "rule": { - "is": "equal", - "value": "application/octet-stream" - } - }, - { - "at": "/value/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "ASCk+RlqX5659SPzH5FNpw==" - } - }, - { - "at": "/value/version", - "optional": false, - "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.0160641Z" - } - }, - { - "at": "/value/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "ZzE=" - } } ], "refusal": null }, { - "id": "operations/azure/get-previous-version", + "id": "operations/azure/set-tier-rehydrate", "profile": "azure", "lane": "core", - "purpose": "get previous version", + "purpose": "Report a tier change that Azure accepts with 202, as it does when an archived blob starts to rehydrate, as a success", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "https://learn.microsoft.com/en-us/rest/api/storageservices/set-blob-tier" ], "call": { - "key": "object-tests/versions-mtydohr2/object.txt", - "op": "get", - "version": "2024-01-01T00:00:00.2318906Z" + "key": "object-tests/tiers/object.txt", + "op": "azure.set_tier", + "tier": "Hot" }, "exchanges": [ { @@ -9648,7 +38719,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -9656,7 +38727,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/versions-mtydohr2/object.txt" + "value": "/fixture/object-tests/tiers/object.txt" } }, { @@ -9668,34 +38739,33 @@ } }, { - "at": "/query/versionid", + "at": "/query/comp", "optional": false, "rule": { "is": "equal", - "value": "2024-01-01T00:00:00.2318906Z" + "value": "tier" + } + }, + { + "at": "/headers/x-ms-access-tier", + "optional": false, + "rule": { + "is": "equal", + "value": "Hot" } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 200, + "status": 202, "headers": { - "content-md5": "ZlTHNMyrj0QP8IJetEPcfw==", - "content-type": "application/octet-stream", "date": { "from": "now" - }, - "etag": "\"fixture-5769a0807b46\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-server-encrypted": "true", - "x-ms-version-id": "2024-01-01T00:00:00.2318906Z" + } }, "body": { - "encoding": "base64", - "data": "djE=" + "encoding": "empty" } } } @@ -9710,73 +38780,24 @@ "is": "equal", "value": "ok" } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-5769a0807b46\"" - } - }, - { - "at": "/value/size", - "optional": false, - "rule": { - "is": "equal", - "value": 2 - } - }, - { - "at": "/value/content_type", - "optional": false, - "rule": { - "is": "equal", - "value": "application/octet-stream" - } - }, - { - "at": "/value/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "ZlTHNMyrj0QP8IJetEPcfw==" - } - }, - { - "at": "/value/version", - "optional": false, - "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.2318906Z" - } - }, - { - "at": "/value/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "djE=" - } } ], "refusal": null }, { - "id": "operations/azure/get-range-inverted", + "id": "operations/azure/put-internal-error", "profile": "azure", "lane": "core", - "purpose": "get range inverted", + "purpose": "Report a 500 InternalError answer as an error, after at most 5 retries", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "https://learn.microsoft.com/en-us/rest/api/storageservices/common-rest-api-error-codes", + "https://learn.microsoft.com/en-us/rest/api/storageservices/blob-service-error-codes" ], + "origin": "transient", "call": { - "key": "object-tests/read/object.txt", - "op": "get", - "range": { - "end": 2, - "start": 6 - } + "body_base64": "MDEyMzQ1Njc4OQ==", + "key": "object-tests/write/object.txt", + "op": "put" }, "exchanges": [ { @@ -9788,7 +38809,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -9796,7 +38817,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "/fixture/object-tests/write/object.txt" } }, { @@ -9804,43 +38825,41 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "MDEyMzQ1Njc4OQ==" } }, { - "at": "/headers/range", + "at": "/headers/x-ms-blob-type", "optional": false, "rule": { "is": "equal", - "value": "bytes=6-1" + "value": "BlockBlob" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 200, + "status": 500, "headers": { - "content-md5": "H1VC0PNTmj+yaCRN4U931g==", - "content-type": "application/octet-stream", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-16c44f0af72d\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true", - "x-ms-version-id": "2024-01-01T00:00:00.7556278Z" + "x-ms-error-code": "InternalError" }, "body": { - "encoding": "base64", - "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + "encoding": "utf8", + "data": "InternalErrorThe server encountered an internal error. Please retry the request." } } - }, + } + ] + }, + { + "alternatives": [ { "request": [ { @@ -9848,7 +38867,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -9856,7 +38875,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "/fixture/object-tests/write/object.txt" } }, { @@ -9864,148 +38883,40 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "MDEyMzQ1Njc4OQ==" } }, { - "at": "/headers/x-ms-range", + "at": "/headers/x-ms-blob-type", "optional": false, "rule": { "is": "equal", - "value": "bytes=6-1" + "value": "BlockBlob" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 200, + "status": 500, "headers": { - "content-md5": "H1VC0PNTmj+yaCRN4U931g==", - "content-type": "application/octet-stream", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-16c44f0af72d\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true", - "x-ms-version-id": "2024-01-01T00:00:00.7556278Z" + "x-ms-error-code": "InternalError" }, "body": { - "encoding": "base64", - "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + "encoding": "utf8", + "data": "InternalErrorThe server encountered an internal error. Please retry the request." } } } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-16c44f0af72d\"" - } - }, - { - "at": "/value/size", - "optional": false, - "rule": { - "is": "equal", - "value": 30 - } - }, - { - "at": "/value/content_type", - "optional": false, - "rule": { - "is": "equal", - "value": "application/octet-stream" - } - }, - { - "at": "/value/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "H1VC0PNTmj+yaCRN4U931g==" - } - }, - { - "at": "/value/version", - "optional": false, - "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.7556278Z" - } - }, - { - "at": "/value/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" - } - } - ], - "refusal": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "refused" - } - }, - { - "at": "/kind", - "optional": false, - "rule": { - "is": "matches", - "pattern": ".+" - } + ], + "optional": true }, - { - "at": "/parameter", - "optional": false, - "rule": { - "is": "equal", - "value": "range" - } - } - ], - "decline_permitted": true - }, - { - "id": "operations/azure/get-range-not-satisfiable", - "profile": "azure", - "lane": "core", - "purpose": "get range not satisfiable", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "key": "object-tests/read/object.txt", - "op": "get", - "range": { - "start": 40 - } - }, - "exchanges": [ { "alternatives": [ { @@ -10015,7 +38926,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -10023,7 +38934,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "/fixture/object-tests/write/object.txt" } }, { @@ -10031,36 +38942,42 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "MDEyMzQ1Njc4OQ==" } }, { - "at": "/headers/range", + "at": "/headers/x-ms-blob-type", "optional": false, "rule": { "is": "equal", - "value": "bytes=40-" + "value": "BlockBlob" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 416, + "status": 500, "headers": { - "content-range": "bytes */30", "content-type": "application/xml", "date": { "from": "now" }, - "x-ms-error-code": "InvalidRange" + "x-ms-error-code": "InternalError" }, "body": { "encoding": "utf8", - "data": "InvalidRangeFixture error" + "data": "InternalErrorThe server encountered an internal error. Please retry the request." } } - }, + } + ], + "optional": true + }, + { + "alternatives": [ { "request": [ { @@ -10068,7 +38985,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -10076,7 +38993,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "/fixture/object-tests/write/object.txt" } }, { @@ -10084,84 +39001,40 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "MDEyMzQ1Njc4OQ==" } }, { - "at": "/headers/x-ms-range", + "at": "/headers/x-ms-blob-type", "optional": false, "rule": { "is": "equal", - "value": "bytes=40-" + "value": "BlockBlob" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 416, + "status": 500, "headers": { - "content-range": "bytes */30", "content-type": "application/xml", "date": { "from": "now" }, - "x-ms-error-code": "InvalidRange" + "x-ms-error-code": "InternalError" }, "body": { "encoding": "utf8", - "data": "InvalidRangeFixture error" + "data": "InternalErrorThe server encountered an internal error. Please retry the request." } } } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 416 - } + ], + "optional": true }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "equal", - "value": "InvalidRange" - } - } - ], - "refusal": null - }, - { - "id": "operations/azure/get-range-past-the-end", - "profile": "azure", - "lane": "core", - "purpose": "get range past the end", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "key": "object-tests/read/object.txt", - "op": "get", - "range": { - "end": 64, - "start": 28 - } - }, - "exchanges": [ { "alternatives": [ { @@ -10171,7 +39044,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -10179,7 +39052,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "/fixture/object-tests/write/object.txt" } }, { @@ -10187,43 +39060,42 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "MDEyMzQ1Njc4OQ==" } }, { - "at": "/headers/range", + "at": "/headers/x-ms-blob-type", "optional": false, "rule": { "is": "equal", - "value": "bytes=28-63" + "value": "BlockBlob" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 206, + "status": 500, "headers": { - "content-range": "bytes 28-29/30", - "content-type": "application/octet-stream", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-16c44f0af72d\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true", - "x-ms-version-id": "2024-01-01T00:00:00.7556278Z" + "x-ms-error-code": "InternalError" }, "body": { - "encoding": "base64", - "data": "Y3Q=" + "encoding": "utf8", + "data": "InternalErrorThe server encountered an internal error. Please retry the request." } } - }, + } + ], + "optional": true + }, + { + "alternatives": [ { "request": [ { @@ -10231,7 +39103,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -10239,7 +39111,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "/fixture/object-tests/write/object.txt" } }, { @@ -10247,44 +39119,39 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "MDEyMzQ1Njc4OQ==" } }, { - "at": "/headers/x-ms-range", + "at": "/headers/x-ms-blob-type", "optional": false, "rule": { "is": "equal", - "value": "bytes=28-63" + "value": "BlockBlob" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 206, + "status": 500, "headers": { - "content-range": "bytes 28-29/30", - "content-type": "application/octet-stream", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-16c44f0af72d\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true", - "x-ms-version-id": "2024-01-01T00:00:00.7556278Z" + "x-ms-error-code": "InternalError" }, "body": { - "encoding": "base64", - "data": "Y3Q=" + "encoding": "utf8", + "data": "InternalErrorThe server encountered an internal error. Please retry the request." } } } - ] + ], + "optional": true } ], "expect": [ @@ -10293,67 +39160,41 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-16c44f0af72d\"" - } - }, - { - "at": "/value/size", - "optional": false, - "rule": { - "is": "equal", - "value": 2 - } - }, - { - "at": "/value/content_type", - "optional": false, - "rule": { - "is": "equal", - "value": "application/octet-stream" + "value": "error" } }, { - "at": "/value/version", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "2024-01-01T00:00:00.7556278Z" + "value": 500 } }, { - "at": "/value/body_base64", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": "Y3Q=" + "value": "InternalError" } } ], "refusal": null }, { - "id": "operations/azure/get-range-single-byte", + "id": "operations/azure/put-if-unmodified-since-past", "profile": "azure", "lane": "core", - "purpose": "get range single byte", + "purpose": "Refuse a write with 412 when the object changed after If-Unmodified-Since", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "key": "object-tests/read/object.txt", - "op": "get", - "range": { - "end": 1, - "start": 0 - } + "body_base64": "MDEyMzQ1Njc4OQ==", + "if_unmodified_since": "Sat, 01 Jan 2000 00:00:00 GMT", + "key": "object-tests/write/object.txt", + "op": "put" }, "exchanges": [ { @@ -10365,7 +39206,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -10373,7 +39214,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "/fixture/object-tests/write/object.txt" } }, { @@ -10381,100 +39222,42 @@ "optional": false, "rule": { "is": "equal", - "value": "" - } - }, - { - "at": "/headers/range", - "optional": false, - "rule": { - "is": "equal", - "value": "bytes=0-0" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 206, - "headers": { - "content-range": "bytes 0-0/30", - "content-type": "application/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-16c44f0af72d\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true", - "x-ms-version-id": "2024-01-01T00:00:00.7556278Z" - }, - "body": { - "encoding": "base64", - "data": "MA==" - } - } - }, - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "MDEyMzQ1Njc4OQ==" } }, { - "at": "/body_base64", + "at": "/headers/x-ms-blob-type", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "BlockBlob" } }, { - "at": "/headers/x-ms-range", + "at": "/headers/if-unmodified-since", "optional": false, "rule": { "is": "equal", - "value": "bytes=0-0" + "value": "Sat, 01 Jan 2000 00:00:00 GMT" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 206, + "status": 412, "headers": { - "content-range": "bytes 0-0/30", - "content-type": "application/octet-stream", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-16c44f0af72d\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true", - "x-ms-version-id": "2024-01-01T00:00:00.7556278Z" + "x-ms-error-code": "ConditionNotMet" }, "body": { - "encoding": "base64", - "data": "MA==" + "encoding": "utf8", + "data": "ConditionNotMetFixture error" } } } @@ -10487,67 +39270,41 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-16c44f0af72d\"" - } - }, - { - "at": "/value/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/content_type", - "optional": false, - "rule": { - "is": "equal", - "value": "application/octet-stream" + "value": "error" } }, { - "at": "/value/version", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "2024-01-01T00:00:00.7556278Z" + "value": 412 } }, { - "at": "/value/body_base64", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": "MA==" + "value": "ConditionNotMet" } } ], "refusal": null }, { - "id": "operations/azure/get-range", + "id": "operations/azure/put-content-encoding-gzip", "profile": "azure", "lane": "core", - "purpose": "get range", + "purpose": "Store Content-Encoding: gzip with a write, and the gzip bytes unchanged", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "key": "object-tests/read/object.txt", - "op": "get", - "range": { - "end": 6, - "start": 2 - } + "body_base64": "H4sIAAAAAAACA0vOzy0oSi0uTk1RyM9TKCgtKsgvTuUCAAHVPIcWAAAA", + "content_encoding": "gzip", + "key": "object-tests/write/object.txt", + "op": "put" }, "exchanges": [ { @@ -10559,7 +39316,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -10567,7 +39324,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "/fixture/object-tests/write/object.txt" } }, { @@ -10575,40 +39332,46 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "H4sIAAAAAAACA0vOzy0oSi0uTk1RyM9TKCgtKsgvTuUCAAHVPIcWAAAA" } }, { - "at": "/headers/range", + "at": "/headers/x-ms-blob-type", "optional": false, "rule": { "is": "equal", - "value": "bytes=2-5" + "value": "BlockBlob" + } + }, + { + "at": "/headers/x-ms-blob-content-encoding", + "optional": false, + "rule": { + "is": "equal", + "value": "gzip" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 206, + "status": 201, "headers": { - "content-range": "bytes 2-5/30", - "content-type": "application/octet-stream", + "content-md5": "CVsDGvNMZH4SPA4MSLswrA==", "date": { "from": "now" }, - "etag": "\"fixture-16c44f0af72d\"", + "etag": "\"fixture-b9991ef94e3d\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true", - "x-ms-version-id": "2024-01-01T00:00:00.7556278Z" + "x-ms-request-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.2084665Z" }, "body": { "encoding": "base64", - "data": "MjM0NQ==" + "data": "" } } }, @@ -10619,7 +39382,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -10627,7 +39390,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "/fixture/object-tests/write/object.txt" } }, { @@ -10635,40 +39398,46 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "H4sIAAAAAAACA0vOzy0oSi0uTk1RyM9TKCgtKsgvTuUCAAHVPIcWAAAA" } }, { - "at": "/headers/x-ms-range", + "at": "/headers/x-ms-blob-type", "optional": false, "rule": { "is": "equal", - "value": "bytes=2-5" + "value": "BlockBlob" + } + }, + { + "at": "/headers/content-encoding", + "optional": false, + "rule": { + "is": "equal", + "value": "gzip" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 206, + "status": 201, "headers": { - "content-range": "bytes 2-5/30", - "content-type": "application/octet-stream", + "content-md5": "CVsDGvNMZH4SPA4MSLswrA==", "date": { "from": "now" }, - "etag": "\"fixture-16c44f0af72d\"", + "etag": "\"fixture-b9991ef94e3d\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true", - "x-ms-version-id": "2024-01-01T00:00:00.7556278Z" + "x-ms-request-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.2084665Z" }, "body": { "encoding": "base64", - "data": "MjM0NQ==" + "data": "" } } } @@ -10689,23 +39458,7 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-16c44f0af72d\"" - } - }, - { - "at": "/value/size", - "optional": false, - "rule": { - "is": "equal", - "value": 4 - } - }, - { - "at": "/value/content_type", - "optional": false, - "rule": { - "is": "equal", - "value": "application/octet-stream" + "value": "\"fixture-b9991ef94e3d\"" } }, { @@ -10713,34 +39466,28 @@ "optional": false, "rule": { "is": "equal", - "value": "2024-01-01T00:00:00.7556278Z" - } - }, - { - "at": "/value/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "MjM0NQ==" + "value": "2024-01-01T00:00:00.2084665Z" } } ], "refusal": null }, { - "id": "operations/azure/get-range-open", + "id": "operations/azure/put-content-properties", "profile": "azure", "lane": "core", - "purpose": "get range open", + "purpose": "Store Content-Type, Content-Language, Content-Disposition and Cache-Control with a write", "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/get-blob" + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "key": "object", - "op": "get", - "range": { - "start": 3 - } + "body_base64": "MDEyMzQ1Njc4OQ==", + "cache_control": "max-age=3600", + "content_disposition": "attachment; filename=\"report.txt\"", + "content_language": "nl-NL", + "content_type": "text/plain; charset=utf-8", + "key": "object-tests/write/object.txt", + "op": "put" }, "exchanges": [ { @@ -10752,7 +39499,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -10760,7 +39507,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object" + "value": "/fixture/object-tests/write/object.txt" } }, { @@ -10768,42 +39515,70 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "MDEyMzQ1Njc4OQ==" } }, { - "at": "/headers/range", + "at": "/headers/x-ms-blob-type", "optional": false, "rule": { "is": "equal", - "value": "bytes=3-" + "value": "BlockBlob" + } + }, + { + "at": "/headers/x-ms-blob-content-type", + "optional": false, + "rule": { + "is": "equal", + "value": "text/plain; charset=utf-8" + } + }, + { + "at": "/headers/x-ms-blob-content-language", + "optional": false, + "rule": { + "is": "equal", + "value": "nl-NL" + } + }, + { + "at": "/headers/x-ms-blob-content-disposition", + "optional": false, + "rule": { + "is": "equal", + "value": "attachment; filename=\"report.txt\"" + } + }, + { + "at": "/headers/x-ms-blob-cache-control", + "optional": false, + "rule": { + "is": "equal", + "value": "max-age=3600" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 206, + "status": 201, "headers": { - "content-range": "bytes 3-4/5", - "content-type": "application/octet-stream", + "content-md5": "eB5eJF1ptWaXm4bijSPyxw==", "date": { "from": "now" }, - "etag": "\"fixture-etag\"", + "etag": "\"fixture-b9991ef94e3d\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-request-id": "fixture-request-id", "x-ms-request-server-encrypted": "true", - "x-ms-server-encrypted": "true", - "x-ms-version": "2023-11-03" + "x-ms-version-id": "2024-01-01T00:00:00.2084665Z" }, "body": { "encoding": "base64", - "data": "bG8=" + "data": "" } } }, @@ -10814,7 +39589,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -10822,7 +39597,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object" + "value": "/fixture/object-tests/write/object.txt" } }, { @@ -10830,42 +39605,70 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "MDEyMzQ1Njc4OQ==" } }, { - "at": "/headers/x-ms-range", + "at": "/headers/x-ms-blob-type", "optional": false, "rule": { "is": "equal", - "value": "bytes=3-" + "value": "BlockBlob" + } + }, + { + "at": "/headers/content-type", + "optional": false, + "rule": { + "is": "equal", + "value": "text/plain; charset=utf-8" + } + }, + { + "at": "/headers/content-language", + "optional": false, + "rule": { + "is": "equal", + "value": "nl-NL" + } + }, + { + "at": "/headers/x-ms-blob-content-disposition", + "optional": false, + "rule": { + "is": "equal", + "value": "attachment; filename=\"report.txt\"" + } + }, + { + "at": "/headers/cache-control", + "optional": false, + "rule": { + "is": "equal", + "value": "max-age=3600" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 206, + "status": 201, "headers": { - "content-range": "bytes 3-4/5", - "content-type": "application/octet-stream", + "content-md5": "eB5eJF1ptWaXm4bijSPyxw==", "date": { "from": "now" }, - "etag": "\"fixture-etag\"", + "etag": "\"fixture-b9991ef94e3d\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-request-id": "fixture-request-id", "x-ms-request-server-encrypted": "true", - "x-ms-server-encrypted": "true", - "x-ms-version": "2023-11-03" + "x-ms-version-id": "2024-01-01T00:00:00.2084665Z" }, "body": { "encoding": "base64", - "data": "bG8=" + "data": "" } } } @@ -10882,27 +39685,37 @@ } }, { - "at": "/value/body_base64", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": "bG8=" + "value": "\"fixture-b9991ef94e3d\"" + } + }, + { + "at": "/value/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.2084665Z" } } ], "refusal": null }, { - "id": "operations/azure/get-reordered", + "id": "operations/azure/put-content-type-non-ascii", "profile": "azure", "lane": "core", - "purpose": "get reordered", + "purpose": "Write a Content-Type with a parameter outside ASCII as its UTF-8 bytes. A flat account returns them as it got them, so they read back", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "key": "object-tests/multipart/reordered.bin", - "op": "get" + "body_base64": "MDEyMzQ1Njc4OQ==", + "content_type": "text/plain; name=\"été.txt\"", + "key": "object-tests/write/object.txt", + "op": "put" }, "exchanges": [ { @@ -10914,7 +39727,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -10922,7 +39735,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/reordered.bin" + "value": "/fixture/object-tests/write/object.txt" } }, { @@ -10930,31 +39743,46 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "MDEyMzQ1Njc4OQ==" + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "BlockBlob" + } + }, + { + "at": "/headers/x-ms-blob-content-type", + "optional": false, + "rule": { + "is": "equal", + "value": "text/plain; name=\"été.txt\"" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 200, + "status": 201, "headers": { - "content-type": "application/octet-stream", + "content-md5": "eB5eJF1ptWaXm4bijSPyxw==", "date": { "from": "now" }, - "etag": "\"fixture-8d8ae06ceb7d\"", + "etag": "\"fixture-b9991ef94e3d\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true", - "x-ms-version-id": "2024-01-01T00:00:00.2664276Z" + "x-ms-request-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.2084665Z" }, "body": { "encoding": "base64", - "data": "c2Vjb25kZmlyc3Q=" + "data": "" } } } @@ -10975,23 +39803,7 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-8d8ae06ceb7d\"" - } - }, - { - "at": "/value/size", - "optional": false, - "rule": { - "is": "equal", - "value": 11 - } - }, - { - "at": "/value/content_type", - "optional": false, - "rule": { - "is": "equal", - "value": "application/octet-stream" + "value": "\"fixture-b9991ef94e3d\"" } }, { @@ -10999,31 +39811,25 @@ "optional": false, "rule": { "is": "equal", - "value": "2024-01-01T00:00:00.2664276Z" - } - }, - { - "at": "/value/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "c2Vjb25kZmlyc3Q=" + "value": "2024-01-01T00:00:00.2084665Z" } } ], "refusal": null }, { - "id": "operations/azure/get-replacement", + "id": "operations/azure/put-content-disposition-non-ascii", "profile": "azure", "lane": "core", - "purpose": "get replacement", + "purpose": "Write a Content-Disposition whose filename is outside ASCII. Azure refuses a disposition byte outside ASCII with 400 InvalidMetadata, so send an RFC 6266 filename*, which any reader decodes, or refuse the value", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "key": "object-tests/multipart/replaced.bin", - "op": "get" + "body_base64": "MDEyMzQ1Njc4OQ==", + "content_disposition": "attachment; filename=\"été.txt\"", + "key": "object-tests/write/object.txt", + "op": "put" }, "exchanges": [ { @@ -11035,7 +39841,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -11043,7 +39849,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/replaced.bin" + "value": "/fixture/object-tests/write/object.txt" } }, { @@ -11051,31 +39857,46 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "MDEyMzQ1Njc4OQ==" + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "BlockBlob" + } + }, + { + "at": "/headers/x-ms-blob-content-disposition", + "optional": false, + "rule": { + "is": "equal", + "value": "attachment; filename*=UTF-8''%C3%A9t%C3%A9.txt" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 200, + "status": 201, "headers": { - "content-type": "application/octet-stream", + "content-md5": "eB5eJF1ptWaXm4bijSPyxw==", "date": { "from": "now" }, - "etag": "\"fixture-2184b3e6c2c3\"", + "etag": "\"fixture-b9991ef94e3d\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true", - "x-ms-version-id": "2024-01-01T00:00:00.5387802Z" + "x-ms-request-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.2084665Z" }, "body": { "encoding": "base64", - "data": "RklSU1Q=" + "data": "" } } } @@ -11096,56 +39917,74 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-2184b3e6c2c3\"" + "value": "\"fixture-b9991ef94e3d\"" } }, { - "at": "/value/size", + "at": "/value/version", "optional": false, "rule": { "is": "equal", - "value": 5 + "value": "2024-01-01T00:00:00.2084665Z" } - }, + } + ], + "refusal": [ { - "at": "/value/content_type", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "application/octet-stream" + "value": "refused" } }, { - "at": "/value/version", + "at": "/kind", "optional": false, "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.5387802Z" + "is": "matches", + "pattern": ".+" } }, { - "at": "/value/body_base64", + "at": "/parameter", "optional": false, "rule": { "is": "equal", - "value": "RklSU1Q=" + "value": "content_disposition" + } + }, + { + "at": "/status", + "optional": true, + "rule": { + "is": "equal", + "value": 400 + } + }, + { + "at": "/code", + "optional": true, + "rule": { + "is": "equal", + "value": "InvalidMetadata" } } - ], - "refusal": null + ] }, { - "id": "operations/azure/get-snapshot", + "id": "operations/azure/put-content-type-edge-spaces", "profile": "azure", "lane": "core", - "purpose": "get snapshot", + "purpose": "Write a content type with spaces at either end, which HTTP drops, so the service stores it trimmed. A client may refuse it", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "key": "object-tests/snapshots/object.txt", - "op": "get", - "snapshot": "2024-01-01T00:00:00.7351568Z" + "body_base64": "MDEyMzQ1Njc4OQ==", + "content_type": " text/plain ", + "key": "object-tests/write/object.txt", + "op": "put" }, "exchanges": [ { @@ -11157,7 +39996,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -11165,7 +40004,73 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/snapshots/object.txt" + "value": "/fixture/object-tests/write/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MDEyMzQ1Njc4OQ==" + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "BlockBlob" + } + }, + { + "at": "/headers/x-ms-blob-content-type", + "optional": false, + "rule": { + "is": "equal", + "value": "text/plain" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 201, + "headers": { + "content-md5": "eB5eJF1ptWaXm4bijSPyxw==", + "date": { + "from": "now" + }, + "etag": "\"fixture-b9991ef94e3d\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-request-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.2084665Z" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + }, + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/write/object.txt" } }, { @@ -11173,37 +40078,46 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "MDEyMzQ1Njc4OQ==" + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "BlockBlob" } }, { - "at": "/query/snapshot", + "at": "/headers/content-type", "optional": false, "rule": { "is": "equal", - "value": "2024-01-01T00:00:00.7351568Z" + "value": "text/plain" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 200, + "status": 201, "headers": { - "content-md5": "+XxdKZQb+xsv2rCHSQargg==", - "content-type": "application/octet-stream", + "content-md5": "eB5eJF1ptWaXm4bijSPyxw==", "date": { "from": "now" }, - "etag": "\"fixture-e3698635ab53\"", + "etag": "\"fixture-b9991ef94e3d\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-server-encrypted": "true" + "x-ms-request-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.2084665Z" }, "body": { "encoding": "base64", - "data": "b25l" + "data": "" } } } @@ -11224,66 +40138,57 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-e3698635ab53\"" + "value": "\"fixture-b9991ef94e3d\"" } }, { - "at": "/value/size", + "at": "/value/version", "optional": false, "rule": { "is": "equal", - "value": 3 + "value": "2024-01-01T00:00:00.2084665Z" } - }, + } + ], + "refusal": [ { - "at": "/value/content_type", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "application/octet-stream" + "value": "refused" } }, { - "at": "/value/content_md5_base64", + "at": "/kind", "optional": false, "rule": { - "is": "equal", - "value": "+XxdKZQb+xsv2rCHSQargg==" - } - }, - { - "at": "/value/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "is": "matches", + "pattern": ".+" } }, { - "at": "/value/body_base64", + "at": "/parameter", "optional": false, "rule": { "is": "equal", - "value": "b25l" + "value": "content_type" } } - ], - "refusal": null + ] }, { - "id": "operations/azure/get-staged-only", + "id": "operations/azure/put-first-version", "profile": "azure", "lane": "core", - "purpose": "get staged only", + "purpose": "put first version", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "key": "object-tests/multipart/staged.bin", - "op": "get" + "body_base64": "djE=", + "key": "object-tests/versions-mtydohr2/object.txt", + "op": "put" }, "exchanges": [ { @@ -11295,7 +40200,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -11303,7 +40208,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/staged.bin" + "value": "/fixture/object-tests/versions-mtydohr2/object.txt" } }, { @@ -11311,24 +40216,38 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "djE=" + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "BlockBlob" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 404, + "status": 201, "headers": { - "content-type": "application/xml", + "content-md5": "ZlTHNMyrj0QP8IJetEPcfw==", "date": { "from": "now" }, - "x-ms-error-code": "BlobNotFound" + "etag": "\"fixture-5769a0807b46\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-request-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.2318906Z" }, "body": { - "encoding": "utf8", - "data": "BlobNotFoundFixture error" + "encoding": "base64", + "data": "" } } } @@ -11341,42 +40260,41 @@ "optional": false, "rule": { "is": "equal", - "value": "error" + "value": "ok" } }, { - "at": "/status", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": 404 + "value": "\"fixture-5769a0807b46\"" } }, { - "at": "/code", + "at": "/value/version", "optional": false, "rule": { "is": "equal", - "value": "BlobNotFound" + "value": "2024-01-01T00:00:00.2318906Z" } } ], "refusal": null }, { - "id": "operations/azure/get-suffix-longer-than-object", + "id": "operations/azure/put-if-match-current", "profile": "azure", "lane": "core", - "purpose": "get suffix longer than object", + "purpose": "put if match current", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "key": "object-tests/read/object.txt", - "op": "get", - "range": { - "suffix": 100 - } + "body_base64": "cmVwbGFjZWQ=", + "if_match": "\"fixture-b9991ef94e3d\"", + "key": "object-tests/write/object.txt", + "op": "put" }, "exchanges": [ { @@ -11388,7 +40306,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -11396,7 +40314,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "/fixture/object-tests/write/object.txt" } }, { @@ -11404,43 +40322,97 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "cmVwbGFjZWQ=" } }, { - "at": "/headers/range", + "at": "/headers/if-match", "optional": false, "rule": { "is": "equal", - "value": "bytes=-100" + "value": "\"fixture-b9991ef94e3d\"" + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "BlockBlob" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 200, + "status": 201, "headers": { - "content-md5": "H1VC0PNTmj+yaCRN4U931g==", - "content-type": "application/octet-stream", + "content-md5": "kbskg1kEP+mEFuJZyb3xDQ==", "date": { "from": "now" }, - "etag": "\"fixture-16c44f0af72d\"", + "etag": "\"fixture-3e075954b24b\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true", - "x-ms-version-id": "2024-01-01T00:00:00.7556278Z" + "x-ms-request-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.3814952Z" }, "body": { "encoding": "base64", - "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + "data": "" } } - }, + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-3e075954b24b\"" + } + }, + { + "at": "/value/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.3814952Z" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/put-if-none-match-missing", + "profile": "azure", + "lane": "core", + "purpose": "put if none match missing", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "body_base64": "ZnJlc2g=", + "if_none_match": "*", + "key": "object-tests/write/fresh.txt", + "op": "put" + }, + "exchanges": [ + { + "alternatives": [ { "request": [ { @@ -11448,7 +40420,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -11456,7 +40428,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "/fixture/object-tests/write/fresh.txt" } }, { @@ -11464,40 +40436,46 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "ZnJlc2g=" } }, { - "at": "/headers/x-ms-range", + "at": "/headers/if-none-match", "optional": false, "rule": { "is": "equal", - "value": "bytes=-100" + "value": "*" + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "BlockBlob" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 200, + "status": 201, "headers": { - "content-md5": "H1VC0PNTmj+yaCRN4U931g==", - "content-type": "application/octet-stream", + "content-md5": "dgEIWMg2LXMC71+UNqpmOQ==", "date": { "from": "now" }, - "etag": "\"fixture-16c44f0af72d\"", + "etag": "\"fixture-0445b9b5a1dd\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true", - "x-ms-version-id": "2024-01-01T00:00:00.7556278Z" + "x-ms-request-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.2457093Z" }, "body": { "encoding": "base64", - "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + "data": "" } } } @@ -11518,31 +40496,7 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-16c44f0af72d\"" - } - }, - { - "at": "/value/size", - "optional": false, - "rule": { - "is": "equal", - "value": 30 - } - }, - { - "at": "/value/content_type", - "optional": false, - "rule": { - "is": "equal", - "value": "application/octet-stream" - } - }, - { - "at": "/value/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "H1VC0PNTmj+yaCRN4U931g==" + "value": "\"fixture-0445b9b5a1dd\"" } }, { @@ -11550,60 +40504,24 @@ "optional": false, "rule": { "is": "equal", - "value": "2024-01-01T00:00:00.7556278Z" - } - }, - { - "at": "/value/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" - } - } - ], - "refusal": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "refused" - } - }, - { - "at": "/kind", - "optional": false, - "rule": { - "is": "matches", - "pattern": ".+" - } - }, - { - "at": "/parameter", - "optional": false, - "rule": { - "is": "equal", - "value": "range" + "value": "2024-01-01T00:00:00.2457093Z" } } ], - "decline_permitted": true + "refusal": null }, { - "id": "operations/azure/get-suffix", + "id": "operations/azure/put-key-1024", "profile": "azure", "lane": "core", - "purpose": "get suffix", + "purpose": "put key 1024", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "key": "object-tests/read/object.txt", - "op": "get", - "range": { - "suffix": 6 - } + "body_base64": "MQ==", + "key": "object-tests/long/kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", + "op": "put" }, "exchanges": [ { @@ -11615,7 +40533,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -11623,7 +40541,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "/fixture/object-tests/long/kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk" } }, { @@ -11631,43 +40549,88 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "MQ==" } }, { - "at": "/headers/range", + "at": "/headers/x-ms-blob-type", "optional": false, "rule": { "is": "equal", - "value": "bytes=-6" + "value": "BlockBlob" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 200, + "status": 201, "headers": { - "content-md5": "H1VC0PNTmj+yaCRN4U931g==", - "content-type": "application/octet-stream", + "content-md5": "xMpCOKC5I4INzFCab3WEmw==", "date": { "from": "now" }, - "etag": "\"fixture-16c44f0af72d\"", + "etag": "\"fixture-cf057aba568d\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true", - "x-ms-version-id": "2024-01-01T00:00:00.7556278Z" + "x-ms-request-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.8738118Z" }, "body": { "encoding": "base64", - "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + "data": "" } } - }, + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-cf057aba568d\"" + } + }, + { + "at": "/value/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.8738118Z" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/put-key-1025", + "profile": "azure", + "lane": "core", + "purpose": "put key 1025", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "body_base64": "MQ==", + "key": "object-tests/long/kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", + "op": "put" + }, + "exchanges": [ + { + "alternatives": [ { "request": [ { @@ -11675,7 +40638,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -11683,7 +40646,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "/fixture/object-tests/long/kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk" } }, { @@ -11691,40 +40654,34 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "MQ==" } }, { - "at": "/headers/x-ms-range", + "at": "/headers/x-ms-blob-type", "optional": false, "rule": { "is": "equal", - "value": "bytes=-6" + "value": "BlockBlob" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 200, + "status": 400, "headers": { - "content-md5": "H1VC0PNTmj+yaCRN4U931g==", - "content-type": "application/octet-stream", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-16c44f0af72d\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true", - "x-ms-version-id": "2024-01-01T00:00:00.7556278Z" + "x-ms-error-code": "OutOfRangeInput" }, "body": { - "encoding": "base64", - "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + "encoding": "utf8", + "data": "OutOfRangeInputFixture error" } } } @@ -11737,97 +40694,81 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "error" } }, { - "at": "/value/etag", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-16c44f0af72d\"" + "value": 400 } }, { - "at": "/value/size", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": 30 + "value": "OutOfRangeInput" } - }, + } + ], + "refusal": [ { - "at": "/value/content_type", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "application/octet-stream" + "value": "refused" } }, { - "at": "/value/content_md5_base64", + "at": "/kind", "optional": false, "rule": { - "is": "equal", - "value": "H1VC0PNTmj+yaCRN4U931g==" + "is": "matches", + "pattern": ".+" } }, { - "at": "/value/version", + "at": "/parameter", "optional": false, "rule": { "is": "equal", - "value": "2024-01-01T00:00:00.7556278Z" + "value": "key" } }, { - "at": "/value/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" - } - } - ], - "refusal": [ - { - "at": "/outcome", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "refused" - } - }, - { - "at": "/kind", - "optional": false, - "rule": { - "is": "matches", - "pattern": ".+" + "value": 400 } }, { - "at": "/parameter", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": "range" + "value": "OutOfRangeInput" } } - ], - "decline_permitted": true + ] }, { - "id": "operations/azure/get-unauthenticated", + "id": "operations/azure/put-key-under-object", "profile": "azure", "lane": "core", - "purpose": "Report the service authorization error for this operation; signature acceptance is tested separately.", + "purpose": "put key under object", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "key": "object-tests/read/object.txt", - "op": "get" + "body_base64": "MQ==", + "key": "object-tests/order/a/b", + "op": "put" }, "exchanges": [ { @@ -11839,7 +40780,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -11847,7 +40788,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "/fixture/object-tests/order/a/b" } }, { @@ -11855,24 +40796,38 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "MQ==" + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "BlockBlob" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 401, + "status": 201, "headers": { - "content-type": "application/xml", + "content-md5": "xMpCOKC5I4INzFCab3WEmw==", "date": { "from": "now" }, - "x-ms-error-code": "InvalidAuthenticationInfo" + "etag": "\"fixture-17ced520f182\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-request-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.2584945Z" }, "body": { - "encoding": "utf8", - "data": "InvalidAuthenticationInfoFixture error" + "encoding": "base64", + "data": "" } } } @@ -11885,40 +40840,41 @@ "optional": false, "rule": { "is": "equal", - "value": "error" + "value": "ok" } }, { - "at": "/status", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": 401 + "value": "\"fixture-17ced520f182\"" } }, { - "at": "/code", + "at": "/value/version", "optional": false, "rule": { "is": "equal", - "value": "InvalidAuthenticationInfo" + "value": "2024-01-01T00:00:00.2584945Z" } } ], "refusal": null }, { - "id": "operations/azure/get-unknown-snapshot", + "id": "operations/azure/put-lost-the-race-to-create", "profile": "azure", "lane": "core", - "purpose": "get unknown snapshot", + "purpose": "put lost the race to create", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "key": "object-tests/snapshots/object.txt", - "op": "get", - "snapshot": "2024-01-01T00:00:00.4364169Z" + "body_base64": "YW5vdGhlciBvYmplY3Q=", + "if_none_match": "*", + "key": "object-tests/write/object.txt", + "op": "put" }, "exchanges": [ { @@ -11930,7 +40886,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -11938,7 +40894,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/snapshots/object.txt" + "value": "/fixture/object-tests/write/object.txt" } }, { @@ -11946,32 +40902,42 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "YW5vdGhlciBvYmplY3Q=" } }, { - "at": "/query/snapshot", + "at": "/headers/if-none-match", "optional": false, "rule": { "is": "equal", - "value": "2024-01-01T00:00:00.4364169Z" + "value": "*" + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "BlockBlob" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 404, + "status": 409, "headers": { "content-type": "application/xml", "date": { "from": "now" }, - "x-ms-error-code": "BlobNotFound" + "x-ms-error-code": "BlobAlreadyExists" }, "body": { "encoding": "utf8", - "data": "BlobNotFoundFixture error" + "data": "BlobAlreadyExistsFixture error" } } } @@ -11992,7 +40958,7 @@ "optional": false, "rule": { "is": "equal", - "value": 404 + "value": 409 } }, { @@ -12000,24 +40966,28 @@ "optional": false, "rule": { "is": "equal", - "value": "BlobNotFound" + "value": "BlobAlreadyExists" } } ], "refusal": null }, { - "id": "operations/azure/get-unknown-version", + "id": "operations/azure/put-md5-mismatch", "profile": "azure", "lane": "core", - "purpose": "get unknown version", + "purpose": "put md5 mismatch", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "key": "object-tests/versions-mtydohr2/object.txt", - "op": "get", - "version": "2024-01-01T00:00:00.4364169Z" + "body_base64": "ZGVjbGFyZWQtYm9keQ==", + "checksum": { + "algorithm": "md5", + "value_base64": "eV8yArF8trw9S3cdjGyerw==" + }, + "key": "object-tests/hashes/md5-mismatch.txt", + "op": "put" }, "exchanges": [ { @@ -12029,7 +40999,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -12037,7 +41007,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/versions-mtydohr2/object.txt" + "value": "/fixture/object-tests/hashes/md5-mismatch.txt" } }, { @@ -12045,32 +41015,42 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "ZGVjbGFyZWQtYm9keQ==" } }, { - "at": "/query/versionid", + "at": "/headers/content-md5", "optional": false, "rule": { "is": "equal", - "value": "2024-01-01T00:00:00.4364169Z" + "value": "eV8yArF8trw9S3cdjGyerw==" + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "BlockBlob" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 404, + "status": 400, "headers": { "content-type": "application/xml", "date": { "from": "now" }, - "x-ms-error-code": "BlobNotFound" + "x-ms-error-code": "Md5Mismatch" }, "body": { "encoding": "utf8", - "data": "BlobNotFoundFixture error" + "data": "Md5MismatchFixture error" } } } @@ -12091,7 +41071,7 @@ "optional": false, "rule": { "is": "equal", - "value": 404 + "value": 400 } }, { @@ -12099,23 +41079,27 @@ "optional": false, "rule": { "is": "equal", - "value": "BlobNotFound" + "value": "Md5Mismatch" } } ], "refusal": null }, { - "id": "operations/azure/get-whole", + "id": "operations/azure/put-metadata-empty-value", "profile": "azure", "lane": "core", - "purpose": "get whole", + "purpose": "put metadata empty value", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "key": "object-tests/read/object.txt", - "op": "get" + "body_base64": "MQ==", + "key": "object-tests/metadata/empty-value.txt", + "metadata": { + "empty": "" + }, + "op": "put" }, "exchanges": [ { @@ -12127,7 +41111,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -12135,40 +41119,54 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "/fixture/object-tests/metadata/empty-value.txt" } }, { "at": "/body_base64", "optional": false, + "rule": { + "is": "equal", + "value": "MQ==" + } + }, + { + "at": "/headers/x-ms-meta-empty", + "optional": false, "rule": { "is": "equal", "value": "" } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "BlockBlob" + } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 200, + "status": 201, "headers": { - "content-md5": "H1VC0PNTmj+yaCRN4U931g==", - "content-type": "application/octet-stream", + "content-md5": "xMpCOKC5I4INzFCab3WEmw==", "date": { "from": "now" }, - "etag": "\"fixture-16c44f0af72d\"", + "etag": "\"fixture-333d95b64818\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true", - "x-ms-version-id": "2024-01-01T00:00:00.7556278Z" + "x-ms-request-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.9480929Z" }, "body": { "encoding": "base64", - "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + "data": "" } } } @@ -12189,31 +41187,7 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-16c44f0af72d\"" - } - }, - { - "at": "/value/size", - "optional": false, - "rule": { - "is": "equal", - "value": 30 - } - }, - { - "at": "/value/content_type", - "optional": false, - "rule": { - "is": "equal", - "value": "application/octet-stream" - } - }, - { - "at": "/value/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "H1VC0PNTmj+yaCRN4U931g==" + "value": "\"fixture-333d95b64818\"" } }, { @@ -12221,31 +41195,27 @@ "optional": false, "rule": { "is": "equal", - "value": "2024-01-01T00:00:00.7556278Z" - } - }, - { - "at": "/value/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + "value": "2024-01-01T00:00:00.9480929Z" } } ], "refusal": null }, { - "id": "operations/azure/get-xml-looking", + "id": "operations/azure/put-metadata-invalid-name", "profile": "azure", "lane": "core", - "purpose": "get xml looking", + "purpose": "put metadata invalid name", "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/get-blob" + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "key": "object", - "op": "get" + "body_base64": "MQ==", + "key": "object-tests/metadata/invalid-name.txt", + "metadata": { + "not-valid": "1" + }, + "op": "put" }, "exchanges": [ { @@ -12257,7 +41227,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -12265,7 +41235,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object" + "value": "/fixture/object-tests/metadata/invalid-name.txt" } }, { @@ -12273,33 +41243,42 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "MQ==" + } + }, + { + "at": "/headers/x-ms-meta-not-valid", + "optional": false, + "rule": { + "is": "equal", + "value": "1" + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "BlockBlob" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 200, + "status": 400, "headers": { - "content-type": "application/octet-stream", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-etag\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-request-id": "fixture-request-id", - "x-ms-request-server-encrypted": "true", - "x-ms-server-encrypted": "true", - "x-ms-version": "2023-11-03" + "x-ms-error-code": "InvalidMetadata" }, "body": { - "encoding": "base64", - "data": "PEVycm9yPnN0aWxsIG9iamVjdCBieXRlczwvRXJyb3I+" + "encoding": "utf8", + "data": "InvalidMetadataFixture error" } } } @@ -12312,32 +41291,81 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "error" } }, { - "at": "/value/body_base64", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "PEVycm9yPnN0aWxsIG9iamVjdCBieXRlczwvRXJyb3I+" + "value": 400 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "InvalidMetadata" } } ], - "refusal": null + "refusal": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "refused" + } + }, + { + "at": "/kind", + "optional": false, + "rule": { + "is": "matches", + "pattern": ".+" + } + }, + { + "at": "/parameter", + "optional": false, + "rule": { + "is": "equal", + "value": "metadata" + } + }, + { + "at": "/status", + "optional": true, + "rule": { + "is": "equal", + "value": 400 + } + }, + { + "at": "/code", + "optional": true, + "rule": { + "is": "equal", + "value": "InvalidMetadata" + } + } + ] }, { - "id": "operations/azure/get-noise-tolerance", + "id": "operations/azure/put-metadata-replaced", "profile": "azure", "lane": "core", - "purpose": "get noise tolerance", + "purpose": "put metadata replaced", "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/get-blob" + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], - "origin": "constructed", "call": { - "key": "object", - "op": "get" + "body_base64": "Mg==", + "key": "object-tests/metadata/replaced.txt", + "op": "put" }, "exchanges": [ { @@ -12349,7 +41377,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -12357,7 +41385,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object" + "value": "/fixture/object-tests/metadata/replaced.txt" } }, { @@ -12365,34 +41393,38 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "Mg==" + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "BlockBlob" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 200, + "status": 201, "headers": { - "content-type": "application/octet-stream", + "content-md5": "yB5yjZ1ML2NvBn+JzBSGLA==", "date": { "from": "now" }, - "etag": "\"a-different-etag\"", + "etag": "\"fixture-37b036d8c13f\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-fixture-unknown": "ignored", - "x-ms-blob-type": "BlockBlob", "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-request-id": "another-id", "x-ms-request-server-encrypted": "true", - "x-ms-server-encrypted": "true", - "x-ms-version": "2023-11-03" + "x-ms-version-id": "2024-01-01T00:00:00.7487600Z" }, "body": { "encoding": "base64", - "data": "aGVsbG8=" + "data": "" } } } @@ -12409,29 +41441,40 @@ } }, { - "at": "/value/body_base64", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": "aGVsbG8=" + "value": "\"fixture-37b036d8c13f\"" + } + }, + { + "at": "/value/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.7487600Z" } } ], "refusal": null }, { - "id": "operations/azure/get-body-cut-short", + "id": "operations/azure/put-metadata", "profile": "azure", "lane": "core", - "purpose": "Report a body that ends before its Content-Length as an error, or resume it, but never return the short body", + "purpose": "put metadata", "sources": [ - "https://www.rfc-editor.org/rfc/rfc9112#section-8", - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_client.cpp" + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], - "origin": "transient", "call": { - "key": "object-tests/read/object.txt", - "op": "get" + "body_base64": "MQ==", + "key": "object-tests/metadata/object.txt", + "metadata": { + "name": "value", + "second": "2" + }, + "op": "put" }, "exchanges": [ { @@ -12443,7 +41486,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -12451,7 +41494,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "/fixture/object-tests/metadata/object.txt" } }, { @@ -12459,64 +41502,31 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "MQ==" } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-md5": "H1VC0PNTmj+yaCRN4U931g==", - "content-type": "application/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-16c44f0af72d\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true", - "x-ms-version-id": "2024-01-01T00:00:00.7556278Z" - }, - "body": { - "encoding": "base64", - "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" }, - "truncate_body_after": 15 - } - } - ] - }, - { - "alternatives": [ - { - "request": [ { - "at": "/method", + "at": "/headers/x-ms-meta-name", "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "value" } }, { - "at": "/path", + "at": "/headers/x-ms-meta-second", "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "2" } }, { - "at": "/body_base64", + "at": "/headers/x-ms-blob-type", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "BlockBlob" } } ], @@ -12525,28 +41535,74 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 201, "headers": { - "content-md5": "H1VC0PNTmj+yaCRN4U931g==", - "content-type": "application/octet-stream", + "content-md5": "xMpCOKC5I4INzFCab3WEmw==", "date": { "from": "now" }, - "etag": "\"fixture-16c44f0af72d\"", + "etag": "\"fixture-9abbc5e374ca\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true", - "x-ms-version-id": "2024-01-01T00:00:00.7556278Z" + "x-ms-request-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.7035036Z" }, "body": { "encoding": "base64", - "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + "data": "" } } - }, + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-9abbc5e374ca\"" + } + }, + { + "at": "/value/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.7035036Z" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/put-metadata-identifier-name", + "profile": "azure", + "lane": "core", + "purpose": "An Azure metadata name must be a C# identifier, which may start with an underscore and hold digits. Send _a1; only a name that is no identifier may be refused.", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "body_base64": "MQ==", + "key": "object-tests/metadata/identifier-name.txt", + "metadata": { + "_a1": "1" + }, + "op": "put" + }, + "exchanges": [ + { + "alternatives": [ { "request": [ { @@ -12554,7 +41610,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -12562,7 +41618,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "/fixture/object-tests/metadata/identifier-name.txt" } }, { @@ -12570,51 +41626,96 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "MQ==" } }, { - "at": "/headers/range", + "at": "/headers/x-ms-meta-_a1", "optional": false, "rule": { "is": "equal", - "value": "bytes=15-" + "value": "1" } }, { - "at": "/headers/if-match", + "at": "/headers/x-ms-blob-type", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-16c44f0af72d\"" + "value": "BlockBlob" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 206, + "status": 201, "headers": { - "content-range": "bytes 15-29/30", - "content-type": "application/octet-stream", + "content-md5": "xMpCOKC5I4INzFCab3WEmw==", "date": { "from": "now" }, - "etag": "\"fixture-16c44f0af72d\"", + "etag": "\"fixture-9abbc5e374ca\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true", - "x-ms-version-id": "2024-01-01T00:00:00.7556278Z" + "x-ms-request-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.7035036Z" }, "body": { "encoding": "base64", - "data": "Y3QtdGVzdHMtb2JqZWN0" + "data": "" } } - }, + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-9abbc5e374ca\"" + } + }, + { + "at": "/value/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.7035036Z" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/put-over-snapshotted", + "profile": "azure", + "lane": "core", + "purpose": "put over snapshotted", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "body_base64": "dHdv", + "key": "object-tests/snapshots/object.txt", + "op": "put" + }, + "exchanges": [ + { + "alternatives": [ { "request": [ { @@ -12622,7 +41723,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -12630,7 +41731,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "/fixture/object-tests/snapshots/object.txt" } }, { @@ -12638,53 +41739,42 @@ "optional": false, "rule": { "is": "equal", - "value": "" - } - }, - { - "at": "/headers/x-ms-range", - "optional": false, - "rule": { - "is": "equal", - "value": "bytes=15-" + "value": "dHdv" } }, { - "at": "/headers/if-match", + "at": "/headers/x-ms-blob-type", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-16c44f0af72d\"" + "value": "BlockBlob" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 206, + "status": 201, "headers": { - "content-range": "bytes 15-29/30", - "content-type": "application/octet-stream", + "content-md5": "uKn3Fdu2T9XFbneDxoIKYQ==", "date": { "from": "now" }, - "etag": "\"fixture-16c44f0af72d\"", + "etag": "\"fixture-937c89bb7b5c\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true", - "x-ms-version-id": "2024-01-01T00:00:00.7556278Z" + "x-ms-request-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.6268993Z" }, "body": { "encoding": "base64", - "data": "Y3QtdGVzdHMtb2JqZWN0" + "data": "" } } } - ], - "optional": true + ] } ], "expect": [ @@ -12692,37 +41782,41 @@ "at": "/outcome", "optional": false, "rule": { - "is": "one_of", - "values": [ - "error", - "ok" - ] + "is": "equal", + "value": "ok" } }, { - "at": "/value/body_base64", - "optional": true, + "at": "/value/etag", + "optional": false, "rule": { "is": "equal", - "value": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + "value": "\"fixture-937c89bb7b5c\"" + } + }, + { + "at": "/value/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.6268993Z" } } ], "refusal": null }, { - "id": "operations/azure/get-server-busy", + "id": "operations/azure/put-overwrite", "profile": "azure", "lane": "core", - "purpose": "Report a 503 ServerBusy answer as an error, after at most 5 retries", + "purpose": "put overwrite", "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/common-rest-api-error-codes", - "https://learn.microsoft.com/en-us/rest/api/storageservices/blob-service-error-codes" + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], - "origin": "transient", "call": { - "key": "object-tests/read/object.txt", - "op": "get" + "body_base64": "b3ZlcndyaXR0ZW4=", + "key": "object-tests/write/object.txt", + "op": "put" }, "exchanges": [ { @@ -12734,7 +41828,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -12742,7 +41836,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "/fixture/object-tests/write/object.txt" } }, { @@ -12750,29 +41844,87 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "b3ZlcndyaXR0ZW4=" + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "BlockBlob" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 503, + "status": 201, "headers": { - "content-type": "application/xml", + "content-md5": "UJ/0v/8wp3EDqsNAaOpGxw==", "date": { "from": "now" }, - "x-ms-error-code": "ServerBusy" + "etag": "\"fixture-cf4724500964\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-request-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.7758823Z" }, "body": { - "encoding": "utf8", - "data": "ServerBusyThe server is currently unable to receive requests. Please retry your request." + "encoding": "base64", + "data": "" } } } ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-cf4724500964\"" + } }, + { + "at": "/value/version", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-01T00:00:00.7758823Z" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/put-precondition-failed", + "profile": "azure", + "lane": "core", + "purpose": "put precondition failed", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "body_base64": "YW5vdGhlciBvYmplY3Q=", + "if_match": "\"fixture-088e5dc109cf\"", + "key": "object-tests/write/object.txt", + "op": "put" + }, + "exchanges": [ { "alternatives": [ { @@ -12782,7 +41934,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -12790,7 +41942,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "/fixture/object-tests/write/object.txt" } }, { @@ -12798,79 +41950,94 @@ "optional": false, "rule": { "is": "equal", - "value": "" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 503, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - }, - "x-ms-error-code": "ServerBusy" - }, - "body": { - "encoding": "utf8", - "data": "ServerBusyThe server is currently unable to receive requests. Please retry your request." - } - } - } - ], - "optional": true - }, - { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" + "value": "YW5vdGhlciBvYmplY3Q=" } }, { - "at": "/path", + "at": "/headers/if-match", "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "\"fixture-088e5dc109cf\"" } }, { - "at": "/body_base64", + "at": "/headers/x-ms-blob-type", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "BlockBlob" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 503, + "status": 412, "headers": { "content-type": "application/xml", "date": { "from": "now" }, - "x-ms-error-code": "ServerBusy" + "x-ms-error-code": "ConditionNotMet" }, "body": { "encoding": "utf8", - "data": "ServerBusyThe server is currently unable to receive requests. Please retry your request." + "data": "ConditionNotMetFixture error" } } } - ], - "optional": true + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 412 + } }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "ConditionNotMet" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/put-precondition-failed-code-in-body", + "profile": "azure", + "lane": "core", + "purpose": "put precondition failed, with the error code only in the XML body", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp", + "https://learn.microsoft.com/en-us/rest/api/storageservices/common-rest-api-error-codes", + "https://learn.microsoft.com/en-us/rest/api/storageservices/blob-service-error-codes" + ], + "origin": "constructed", + "call": { + "body_base64": "YW5vdGhlciBvYmplY3Q=", + "if_match": "\"fixture-088e5dc109cf\"", + "key": "object-tests/write/object.txt", + "op": "put" + }, + "exchanges": [ { "alternatives": [ { @@ -12880,7 +42047,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -12888,7 +42055,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "/fixture/object-tests/write/object.txt" } }, { @@ -12896,30 +42063,89 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "YW5vdGhlciBvYmplY3Q=" + } + }, + { + "at": "/headers/if-match", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-088e5dc109cf\"" + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "BlockBlob" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 503, + "status": 412, "headers": { "content-type": "application/xml", "date": { "from": "now" - }, - "x-ms-error-code": "ServerBusy" + } }, "body": { "encoding": "utf8", - "data": "ServerBusyThe server is currently unable to receive requests. Please retry your request." + "data": "ConditionNotMetFixture error" } } } - ], - "optional": true + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 412 + } }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "ConditionNotMet" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/put-refused", + "profile": "azure", + "lane": "core", + "purpose": "Report the service authorization error for this operation; signature acceptance is tested separately.", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "body_base64": "bm90aGluZyBpcyBzdG9yZWQ=", + "key": "object.txt", + "op": "put" + }, + "exchanges": [ { "alternatives": [ { @@ -12929,7 +42155,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -12937,7 +42163,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "/fixture/object.txt" } }, { @@ -12945,30 +42171,82 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "bm90aGluZyBpcyBzdG9yZWQ=" + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "BlockBlob" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 503, + "status": 403, "headers": { "content-type": "application/xml", "date": { "from": "now" }, - "x-ms-error-code": "ServerBusy" + "x-ms-error-code": "AuthorizationPermissionMismatch" }, "body": { "encoding": "utf8", - "data": "ServerBusyThe server is currently unable to receive requests. Please retry your request." + "data": "AuthorizationPermissionMismatchFixture error" } } } - ], - "optional": true + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 403 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "AuthorizationPermissionMismatch" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/put-second-version", + "profile": "azure", + "lane": "core", + "purpose": "put second version", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "body_base64": "djI=", + "key": "object-tests/versions-mtydohr2/object.txt", + "op": "put" + }, + "exchanges": [ { "alternatives": [ { @@ -12978,7 +42256,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -12986,7 +42264,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "/fixture/object-tests/versions-mtydohr2/object.txt" } }, { @@ -12994,29 +42272,42 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "djI=" + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "BlockBlob" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 503, + "status": 201, "headers": { - "content-type": "application/xml", + "content-md5": "GyZ2GcSBLMRu4oF0eITKUA==", "date": { "from": "now" }, - "x-ms-error-code": "ServerBusy" + "etag": "\"fixture-4768de772705\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-request-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.3326281Z" }, "body": { - "encoding": "utf8", - "data": "ServerBusyThe server is currently unable to receive requests. Please retry your request." + "encoding": "base64", + "data": "" } } } - ], - "optional": true + ] } ], "expect": [ @@ -13025,40 +42316,40 @@ "optional": false, "rule": { "is": "equal", - "value": "error" + "value": "ok" } }, { - "at": "/status", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": 503 + "value": "\"fixture-4768de772705\"" } }, { - "at": "/code", + "at": "/value/version", "optional": false, "rule": { "is": "equal", - "value": "ServerBusy" + "value": "2024-01-01T00:00:00.3326281Z" } } ], "refusal": null }, { - "id": "operations/azure/get-if-unmodified-since-past", + "id": "operations/azure/put-unauthenticated", "profile": "azure", "lane": "core", - "purpose": "Refuse a read with 412 when the object changed after If-Unmodified-Since", + "purpose": "Report the service authorization error for this operation; signature acceptance is tested separately.", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "if_unmodified_since": "Sat, 01 Jan 2000 00:00:00 GMT", - "key": "object-tests/read/object.txt", - "op": "get" + "body_base64": "bm90aGluZyBpcyBzdG9yZWQ=", + "key": "object-tests/write/object.txt", + "op": "put" }, "exchanges": [ { @@ -13070,7 +42361,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -13078,7 +42369,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "/fixture/object-tests/write/object.txt" } }, { @@ -13086,32 +42377,34 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "bm90aGluZyBpcyBzdG9yZWQ=" } }, { - "at": "/headers/if-unmodified-since", + "at": "/headers/x-ms-blob-type", "optional": false, "rule": { "is": "equal", - "value": "Sat, 01 Jan 2000 00:00:00 GMT" + "value": "BlockBlob" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 412, + "status": 401, "headers": { "content-type": "application/xml", "date": { "from": "now" }, - "x-ms-error-code": "ConditionNotMet" + "x-ms-error-code": "InvalidAuthenticationInfo" }, "body": { "encoding": "utf8", - "data": "ConditionNotMetFixture error" + "data": "InvalidAuthenticationInfoFixture error" } } } @@ -13132,7 +42425,7 @@ "optional": false, "rule": { "is": "equal", - "value": 412 + "value": 401 } }, { @@ -13140,24 +42433,28 @@ "optional": false, "rule": { "is": "equal", - "value": "ConditionNotMet" + "value": "InvalidAuthenticationInfo" } } ], "refusal": null }, { - "id": "operations/azure/get-if-modified-since-future", + "id": "operations/azure/put-with-crc64", "profile": "azure", "lane": "core", - "purpose": "Report 304 when If-Modified-Since names a future date, which Azure does not ignore", + "purpose": "put with crc64", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "if_modified_since": "Fri, 01 Jan 2100 00:00:00 GMT", - "key": "object-tests/read/object.txt", - "op": "get" + "body_base64": "ZGVjbGFyZWQtYm9keQ==", + "checksum": { + "algorithm": "azure_crc64", + "value_base64": "9XBvAwWoR9o=" + }, + "key": "object-tests/hashes/crc64.txt", + "op": "put" }, "exchanges": [ { @@ -13169,7 +42466,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -13177,7 +42474,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "/fixture/object-tests/hashes/crc64.txt" } }, { @@ -13185,30 +42482,46 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "ZGVjbGFyZWQtYm9keQ==" } }, { - "at": "/headers/if-modified-since", + "at": "/headers/x-ms-content-crc64", "optional": false, "rule": { "is": "equal", - "value": "Fri, 01 Jan 2100 00:00:00 GMT" + "value": "9XBvAwWoR9o=" + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "BlockBlob" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 304, + "status": 201, "headers": { + "content-md5": "N6YZkbg+Lyfxtskwn8iRCg==", "date": { "from": "now" }, - "x-ms-error-code": "ConditionNotMet" + "etag": "\"fixture-90cfcb93036b\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-request-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.1153123Z" }, "body": { - "encoding": "empty" + "encoding": "base64", + "data": "" } } } @@ -13221,40 +42534,44 @@ "optional": false, "rule": { "is": "equal", - "value": "error" + "value": "ok" } }, { - "at": "/status", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": 304 + "value": "\"fixture-90cfcb93036b\"" } }, { - "at": "/code", + "at": "/value/version", "optional": false, "rule": { "is": "equal", - "value": "ConditionNotMet" + "value": "2024-01-01T00:00:00.1153123Z" } } ], "refusal": null }, { - "id": "operations/azure/get-if-modified-since-past", + "id": "operations/azure/put-with-md5", "profile": "azure", "lane": "core", - "purpose": "Read an object modified since a past date", + "purpose": "put with md5", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "if_modified_since": "Sat, 01 Jan 2000 00:00:00 GMT", - "key": "object-tests/read/object.txt", - "op": "get" + "body_base64": "ZGVjbGFyZWQtYm9keQ==", + "checksum": { + "algorithm": "md5", + "value_base64": "N6YZkbg+Lyfxtskwn8iRCg==" + }, + "key": "object-tests/hashes/md5.txt", + "op": "put" }, "exchanges": [ { @@ -13266,7 +42583,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -13274,7 +42591,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "/fixture/object-tests/hashes/md5.txt" } }, { @@ -13282,40 +42599,46 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "ZGVjbGFyZWQtYm9keQ==" } }, { - "at": "/headers/if-modified-since", + "at": "/headers/content-md5", "optional": false, "rule": { "is": "equal", - "value": "Sat, 01 Jan 2000 00:00:00 GMT" + "value": "N6YZkbg+Lyfxtskwn8iRCg==" + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "BlockBlob" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 200, + "status": 201, "headers": { - "content-md5": "H1VC0PNTmj+yaCRN4U931g==", - "content-type": "application/octet-stream", + "content-md5": "N6YZkbg+Lyfxtskwn8iRCg==", "date": { "from": "now" }, - "etag": "\"fixture-16c44f0af72d\"", + "etag": "\"fixture-494ad7275bf7\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true", - "x-ms-version-id": "2024-01-01T00:00:00.7556278Z" + "x-ms-request-server-encrypted": "true", + "x-ms-version-id": "2024-01-01T00:00:00.7803759Z" }, "body": { "encoding": "base64", - "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + "data": "" } } } @@ -13336,31 +42659,7 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-16c44f0af72d\"" - } - }, - { - "at": "/value/size", - "optional": false, - "rule": { - "is": "equal", - "value": 30 - } - }, - { - "at": "/value/content_type", - "optional": false, - "rule": { - "is": "equal", - "value": "application/octet-stream" - } - }, - { - "at": "/value/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "H1VC0PNTmj+yaCRN4U931g==" + "value": "\"fixture-494ad7275bf7\"" } }, { @@ -13368,31 +42667,23 @@ "optional": false, "rule": { "is": "equal", - "value": "2024-01-01T00:00:00.7556278Z" - } - }, - { - "at": "/value/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + "value": "2024-01-01T00:00:00.7803759Z" } } ], "refusal": null }, { - "id": "operations/azure/get-content-encoding-gzip", + "id": "operations/azure/snapshot", "profile": "azure", "lane": "core", - "purpose": "Return the stored gzip bytes and Content-Encoding: gzip without decoding them", + "purpose": "snapshot", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "key": "object-tests/read/object.txt", - "op": "get" + "key": "object-tests/snapshots/object.txt", + "op": "azure.snapshot" }, "exchanges": [ { @@ -13404,7 +42695,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -13412,7 +42703,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "/fixture/object-tests/snapshots/object.txt" } }, { @@ -13422,31 +42713,36 @@ "is": "equal", "value": "" } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "snapshot" + } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 200, + "status": 201, "headers": { - "content-encoding": "gzip", - "content-md5": "CVsDGvNMZH4SPA4MSLswrA==", - "content-type": "application/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-16c44f0af72d\"", + "etag": "\"fixture-e3698635ab53\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true", - "x-ms-version-id": "2024-01-01T00:00:00.7556278Z" + "x-ms-request-server-encrypted": "false", + "x-ms-snapshot": "2024-01-01T00:00:00.7351568Z", + "x-ms-version-id": "2024-01-01T00:00:00.8746441Z" }, "body": { "encoding": "base64", - "data": "H4sIAAAAAAACA0vOzy0oSi0uTk1RyM9TKCgtKsgvTuUCAAHVPIcWAAAA" + "data": "" } } } @@ -13463,75 +42759,29 @@ } }, { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-16c44f0af72d\"" - } - }, - { - "at": "/value/size", - "optional": false, - "rule": { - "is": "equal", - "value": 42 - } - }, - { - "at": "/value/content_type", - "optional": false, - "rule": { - "is": "equal", - "value": "application/octet-stream" - } - }, - { - "at": "/value/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "CVsDGvNMZH4SPA4MSLswrA==" - } - }, - { - "at": "/value/version", - "optional": false, - "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.7556278Z" - } - }, - { - "at": "/value/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "H4sIAAAAAAACA0vOzy0oSi0uTk1RyM9TKCgtKsgvTuUCAAHVPIcWAAAA" - } - }, - { - "at": "/value/content_encoding", + "at": "/value/snapshot", "optional": false, "rule": { "is": "equal", - "value": "gzip" + "value": "2024-01-01T00:00:00.7351568Z" } } ], "refusal": null }, { - "id": "operations/azure/get-content-properties", + "id": "operations/azure/stage-empty", "profile": "azure", "lane": "core", - "purpose": "Return the stored content properties from a GET", + "purpose": "stage empty", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "key": "object-tests/read/object.txt", - "op": "get" + "block_id_base64": "MDAwMDAz", + "body_base64": "", + "key": "object-tests/multipart/staged.bin", + "op": "azure.stage_block" }, "exchanges": [ { @@ -13543,7 +42793,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -13551,7 +42801,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "/fixture/object-tests/multipart/staged.bin" } }, { @@ -13561,33 +42811,40 @@ "is": "equal", "value": "" } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "block" + } + }, + { + "at": "/query/blockid", + "optional": false, + "rule": { + "is": "equal", + "value": "MDAwMDAz" + } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 200, + "status": 400, "headers": { - "cache-control": "max-age=3600", - "content-disposition": "attachment; filename=\"report.txt\"", - "content-language": "nl-NL", - "content-md5": "H1VC0PNTmj+yaCRN4U931g==", - "content-type": "text/plain; charset=utf-8", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-16c44f0af72d\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true", - "x-ms-version-id": "2024-01-01T00:00:00.7556278Z" + "x-ms-error-code": "InvalidHeaderValue" }, "body": { - "encoding": "base64", - "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + "encoding": "utf8", + "data": "InvalidHeaderValueFixture error" } } } @@ -13600,95 +42857,41 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-16c44f0af72d\"" - } - }, - { - "at": "/value/size", - "optional": false, - "rule": { - "is": "equal", - "value": 30 - } - }, - { - "at": "/value/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "H1VC0PNTmj+yaCRN4U931g==" - } - }, - { - "at": "/value/version", - "optional": false, - "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.7556278Z" - } - }, - { - "at": "/value/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" - } - }, - { - "at": "/value/content_type", - "optional": false, - "rule": { - "is": "equal", - "value": "text/plain; charset=utf-8" - } - }, - { - "at": "/value/content_language", - "optional": false, - "rule": { - "is": "equal", - "value": "nl-NL" + "value": "error" } }, { - "at": "/value/content_disposition", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "attachment; filename=\"report.txt\"" + "value": 400 } }, { - "at": "/value/cache_control", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": "max-age=3600" + "value": "InvalidHeaderValue" } } ], "refusal": null }, { - "id": "operations/azure/get-with-staged-blocks", + "id": "operations/azure/stage-escaped-id", "profile": "azure", "lane": "core", - "purpose": "get with staged blocks", + "purpose": "stage escaped id", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "key": "object-tests/multipart/pending.bin", - "op": "get" + "block_id_base64": "+/8=", + "body_base64": "b25l", + "key": "object-tests/multipart/escaped.bin", + "op": "azure.stage_block" }, "exchanges": [ { @@ -13700,7 +42903,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -13708,7 +42911,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/pending.bin" + "value": "/fixture/object-tests/multipart/escaped.bin" } }, { @@ -13716,31 +42919,43 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "b25l" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "block" + } + }, + { + "at": "/query/blockid", + "optional": false, + "rule": { + "is": "equal", + "value": "+/8=" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 200, + "status": 201, "headers": { - "content-type": "application/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-9c5ca12bcfc9\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true", - "x-ms-version-id": "2024-01-01T00:00:00.6314295Z" + "x-ms-request-server-encrypted": "true" }, "body": { "encoding": "base64", - "data": "Zmlyc3RzZWNvbmQ=" + "data": "" } } } @@ -13758,58 +42973,31 @@ }, { "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-9c5ca12bcfc9\"" - } - }, - { - "at": "/value/size", - "optional": false, - "rule": { - "is": "equal", - "value": 11 - } - }, - { - "at": "/value/content_type", - "optional": false, - "rule": { - "is": "equal", - "value": "application/octet-stream" - } - }, - { - "at": "/value/version", - "optional": false, - "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.6314295Z" - } - }, - { - "at": "/value/body_base64", - "optional": false, + "optional": true, "rule": { - "is": "equal", - "value": "Zmlyc3RzZWNvbmQ=" + "is": "one_of", + "values": [ + null, + "" + ] } } ], "refusal": null }, { - "id": "operations/azure/head-committed-declaring-md5", + "id": "operations/azure/stage-id-too-long", "profile": "azure", "lane": "core", - "purpose": "head committed declaring md5", + "purpose": "stage id too long", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "key": "object-tests/hashes/committed.bin", - "op": "head" + "block_id_base64": "eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHg=", + "body_base64": "dGhpcmQ=", + "key": "object-tests/multipart/staged.bin", + "op": "azure.stage_block" }, "exchanges": [ { @@ -13821,7 +43009,7 @@ "optional": false, "rule": { "is": "equal", - "value": "HEAD" + "value": "PUT" } }, { @@ -13829,7 +43017,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/hashes/committed.bin" + "value": "/fixture/object-tests/multipart/staged.bin" } }, { @@ -13837,33 +43025,42 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "dGhpcmQ=" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "block" + } + }, + { + "at": "/query/blockid", + "optional": false, + "rule": { + "is": "equal", + "value": "eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHg=" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 200, + "status": 400, "headers": { - "content-length": "13", - "content-md5": "N6YZkbg+Lyfxtskwn8iRCg==", - "content-type": "application/octet-stream", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-39ee25525bc6\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true", - "x-ms-version-id": "2024-01-01T00:00:00.2802899Z" + "x-ms-error-code": "OutOfRangeInput" }, "body": { - "encoding": "base64", - "data": "" + "encoding": "utf8", + "data": "OutOfRangeInputBlock ID exceeds 64 decoded bytes." } } } @@ -13876,63 +43073,82 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "error" } }, { - "at": "/value/etag", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-39ee25525bc6\"" + "value": 400 } }, { - "at": "/value/size", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": 13 + "value": "OutOfRangeInput" } - }, + } + ], + "refusal": [ { - "at": "/value/content_type", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "application/octet-stream" + "value": "refused" } }, { - "at": "/value/content_md5_base64", + "at": "/kind", "optional": false, "rule": { - "is": "equal", - "value": "N6YZkbg+Lyfxtskwn8iRCg==" + "is": "matches", + "pattern": ".+" } }, { - "at": "/value/version", + "at": "/parameter", "optional": false, "rule": { "is": "equal", - "value": "2024-01-01T00:00:00.2802899Z" + "value": "block_id_base64" + } + }, + { + "at": "/status", + "optional": true, + "rule": { + "is": "equal", + "value": 400 + } + }, + { + "at": "/code", + "optional": true, + "rule": { + "is": "equal", + "value": "OutOfRangeInput" } } - ], - "refusal": null + ] }, { - "id": "operations/azure/head-committed", + "id": "operations/azure/stage-mixed-length-id", "profile": "azure", "lane": "core", - "purpose": "head committed", + "purpose": "stage mixed length id", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "key": "object-tests/multipart/committed.bin", - "op": "head" + "block_id_base64": "YS1tdWNoLWxvbmdlci1ibG9jay1pZGVudGlmaWVy", + "body_base64": "dGhpcmQ=", + "key": "object-tests/multipart/staged.bin", + "op": "azure.stage_block" }, "exchanges": [ { @@ -13944,7 +43160,7 @@ "optional": false, "rule": { "is": "equal", - "value": "HEAD" + "value": "PUT" } }, { @@ -13952,7 +43168,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/committed.bin" + "value": "/fixture/object-tests/multipart/staged.bin" } }, { @@ -13960,32 +43176,42 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "dGhpcmQ=" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "block" + } + }, + { + "at": "/query/blockid", + "optional": false, + "rule": { + "is": "equal", + "value": "YS1tdWNoLWxvbmdlci1ibG9jay1pZGVudGlmaWVy" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 200, + "status": 400, "headers": { - "content-length": "11", - "content-type": "application/octet-stream", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-be8efdb79010\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true", - "x-ms-version-id": "2024-01-01T00:00:00.7848460Z" + "x-ms-error-code": "InvalidBlobOrBlock" }, "body": { - "encoding": "base64", - "data": "" + "encoding": "utf8", + "data": "InvalidBlobOrBlockFixture error" } } } @@ -13998,55 +43224,44 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-be8efdb79010\"" - } - }, - { - "at": "/value/size", - "optional": false, - "rule": { - "is": "equal", - "value": 11 + "value": "error" } }, { - "at": "/value/content_type", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "application/octet-stream" + "value": 400 } }, { - "at": "/value/version", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": "2024-01-01T00:00:00.7848460Z" + "value": "InvalidBlobOrBlock" } } ], "refusal": null }, { - "id": "operations/azure/head-metadata", + "id": "operations/azure/stage-mixed-length-id-code-in-body", "profile": "azure", "lane": "core", - "purpose": "head metadata", + "purpose": "stage mixed length id, with the error code only in the XML body", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp", + "https://learn.microsoft.com/en-us/rest/api/storageservices/common-rest-api-error-codes", + "https://learn.microsoft.com/en-us/rest/api/storageservices/blob-service-error-codes" ], + "origin": "constructed", "call": { - "key": "object-tests/metadata/object.txt", - "op": "head" + "block_id_base64": "YS1tdWNoLWxvbmdlci1ibG9jay1pZGVudGlmaWVy", + "body_base64": "dGhpcmQ=", + "key": "object-tests/multipart/staged.bin", + "op": "azure.stage_block" }, "exchanges": [ { @@ -14058,7 +43273,7 @@ "optional": false, "rule": { "is": "equal", - "value": "HEAD" + "value": "PUT" } }, { @@ -14066,7 +43281,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/metadata/object.txt" + "value": "/fixture/object-tests/multipart/staged.bin" } }, { @@ -14074,35 +43289,41 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "dGhpcmQ=" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "block" + } + }, + { + "at": "/query/blockid", + "optional": false, + "rule": { + "is": "equal", + "value": "YS1tdWNoLWxvbmdlci1ibG9jay1pZGVudGlmaWVy" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 200, + "status": 400, "headers": { - "content-length": "1", - "content-md5": "xMpCOKC5I4INzFCab3WEmw==", - "content-type": "application/octet-stream", + "content-type": "application/xml", "date": { "from": "now" - }, - "etag": "\"fixture-9abbc5e374ca\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-meta-name": "value", - "x-ms-meta-second": "2", - "x-ms-server-encrypted": "true", - "x-ms-version-id": "2024-01-01T00:00:00.7035036Z" + } }, "body": { - "encoding": "base64", - "data": "" + "encoding": "utf8", + "data": "InvalidBlobOrBlockFixture error" } } } @@ -14115,74 +43336,41 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-9abbc5e374ca\"" - } - }, - { - "at": "/value/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/content_type", - "optional": false, - "rule": { - "is": "equal", - "value": "application/octet-stream" - } - }, - { - "at": "/value/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "xMpCOKC5I4INzFCab3WEmw==" + "value": "error" } }, { - "at": "/value/version", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "2024-01-01T00:00:00.7035036Z" + "value": 400 } }, { - "at": "/value/metadata", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": { - "name": "value", - "second": "2" - } + "value": "InvalidBlobOrBlock" } } ], "refusal": null }, { - "id": "operations/azure/head-missing", + "id": "operations/azure/stage-unauthenticated", "profile": "azure", "lane": "core", - "purpose": "head missing", + "purpose": "Report the service authorization error for this operation; signature acceptance is tested separately.", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "key": "object-tests/read/absent.txt", - "op": "head" + "block_id_base64": "MDAwMDAx", + "body_base64": "Zmlyc3Q=", + "key": "object-tests/multipart/staged.bin", + "op": "azure.stage_block" }, "exchanges": [ { @@ -14194,7 +43382,7 @@ "optional": false, "rule": { "is": "equal", - "value": "HEAD" + "value": "PUT" } }, { @@ -14202,7 +43390,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/absent.txt" + "value": "/fixture/object-tests/multipart/staged.bin" } }, { @@ -14210,23 +43398,42 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "Zmlyc3Q=" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "block" + } + }, + { + "at": "/query/blockid", + "optional": false, + "rule": { + "is": "equal", + "value": "MDAwMDAx" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 404, + "status": 401, "headers": { + "content-type": "application/xml", "date": { "from": "now" }, - "x-ms-error-code": "BlobNotFound" + "x-ms-error-code": "InvalidAuthenticationInfo" }, "body": { - "encoding": "base64", - "data": "" + "encoding": "utf8", + "data": "InvalidAuthenticationInfoFixture error" } } } @@ -14247,7 +43454,7 @@ "optional": false, "rule": { "is": "equal", - "value": 404 + "value": 401 } }, { @@ -14255,24 +43462,25 @@ "optional": false, "rule": { "is": "equal", - "value": "BlobNotFound" + "value": "InvalidAuthenticationInfo" } } ], "refusal": null }, { - "id": "operations/azure/head-previous-version", + "id": "operations/azure/stage", "profile": "azure", "lane": "core", - "purpose": "head previous version", + "purpose": "stage", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "key": "object-tests/versions-mtydohr2/object.txt", - "op": "head", - "version": "2024-01-01T00:00:00.2318906Z" + "block_id_base64": "MDAwMDAy", + "body_base64": "c2Vjb25k", + "key": "object-tests/multipart/staged.bin", + "op": "azure.stage_block" }, "exchanges": [ { @@ -14284,7 +43492,7 @@ "optional": false, "rule": { "is": "equal", - "value": "HEAD" + "value": "PUT" } }, { @@ -14292,7 +43500,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/versions-mtydohr2/object.txt" + "value": "/fixture/object-tests/multipart/staged.bin" } }, { @@ -14300,35 +43508,39 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "c2Vjb25k" } }, { - "at": "/query/versionid", + "at": "/query/comp", "optional": false, "rule": { "is": "equal", - "value": "2024-01-01T00:00:00.2318906Z" + "value": "block" + } + }, + { + "at": "/query/blockid", + "optional": false, + "rule": { + "is": "equal", + "value": "MDAwMDAy" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 200, + "status": 201, "headers": { - "content-length": "2", - "content-md5": "ZlTHNMyrj0QP8IJetEPcfw==", - "content-type": "application/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-5769a0807b46\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-server-encrypted": "true", - "x-ms-version-id": "2024-01-01T00:00:00.2318906Z" + "x-ms-request-server-encrypted": "true" }, "body": { "encoding": "base64", @@ -14350,59 +43562,31 @@ }, { "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-5769a0807b46\"" - } - }, - { - "at": "/value/size", - "optional": false, - "rule": { - "is": "equal", - "value": 2 - } - }, - { - "at": "/value/content_type", - "optional": false, - "rule": { - "is": "equal", - "value": "application/octet-stream" - } - }, - { - "at": "/value/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "ZlTHNMyrj0QP8IJetEPcfw==" - } - }, - { - "at": "/value/version", - "optional": false, + "optional": true, "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.2318906Z" + "is": "one_of", + "values": [ + null, + "" + ] } } ], "refusal": null }, { - "id": "operations/azure/head-snapshot", + "id": "operations/azure/stage-id-64-bytes", "profile": "azure", "lane": "core", - "purpose": "head snapshot", + "purpose": "A block ID decodes to at most 64 bytes, and Azure stages a block whose ID decodes to exactly 64. Send it; only a longer ID may be refused.", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "key": "object-tests/snapshots/object.txt", - "op": "head", - "snapshot": "2024-01-01T00:00:00.7351568Z" + "block_id_base64": "eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eA==", + "body_base64": "c2Vjb25k", + "key": "object-tests/multipart/staged.bin", + "op": "azure.stage_block" }, "exchanges": [ { @@ -14414,7 +43598,7 @@ "optional": false, "rule": { "is": "equal", - "value": "HEAD" + "value": "PUT" } }, { @@ -14422,7 +43606,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/snapshots/object.txt" + "value": "/fixture/object-tests/multipart/staged.bin" } }, { @@ -14430,34 +43614,39 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "c2Vjb25k" } }, { - "at": "/query/snapshot", + "at": "/query/comp", "optional": false, "rule": { "is": "equal", - "value": "2024-01-01T00:00:00.7351568Z" + "value": "block" + } + }, + { + "at": "/query/blockid", + "optional": false, + "rule": { + "is": "equal", + "value": "eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eA==" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 200, + "status": 201, "headers": { - "content-length": "3", - "content-md5": "+XxdKZQb+xsv2rCHSQargg==", - "content-type": "application/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-e3698635ab53\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-server-encrypted": "true" + "x-ms-request-server-encrypted": "true" }, "body": { "encoding": "base64", @@ -14479,38 +43668,6 @@ }, { "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-e3698635ab53\"" - } - }, - { - "at": "/value/size", - "optional": false, - "rule": { - "is": "equal", - "value": 3 - } - }, - { - "at": "/value/content_type", - "optional": false, - "rule": { - "is": "equal", - "value": "application/octet-stream" - } - }, - { - "at": "/value/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "+XxdKZQb+xsv2rCHSQargg==" - } - }, - { - "at": "/value/version", "optional": true, "rule": { "is": "one_of", @@ -14524,16 +43681,18 @@ "refusal": null }, { - "id": "operations/azure/head-written-with-crc64", + "id": "operations/azure/stage-key-question", "profile": "azure", "lane": "core", - "purpose": "head written with crc64", + "purpose": "stage, with the key \"question?mark.txt\"", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "key": "object-tests/hashes/crc64.txt", - "op": "head" + "block_id_base64": "MDAwMDAy", + "body_base64": "c2Vjb25k", + "key": "object-tests/keys/question?mark.txt", + "op": "azure.stage_block" }, "exchanges": [ { @@ -14545,7 +43704,7 @@ "optional": false, "rule": { "is": "equal", - "value": "HEAD" + "value": "PUT" } }, { @@ -14553,7 +43712,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/hashes/crc64.txt" + "value": "/fixture/object-tests/keys/question?mark.txt" } }, { @@ -14561,29 +43720,39 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "c2Vjb25k" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "block" + } + }, + { + "at": "/query/blockid", + "optional": false, + "rule": { + "is": "equal", + "value": "MDAwMDAy" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 200, + "status": 201, "headers": { - "content-length": "13", - "content-md5": "N6YZkbg+Lyfxtskwn8iRCg==", - "content-type": "application/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-90cfcb93036b\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true", - "x-ms-version-id": "2024-01-01T00:00:00.1153123Z" + "x-ms-request-server-encrypted": "true" }, "body": { "encoding": "base64", @@ -14605,58 +43774,31 @@ }, { "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-90cfcb93036b\"" - } - }, - { - "at": "/value/size", - "optional": false, - "rule": { - "is": "equal", - "value": 13 - } - }, - { - "at": "/value/content_type", - "optional": false, - "rule": { - "is": "equal", - "value": "application/octet-stream" - } - }, - { - "at": "/value/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "N6YZkbg+Lyfxtskwn8iRCg==" - } - }, - { - "at": "/value/version", - "optional": false, + "optional": true, "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.1153123Z" + "is": "one_of", + "values": [ + null, + "" + ] } } ], "refusal": null }, { - "id": "operations/azure/head-written-with-md5", + "id": "operations/azure/stage-key-hash", "profile": "azure", "lane": "core", - "purpose": "head written with md5", + "purpose": "stage, with the key \"hash#tag.txt\"", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "key": "object-tests/hashes/md5.txt", - "op": "head" + "block_id_base64": "MDAwMDAy", + "body_base64": "c2Vjb25k", + "key": "object-tests/keys/hash#tag.txt", + "op": "azure.stage_block" }, "exchanges": [ { @@ -14668,7 +43810,7 @@ "optional": false, "rule": { "is": "equal", - "value": "HEAD" + "value": "PUT" } }, { @@ -14676,7 +43818,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/hashes/md5.txt" + "value": "/fixture/object-tests/keys/hash#tag.txt" } }, { @@ -14684,29 +43826,39 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "c2Vjb25k" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "block" + } + }, + { + "at": "/query/blockid", + "optional": false, + "rule": { + "is": "equal", + "value": "MDAwMDAy" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 200, + "status": 201, "headers": { - "content-length": "13", - "content-md5": "N6YZkbg+Lyfxtskwn8iRCg==", - "content-type": "application/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-494ad7275bf7\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true", - "x-ms-version-id": "2024-01-01T00:00:00.7803759Z" + "x-ms-request-server-encrypted": "true" }, "body": { "encoding": "base64", @@ -14728,58 +43880,31 @@ }, { "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-494ad7275bf7\"" - } - }, - { - "at": "/value/size", - "optional": false, - "rule": { - "is": "equal", - "value": 13 - } - }, - { - "at": "/value/content_type", - "optional": false, - "rule": { - "is": "equal", - "value": "application/octet-stream" - } - }, - { - "at": "/value/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "N6YZkbg+Lyfxtskwn8iRCg==" - } - }, - { - "at": "/value/version", - "optional": false, + "optional": true, "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.7803759Z" + "is": "one_of", + "values": [ + null, + "" + ] } } ], "refusal": null }, { - "id": "operations/azure/head", + "id": "operations/azure/stage-key-percent", "profile": "azure", "lane": "core", - "purpose": "head", + "purpose": "stage, with the key \"percent%20.txt\"", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "key": "object-tests/read/object.txt", - "op": "head" + "block_id_base64": "MDAwMDAy", + "body_base64": "c2Vjb25k", + "key": "object-tests/keys/percent%20.txt", + "op": "azure.stage_block" }, "exchanges": [ { @@ -14791,7 +43916,7 @@ "optional": false, "rule": { "is": "equal", - "value": "HEAD" + "value": "PUT" } }, { @@ -14799,7 +43924,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "/fixture/object-tests/keys/percent%20.txt" } }, { @@ -14807,29 +43932,39 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "c2Vjb25k" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "block" + } + }, + { + "at": "/query/blockid", + "optional": false, + "rule": { + "is": "equal", + "value": "MDAwMDAy" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 200, + "status": 201, "headers": { - "content-length": "30", - "content-md5": "H1VC0PNTmj+yaCRN4U931g==", - "content-type": "application/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-16c44f0af72d\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true", - "x-ms-version-id": "2024-01-01T00:00:00.7556278Z" + "x-ms-request-server-encrypted": "true" }, "body": { "encoding": "base64", @@ -14851,58 +43986,31 @@ }, { "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-16c44f0af72d\"" - } - }, - { - "at": "/value/size", - "optional": false, - "rule": { - "is": "equal", - "value": 30 - } - }, - { - "at": "/value/content_type", - "optional": false, - "rule": { - "is": "equal", - "value": "application/octet-stream" - } - }, - { - "at": "/value/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "H1VC0PNTmj+yaCRN4U931g==" - } - }, - { - "at": "/value/version", - "optional": false, + "optional": true, "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.7556278Z" + "is": "one_of", + "values": [ + null, + "" + ] } } ], "refusal": null }, { - "id": "operations/azure/head-key-question", + "id": "operations/azure/stage-key-plus", "profile": "azure", "lane": "core", - "purpose": "head, with the key \"question?mark.txt\"", + "purpose": "stage, with the key \"plus+plus.txt\"", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "key": "object-tests/keys/question?mark.txt", - "op": "head" + "block_id_base64": "MDAwMDAy", + "body_base64": "c2Vjb25k", + "key": "object-tests/keys/plus+plus.txt", + "op": "azure.stage_block" }, "exchanges": [ { @@ -14914,7 +44022,7 @@ "optional": false, "rule": { "is": "equal", - "value": "HEAD" + "value": "PUT" } }, { @@ -14922,7 +44030,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/question?mark.txt" + "value": "/fixture/object-tests/keys/plus+plus.txt" } }, { @@ -14930,29 +44038,39 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "c2Vjb25k" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "block" + } + }, + { + "at": "/query/blockid", + "optional": false, + "rule": { + "is": "equal", + "value": "MDAwMDAy" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 200, + "status": 201, "headers": { - "content-length": "30", - "content-md5": "H1VC0PNTmj+yaCRN4U931g==", - "content-type": "application/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-16c44f0af72d\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true", - "x-ms-version-id": "2024-01-01T00:00:00.7556278Z" + "x-ms-request-server-encrypted": "true" }, "body": { "encoding": "base64", @@ -14974,58 +44092,31 @@ }, { "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-16c44f0af72d\"" - } - }, - { - "at": "/value/size", - "optional": false, - "rule": { - "is": "equal", - "value": 30 - } - }, - { - "at": "/value/content_type", - "optional": false, - "rule": { - "is": "equal", - "value": "application/octet-stream" - } - }, - { - "at": "/value/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "H1VC0PNTmj+yaCRN4U931g==" - } - }, - { - "at": "/value/version", - "optional": false, + "optional": true, "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.7556278Z" + "is": "one_of", + "values": [ + null, + "" + ] } } ], "refusal": null }, { - "id": "operations/azure/head-key-hash", + "id": "operations/azure/stage-key-space", "profile": "azure", "lane": "core", - "purpose": "head, with the key \"hash#tag.txt\"", + "purpose": "stage, with the key \"space name.txt\"", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "key": "object-tests/keys/hash#tag.txt", - "op": "head" + "block_id_base64": "MDAwMDAy", + "body_base64": "c2Vjb25k", + "key": "object-tests/keys/space name.txt", + "op": "azure.stage_block" }, "exchanges": [ { @@ -15037,7 +44128,7 @@ "optional": false, "rule": { "is": "equal", - "value": "HEAD" + "value": "PUT" } }, { @@ -15045,7 +44136,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/hash#tag.txt" + "value": "/fixture/object-tests/keys/space name.txt" } }, { @@ -15053,29 +44144,39 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "c2Vjb25k" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "block" + } + }, + { + "at": "/query/blockid", + "optional": false, + "rule": { + "is": "equal", + "value": "MDAwMDAy" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 200, + "status": 201, "headers": { - "content-length": "30", - "content-md5": "H1VC0PNTmj+yaCRN4U931g==", - "content-type": "application/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-16c44f0af72d\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true", - "x-ms-version-id": "2024-01-01T00:00:00.7556278Z" + "x-ms-request-server-encrypted": "true" }, "body": { "encoding": "base64", @@ -15097,58 +44198,31 @@ }, { "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-16c44f0af72d\"" - } - }, - { - "at": "/value/size", - "optional": false, - "rule": { - "is": "equal", - "value": 30 - } - }, - { - "at": "/value/content_type", - "optional": false, - "rule": { - "is": "equal", - "value": "application/octet-stream" - } - }, - { - "at": "/value/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "H1VC0PNTmj+yaCRN4U931g==" - } - }, - { - "at": "/value/version", - "optional": false, + "optional": true, "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.7556278Z" + "is": "one_of", + "values": [ + null, + "" + ] } } ], "refusal": null }, { - "id": "operations/azure/head-key-percent", + "id": "operations/azure/stage-key-non-ascii", "profile": "azure", "lane": "core", - "purpose": "head, with the key \"percent%20.txt\"", + "purpose": "stage, with the key \"café/雪.txt\"", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "key": "object-tests/keys/percent%20.txt", - "op": "head" + "block_id_base64": "MDAwMDAy", + "body_base64": "c2Vjb25k", + "key": "object-tests/keys/café/雪.txt", + "op": "azure.stage_block" }, "exchanges": [ { @@ -15160,7 +44234,7 @@ "optional": false, "rule": { "is": "equal", - "value": "HEAD" + "value": "PUT" } }, { @@ -15168,7 +44242,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/percent%20.txt" + "value": "/fixture/object-tests/keys/café/雪.txt" } }, { @@ -15176,29 +44250,39 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "c2Vjb25k" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "block" + } + }, + { + "at": "/query/blockid", + "optional": false, + "rule": { + "is": "equal", + "value": "MDAwMDAy" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 200, + "status": 201, "headers": { - "content-length": "30", - "content-md5": "H1VC0PNTmj+yaCRN4U931g==", - "content-type": "application/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-16c44f0af72d\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true", - "x-ms-version-id": "2024-01-01T00:00:00.7556278Z" + "x-ms-request-server-encrypted": "true" }, "body": { "encoding": "base64", @@ -15220,58 +44304,31 @@ }, { "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-16c44f0af72d\"" - } - }, - { - "at": "/value/size", - "optional": false, - "rule": { - "is": "equal", - "value": 30 - } - }, - { - "at": "/value/content_type", - "optional": false, - "rule": { - "is": "equal", - "value": "application/octet-stream" - } - }, - { - "at": "/value/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "H1VC0PNTmj+yaCRN4U931g==" - } - }, - { - "at": "/value/version", - "optional": false, + "optional": true, "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.7556278Z" + "is": "one_of", + "values": [ + null, + "" + ] } } ], "refusal": null }, { - "id": "operations/azure/head-key-plus", + "id": "operations/azure/stage-key-double-slash", "profile": "azure", "lane": "core", - "purpose": "head, with the key \"plus+plus.txt\"", + "purpose": "stage, with the key \"double//slash.txt\"", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "key": "object-tests/keys/plus+plus.txt", - "op": "head" + "block_id_base64": "MDAwMDAy", + "body_base64": "c2Vjb25k", + "key": "object-tests/keys/double//slash.txt", + "op": "azure.stage_block" }, "exchanges": [ { @@ -15283,7 +44340,7 @@ "optional": false, "rule": { "is": "equal", - "value": "HEAD" + "value": "PUT" } }, { @@ -15291,7 +44348,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/plus+plus.txt" + "value": "/fixture/object-tests/keys/double//slash.txt" } }, { @@ -15299,29 +44356,39 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "c2Vjb25k" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "block" + } + }, + { + "at": "/query/blockid", + "optional": false, + "rule": { + "is": "equal", + "value": "MDAwMDAy" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 200, + "status": 201, "headers": { - "content-length": "30", - "content-md5": "H1VC0PNTmj+yaCRN4U931g==", - "content-type": "application/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-16c44f0af72d\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true", - "x-ms-version-id": "2024-01-01T00:00:00.7556278Z" + "x-ms-request-server-encrypted": "true" }, "body": { "encoding": "base64", @@ -15343,58 +44410,31 @@ }, { "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-16c44f0af72d\"" - } - }, - { - "at": "/value/size", - "optional": false, - "rule": { - "is": "equal", - "value": 30 - } - }, - { - "at": "/value/content_type", - "optional": false, - "rule": { - "is": "equal", - "value": "application/octet-stream" - } - }, - { - "at": "/value/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "H1VC0PNTmj+yaCRN4U931g==" - } - }, - { - "at": "/value/version", - "optional": false, + "optional": true, "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.7556278Z" + "is": "one_of", + "values": [ + null, + "" + ] } } ], "refusal": null }, { - "id": "operations/azure/head-key-space", + "id": "operations/azure/stage-key-trailing-slash", "profile": "azure", "lane": "core", - "purpose": "head, with the key \"space name.txt\"", + "purpose": "stage, with the key \"trailing-slash/\"", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "key": "object-tests/keys/space name.txt", - "op": "head" + "block_id_base64": "MDAwMDAy", + "body_base64": "c2Vjb25k", + "key": "object-tests/keys/trailing-slash/", + "op": "azure.stage_block" }, "exchanges": [ { @@ -15406,7 +44446,7 @@ "optional": false, "rule": { "is": "equal", - "value": "HEAD" + "value": "PUT" } }, { @@ -15414,7 +44454,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/space name.txt" + "value": "/fixture/object-tests/keys/trailing-slash/" } }, { @@ -15422,29 +44462,39 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "c2Vjb25k" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "block" + } + }, + { + "at": "/query/blockid", + "optional": false, + "rule": { + "is": "equal", + "value": "MDAwMDAy" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 200, + "status": 201, "headers": { - "content-length": "30", - "content-md5": "H1VC0PNTmj+yaCRN4U931g==", - "content-type": "application/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-16c44f0af72d\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true", - "x-ms-version-id": "2024-01-01T00:00:00.7556278Z" + "x-ms-request-server-encrypted": "true" }, "body": { "encoding": "base64", @@ -15466,58 +44516,35 @@ }, { "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-16c44f0af72d\"" - } - }, - { - "at": "/value/size", - "optional": false, - "rule": { - "is": "equal", - "value": 30 - } - }, - { - "at": "/value/content_type", - "optional": false, - "rule": { - "is": "equal", - "value": "application/octet-stream" - } - }, - { - "at": "/value/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "H1VC0PNTmj+yaCRN4U931g==" - } - }, - { - "at": "/value/version", - "optional": false, + "optional": true, "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.7556278Z" + "is": "one_of", + "values": [ + null, + "" + ] } } ], "refusal": null }, { - "id": "operations/azure/head-key-non-ascii", + "id": "operations/azure/stage-from-url", "profile": "azure", "lane": "core", - "purpose": "head, with the key \"café/雪.txt\"", + "purpose": "Stage a block from bytes 0 to 2 at a URL with Put Block From URL, the range named in x-ms-source-range with an inclusive end, as bytes=0-2", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "https://learn.microsoft.com/en-us/rest/api/storageservices/put-block-from-url" ], "call": { - "key": "object-tests/keys/café/雪.txt", - "op": "head" + "block_id_base64": "MDAwMDAy", + "key": "object-tests/multipart/staged.bin", + "op": "azure.stage_block_from_url", + "source_key": "object-tests/copy/source.txt", + "source_range": { + "end": 3, + "start": 0 + } }, "exchanges": [ { @@ -15529,7 +44556,7 @@ "optional": false, "rule": { "is": "equal", - "value": "HEAD" + "value": "PUT" } }, { @@ -15537,7 +44564,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/café/雪.txt" + "value": "/fixture/object-tests/multipart/staged.bin" } }, { @@ -15547,27 +44574,54 @@ "is": "equal", "value": "" } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "block" + } + }, + { + "at": "/query/blockid", + "optional": false, + "rule": { + "is": "equal", + "value": "MDAwMDAy" + } + }, + { + "at": "/headers/x-ms-copy-source", + "optional": false, + "rule": { + "is": "matches", + "pattern": "https?://[^/]+/fixture/object-tests/copy/source\\.txt" + } + }, + { + "at": "/headers/x-ms-source-range", + "optional": false, + "rule": { + "is": "equal", + "value": "bytes=0-2" + } } ], - "allow_headers": [], + "allow_headers": [ + "content-type", + "x-ms-copy-source-authorization" + ], "allow_query": [], "response": { - "status": 200, + "status": 201, "headers": { - "content-length": "30", - "content-md5": "H1VC0PNTmj+yaCRN4U931g==", - "content-type": "application/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-16c44f0af72d\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true", - "x-ms-version-id": "2024-01-01T00:00:00.7556278Z" + "x-ms-request-server-encrypted": "true" }, "body": { "encoding": "base64", @@ -15589,58 +44643,30 @@ }, { "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-16c44f0af72d\"" - } - }, - { - "at": "/value/size", - "optional": false, - "rule": { - "is": "equal", - "value": 30 - } - }, - { - "at": "/value/content_type", - "optional": false, - "rule": { - "is": "equal", - "value": "application/octet-stream" - } - }, - { - "at": "/value/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "H1VC0PNTmj+yaCRN4U931g==" - } - }, - { - "at": "/value/version", - "optional": false, + "optional": true, "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.7556278Z" + "is": "one_of", + "values": [ + null, + "" + ] } } ], "refusal": null }, { - "id": "operations/azure/head-key-double-slash", + "id": "operations/azure/staged-absent", "profile": "azure", "lane": "core", - "purpose": "head, with the key \"double//slash.txt\"", + "purpose": "staged absent", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "key": "object-tests/keys/double//slash.txt", - "op": "head" + "key": "object-tests/multipart/absent.bin", + "kind": "all", + "op": "azure.list_blocks" }, "exchanges": [ { @@ -15652,7 +44678,7 @@ "optional": false, "rule": { "is": "equal", - "value": "HEAD" + "value": "GET" } }, { @@ -15660,7 +44686,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/double//slash.txt" + "value": "/fixture/object-tests/multipart/absent.bin" } }, { @@ -15670,31 +44696,38 @@ "is": "equal", "value": "" } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "blocklist" + } + }, + { + "at": "/query/blocklisttype", + "optional": false, + "rule": { + "is": "equal", + "value": "all" + } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 200, + "status": 404, "headers": { - "content-length": "30", - "content-md5": "H1VC0PNTmj+yaCRN4U931g==", - "content-type": "application/octet-stream", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-16c44f0af72d\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true", - "x-ms-version-id": "2024-01-01T00:00:00.7556278Z" + "x-ms-error-code": "BlobNotFound" }, "body": { - "encoding": "base64", - "data": "" + "encoding": "utf8", + "data": "BlobNotFoundFixture error" } } } @@ -15707,63 +44740,43 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-16c44f0af72d\"" - } - }, - { - "at": "/value/size", - "optional": false, - "rule": { - "is": "equal", - "value": 30 - } - }, - { - "at": "/value/content_type", - "optional": false, - "rule": { - "is": "equal", - "value": "application/octet-stream" + "value": "error" } }, { - "at": "/value/content_md5_base64", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "H1VC0PNTmj+yaCRN4U931g==" + "value": 404 } }, { - "at": "/value/version", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": "2024-01-01T00:00:00.7556278Z" + "value": "BlobNotFound" } } ], "refusal": null }, { - "id": "operations/azure/head-key-trailing-slash", + "id": "operations/azure/staged-absent-code-in-body", "profile": "azure", "lane": "core", - "purpose": "head, with the key \"trailing-slash/\"", + "purpose": "staged absent, with the error code only in the XML body", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp", + "https://learn.microsoft.com/en-us/rest/api/storageservices/common-rest-api-error-codes", + "https://learn.microsoft.com/en-us/rest/api/storageservices/blob-service-error-codes" ], + "origin": "constructed", "call": { - "key": "object-tests/keys/trailing-slash/", - "op": "head" + "key": "object-tests/multipart/absent.bin", + "kind": "all", + "op": "azure.list_blocks" }, "exchanges": [ { @@ -15775,7 +44788,7 @@ "optional": false, "rule": { "is": "equal", - "value": "HEAD" + "value": "GET" } }, { @@ -15783,7 +44796,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/trailing-slash/" + "value": "/fixture/object-tests/multipart/absent.bin" } }, { @@ -15793,31 +44806,37 @@ "is": "equal", "value": "" } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "blocklist" + } + }, + { + "at": "/query/blocklisttype", + "optional": false, + "rule": { + "is": "equal", + "value": "all" + } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 200, + "status": 404, "headers": { - "content-length": "30", - "content-md5": "H1VC0PNTmj+yaCRN4U931g==", - "content-type": "application/octet-stream", + "content-type": "application/xml", "date": { "from": "now" - }, - "etag": "\"fixture-16c44f0af72d\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true", - "x-ms-version-id": "2024-01-01T00:00:00.7556278Z" + } }, "body": { - "encoding": "base64", - "data": "" + "encoding": "utf8", + "data": "BlobNotFoundFixture error" } } } @@ -15830,63 +44849,40 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-16c44f0af72d\"" - } - }, - { - "at": "/value/size", - "optional": false, - "rule": { - "is": "equal", - "value": 30 - } - }, - { - "at": "/value/content_type", - "optional": false, - "rule": { - "is": "equal", - "value": "application/octet-stream" + "value": "error" } }, { - "at": "/value/content_md5_base64", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "H1VC0PNTmj+yaCRN4U931g==" + "value": 404 } }, { - "at": "/value/version", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": "2024-01-01T00:00:00.7556278Z" + "value": "BlobNotFound" } } ], "refusal": null }, { - "id": "operations/azure/head-content-properties", + "id": "operations/azure/staged-after-commit", "profile": "azure", "lane": "core", - "purpose": "Return the stored content properties from a HEAD", + "purpose": "staged after commit", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "key": "object-tests/read/object.txt", - "op": "head" + "key": "object-tests/multipart/committed.bin", + "kind": "all", + "op": "azure.list_blocks" }, "exchanges": [ { @@ -15898,7 +44894,7 @@ "optional": false, "rule": { "is": "equal", - "value": "HEAD" + "value": "GET" } }, { @@ -15906,7 +44902,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "/fixture/object-tests/multipart/committed.bin" } }, { @@ -15916,6 +44912,22 @@ "is": "equal", "value": "" } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "blocklist" + } + }, + { + "at": "/query/blocklisttype", + "optional": false, + "rule": { + "is": "equal", + "value": "all" + } } ], "allow_headers": [], @@ -15923,28 +44935,19 @@ "response": { "status": 200, "headers": { - "cache-control": "max-age=3600", - "content-disposition": "attachment; filename=\"report.txt\"", - "content-language": "nl-NL", - "content-length": "30", - "content-md5": "H1VC0PNTmj+yaCRN4U931g==", - "content-type": "text/plain; charset=utf-8", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-16c44f0af72d\"", + "etag": "\"fixture-be8efdb79010\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true", - "x-ms-version-id": "2024-01-01T00:00:00.7556278Z" + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "" - } + "encoding": "utf8", + "data": "MDAwMDAx5MDAwMDAy6" + }, + "framing": "chunked" } } ] @@ -15960,84 +44963,68 @@ } }, { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-16c44f0af72d\"" - } - }, - { - "at": "/value/size", - "optional": false, - "rule": { - "is": "equal", - "value": 30 - } - }, - { - "at": "/value/content_md5_base64", + "at": "/value/committed/0/id_base64", "optional": false, "rule": { "is": "equal", - "value": "H1VC0PNTmj+yaCRN4U931g==" + "value": "MDAwMDAx" } }, { - "at": "/value/version", + "at": "/value/committed/0/size", "optional": false, "rule": { "is": "equal", - "value": "2024-01-01T00:00:00.7556278Z" + "value": 5 } }, { - "at": "/value/content_type", + "at": "/value/committed/1/id_base64", "optional": false, "rule": { "is": "equal", - "value": "text/plain; charset=utf-8" + "value": "MDAwMDAy" } }, { - "at": "/value/content_language", + "at": "/value/committed/1/size", "optional": false, "rule": { "is": "equal", - "value": "nl-NL" + "value": 6 } }, { - "at": "/value/content_disposition", + "at": "/value/committed", "optional": false, "rule": { - "is": "equal", - "value": "attachment; filename=\"report.txt\"" + "is": "array_length", + "value": 2 } }, { - "at": "/value/cache_control", + "at": "/value/uncommitted", "optional": false, "rule": { - "is": "equal", - "value": "max-age=3600" + "is": "array_length", + "value": 0 } } ], "refusal": null }, { - "id": "operations/azure/head-if-unmodified-since-past", + "id": "operations/azure/staged-after-replacement", "profile": "azure", "lane": "core", - "purpose": "Refuse a HEAD with 412 when the object changed after If-Unmodified-Since", + "purpose": "staged after replacement", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "if_unmodified_since": "Sat, 01 Jan 2000 00:00:00 GMT", - "key": "object-tests/read/object.txt", - "op": "head" + "key": "object-tests/multipart/replaced.bin", + "kind": "all", + "op": "azure.list_blocks" }, "exchanges": [ { @@ -16049,7 +45036,7 @@ "optional": false, "rule": { "is": "equal", - "value": "HEAD" + "value": "GET" } }, { @@ -16057,7 +45044,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "/fixture/object-tests/multipart/replaced.bin" } }, { @@ -16069,27 +45056,40 @@ } }, { - "at": "/headers/if-unmodified-since", + "at": "/query/comp", "optional": false, "rule": { "is": "equal", - "value": "Sat, 01 Jan 2000 00:00:00 GMT" + "value": "blocklist" + } + }, + { + "at": "/query/blocklisttype", + "optional": false, + "rule": { + "is": "equal", + "value": "all" } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 412, + "status": 200, "headers": { + "content-type": "application/xml", "date": { "from": "now" }, - "x-ms-error-code": "ConditionNotMet" + "etag": "\"fixture-2184b3e6c2c3\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "empty" - } + "encoding": "utf8", + "data": "MDAwMDAx5" + }, + "framing": "chunked" } } ] @@ -16101,39 +45101,56 @@ "optional": false, "rule": { "is": "equal", - "value": "error" + "value": "ok" } }, { - "at": "/status", + "at": "/value/committed/0/id_base64", "optional": false, "rule": { "is": "equal", - "value": 412 + "value": "MDAwMDAx" } }, { - "at": "/code", + "at": "/value/committed/0/size", "optional": false, "rule": { "is": "equal", - "value": "ConditionNotMet" + "value": 5 + } + }, + { + "at": "/value/committed", + "optional": false, + "rule": { + "is": "array_length", + "value": 1 + } + }, + { + "at": "/value/uncommitted", + "optional": false, + "rule": { + "is": "array_length", + "value": 0 } } ], "refusal": null }, { - "id": "operations/azure/list-after-delete-with-versions", + "id": "operations/azure/staged-after-whole-write", "profile": "azure", "lane": "core", - "purpose": "list after delete with versions", + "purpose": "staged after whole write", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "op": "list_page", - "prefix": "object-tests/versions-mtydohr2/deleted.txt" + "key": "object-tests/multipart/whole.bin", + "kind": "all", + "op": "azure.list_blocks" }, "exchanges": [ { @@ -16153,7 +45170,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/multipart/whole.bin" } }, { @@ -16164,28 +45181,20 @@ "value": "" } }, - { - "at": "/query/restype", - "optional": false, - "rule": { - "is": "equal", - "value": "container" - } - }, { "at": "/query/comp", "optional": false, "rule": { "is": "equal", - "value": "list" + "value": "blocklist" } }, { - "at": "/query/prefix", + "at": "/query/blocklisttype", "optional": false, "rule": { "is": "equal", - "value": "object-tests/versions-mtydohr2/deleted.txt" + "value": "all" } } ], @@ -16198,12 +45207,13 @@ "date": { "from": "now" }, + "etag": "\"fixture-f439b54167cb\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "utf8", - "data": "object-tests/versions-mtydohr2/deleted.txt" + "data": "" }, "framing": "chunked" } @@ -16221,7 +45231,7 @@ } }, { - "at": "/value/entries", + "at": "/value/committed", "optional": false, "rule": { "is": "array_length", @@ -16229,36 +45239,28 @@ } }, { - "at": "/value/prefixes", + "at": "/value/uncommitted", "optional": false, "rule": { "is": "array_length", "value": 0 } - }, - { - "at": "/value/continuation_token", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } } ], "refusal": null }, { - "id": "operations/azure/list-bad-marker", + "id": "operations/azure/staged-committed-empty", "profile": "azure", "lane": "core", - "purpose": "list bad marker", + "purpose": "staged committed empty", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "continuation_token": "fixture-marker+/1d52c72a655f=", - "op": "list_page", - "prefix": "object-tests/board/" + "key": "object-tests/multipart/staged.bin", + "kind": "committed", + "op": "azure.list_blocks" }, "exchanges": [ { @@ -16278,7 +45280,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/multipart/staged.bin" } }, { @@ -16289,54 +45291,40 @@ "value": "" } }, - { - "at": "/query/restype", - "optional": false, - "rule": { - "is": "equal", - "value": "container" - } - }, { "at": "/query/comp", "optional": false, "rule": { "is": "equal", - "value": "list" - } - }, - { - "at": "/query/prefix", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/board/" + "value": "blocklist" } }, { - "at": "/query/marker", + "at": "/query/blocklisttype", "optional": false, "rule": { "is": "equal", - "value": "fixture-marker+/1d52c72a655f=" + "value": "committed" } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 400, + "status": 200, "headers": { "content-type": "application/xml", "date": { "from": "now" }, - "x-ms-error-code": "InvalidQueryParameterValue" + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "utf8", - "data": "InvalidQueryParameterValueFixture error" - } + "data": "" + }, + "framing": "chunked" } } ] @@ -16348,43 +45336,40 @@ "optional": false, "rule": { "is": "equal", - "value": "error" + "value": "ok" } }, { - "at": "/status", + "at": "/value/committed", "optional": false, "rule": { - "is": "equal", - "value": 400 + "is": "array_length", + "value": 0 } }, { - "at": "/code", + "at": "/value/uncommitted", "optional": false, "rule": { - "is": "equal", - "value": "InvalidQueryParameterValue" + "is": "array_length", + "value": 0 } } ], "refusal": null }, { - "id": "operations/azure/list-bad-marker-code-in-body", + "id": "operations/azure/staged-committed-nothing", "profile": "azure", "lane": "core", - "purpose": "list bad marker, with the error code only in the XML body", + "purpose": "staged committed nothing", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp", - "https://learn.microsoft.com/en-us/rest/api/storageservices/common-rest-api-error-codes", - "https://learn.microsoft.com/en-us/rest/api/storageservices/blob-service-error-codes" + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], - "origin": "constructed", "call": { - "continuation_token": "fixture-marker+/1d52c72a655f=", - "op": "list_page", - "prefix": "object-tests/board/" + "key": "object-tests/multipart/empty.bin", + "kind": "all", + "op": "azure.list_blocks" }, "exchanges": [ { @@ -16404,7 +45389,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/multipart/empty.bin" } }, { @@ -16415,53 +45400,41 @@ "value": "" } }, - { - "at": "/query/restype", - "optional": false, - "rule": { - "is": "equal", - "value": "container" - } - }, { "at": "/query/comp", "optional": false, "rule": { "is": "equal", - "value": "list" - } - }, - { - "at": "/query/prefix", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/board/" + "value": "blocklist" } }, { - "at": "/query/marker", + "at": "/query/blocklisttype", "optional": false, "rule": { "is": "equal", - "value": "fixture-marker+/1d52c72a655f=" + "value": "all" } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 400, + "status": 200, "headers": { "content-type": "application/xml", "date": { "from": "now" - } + }, + "etag": "\"fixture-265df060a55b\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "utf8", - "data": "InvalidQueryParameterValueFixture error" - } + "data": "" + }, + "framing": "chunked" } } ] @@ -16473,39 +45446,40 @@ "optional": false, "rule": { "is": "equal", - "value": "error" + "value": "ok" } }, { - "at": "/status", + "at": "/value/committed", "optional": false, "rule": { - "is": "equal", - "value": 400 + "is": "array_length", + "value": 0 } }, { - "at": "/code", + "at": "/value/uncommitted", "optional": false, "rule": { - "is": "equal", - "value": "InvalidQueryParameterValue" + "is": "array_length", + "value": 0 } } ], "refusal": null }, { - "id": "operations/azure/list-container-missing", + "id": "operations/azure/staged-escaped-id", "profile": "azure", "lane": "core", - "purpose": "list container missing", + "purpose": "staged escaped id", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "op": "list_page", - "prefix": "" + "key": "object-tests/multipart/escaped.bin", + "kind": "all", + "op": "azure.list_blocks" }, "exchanges": [ { @@ -16525,7 +45499,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/multipart/escaped.bin" } }, { @@ -16536,46 +45510,40 @@ "value": "" } }, - { - "at": "/query/restype", - "optional": false, - "rule": { - "is": "equal", - "value": "container" - } - }, { "at": "/query/comp", "optional": false, "rule": { "is": "equal", - "value": "list" + "value": "blocklist" } }, { - "at": "/query/prefix", - "optional": true, + "at": "/query/blocklisttype", + "optional": false, "rule": { "is": "equal", - "value": "" + "value": "all" } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 404, + "status": 200, "headers": { "content-type": "application/xml", "date": { "from": "now" }, - "x-ms-error-code": "ContainerNotFound" + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "utf8", - "data": "ContainerNotFoundFixture error" - } + "data": "+/8=3" + }, + "framing": "chunked" } } ] @@ -16587,40 +45555,56 @@ "optional": false, "rule": { "is": "equal", - "value": "error" + "value": "ok" } }, { - "at": "/status", + "at": "/value/committed", + "optional": false, + "rule": { + "is": "array_length", + "value": 0 + } + }, + { + "at": "/value/uncommitted/0/id_base64", "optional": false, "rule": { "is": "equal", - "value": 404 + "value": "+/8=" } }, { - "at": "/code", + "at": "/value/uncommitted/0/size", "optional": false, "rule": { "is": "equal", - "value": "ContainerNotFound" + "value": 3 + } + }, + { + "at": "/value/uncommitted", + "optional": false, + "rule": { + "is": "array_length", + "value": 1 } } ], "refusal": null }, { - "id": "operations/azure/list-delimited", + "id": "operations/azure/staged-replacement", "profile": "azure", "lane": "core", - "purpose": "list delimited", + "purpose": "staged replacement", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "delimiter": "/", - "op": "list_page", - "prefix": "object-tests/board/" + "key": "object-tests/multipart/pending.bin", + "kind": "all", + "op": "azure.list_blocks" }, "exchanges": [ { @@ -16640,7 +45624,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/multipart/pending.bin" } }, { @@ -16651,36 +45635,20 @@ "value": "" } }, - { - "at": "/query/restype", - "optional": false, - "rule": { - "is": "equal", - "value": "container" - } - }, { "at": "/query/comp", "optional": false, "rule": { "is": "equal", - "value": "list" - } - }, - { - "at": "/query/prefix", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/board/" + "value": "blocklist" } }, { - "at": "/query/delimiter", + "at": "/query/blocklisttype", "optional": false, "rule": { "is": "equal", - "value": "/" + "value": "all" } } ], @@ -16693,12 +45661,13 @@ "date": { "from": "now" }, + "etag": "\"fixture-9c5ca12bcfc9\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "utf8", - "data": "object-tests/board//object-tests/board/a.txt2024-01-01T00:00:00.9908400ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-704c5ddfc8cb8application/octet-streamJdVa0oOqQAr0ZMdtcTwHrQ==BlockBlobHottrueunlockedavailabletrueobject-tests/board/nested/object-tests/board/z.txt2024-01-01T00:00:00.3834597ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-b905747bf74f2application/octet-streamJe0by0I7C3IA9IX8X/ccjg==BlockBlobHottrueunlockedavailabletrue" + "data": "MDAwMDAx5MDAwMDAy6MDAwMDAx5" }, "framing": "chunked" } @@ -16716,170 +45685,225 @@ } }, { - "at": "/value/entries/0/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/board/a.txt" - } - }, - { - "at": "/value/entries/0/size", + "at": "/value/committed/0/id_base64", "optional": false, "rule": { "is": "equal", - "value": 8 + "value": "MDAwMDAx" } }, { - "at": "/value/entries/0/etag", + "at": "/value/committed/0/size", "optional": false, "rule": { "is": "equal", - "value": "fixture-704c5ddfc8cb" - } - }, - { - "at": "/value/entries/0/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "value": 5 } }, { - "at": "/value/entries/0/version", + "at": "/value/committed/1/id_base64", "optional": false, "rule": { "is": "equal", - "value": "2024-01-01T00:00:00.9908400Z" + "value": "MDAwMDAy" } }, { - "at": "/value/entries/0/is_current_version", + "at": "/value/committed/1/size", "optional": false, "rule": { "is": "equal", - "value": true + "value": 6 } }, { - "at": "/value/entries/0/content_md5_base64", + "at": "/value/committed", "optional": false, "rule": { - "is": "equal", - "value": "JdVa0oOqQAr0ZMdtcTwHrQ==" + "is": "array_length", + "value": 2 } }, { - "at": "/value/entries/1/key", + "at": "/value/uncommitted/0/id_base64", "optional": false, "rule": { "is": "equal", - "value": "object-tests/board/z.txt" + "value": "MDAwMDAx" } }, { - "at": "/value/entries/1/size", + "at": "/value/uncommitted/0/size", "optional": false, "rule": { "is": "equal", - "value": 2 + "value": 5 } }, { - "at": "/value/entries/1/etag", + "at": "/value/uncommitted", "optional": false, "rule": { - "is": "equal", - "value": "fixture-b905747bf74f" + "is": "array_length", + "value": 1 } - }, + } + ], + "refusal": null + }, + { + "id": "operations/azure/staged-uncommitted-only", + "profile": "azure", + "lane": "core", + "purpose": "staged uncommitted only", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "key": "object-tests/multipart/staged.bin", + "kind": "all", + "op": "azure.list_blocks" + }, + "exchanges": [ { - "at": "/value/entries/1/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/multipart/staged.bin" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "blocklist" + } + }, + { + "at": "/query/blocklisttype", + "optional": false, + "rule": { + "is": "equal", + "value": "all" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "utf8", + "data": "MDAwMDAx5MDAwMDAy6" + }, + "framing": "chunked" + } + } + ] + } + ], + "expect": [ { - "at": "/value/entries/1/version", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "2024-01-01T00:00:00.3834597Z" + "value": "ok" } }, { - "at": "/value/entries/1/is_current_version", + "at": "/value/committed", "optional": false, "rule": { - "is": "equal", - "value": true + "is": "array_length", + "value": 0 } }, { - "at": "/value/entries/1/content_md5_base64", + "at": "/value/uncommitted/0/id_base64", "optional": false, "rule": { "is": "equal", - "value": "Je0by0I7C3IA9IX8X/ccjg==" + "value": "MDAwMDAx" } }, { - "at": "/value/entries", + "at": "/value/uncommitted/0/size", "optional": false, "rule": { - "is": "array_length", - "value": 2 + "is": "equal", + "value": 5 } }, { - "at": "/value/prefixes/0", + "at": "/value/uncommitted/1/id_base64", "optional": false, "rule": { "is": "equal", - "value": "object-tests/board/nested/" + "value": "MDAwMDAy" } }, { - "at": "/value/prefixes", + "at": "/value/uncommitted/1/size", "optional": false, "rule": { - "is": "array_length", - "value": 1 + "is": "equal", + "value": 6 } }, { - "at": "/value/continuation_token", + "at": "/value/uncommitted", "optional": false, "rule": { - "is": "equal", - "value": "" + "is": "array_length", + "value": 2 } } ], "refusal": null }, { - "id": "operations/azure/list-other-delimiter", + "id": "operations/azure/staged-uncommitted", "profile": "azure", "lane": "core", - "purpose": "Send the delimiter the caller names. A flat account groups blob names at any delimiter, not only /; here a- groups a-1.txt and a-2.txt", + "purpose": "staged uncommitted", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "delimiter": "-", - "op": "list_page", - "prefix": "object-tests/dashes/" + "key": "object-tests/multipart/staged.bin", + "kind": "uncommitted", + "op": "azure.list_blocks" }, "exchanges": [ { @@ -16899,7 +45923,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/multipart/staged.bin" } }, { @@ -16910,36 +45934,20 @@ "value": "" } }, - { - "at": "/query/restype", - "optional": false, - "rule": { - "is": "equal", - "value": "container" - } - }, { "at": "/query/comp", "optional": false, "rule": { "is": "equal", - "value": "list" - } - }, - { - "at": "/query/prefix", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/dashes/" + "value": "blocklist" } }, { - "at": "/query/delimiter", + "at": "/query/blocklisttype", "optional": false, "rule": { "is": "equal", - "value": "-" + "value": "uncommitted" } } ], @@ -16957,7 +45965,7 @@ }, "body": { "encoding": "utf8", - "data": "object-tests/dashes/-object-tests/dashes/a-object-tests/dashes/b.txt2024-01-01T00:00:00.9908400ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-704c5ddfc8cb1application/octet-streamkutf/uauL+w61xx3dTFXjw==BlockBlobHottrueunlockedavailabletrue" + "data": "MDAwMDAx5MDAwMDAy6" }, "framing": "chunked" } @@ -16975,83 +45983,68 @@ } }, { - "at": "/value/entries/0/key", + "at": "/value/committed", "optional": false, "rule": { - "is": "equal", - "value": "object-tests/dashes/b.txt" + "is": "array_length", + "value": 0 } }, { - "at": "/value/entries/0/size", + "at": "/value/uncommitted/0/id_base64", "optional": false, "rule": { "is": "equal", - "value": 1 + "value": "MDAwMDAx" } }, { - "at": "/value/entries/0/etag", + "at": "/value/uncommitted/0/size", "optional": false, "rule": { "is": "equal", - "value": "fixture-704c5ddfc8cb" + "value": 5 } }, { - "at": "/value/entries/0/version", + "at": "/value/uncommitted/1/id_base64", "optional": false, "rule": { "is": "equal", - "value": "2024-01-01T00:00:00.9908400Z" - } - }, - { - "at": "/value/entries", - "optional": false, - "rule": { - "is": "array_length", - "value": 1 + "value": "MDAwMDAy" } }, { - "at": "/value/prefixes/0", + "at": "/value/uncommitted/1/size", "optional": false, "rule": { "is": "equal", - "value": "object-tests/dashes/a-" + "value": 6 } }, { - "at": "/value/prefixes", + "at": "/value/uncommitted", "optional": false, "rule": { "is": "array_length", - "value": 1 - } - }, - { - "at": "/value/continuation_token", - "optional": false, - "rule": { - "is": "equal", - "value": "" + "value": 2 } } ], "refusal": null }, { - "id": "operations/azure/list-empty", - "profile": "azure", + "id": "operations/azure-hns/commit-container-missing", + "profile": "azure-hns", "lane": "core", - "purpose": "list empty", + "purpose": "commit container missing. A client reports it as container_not_found: the bucket or container is absent, not the object", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "op": "list_page", - "prefix": "object-tests/nothing/" + "blocks": [], + "key": "object.bin", + "op": "azure.commit_blocks" }, "exchanges": [ { @@ -17063,7 +46056,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -17071,23 +46064,15 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" + "value": "/fixture/object.bin" } }, { - "at": "/query/restype", + "at": "/body_text", "optional": false, "rule": { - "is": "equal", - "value": "container" + "is": "xml", + "value": "" } }, { @@ -17095,35 +46080,27 @@ "optional": false, "rule": { "is": "equal", - "value": "list" - } - }, - { - "at": "/query/prefix", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/nothing/" + "value": "blocklist" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 200, + "status": 404, "headers": { "content-type": "application/xml", "date": { "from": "now" }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + "x-ms-error-code": "ContainerNotFound" }, "body": { "encoding": "utf8", - "data": "object-tests/nothing/" - }, - "framing": "chunked" + "data": "ContainerNotFoundFixture error" + } } } ] @@ -17135,47 +46112,54 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "error" } }, { - "at": "/value/entries", + "at": "/status", "optional": false, "rule": { - "is": "array_length", - "value": 0 + "is": "equal", + "value": 404 } }, { - "at": "/value/prefixes", + "at": "/code", "optional": false, "rule": { - "is": "array_length", - "value": 0 + "is": "equal", + "value": "ContainerNotFound" } }, { - "at": "/value/continuation_token", + "at": "/kind", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "container_not_found" } } ], "refusal": null }, { - "id": "operations/azure/list-all-empty", - "profile": "azure", + "id": "operations/azure-hns/commit-declaring-md5", + "profile": "azure-hns", "lane": "core", - "purpose": "list empty", + "purpose": "commit declaring md5", "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/list-blobs" + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "op": "list", - "prefix": "" + "blocks": [ + { + "id_base64": "MDAwMDAx", + "kind": "latest" + } + ], + "content_md5_base64": "N6YZkbg+Lyfxtskwn8iRCg==", + "key": "object-tests/hashes/committed.bin", + "op": "azure.commit_blocks" }, "exchanges": [ { @@ -17187,7 +46171,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -17195,23 +46179,23 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/hashes/committed.bin" } }, { - "at": "/body_base64", + "at": "/body_text", "optional": false, "rule": { - "is": "equal", - "value": "" + "is": "xml", + "value": "MDAwMDAx" } }, { - "at": "/query/restype", + "at": "/headers/x-ms-blob-content-md5", "optional": false, "rule": { "is": "equal", - "value": "container" + "value": "N6YZkbg+Lyfxtskwn8iRCg==" } }, { @@ -17219,43 +46203,29 @@ "optional": false, "rule": { "is": "equal", - "value": "list" - } - }, - { - "at": "/query/prefix", - "optional": true, - "rule": { - "is": "equal", - "value": "" + "value": "blocklist" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 200, + "status": 201, "headers": { - "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-etag\"", + "etag": "\"fixture-9a581bc70e20\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-request-id": "fixture-request-id", - "x-ms-request-server-encrypted": "true", - "x-ms-server-encrypted": "true", - "x-ms-version": "2023-11-03" + "x-ms-request-server-encrypted": "true" }, "body": { "encoding": "base64", - "data": "PEVudW1lcmF0aW9uUmVzdWx0cyBTZXJ2aWNlRW5kcG9pbnQ9Imh0dHA6Ly9maXh0dXJlLyIgQ29udGFpbmVyTmFtZT0iZml4dHVyZSI+PFByZWZpeD48L1ByZWZpeD48QmxvYnM+PC9CbG9icz48TmV4dE1hcmtlcj48L05leHRNYXJrZXI+PC9FbnVtZXJhdGlvblJlc3VsdHM+" - }, - "framing": "chunked" + "data": "" + } } } ] @@ -17271,27 +46241,48 @@ } }, { - "at": "/value/keys", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": [] + "value": "\"fixture-9a581bc70e20\"" + } + }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] } } ], "refusal": null }, { - "id": "operations/azure/list-encoded-names", - "profile": "azure", + "id": "operations/azure-hns/commit-duplicate-id", + "profile": "azure-hns", "lane": "core", - "purpose": "list encoded names", + "purpose": "commit duplicate id", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "op": "list_page", - "prefix": "object-tests/names/" + "blocks": [ + { + "id_base64": "MDAwMDAx", + "kind": "latest" + }, + { + "id_base64": "MDAwMDAx", + "kind": "latest" + } + ], + "key": "object-tests/multipart/duplicate.bin", + "op": "azure.commit_blocks" }, "exchanges": [ { @@ -17303,7 +46294,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -17311,23 +46302,15 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" + "value": "/fixture/object-tests/multipart/duplicate.bin" } }, { - "at": "/query/restype", + "at": "/body_text", "optional": false, "rule": { - "is": "equal", - "value": "container" + "is": "xml", + "value": "MDAwMDAxMDAwMDAx" } }, { @@ -17335,35 +46318,29 @@ "optional": false, "rule": { "is": "equal", - "value": "list" - } - }, - { - "at": "/query/prefix", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/names/" + "value": "blocklist" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 200, + "status": 201, "headers": { - "content-type": "application/xml", "date": { "from": "now" }, + "etag": "\"fixture-a8581b642c5f\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-request-server-encrypted": "true" }, "body": { - "encoding": "utf8", - "data": "object-tests/names/object-tests%2Fnames%2F100%25-%EF%BF%BE-name.txt2024-01-01T00:00:00.6773769ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-b0016e7eea411application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/names/a&b.txt2024-01-01T00:00:00.9293679ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-e0cf2e36cfe61application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/names/back/slash.txt2024-01-01T00:00:00.8649025ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-fb1ea388bc8f1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/names/café.txt2024-01-01T00:00:00.0714249ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-4dfcbd136b001application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/names/hash#tag.txt2024-01-01T00:00:00.9185620ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-a7996d03132f1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/names/percent%20.txt2024-01-01T00:00:00.5807236ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-5e82da751e9c1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/names/plus+plus.txt2024-01-01T00:00:00.8000075ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-7dc03e94613e1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/names/q?mark.txt2024-01-01T00:00:00.3314072ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-91f727e794361application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrue" - }, - "framing": "chunked" + "encoding": "base64", + "data": "" + } } } ] @@ -17379,267 +46356,15 @@ } }, { - "at": "/value/entries/0/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/names/100%-￾-name.txt" - } - }, - { - "at": "/value/entries/0/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/0/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-b0016e7eea41" - } - }, - { - "at": "/value/entries/0/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/0/version", - "optional": false, - "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.6773769Z" - } - }, - { - "at": "/value/entries/0/is_current_version", - "optional": false, - "rule": { - "is": "equal", - "value": true - } - }, - { - "at": "/value/entries/0/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "xMpCOKC5I4INzFCab3WEmw==" - } - }, - { - "at": "/value/entries/1/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/names/a&b.txt" - } - }, - { - "at": "/value/entries/1/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/1/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-e0cf2e36cfe6" - } - }, - { - "at": "/value/entries/1/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/1/version", - "optional": false, - "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.9293679Z" - } - }, - { - "at": "/value/entries/1/is_current_version", - "optional": false, - "rule": { - "is": "equal", - "value": true - } - }, - { - "at": "/value/entries/1/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "xMpCOKC5I4INzFCab3WEmw==" - } - }, - { - "at": "/value/entries/2/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/names/back/slash.txt" - } - }, - { - "at": "/value/entries/2/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/2/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-fb1ea388bc8f" - } - }, - { - "at": "/value/entries/2/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/2/version", - "optional": false, - "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.8649025Z" - } - }, - { - "at": "/value/entries/2/is_current_version", - "optional": false, - "rule": { - "is": "equal", - "value": true - } - }, - { - "at": "/value/entries/2/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "xMpCOKC5I4INzFCab3WEmw==" - } - }, - { - "at": "/value/entries/3/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/names/café.txt" - } - }, - { - "at": "/value/entries/3/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/3/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-4dfcbd136b00" - } - }, - { - "at": "/value/entries/3/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/3/version", - "optional": false, - "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.0714249Z" - } - }, - { - "at": "/value/entries/3/is_current_version", - "optional": false, - "rule": { - "is": "equal", - "value": true - } - }, - { - "at": "/value/entries/3/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "xMpCOKC5I4INzFCab3WEmw==" - } - }, - { - "at": "/value/entries/4/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/names/hash#tag.txt" - } - }, - { - "at": "/value/entries/4/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/4/etag", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": "fixture-a7996d03132f" + "value": "\"fixture-a8581b642c5f\"" } }, { - "at": "/value/entries/4/snapshot", + "at": "/value/version", "optional": true, "rule": { "is": "one_of", @@ -17648,57 +46373,109 @@ "" ] } - }, - { - "at": "/value/entries/4/version", - "optional": false, - "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.9185620Z" - } - }, - { - "at": "/value/entries/4/is_current_version", - "optional": false, - "rule": { - "is": "equal", - "value": true - } - }, - { - "at": "/value/entries/4/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "xMpCOKC5I4INzFCab3WEmw==" + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/commit-escaped-id", + "profile": "azure-hns", + "lane": "core", + "purpose": "commit escaped id", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "blocks": [ + { + "id_base64": "+/8=", + "kind": "latest" } - }, + ], + "key": "object-tests/multipart/escaped.bin", + "op": "azure.commit_blocks" + }, + "exchanges": [ { - "at": "/value/entries/5/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/names/percent%20.txt" - } - }, + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/multipart/escaped.bin" + } + }, + { + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "+/8=" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "blocklist" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 201, + "headers": { + "date": { + "from": "now" + }, + "etag": "\"fixture-77b5e2317b8a\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-request-server-encrypted": "true" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ { - "at": "/value/entries/5/size", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": 1 + "value": "ok" } }, { - "at": "/value/entries/5/etag", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": "fixture-5e82da751e9c" + "value": "\"fixture-77b5e2317b8a\"" } }, { - "at": "/value/entries/5/snapshot", + "at": "/value/version", "optional": true, "rule": { "is": "one_of", @@ -17707,187 +46484,248 @@ "" ] } - }, - { - "at": "/value/entries/5/version", - "optional": false, - "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.5807236Z" - } - }, - { - "at": "/value/entries/5/is_current_version", - "optional": false, - "rule": { - "is": "equal", - "value": true - } - }, - { - "at": "/value/entries/5/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "xMpCOKC5I4INzFCab3WEmw==" - } - }, - { - "at": "/value/entries/6/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/names/plus+plus.txt" - } - }, - { - "at": "/value/entries/6/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/6/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-7dc03e94613e" + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/commit-lost-the-race-to-create", + "profile": "azure-hns", + "lane": "core", + "purpose": "commit lost the race to create", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "blocks": [ + { + "id_base64": "MDAwMDAx", + "kind": "latest" } - }, + ], + "if_none_match": "*", + "key": "object-tests/multipart/pending.bin", + "op": "azure.commit_blocks" + }, + "exchanges": [ { - "at": "/value/entries/6/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/multipart/pending.bin" + } + }, + { + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "MDAwMDAx" + } + }, + { + "at": "/headers/if-none-match", + "optional": false, + "rule": { + "is": "equal", + "value": "*" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "blocklist" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 409, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "BlobAlreadyExists" + }, + "body": { + "encoding": "utf8", + "data": "BlobAlreadyExistsFixture error" + } + } + } + ] + } + ], + "expect": [ { - "at": "/value/entries/6/version", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "2024-01-01T00:00:00.8000075Z" + "value": "error" } }, { - "at": "/value/entries/6/is_current_version", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": true + "value": 409 } }, { - "at": "/value/entries/6/content_md5_base64", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": "xMpCOKC5I4INzFCab3WEmw==" + "value": "BlobAlreadyExists" } - }, + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/commit-nothing", + "profile": "azure-hns", + "lane": "core", + "purpose": "commit nothing", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "blocks": [], + "key": "object-tests/multipart/empty.bin", + "op": "azure.commit_blocks" + }, + "exchanges": [ { - "at": "/value/entries/7/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/names/q?mark.txt" - } - }, + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/multipart/empty.bin" + } + }, + { + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "blocklist" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 201, + "headers": { + "date": { + "from": "now" + }, + "etag": "\"fixture-072bed78cc6a\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-request-server-encrypted": "true" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ { - "at": "/value/entries/7/size", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": 1 + "value": "ok" } }, { - "at": "/value/entries/7/etag", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": "fixture-91f727e79436" + "value": "\"fixture-072bed78cc6a\"" } }, { - "at": "/value/entries/7/snapshot", + "at": "/value/version", "optional": true, "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/7/version", - "optional": false, - "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.3314072Z" - } - }, - { - "at": "/value/entries/7/is_current_version", - "optional": false, - "rule": { - "is": "equal", - "value": true - } - }, - { - "at": "/value/entries/7/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "xMpCOKC5I4INzFCab3WEmw==" - } - }, - { - "at": "/value/entries", - "optional": false, - "rule": { - "is": "array_length", - "value": 8 - } - }, - { - "at": "/value/prefixes", - "optional": false, - "rule": { - "is": "array_length", - "value": 0 - } - }, - { - "at": "/value/continuation_token", - "optional": false, - "rule": { - "is": "equal", - "value": "" + "is": "one_of", + "values": [ + null, + "" + ] } } ], "refusal": null }, { - "id": "operations/azure/list-xml-escaped", - "profile": "azure", + "id": "operations/azure-hns/commit-over-whole-object", + "profile": "azure-hns", "lane": "core", - "purpose": "list xml escaped", + "purpose": "commit over whole object", "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/list-blobs" + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "op": "list", - "prefix": "" + "blocks": [ + { + "id_base64": "MDAwMDAx", + "kind": "latest" + } + ], + "key": "object-tests/multipart/over.bin", + "op": "azure.commit_blocks" }, "exchanges": [ { @@ -17899,7 +46737,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -17907,23 +46745,15 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" + "value": "/fixture/object-tests/multipart/over.bin" } }, { - "at": "/query/restype", + "at": "/body_text", "optional": false, "rule": { - "is": "equal", - "value": "container" + "is": "xml", + "value": "MDAwMDAx" } }, { @@ -17931,43 +46761,29 @@ "optional": false, "rule": { "is": "equal", - "value": "list" - } - }, - { - "at": "/query/prefix", - "optional": true, - "rule": { - "is": "equal", - "value": "" + "value": "blocklist" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 200, + "status": 201, "headers": { - "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-etag\"", + "etag": "\"fixture-7dc650e58291\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-request-id": "fixture-request-id", - "x-ms-request-server-encrypted": "true", - "x-ms-server-encrypted": "true", - "x-ms-version": "2023-11-03" + "x-ms-request-server-encrypted": "true" }, "body": { "encoding": "base64", - "data": "PEVudW1lcmF0aW9uUmVzdWx0cyBTZXJ2aWNlRW5kcG9pbnQ9Imh0dHA6Ly9maXh0dXJlLyIgQ29udGFpbmVyTmFtZT0iZml4dHVyZSI+PFByZWZpeD48L1ByZWZpeD48QmxvYnM+PEJsb2I+PE5hbWU+YSZhbXA7YjwvTmFtZT48UHJvcGVydGllcz48TGFzdC1Nb2RpZmllZD5Nb24sIDAxIEphbiAyMDI0IDAwOjAwOjAwIEdNVDwvTGFzdC1Nb2RpZmllZD48RXRhZz4iZml4dHVyZSI8L0V0YWc+PENvbnRlbnQtTGVuZ3RoPjU8L0NvbnRlbnQtTGVuZ3RoPjxCbG9iVHlwZT5CbG9ja0Jsb2I8L0Jsb2JUeXBlPjwvUHJvcGVydGllcz48L0Jsb2I+PEJsb2I+PE5hbWU+YyZsdDtkPC9OYW1lPjxQcm9wZXJ0aWVzPjxMYXN0LU1vZGlmaWVkPk1vbiwgMDEgSmFuIDIwMjQgMDA6MDA6MDAgR01UPC9MYXN0LU1vZGlmaWVkPjxFdGFnPiJmaXh0dXJlIjwvRXRhZz48Q29udGVudC1MZW5ndGg+NTwvQ29udGVudC1MZW5ndGg+PEJsb2JUeXBlPkJsb2NrQmxvYjwvQmxvYlR5cGU+PC9Qcm9wZXJ0aWVzPjwvQmxvYj48L0Jsb2JzPjxOZXh0TWFya2VyPjwvTmV4dE1hcmtlcj48L0VudW1lcmF0aW9uUmVzdWx0cz4=" - }, - "framing": "chunked" + "data": "" + } } } ] @@ -17983,13 +46799,21 @@ } }, { - "at": "/value/keys", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": [ - "a&b", - "cMDAwMDAx" } }, { - "at": "/query/restype", + "at": "/headers/if-match", "optional": false, "rule": { "is": "equal", - "value": "container" + "value": "\"fixture-088e5dc109cf\"" } }, { @@ -18051,43 +46881,27 @@ "optional": false, "rule": { "is": "equal", - "value": "list" - } - }, - { - "at": "/query/prefix", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/board/" - } - }, - { - "at": "/query/maxresults", - "optional": false, - "rule": { - "is": "equal", - "value": "2" + "value": "blocklist" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 200, + "status": 412, "headers": { "content-type": "application/xml", "date": { "from": "now" }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + "x-ms-error-code": "ConditionNotMet" }, "body": { "encoding": "utf8", - "data": "object-tests/board/2object-tests/board/a.txt2024-01-01T00:00:00.9908400ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-704c5ddfc8cb8application/octet-streamJdVa0oOqQAr0ZMdtcTwHrQ==BlockBlobHottrueunlockedavailabletrueobject-tests/board/nested/c.txt2024-01-01T00:00:00.7881326ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-48ff0e151ab71application/octet-streamSooI8J03tzeVZJA4QItfMw==BlockBlobHottrueunlockedavailabletruefixture-marker+/c42f89fa82e8=" - }, - "framing": "chunked" + "data": "ConditionNotMetFixture error" + } } } ] @@ -18099,94 +46913,232 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/entries/0/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/board/a.txt" + "value": "error" } }, { - "at": "/value/entries/0/size", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": 8 + "value": 412 } }, { - "at": "/value/entries/0/etag", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": "fixture-704c5ddfc8cb" + "value": "ConditionNotMet" } - }, + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/commit-refused", + "profile": "azure-hns", + "lane": "core", + "purpose": "Report the service authorization error for this operation; signature acceptance is tested separately.", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "blocks": [], + "key": "object.bin", + "op": "azure.commit_blocks" + }, + "exchanges": [ { - "at": "/value/entries/0/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object.bin" + } + }, + { + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "blocklist" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 404, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "ContainerNotFound" + }, + "body": { + "encoding": "utf8", + "data": "ContainerNotFoundFixture error" + } + } + } + ] + } + ], + "expect": [ { - "at": "/value/entries/0/version", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "2024-01-01T00:00:00.9908400Z" + "value": "error" } }, { - "at": "/value/entries/0/is_current_version", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": true + "value": 404 } }, { - "at": "/value/entries/0/content_md5_base64", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": "JdVa0oOqQAr0ZMdtcTwHrQ==" + "value": "ContainerNotFound" } - }, - { - "at": "/value/entries/1/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/board/nested/c.txt" + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/commit-reordered", + "profile": "azure-hns", + "lane": "core", + "purpose": "commit reordered", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "blocks": [ + { + "id_base64": "MDAwMDAy", + "kind": "latest" + }, + { + "id_base64": "MDAwMDAx", + "kind": "latest" } - }, + ], + "key": "object-tests/multipart/reordered.bin", + "op": "azure.commit_blocks" + }, + "exchanges": [ { - "at": "/value/entries/1/size", + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/multipart/reordered.bin" + } + }, + { + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "MDAwMDAyMDAwMDAx" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "blocklist" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 201, + "headers": { + "date": { + "from": "now" + }, + "etag": "\"fixture-446301cfeaef\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-request-server-encrypted": "true" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": 1 + "value": "ok" } }, { - "at": "/value/entries/1/etag", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": "fixture-48ff0e151ab7" + "value": "\"fixture-446301cfeaef\"" } }, { - "at": "/value/entries/1/snapshot", + "at": "/value/version", "optional": true, "rule": { "is": "one_of", @@ -18195,70 +47147,27 @@ "" ] } - }, - { - "at": "/value/entries/1/version", - "optional": false, - "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.7881326Z" - } - }, - { - "at": "/value/entries/1/is_current_version", - "optional": false, - "rule": { - "is": "equal", - "value": true - } - }, - { - "at": "/value/entries/1/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "SooI8J03tzeVZJA4QItfMw==" - } - }, - { - "at": "/value/entries", - "optional": false, - "rule": { - "is": "array_length", - "value": 2 - } - }, - { - "at": "/value/prefixes", - "optional": false, - "rule": { - "is": "array_length", - "value": 0 - } - }, - { - "at": "/value/continuation_token", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-marker+/c42f89fa82e8=" - } } ], "refusal": null }, { - "id": "operations/azure/list-page-size-one", - "profile": "azure", + "id": "operations/azure-hns/commit-replacement", + "profile": "azure-hns", "lane": "core", - "purpose": "A page of zero entries is out of range, but a page of one is not. Send a page size of 1 and report the one entry and the continuation token.", + "purpose": "commit replacement", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "op": "list_page", - "page_size": 1, - "prefix": "object-tests/board/" + "blocks": [ + { + "id_base64": "MDAwMDAx", + "kind": "latest" + } + ], + "key": "object-tests/multipart/replaced.bin", + "op": "azure.commit_blocks" }, "exchanges": [ { @@ -18270,7 +47179,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -18278,23 +47187,15 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" + "value": "/fixture/object-tests/multipart/replaced.bin" } }, { - "at": "/query/restype", + "at": "/body_text", "optional": false, "rule": { - "is": "equal", - "value": "container" + "is": "xml", + "value": "MDAwMDAx" } }, { @@ -18302,43 +47203,29 @@ "optional": false, "rule": { "is": "equal", - "value": "list" - } - }, - { - "at": "/query/prefix", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/board/" - } - }, - { - "at": "/query/maxresults", - "optional": false, - "rule": { - "is": "equal", - "value": "1" + "value": "blocklist" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 200, + "status": 201, "headers": { - "content-type": "application/xml", "date": { "from": "now" }, + "etag": "\"fixture-9c5e55ff559c\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-request-server-encrypted": "true" }, "body": { - "encoding": "utf8", - "data": "object-tests/board/1object-tests/board/a.txt2024-01-01T00:00:00.9908400ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-704c5ddfc8cb8application/octet-streamJdVa0oOqQAr0ZMdtcTwHrQ==BlockBlobHottrueunlockedavailabletruefixture-marker+/c42f89fa82e8=" - }, - "framing": "chunked" + "encoding": "base64", + "data": "" + } } } ] @@ -18354,31 +47241,15 @@ } }, { - "at": "/value/entries/0/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/board/a.txt" - } - }, - { - "at": "/value/entries/0/size", - "optional": false, - "rule": { - "is": "equal", - "value": 8 - } - }, - { - "at": "/value/entries/0/etag", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": "fixture-704c5ddfc8cb" + "value": "\"fixture-9c5e55ff559c\"" } }, { - "at": "/value/entries/0/snapshot", + "at": "/value/version", "optional": true, "rule": { "is": "one_of", @@ -18387,72 +47258,31 @@ "" ] } - }, - { - "at": "/value/entries/0/version", - "optional": false, - "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.9908400Z" - } - }, - { - "at": "/value/entries/0/is_current_version", - "optional": false, - "rule": { - "is": "equal", - "value": true - } - }, - { - "at": "/value/entries/0/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "JdVa0oOqQAr0ZMdtcTwHrQ==" - } - }, - { - "at": "/value/entries", - "optional": false, - "rule": { - "is": "array_length", - "value": 1 - } - }, - { - "at": "/value/prefixes", - "optional": false, - "rule": { - "is": "array_length", - "value": 0 - } - }, - { - "at": "/value/continuation_token", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-marker+/c42f89fa82e8=" - } } ], "refusal": null }, { - "id": "operations/azure/list-operation-timed-out", - "profile": "azure", + "id": "operations/azure-hns/commit-unstaged-id", + "profile": "azure-hns", "lane": "core", - "purpose": "Report a 500 OperationTimedOut answer as an error, after at most 5 retries", + "purpose": "commit unstaged id", "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/common-rest-api-error-codes", - "https://learn.microsoft.com/en-us/rest/api/storageservices/blob-service-error-codes" + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], - "origin": "transient", "call": { - "op": "list_page", - "page_size": 2, - "prefix": "object-tests/board/" + "blocks": [ + { + "id_base64": "MDAwMDAx", + "kind": "latest" + }, + { + "id_base64": "MDAwMDA5", + "kind": "latest" + } + ], + "key": "object-tests/multipart/staged.bin", + "op": "azure.commit_blocks" }, "exchanges": [ { @@ -18464,7 +47294,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -18472,23 +47302,15 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" + "value": "/fixture/object-tests/multipart/staged.bin" } }, { - "at": "/query/restype", + "at": "/body_text", "optional": false, "rule": { - "is": "equal", - "value": "container" + "is": "xml", + "value": "MDAwMDAxMDAwMDA5" } }, { @@ -18496,45 +47318,86 @@ "optional": false, "rule": { "is": "equal", - "value": "list" - } - }, - { - "at": "/query/prefix", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/board/" - } - }, - { - "at": "/query/maxresults", - "optional": false, - "rule": { - "is": "equal", - "value": "2" + "value": "blocklist" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 500, + "status": 400, "headers": { "content-type": "application/xml", "date": { "from": "now" }, - "x-ms-error-code": "OperationTimedOut" + "x-ms-error-code": "InvalidBlockList" }, "body": { "encoding": "utf8", - "data": "OperationTimedOutThe operation could not be completed within the permitted time." + "data": "InvalidBlockListFixture error" } } } ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 400 + } }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "InvalidBlockList" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/commit-unstaged-id-code-in-body", + "profile": "azure-hns", + "lane": "core", + "purpose": "commit unstaged id, with the error code only in the XML body", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp", + "https://learn.microsoft.com/en-us/rest/api/storageservices/common-rest-api-error-codes", + "https://learn.microsoft.com/en-us/rest/api/storageservices/blob-service-error-codes" + ], + "origin": "constructed", + "call": { + "blocks": [ + { + "id_base64": "MDAwMDAx", + "kind": "latest" + }, + { + "id_base64": "MDAwMDA5", + "kind": "latest" + } + ], + "key": "object-tests/multipart/staged.bin", + "op": "azure.commit_blocks" + }, + "exchanges": [ { "alternatives": [ { @@ -18544,7 +47407,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -18552,23 +47415,15 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" + "value": "/fixture/object-tests/multipart/staged.bin" } }, { - "at": "/query/restype", + "at": "/body_text", "optional": false, "rule": { - "is": "equal", - "value": "container" + "is": "xml", + "value": "MDAwMDAxMDAwMDA5" } }, { @@ -18576,46 +47431,82 @@ "optional": false, "rule": { "is": "equal", - "value": "list" - } - }, - { - "at": "/query/prefix", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/board/" - } - }, - { - "at": "/query/maxresults", - "optional": false, - "rule": { - "is": "equal", - "value": "2" + "value": "blocklist" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 500, + "status": 400, "headers": { "content-type": "application/xml", "date": { "from": "now" - }, - "x-ms-error-code": "OperationTimedOut" + } }, "body": { "encoding": "utf8", - "data": "OperationTimedOutThe operation could not be completed within the permitted time." + "data": "InvalidBlockListFixture error" } } } - ], - "optional": true + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 400 + } }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "InvalidBlockList" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/commit", + "profile": "azure-hns", + "lane": "core", + "purpose": "commit", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "blocks": [ + { + "id_base64": "MDAwMDAx", + "kind": "latest" + }, + { + "id_base64": "MDAwMDAy", + "kind": "latest" + } + ], + "key": "object-tests/multipart/committed.bin", + "op": "azure.commit_blocks" + }, + "exchanges": [ { "alternatives": [ { @@ -18625,7 +47516,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -18633,23 +47524,15 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" + "value": "/fixture/object-tests/multipart/committed.bin" } }, { - "at": "/query/restype", + "at": "/body_text", "optional": false, "rule": { - "is": "equal", - "value": "container" + "is": "xml", + "value": "MDAwMDAxMDAwMDAy" } }, { @@ -18657,46 +47540,88 @@ "optional": false, "rule": { "is": "equal", - "value": "list" - } - }, - { - "at": "/query/prefix", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/board/" - } - }, - { - "at": "/query/maxresults", - "optional": false, - "rule": { - "is": "equal", - "value": "2" + "value": "blocklist" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 500, + "status": 201, "headers": { - "content-type": "application/xml", "date": { "from": "now" }, - "x-ms-error-code": "OperationTimedOut" + "etag": "\"fixture-8ec031f3abfa\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-request-server-encrypted": "true" }, "body": { - "encoding": "utf8", - "data": "OperationTimedOutThe operation could not be completed within the permitted time." + "encoding": "base64", + "data": "" } } } - ], - "optional": true + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-8ec031f3abfa\"" + } }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/commit-key-question", + "profile": "azure-hns", + "lane": "core", + "purpose": "commit, with the key \"question?mark.txt\"", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "blocks": [ + { + "id_base64": "MDAwMDAx", + "kind": "latest" + }, + { + "id_base64": "MDAwMDAy", + "kind": "latest" + } + ], + "key": "object-tests/keys/question?mark.txt", + "op": "azure.commit_blocks" + }, + "exchanges": [ { "alternatives": [ { @@ -18706,7 +47631,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -18714,23 +47639,15 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" + "value": "/fixture/object-tests/keys/question?mark.txt" } }, { - "at": "/query/restype", + "at": "/body_text", "optional": false, "rule": { - "is": "equal", - "value": "container" + "is": "xml", + "value": "MDAwMDAxMDAwMDAy" } }, { @@ -18738,80 +47655,114 @@ "optional": false, "rule": { "is": "equal", - "value": "list" - } - }, - { - "at": "/query/prefix", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/board/" - } - }, - { - "at": "/query/maxresults", - "optional": false, - "rule": { - "is": "equal", - "value": "2" + "value": "blocklist" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 500, + "status": 201, "headers": { - "content-type": "application/xml", "date": { "from": "now" }, - "x-ms-error-code": "OperationTimedOut" + "etag": "\"fixture-8ec031f3abfa\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-request-server-encrypted": "true" }, "body": { - "encoding": "utf8", - "data": "OperationTimedOutThe operation could not be completed within the permitted time." + "encoding": "base64", + "data": "" } } } - ], - "optional": true + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-8ec031f3abfa\"" + } }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/commit-key-hash", + "profile": "azure-hns", + "lane": "core", + "purpose": "commit, with the key \"hash#tag.txt\"", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "blocks": [ + { + "id_base64": "MDAwMDAx", + "kind": "latest" + }, + { + "id_base64": "MDAwMDAy", + "kind": "latest" + } + ], + "key": "object-tests/keys/hash#tag.txt", + "op": "azure.commit_blocks" + }, + "exchanges": [ { "alternatives": [ { "request": [ { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", + "at": "/method", "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "PUT" } }, { - "at": "/body_base64", + "at": "/path", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "/fixture/object-tests/keys/hash#tag.txt" } }, { - "at": "/query/restype", + "at": "/body_text", "optional": false, "rule": { - "is": "equal", - "value": "container" + "is": "xml", + "value": "MDAwMDAxMDAwMDAy" } }, { @@ -18819,46 +47770,88 @@ "optional": false, "rule": { "is": "equal", - "value": "list" - } - }, - { - "at": "/query/prefix", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/board/" - } - }, - { - "at": "/query/maxresults", - "optional": false, - "rule": { - "is": "equal", - "value": "2" + "value": "blocklist" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 500, + "status": 201, "headers": { - "content-type": "application/xml", "date": { "from": "now" }, - "x-ms-error-code": "OperationTimedOut" + "etag": "\"fixture-8ec031f3abfa\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-request-server-encrypted": "true" }, "body": { - "encoding": "utf8", - "data": "OperationTimedOutThe operation could not be completed within the permitted time." + "encoding": "base64", + "data": "" } } } - ], - "optional": true + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-8ec031f3abfa\"" + } }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/commit-key-percent", + "profile": "azure-hns", + "lane": "core", + "purpose": "commit, with the key \"percent%20.txt\"", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "blocks": [ + { + "id_base64": "MDAwMDAx", + "kind": "latest" + }, + { + "id_base64": "MDAwMDAy", + "kind": "latest" + } + ], + "key": "object-tests/keys/percent%20.txt", + "op": "azure.commit_blocks" + }, + "exchanges": [ { "alternatives": [ { @@ -18868,7 +47861,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -18876,23 +47869,15 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" + "value": "/fixture/object-tests/keys/percent%20.txt" } }, { - "at": "/query/restype", + "at": "/body_text", "optional": false, "rule": { - "is": "equal", - "value": "container" + "is": "xml", + "value": "MDAwMDAxMDAwMDAy" } }, { @@ -18900,45 +47885,32 @@ "optional": false, "rule": { "is": "equal", - "value": "list" - } - }, - { - "at": "/query/prefix", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/board/" - } - }, - { - "at": "/query/maxresults", - "optional": false, - "rule": { - "is": "equal", - "value": "2" + "value": "blocklist" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 500, + "status": 201, "headers": { - "content-type": "application/xml", "date": { "from": "now" }, - "x-ms-error-code": "OperationTimedOut" + "etag": "\"fixture-8ec031f3abfa\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-request-server-encrypted": "true" }, "body": { - "encoding": "utf8", - "data": "OperationTimedOutThe operation could not be completed within the permitted time." + "encoding": "base64", + "data": "" } } } - ], - "optional": true + ] } ], "expect": [ @@ -18947,40 +47919,52 @@ "optional": false, "rule": { "is": "equal", - "value": "error" + "value": "ok" } }, { - "at": "/status", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": 500 + "value": "\"fixture-8ec031f3abfa\"" } }, { - "at": "/code", - "optional": false, + "at": "/value/version", + "optional": true, "rule": { - "is": "equal", - "value": "OperationTimedOut" + "is": "one_of", + "values": [ + null, + "" + ] } } ], "refusal": null }, { - "id": "operations/azure/list-key-equal-to-prefix-delimited", - "profile": "azure", + "id": "operations/azure-hns/commit-key-plus", + "profile": "azure-hns", "lane": "core", - "purpose": "list key equal to prefix delimited", + "purpose": "commit, with the key \"plus+plus.txt\"", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "delimiter": "/", - "op": "list_page", - "prefix": "object-tests/exact" + "blocks": [ + { + "id_base64": "MDAwMDAx", + "kind": "latest" + }, + { + "id_base64": "MDAwMDAy", + "kind": "latest" + } + ], + "key": "object-tests/keys/plus+plus.txt", + "op": "azure.commit_blocks" }, "exchanges": [ { @@ -18992,7 +47976,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -19000,23 +47984,15 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" + "value": "/fixture/object-tests/keys/plus+plus.txt" } }, { - "at": "/query/restype", + "at": "/body_text", "optional": false, "rule": { - "is": "equal", - "value": "container" + "is": "xml", + "value": "MDAwMDAxMDAwMDAy" } }, { @@ -19024,43 +48000,29 @@ "optional": false, "rule": { "is": "equal", - "value": "list" - } - }, - { - "at": "/query/prefix", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/exact" - } - }, - { - "at": "/query/delimiter", - "optional": false, - "rule": { - "is": "equal", - "value": "/" + "value": "blocklist" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 200, + "status": 201, "headers": { - "content-type": "application/xml", "date": { "from": "now" }, + "etag": "\"fixture-8ec031f3abfa\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-request-server-encrypted": "true" }, "body": { - "encoding": "utf8", - "data": "object-tests/exact/object-tests/exact2024-01-01T00:00:00.9097158ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-aad9350ee3141application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/exact/" - }, - "framing": "chunked" + "encoding": "base64", + "data": "" + } } } ] @@ -19076,31 +48038,15 @@ } }, { - "at": "/value/entries/0/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/exact" - } - }, - { - "at": "/value/entries/0/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/0/etag", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": "fixture-aad9350ee314" + "value": "\"fixture-8ec031f3abfa\"" } }, { - "at": "/value/entries/0/snapshot", + "at": "/value/version", "optional": true, "rule": { "is": "one_of", @@ -19109,77 +48055,31 @@ "" ] } - }, - { - "at": "/value/entries/0/version", - "optional": false, - "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.9097158Z" - } - }, - { - "at": "/value/entries/0/is_current_version", - "optional": false, - "rule": { - "is": "equal", - "value": true - } - }, - { - "at": "/value/entries/0/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "xMpCOKC5I4INzFCab3WEmw==" - } - }, - { - "at": "/value/entries", - "optional": false, - "rule": { - "is": "array_length", - "value": 1 - } - }, - { - "at": "/value/prefixes/0", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/exact/" - } - }, - { - "at": "/value/prefixes", - "optional": false, - "rule": { - "is": "array_length", - "value": 1 - } - }, - { - "at": "/value/continuation_token", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } } ], "refusal": null }, { - "id": "operations/azure/list-key-equal-to-prefix", - "profile": "azure", + "id": "operations/azure-hns/commit-key-space", + "profile": "azure-hns", "lane": "core", - "purpose": "list key equal to prefix", + "purpose": "commit, with the key \"space name.txt\"", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "op": "list_page", - "prefix": "object-tests/exact" + "blocks": [ + { + "id_base64": "MDAwMDAx", + "kind": "latest" + }, + { + "id_base64": "MDAwMDAy", + "kind": "latest" + } + ], + "key": "object-tests/keys/space name.txt", + "op": "azure.commit_blocks" }, "exchanges": [ { @@ -19191,7 +48091,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -19199,23 +48099,15 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" + "value": "/fixture/object-tests/keys/space name.txt" } }, { - "at": "/query/restype", + "at": "/body_text", "optional": false, "rule": { - "is": "equal", - "value": "container" + "is": "xml", + "value": "MDAwMDAxMDAwMDAy" } }, { @@ -19223,35 +48115,29 @@ "optional": false, "rule": { "is": "equal", - "value": "list" - } - }, - { - "at": "/query/prefix", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/exact" + "value": "blocklist" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 200, + "status": 201, "headers": { - "content-type": "application/xml", "date": { "from": "now" }, + "etag": "\"fixture-8ec031f3abfa\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-request-server-encrypted": "true" }, "body": { - "encoding": "utf8", - "data": "object-tests/exactobject-tests/exact2024-01-01T00:00:00.9097158ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-aad9350ee3141application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/exact/child2024-01-01T00:00:00.1462797ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-bc7e3365fd2c1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrue" - }, - "framing": "chunked" + "encoding": "base64", + "data": "" + } } } ] @@ -19267,90 +48153,15 @@ } }, { - "at": "/value/entries/0/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/exact" - } - }, - { - "at": "/value/entries/0/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/0/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-aad9350ee314" - } - }, - { - "at": "/value/entries/0/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/0/version", - "optional": false, - "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.9097158Z" - } - }, - { - "at": "/value/entries/0/is_current_version", - "optional": false, - "rule": { - "is": "equal", - "value": true - } - }, - { - "at": "/value/entries/0/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "xMpCOKC5I4INzFCab3WEmw==" - } - }, - { - "at": "/value/entries/1/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/exact/child" - } - }, - { - "at": "/value/entries/1/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/1/etag", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": "fixture-bc7e3365fd2c" + "value": "\"fixture-8ec031f3abfa\"" } }, { - "at": "/value/entries/1/snapshot", + "at": "/value/version", "optional": true, "rule": { "is": "one_of", @@ -19359,69 +48170,31 @@ "" ] } - }, - { - "at": "/value/entries/1/version", - "optional": false, - "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.1462797Z" - } - }, - { - "at": "/value/entries/1/is_current_version", - "optional": false, - "rule": { - "is": "equal", - "value": true - } - }, - { - "at": "/value/entries/1/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "xMpCOKC5I4INzFCab3WEmw==" - } - }, - { - "at": "/value/entries", - "optional": false, - "rule": { - "is": "array_length", - "value": 2 - } - }, - { - "at": "/value/prefixes", - "optional": false, - "rule": { - "is": "array_length", - "value": 0 - } - }, - { - "at": "/value/continuation_token", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } } ], "refusal": null }, { - "id": "operations/azure/list-many-segments", - "profile": "azure", + "id": "operations/azure-hns/commit-key-non-ascii", + "profile": "azure-hns", "lane": "core", - "purpose": "list many segments", + "purpose": "commit, with the key \"café/雪.txt\"", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "op": "list_page", - "prefix": "object-tests/s/" + "blocks": [ + { + "id_base64": "MDAwMDAx", + "kind": "latest" + }, + { + "id_base64": "MDAwMDAy", + "kind": "latest" + } + ], + "key": "object-tests/keys/café/雪.txt", + "op": "azure.commit_blocks" }, "exchanges": [ { @@ -19433,7 +48206,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -19441,23 +48214,15 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" + "value": "/fixture/object-tests/keys/café/雪.txt" } }, { - "at": "/query/restype", + "at": "/body_text", "optional": false, "rule": { - "is": "equal", - "value": "container" + "is": "xml", + "value": "MDAwMDAxMDAwMDAy" } }, { @@ -19465,35 +48230,29 @@ "optional": false, "rule": { "is": "equal", - "value": "list" - } - }, - { - "at": "/query/prefix", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/s/" + "value": "blocklist" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 200, + "status": 201, "headers": { - "content-type": "application/xml", "date": { "from": "now" }, + "etag": "\"fixture-8ec031f3abfa\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-request-server-encrypted": "true" }, "body": { - "encoding": "utf8", - "data": "object-tests/s/object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s2024-01-01T00:00:00.1683367ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-bdb8a3090de61application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrue" - }, - "framing": "chunked" + "encoding": "base64", + "data": "" + } } } ] @@ -19509,31 +48268,15 @@ } }, { - "at": "/value/entries/0/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" - } - }, - { - "at": "/value/entries/0/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/0/etag", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": "fixture-bdb8a3090de6" + "value": "\"fixture-8ec031f3abfa\"" } }, { - "at": "/value/entries/0/snapshot", + "at": "/value/version", "optional": true, "rule": { "is": "one_of", @@ -19542,70 +48285,31 @@ "" ] } - }, - { - "at": "/value/entries/0/version", - "optional": false, - "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.1683367Z" - } - }, - { - "at": "/value/entries/0/is_current_version", - "optional": false, - "rule": { - "is": "equal", - "value": true - } - }, - { - "at": "/value/entries/0/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "xMpCOKC5I4INzFCab3WEmw==" - } - }, - { - "at": "/value/entries", - "optional": false, - "rule": { - "is": "array_length", - "value": 1 - } - }, - { - "at": "/value/prefixes", - "optional": false, - "rule": { - "is": "array_length", - "value": 0 - } - }, - { - "at": "/value/continuation_token", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } } ], "refusal": null }, { - "id": "operations/azure/list-max-keys-zero", - "profile": "azure", + "id": "operations/azure-hns/commit-key-double-slash", + "profile": "azure-hns", "lane": "core", - "purpose": "list max keys zero", + "purpose": "commit, with the key \"double//slash.txt\"", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "op": "list_page", - "page_size": 0, - "prefix": "object-tests/board/" + "blocks": [ + { + "id_base64": "MDAwMDAx", + "kind": "latest" + }, + { + "id_base64": "MDAwMDAy", + "kind": "latest" + } + ], + "key": "object-tests/keys/double//slash.txt", + "op": "azure.commit_blocks" }, "exchanges": [ { @@ -19617,7 +48321,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -19625,23 +48329,15 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" + "value": "/fixture/object-tests/keys/double//slash.txt" } }, { - "at": "/query/restype", + "at": "/body_text", "optional": false, "rule": { - "is": "equal", - "value": "container" + "is": "xml", + "value": "MDAwMDAxMDAwMDAy" } }, { @@ -19649,40 +48345,28 @@ "optional": false, "rule": { "is": "equal", - "value": "list" - } - }, - { - "at": "/query/prefix", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/board/" - } - }, - { - "at": "/query/maxresults", - "optional": false, - "rule": { - "is": "equal", - "value": "0" + "value": "blocklist" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 400, + "status": 201, "headers": { - "content-type": "application/xml", "date": { "from": "now" }, - "x-ms-error-code": "OutOfRangeQueryParameterValue" + "etag": "\"fixture-8ec031f3abfa\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-request-server-encrypted": "true" }, "body": { - "encoding": "utf8", - "data": "OutOfRangeQueryParameterValueFixture error" + "encoding": "base64", + "data": "" } } } @@ -19695,83 +48379,52 @@ "optional": false, "rule": { "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 400 - } - }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "equal", - "value": "OutOfRangeQueryParameterValue" - } - } - ], - "refusal": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "refused" - } - }, - { - "at": "/kind", - "optional": false, - "rule": { - "is": "matches", - "pattern": ".+" + "value": "ok" } }, { - "at": "/parameter", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": "page_size" - } - }, - { - "at": "/status", - "optional": true, - "rule": { - "is": "equal", - "value": 400 + "value": "\"fixture-8ec031f3abfa\"" } }, { - "at": "/code", + "at": "/value/version", "optional": true, "rule": { - "is": "equal", - "value": "OutOfRangeQueryParameterValue" + "is": "one_of", + "values": [ + null, + "" + ] } } - ] + ], + "refusal": null }, { - "id": "operations/azure/list-metadata", - "profile": "azure", + "id": "operations/azure-hns/commit-key-trailing-slash", + "profile": "azure-hns", "lane": "core", - "purpose": "list metadata", + "purpose": "commit, with the key \"trailing-slash/\"", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "include": [ - "metadata" + "blocks": [ + { + "id_base64": "MDAwMDAx", + "kind": "latest" + }, + { + "id_base64": "MDAwMDAy", + "kind": "latest" + } ], - "op": "list_page", - "prefix": "object-tests/metadata-listed/" + "key": "object-tests/keys/trailing-slash/", + "op": "azure.commit_blocks" }, "exchanges": [ { @@ -19783,7 +48436,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -19791,23 +48444,15 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" + "value": "/fixture/object-tests/keys/trailing-slash/" } }, { - "at": "/query/restype", + "at": "/body_text", "optional": false, "rule": { - "is": "equal", - "value": "container" + "is": "xml", + "value": "MDAwMDAxMDAwMDAy" } }, { @@ -19815,43 +48460,27 @@ "optional": false, "rule": { "is": "equal", - "value": "list" - } - }, - { - "at": "/query/prefix", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/metadata-listed/" - } - }, - { - "at": "/query/include", - "optional": false, - "rule": { - "is": "equal", - "value": "metadata" + "value": "blocklist" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 200, + "status": 400, "headers": { "content-type": "application/xml", "date": { "from": "now" }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + "x-ms-error-code": "InvalidBlockList" }, "body": { "encoding": "utf8", - "data": "object-tests/metadata-listed/object-tests/metadata-listed/plain.txt2024-01-01T00:00:00.4469276ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-9a0b44f4b9e91application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/metadata-listed/shadowed.txt2024-01-01T00:00:00.9968398ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-cd8bb50852bd1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletruex" - }, - "framing": "chunked" + "data": "InvalidBlockListFixture error" + } } } ] @@ -19863,188 +48492,53 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/entries/0/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/metadata-listed/plain.txt" - } - }, - { - "at": "/value/entries/0/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/0/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-9a0b44f4b9e9" - } - }, - { - "at": "/value/entries/0/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/0/version", - "optional": false, - "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.4469276Z" - } - }, - { - "at": "/value/entries/0/is_current_version", - "optional": false, - "rule": { - "is": "equal", - "value": true - } - }, - { - "at": "/value/entries/0/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "xMpCOKC5I4INzFCab3WEmw==" - } - }, - { - "at": "/value/entries/1/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/metadata-listed/shadowed.txt" - } - }, - { - "at": "/value/entries/1/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/1/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-cd8bb50852bd" - } - }, - { - "at": "/value/entries/1/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/1/version", - "optional": false, - "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.9968398Z" - } - }, - { - "at": "/value/entries/1/is_current_version", - "optional": false, - "rule": { - "is": "equal", - "value": true - } - }, - { - "at": "/value/entries/1/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "xMpCOKC5I4INzFCab3WEmw==" - } - }, - { - "at": "/value/entries", - "optional": false, - "rule": { - "is": "array_length", - "value": 2 - } - }, - { - "at": "/value/prefixes", - "optional": false, - "rule": { - "is": "array_length", - "value": 0 - } - }, - { - "at": "/value/continuation_token", - "optional": false, - "rule": { - "is": "equal", - "value": "" + "value": "error" } }, { - "at": "/value/entries/0/metadata", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": { - "label": "c" - } + "value": 400 } }, { - "at": "/value/entries/1/metadata", + "at": "/code", "optional": false, - "rule": { - "is": "equal", - "value": { - "Metadata": "x", - "label": "b" - } + "rule": { + "is": "equal", + "value": "InvalidBlockList" } } ], "refusal": null }, { - "id": "operations/azure/list-next-page", - "profile": "azure", + "id": "operations/azure-hns/commit-content-properties", + "profile": "azure-hns", "lane": "core", - "purpose": "list next page", + "purpose": "Commit a block list with content properties, sent as x-ms-blob-content-type, -language, -disposition and x-ms-blob-cache-control", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "continuation_token": "fixture-marker+/c42f89fa82e8=", - "op": "list_page", - "page_size": 2, - "prefix": "object-tests/board/" + "blocks": [ + { + "id_base64": "MDAwMDAx", + "kind": "latest" + }, + { + "id_base64": "MDAwMDAy", + "kind": "latest" + } + ], + "cache_control": "max-age=3600", + "content_disposition": "attachment; filename=\"report.txt\"", + "content_language": "nl-NL", + "content_type": "text/plain; charset=utf-8", + "key": "object-tests/multipart/committed.bin", + "op": "azure.commit_blocks" }, "exchanges": [ { @@ -20056,7 +48550,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -20064,75 +48558,77 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/multipart/committed.bin" } }, { - "at": "/body_base64", + "at": "/body_text", "optional": false, "rule": { - "is": "equal", - "value": "" + "is": "xml", + "value": "MDAwMDAxMDAwMDAy" } }, { - "at": "/query/restype", + "at": "/query/comp", "optional": false, "rule": { "is": "equal", - "value": "container" + "value": "blocklist" } }, { - "at": "/query/comp", + "at": "/headers/x-ms-blob-content-type", "optional": false, "rule": { "is": "equal", - "value": "list" + "value": "text/plain; charset=utf-8" } }, { - "at": "/query/prefix", + "at": "/headers/x-ms-blob-content-language", "optional": false, "rule": { "is": "equal", - "value": "object-tests/board/" + "value": "nl-NL" } }, { - "at": "/query/maxresults", + "at": "/headers/x-ms-blob-content-disposition", "optional": false, "rule": { "is": "equal", - "value": "2" + "value": "attachment; filename=\"report.txt\"" } }, { - "at": "/query/marker", + "at": "/headers/x-ms-blob-cache-control", "optional": false, "rule": { "is": "equal", - "value": "fixture-marker+/c42f89fa82e8=" + "value": "max-age=3600" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 200, + "status": 201, "headers": { - "content-type": "application/xml", "date": { "from": "now" }, + "etag": "\"fixture-8ec031f3abfa\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-request-server-encrypted": "true" }, "body": { - "encoding": "utf8", - "data": "object-tests/board/fixture-marker+/c42f89fa82e8=2object-tests/board/z.txt2024-01-01T00:00:00.3834597ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-b905747bf74f2application/octet-streamJe0by0I7C3IA9IX8X/ccjg==BlockBlobHottrueunlockedavailabletrue" - }, - "framing": "chunked" + "encoding": "base64", + "data": "" + } } } ] @@ -20148,31 +48644,15 @@ } }, { - "at": "/value/entries/0/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/board/z.txt" - } - }, - { - "at": "/value/entries/0/size", - "optional": false, - "rule": { - "is": "equal", - "value": 2 - } - }, - { - "at": "/value/entries/0/etag", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": "fixture-b905747bf74f" + "value": "\"fixture-8ec031f3abfa\"" } }, { - "at": "/value/entries/0/snapshot", + "at": "/value/version", "optional": true, "rule": { "is": "one_of", @@ -20181,70 +48661,145 @@ "" ] } - }, - { - "at": "/value/entries/0/version", - "optional": false, - "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.3834597Z" + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/commit-with-tier", + "profile": "azure-hns", + "lane": "core", + "purpose": "Commit a block list into an access tier, named in x-ms-access-tier", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "blocks": [ + { + "id_base64": "MDAwMDAx", + "kind": "latest" + }, + { + "id_base64": "MDAwMDAy", + "kind": "latest" } - }, + ], + "key": "object-tests/multipart/committed.bin", + "op": "azure.commit_blocks", + "tier": "Cool" + }, + "exchanges": [ { - "at": "/value/entries/0/is_current_version", - "optional": false, - "rule": { - "is": "equal", - "value": true - } - }, + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/multipart/committed.bin" + } + }, + { + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "MDAwMDAxMDAwMDAy" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "blocklist" + } + }, + { + "at": "/headers/x-ms-access-tier", + "optional": false, + "rule": { + "is": "equal", + "value": "Cool" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 201, + "headers": { + "date": { + "from": "now" + }, + "etag": "\"fixture-8ec031f3abfa\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-request-server-encrypted": "true" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ { - "at": "/value/entries/0/content_md5_base64", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "Je0by0I7C3IA9IX8X/ccjg==" - } - }, - { - "at": "/value/entries", - "optional": false, - "rule": { - "is": "array_length", - "value": 1 + "value": "ok" } }, { - "at": "/value/prefixes", + "at": "/value/etag", "optional": false, "rule": { - "is": "array_length", - "value": 0 + "is": "equal", + "value": "\"fixture-8ec031f3abfa\"" } }, { - "at": "/value/continuation_token", - "optional": false, + "at": "/value/version", + "optional": true, "rule": { - "is": "equal", - "value": "" + "is": "one_of", + "values": [ + null, + "" + ] } } ], "refusal": null }, { - "id": "operations/azure/list-pagination", - "profile": "azure", + "id": "operations/azure-hns/delete-accepted", + "profile": "azure-hns", "lane": "core", - "purpose": "list pagination", + "purpose": "delete accepted", "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/list-blobs" + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "op": "list", - "page_size": 1, - "prefix": "" + "key": "object-tests/remove/present.txt", + "op": "delete" }, "exchanges": [ { @@ -20256,7 +48811,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "DELETE" } }, { @@ -20264,7 +48819,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/remove/present.txt" } }, { @@ -20274,69 +48829,127 @@ "is": "equal", "value": "" } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 202, + "headers": { + "date": { + "from": "now" + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/delete-accepted-key-question", + "profile": "azure-hns", + "lane": "core", + "purpose": "delete accepted, with the key \"question?mark.txt\"", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "key": "object-tests/keys/question?mark.txt", + "op": "delete" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ { - "at": "/query/restype", + "at": "/method", "optional": false, "rule": { "is": "equal", - "value": "container" + "value": "DELETE" } }, { - "at": "/query/comp", + "at": "/path", "optional": false, "rule": { "is": "equal", - "value": "list" - } - }, - { - "at": "/query/prefix", - "optional": true, - "rule": { - "is": "equal", - "value": "" + "value": "/fixture/object-tests/keys/question?mark.txt" } }, { - "at": "/query/maxresults", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "1" + "value": "" } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 200, + "status": 202, "headers": { - "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-etag\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-request-id": "fixture-request-id", - "x-ms-request-server-encrypted": "true", - "x-ms-server-encrypted": "true", - "x-ms-version": "2023-11-03" + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "base64", - "data": "PEVudW1lcmF0aW9uUmVzdWx0cyBTZXJ2aWNlRW5kcG9pbnQ9Imh0dHA6Ly9maXh0dXJlLyIgQ29udGFpbmVyTmFtZT0iZml4dHVyZSI+PFByZWZpeD48L1ByZWZpeD48QmxvYnM+PEJsb2I+PE5hbWU+Zmlyc3Q8L05hbWU+PFByb3BlcnRpZXM+PExhc3QtTW9kaWZpZWQ+TW9uLCAwMSBKYW4gMjAyNCAwMDowMDowMCBHTVQ8L0xhc3QtTW9kaWZpZWQ+PEV0YWc+ImZpeHR1cmUiPC9FdGFnPjxDb250ZW50LUxlbmd0aD41PC9Db250ZW50LUxlbmd0aD48QmxvYlR5cGU+QmxvY2tCbG9iPC9CbG9iVHlwZT48L1Byb3BlcnRpZXM+PC9CbG9iPjwvQmxvYnM+PE5leHRNYXJrZXI+b3BhcXVlKy89PC9OZXh0TWFya2VyPjwvRW51bWVyYXRpb25SZXN1bHRzPg==" - }, - "framing": "chunked" + "data": "" + } } } ] - }, + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/delete-accepted-key-hash", + "profile": "azure-hns", + "lane": "core", + "purpose": "delete accepted, with the key \"hash#tag.txt\"", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "key": "object-tests/keys/hash#tag.txt", + "op": "delete" + }, + "exchanges": [ { "alternatives": [ { @@ -20346,7 +48959,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "DELETE" } }, { @@ -20354,7 +48967,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/keys/hash#tag.txt" } }, { @@ -20364,73 +48977,97 @@ "is": "equal", "value": "" } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 202, + "headers": { + "date": { + "from": "now" + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/delete-accepted-key-percent", + "profile": "azure-hns", + "lane": "core", + "purpose": "delete accepted, with the key \"percent%20.txt\"", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "key": "object-tests/keys/percent%20.txt", + "op": "delete" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ { - "at": "/query/restype", + "at": "/method", "optional": false, "rule": { "is": "equal", - "value": "container" + "value": "DELETE" } }, { - "at": "/query/comp", + "at": "/path", "optional": false, "rule": { "is": "equal", - "value": "list" + "value": "/fixture/object-tests/keys/percent%20.txt" } }, { - "at": "/query/marker", + "at": "/body_base64", "optional": false, - "rule": { - "is": "equal", - "value": "opaque+/=" - } - }, - { - "at": "/query/prefix", - "optional": true, "rule": { "is": "equal", "value": "" } - }, - { - "at": "/query/maxresults", - "optional": false, - "rule": { - "is": "equal", - "value": "1" - } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 200, + "status": 202, "headers": { - "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-etag\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-request-id": "fixture-request-id", - "x-ms-request-server-encrypted": "true", - "x-ms-server-encrypted": "true", - "x-ms-version": "2023-11-03" + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "base64", - "data": "PEVudW1lcmF0aW9uUmVzdWx0cyBTZXJ2aWNlRW5kcG9pbnQ9Imh0dHA6Ly9maXh0dXJlLyIgQ29udGFpbmVyTmFtZT0iZml4dHVyZSI+PFByZWZpeD48L1ByZWZpeD48QmxvYnM+PEJsb2I+PE5hbWU+c2Vjb25kPC9OYW1lPjxQcm9wZXJ0aWVzPjxMYXN0LU1vZGlmaWVkPk1vbiwgMDEgSmFuIDIwMjQgMDA6MDA6MDAgR01UPC9MYXN0LU1vZGlmaWVkPjxFdGFnPiJmaXh0dXJlIjwvRXRhZz48Q29udGVudC1MZW5ndGg+NTwvQ29udGVudC1MZW5ndGg+PEJsb2JUeXBlPkJsb2NrQmxvYjwvQmxvYlR5cGU+PC9Qcm9wZXJ0aWVzPjwvQmxvYj48L0Jsb2JzPjxOZXh0TWFya2VyPjwvTmV4dE1hcmtlcj48L0VudW1lcmF0aW9uUmVzdWx0cz4=" - }, - "framing": "chunked" + "data": "" + } } } ] @@ -20444,33 +49081,21 @@ "is": "equal", "value": "ok" } - }, - { - "at": "/value/keys", - "optional": false, - "rule": { - "is": "equal", - "value": [ - "first", - "second" - ] - } } ], "refusal": null }, { - "id": "operations/azure/list-order-delimited", - "profile": "azure", + "id": "operations/azure-hns/delete-accepted-key-plus", + "profile": "azure-hns", "lane": "core", - "purpose": "list order delimited", + "purpose": "delete accepted, with the key \"plus+plus.txt\"", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "delimiter": "/", - "op": "list_page", - "prefix": "object-tests/order/" + "key": "object-tests/keys/plus+plus.txt", + "op": "delete" }, "exchanges": [ { @@ -20482,7 +49107,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "DELETE" } }, { @@ -20490,7 +49115,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/keys/plus+plus.txt" } }, { @@ -20500,46 +49125,87 @@ "is": "equal", "value": "" } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 202, + "headers": { + "date": { + "from": "now" + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/delete-accepted-key-space", + "profile": "azure-hns", + "lane": "core", + "purpose": "delete accepted, with the key \"space name.txt\"", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "key": "object-tests/keys/space name.txt", + "op": "delete" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ { - "at": "/query/restype", - "optional": false, - "rule": { - "is": "equal", - "value": "container" - } - }, - { - "at": "/query/comp", + "at": "/method", "optional": false, "rule": { "is": "equal", - "value": "list" + "value": "DELETE" } }, { - "at": "/query/prefix", + "at": "/path", "optional": false, "rule": { "is": "equal", - "value": "object-tests/order/" + "value": "/fixture/object-tests/keys/space name.txt" } }, { - "at": "/query/delimiter", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "/" + "value": "" } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 200, + "status": 202, "headers": { - "content-type": "application/xml", "date": { "from": "now" }, @@ -20547,10 +49213,9 @@ "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "object-tests/order//object-tests/order/A2024-01-01T00:00:00.6802950ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-b1567b296bf41application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/order/a2024-01-01T00:00:00.6196984ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-522bf336fec01application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/order/a-b2024-01-01T00:00:00.7288701ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-ffd1d6ff8b0f1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/order/a.txt2024-01-01T00:00:00.2739144ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-1b029c6aa2e91application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/order/a/object-tests/order/a02024-01-01T00:00:00.7594151ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-238f35f044af1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/order/b2024-01-01T00:00:00.4152572ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-91f7dfa02cf51application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/order/é2024-01-01T00:00:00.1938992ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-e8b6d1d5f3fb1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrue" - }, - "framing": "chunked" + "encoding": "base64", + "data": "" + } } } ] @@ -20564,466 +49229,263 @@ "is": "equal", "value": "ok" } - }, - { - "at": "/value/entries/0/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/order/A" - } - }, - { - "at": "/value/entries/0/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/0/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-b1567b296bf4" - } - }, - { - "at": "/value/entries/0/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/0/version", - "optional": false, - "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.6802950Z" - } - }, - { - "at": "/value/entries/0/is_current_version", - "optional": false, - "rule": { - "is": "equal", - "value": true - } - }, - { - "at": "/value/entries/0/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "xMpCOKC5I4INzFCab3WEmw==" - } - }, - { - "at": "/value/entries/1/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/order/a" - } - }, - { - "at": "/value/entries/1/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/1/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-522bf336fec0" - } - }, - { - "at": "/value/entries/1/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/1/version", - "optional": false, - "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.6196984Z" - } - }, - { - "at": "/value/entries/1/is_current_version", - "optional": false, - "rule": { - "is": "equal", - "value": true - } - }, - { - "at": "/value/entries/1/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "xMpCOKC5I4INzFCab3WEmw==" - } - }, - { - "at": "/value/entries/2/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/order/a-b" - } - }, - { - "at": "/value/entries/2/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/2/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-ffd1d6ff8b0f" - } - }, - { - "at": "/value/entries/2/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/2/version", - "optional": false, - "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.7288701Z" - } - }, - { - "at": "/value/entries/2/is_current_version", - "optional": false, - "rule": { - "is": "equal", - "value": true - } - }, - { - "at": "/value/entries/2/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "xMpCOKC5I4INzFCab3WEmw==" - } - }, - { - "at": "/value/entries/3/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/order/a.txt" - } - }, - { - "at": "/value/entries/3/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/3/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-1b029c6aa2e9" - } - }, - { - "at": "/value/entries/3/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/3/version", - "optional": false, - "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.2739144Z" - } - }, - { - "at": "/value/entries/3/is_current_version", - "optional": false, - "rule": { - "is": "equal", - "value": true - } - }, - { - "at": "/value/entries/3/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "xMpCOKC5I4INzFCab3WEmw==" - } - }, - { - "at": "/value/entries/4/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/order/a0" - } - }, - { - "at": "/value/entries/4/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/4/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-238f35f044af" - } - }, - { - "at": "/value/entries/4/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/4/version", - "optional": false, - "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.7594151Z" - } - }, - { - "at": "/value/entries/4/is_current_version", - "optional": false, - "rule": { - "is": "equal", - "value": true - } - }, - { - "at": "/value/entries/4/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "xMpCOKC5I4INzFCab3WEmw==" - } - }, - { - "at": "/value/entries/5/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/order/b" - } - }, - { - "at": "/value/entries/5/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/5/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-91f7dfa02cf5" - } - }, - { - "at": "/value/entries/5/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/5/version", - "optional": false, - "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.4152572Z" - } - }, - { - "at": "/value/entries/5/is_current_version", - "optional": false, - "rule": { - "is": "equal", - "value": true - } - }, - { - "at": "/value/entries/5/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "xMpCOKC5I4INzFCab3WEmw==" - } - }, - { - "at": "/value/entries/6/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/order/é" - } - }, - { - "at": "/value/entries/6/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/6/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-e8b6d1d5f3fb" - } - }, + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/delete-accepted-key-non-ascii", + "profile": "azure-hns", + "lane": "core", + "purpose": "delete accepted, with the key \"café/雪.txt\"", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "key": "object-tests/keys/café/雪.txt", + "op": "delete" + }, + "exchanges": [ { - "at": "/value/entries/6/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "DELETE" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/keys/café/雪.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 202, + "headers": { + "date": { + "from": "now" + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ { - "at": "/value/entries/6/version", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "2024-01-01T00:00:00.1938992Z" + "value": "ok" } - }, + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/delete-accepted-key-double-slash", + "profile": "azure-hns", + "lane": "core", + "purpose": "delete accepted, with the key \"double//slash.txt\"", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "key": "object-tests/keys/double//slash.txt", + "op": "delete" + }, + "exchanges": [ { - "at": "/value/entries/6/is_current_version", - "optional": false, - "rule": { - "is": "equal", - "value": true - } - }, + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "DELETE" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/keys/double//slash.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 202, + "headers": { + "date": { + "from": "now" + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ { - "at": "/value/entries/6/content_md5_base64", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "xMpCOKC5I4INzFCab3WEmw==" + "value": "ok" } - }, + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/delete-accepted-key-trailing-slash", + "profile": "azure-hns", + "lane": "core", + "purpose": "delete accepted, with the key \"trailing-slash/\"", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "key": "object-tests/keys/trailing-slash/", + "op": "delete" + }, + "exchanges": [ { - "at": "/value/entries", - "optional": false, - "rule": { - "is": "array_length", - "value": 7 - } - }, + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "DELETE" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/keys/trailing-slash/" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 400, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "InvalidUri" + }, + "body": { + "encoding": "utf8", + "data": "InvalidUriFixture error" + } + } + } + ] + } + ], + "expect": [ { - "at": "/value/prefixes/0", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "object-tests/order/a/" + "value": "error" } }, { - "at": "/value/prefixes", + "at": "/status", "optional": false, "rule": { - "is": "array_length", - "value": 1 + "is": "equal", + "value": 400 } }, { - "at": "/value/continuation_token", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "InvalidUri" } } ], "refusal": null }, { - "id": "operations/azure/list-order", - "profile": "azure", + "id": "operations/azure-hns/delete-many", + "profile": "azure-hns", "lane": "core", - "purpose": "list order", + "purpose": "Delete several objects in one batch and report each result", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "https://learn.microsoft.com/en-us/rest/api/storageservices/blob-batch" ], "call": { - "op": "list_page", - "prefix": "object-tests/order/" + "keys": [ + "object-tests/batch/a.txt", + "object-tests/batch/b.txt", + "object-tests/batch/absent.txt" + ], + "op": "delete_many" }, "exchanges": [ { @@ -21035,7 +49497,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "POST" } }, { @@ -21047,11 +49509,11 @@ } }, { - "at": "/body_base64", + "at": "/headers/content-type", "optional": false, "rule": { - "is": "equal", - "value": "" + "is": "matches", + "pattern": "multipart/mixed; boundary=batch_[0-9A-Za-z-]+" } }, { @@ -21067,33 +49529,44 @@ "optional": false, "rule": { "is": "equal", - "value": "list" + "value": "batch" } }, { - "at": "/query/prefix", + "at": "", "optional": false, "rule": { - "is": "equal", - "value": "object-tests/order/" + "is": "blob_batch", + "subrequests": [ + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/a.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/b.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/absent.txt" + } + ] } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 200, + "status": 202, "headers": { - "content-type": "application/xml", + "content-type": "multipart/mixed; boundary=batchresponse_fixture", "date": { "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { "encoding": "utf8", - "data": "object-tests/order/object-tests/order/A2024-01-01T00:00:00.6802950ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-b1567b296bf41application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/order/a2024-01-01T00:00:00.6196984ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-522bf336fec01application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/order/a-b2024-01-01T00:00:00.7288701ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-ffd1d6ff8b0f1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/order/a.txt2024-01-01T00:00:00.2739144ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-1b029c6aa2e91application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/order/a/b2024-01-01T00:00:00.2584945ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-8a57ec6c44921application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/order/a02024-01-01T00:00:00.7594151ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-238f35f044af1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/order/b2024-01-01T00:00:00.4152572ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-91f7dfa02cf51application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/order/é2024-01-01T00:00:00.1938992ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-e8b6d1d5f3fb1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrue" + "data": "--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 0\r\n\r\nHTTP/1.1 202 Accepted\r\nx-ms-request-id: fixture-0\r\nx-ms-delete-type-permanent: true\r\nx-ms-version: 2023-11-03\r\nServer: Windows-Azure-Blob/1.0\r\n\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 1\r\n\r\nHTTP/1.1 202 Accepted\r\nx-ms-request-id: fixture-1\r\nx-ms-delete-type-permanent: true\r\nx-ms-version: 2023-11-03\r\nServer: Windows-Azure-Blob/1.0\r\n\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 2\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture-2\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\nServer: Windows-Azure-Blob/1.0\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture--" }, "framing": "chunked" } @@ -21111,515 +49584,48 @@ } }, { - "at": "/value/entries/0/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/order/A" - } - }, - { - "at": "/value/entries/0/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/0/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-b1567b296bf4" - } - }, - { - "at": "/value/entries/0/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/0/version", - "optional": false, - "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.6802950Z" - } - }, - { - "at": "/value/entries/0/is_current_version", - "optional": false, - "rule": { - "is": "equal", - "value": true - } - }, - { - "at": "/value/entries/0/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "xMpCOKC5I4INzFCab3WEmw==" - } - }, - { - "at": "/value/entries/1/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/order/a" - } - }, - { - "at": "/value/entries/1/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/1/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-522bf336fec0" - } - }, - { - "at": "/value/entries/1/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/1/version", - "optional": false, - "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.6196984Z" - } - }, - { - "at": "/value/entries/1/is_current_version", - "optional": false, - "rule": { - "is": "equal", - "value": true - } - }, - { - "at": "/value/entries/1/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "xMpCOKC5I4INzFCab3WEmw==" - } - }, - { - "at": "/value/entries/2/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/order/a-b" - } - }, - { - "at": "/value/entries/2/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/2/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-ffd1d6ff8b0f" - } - }, - { - "at": "/value/entries/2/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/2/version", - "optional": false, - "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.7288701Z" - } - }, - { - "at": "/value/entries/2/is_current_version", - "optional": false, - "rule": { - "is": "equal", - "value": true - } - }, - { - "at": "/value/entries/2/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "xMpCOKC5I4INzFCab3WEmw==" - } - }, - { - "at": "/value/entries/3/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/order/a.txt" - } - }, - { - "at": "/value/entries/3/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/3/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-1b029c6aa2e9" - } - }, - { - "at": "/value/entries/3/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/3/version", - "optional": false, - "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.2739144Z" - } - }, - { - "at": "/value/entries/3/is_current_version", - "optional": false, - "rule": { - "is": "equal", - "value": true - } - }, - { - "at": "/value/entries/3/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "xMpCOKC5I4INzFCab3WEmw==" - } - }, - { - "at": "/value/entries/4/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/order/a/b" - } - }, - { - "at": "/value/entries/4/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/4/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-8a57ec6c4492" - } - }, - { - "at": "/value/entries/4/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/4/version", - "optional": false, - "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.2584945Z" - } - }, - { - "at": "/value/entries/4/is_current_version", - "optional": false, - "rule": { - "is": "equal", - "value": true - } - }, - { - "at": "/value/entries/4/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "xMpCOKC5I4INzFCab3WEmw==" - } - }, - { - "at": "/value/entries/5/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/order/a0" - } - }, - { - "at": "/value/entries/5/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/5/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-238f35f044af" - } - }, - { - "at": "/value/entries/5/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/5/version", - "optional": false, - "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.7594151Z" - } - }, - { - "at": "/value/entries/5/is_current_version", - "optional": false, - "rule": { - "is": "equal", - "value": true - } - }, - { - "at": "/value/entries/5/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "xMpCOKC5I4INzFCab3WEmw==" - } - }, - { - "at": "/value/entries/6/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/order/b" - } - }, - { - "at": "/value/entries/6/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/6/etag", + "at": "/value/deleted", "optional": false, "rule": { "is": "equal", - "value": "fixture-91f7dfa02cf5" - } - }, - { - "at": "/value/entries/6/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" + "value": [ + "object-tests/batch/a.txt", + "object-tests/batch/b.txt" ] } }, { - "at": "/value/entries/6/version", - "optional": false, - "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.4152572Z" - } - }, - { - "at": "/value/entries/6/is_current_version", - "optional": false, - "rule": { - "is": "equal", - "value": true - } - }, - { - "at": "/value/entries/6/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "xMpCOKC5I4INzFCab3WEmw==" - } - }, - { - "at": "/value/entries/7/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/order/é" - } - }, - { - "at": "/value/entries/7/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/7/etag", + "at": "/value/errors", "optional": false, "rule": { "is": "equal", - "value": "fixture-e8b6d1d5f3fb" - } - }, - { - "at": "/value/entries/7/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" + "value": [ + { + "code": "BlobNotFound", + "key": "object-tests/batch/absent.txt", + "status": 404 + } ] } - }, - { - "at": "/value/entries/7/version", - "optional": false, - "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.1938992Z" - } - }, - { - "at": "/value/entries/7/is_current_version", - "optional": false, - "rule": { - "is": "equal", - "value": true - } - }, - { - "at": "/value/entries/7/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "xMpCOKC5I4INzFCab3WEmw==" - } - }, - { - "at": "/value/entries", - "optional": false, - "rule": { - "is": "array_length", - "value": 8 - } - }, - { - "at": "/value/prefixes", - "optional": false, - "rule": { - "is": "array_length", - "value": 0 - } - }, - { - "at": "/value/continuation_token", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } } ], "refusal": null }, { - "id": "operations/azure/list-all-order", - "profile": "azure", + "id": "operations/azure-hns/delete-many-denied", + "profile": "azure-hns", "lane": "core", - "purpose": "list order", + "purpose": "Report each deletion of a batch that Azure refuses inside its 202 answer, here every one with 403 AuthorizationPermissionMismatch, as that key's error, not as deleted", "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/list-blobs" + "https://learn.microsoft.com/en-us/rest/api/storageservices/blob-batch" ], "call": { - "op": "list", - "prefix": "" + "keys": [ + "object-tests/batch/a.txt", + "object-tests/batch/b.txt", + "object-tests/batch/absent.txt" + ], + "op": "delete_many" }, "exchanges": [ { @@ -21631,7 +49637,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "POST" } }, { @@ -21643,11 +49649,11 @@ } }, { - "at": "/body_base64", + "at": "/headers/content-type", "optional": false, "rule": { - "is": "equal", - "value": "" + "is": "matches", + "pattern": "multipart/mixed; boundary=batch_[0-9A-Za-z-]+" } }, { @@ -21663,41 +49669,44 @@ "optional": false, "rule": { "is": "equal", - "value": "list" + "value": "batch" } }, { - "at": "/query/prefix", - "optional": true, + "at": "", + "optional": false, "rule": { - "is": "equal", - "value": "" + "is": "blob_batch", + "subrequests": [ + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/a.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/b.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/absent.txt" + } + ] } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 200, + "status": 202, "headers": { - "content-type": "application/xml", + "content-type": "multipart/mixed; boundary=batchresponse_fixture", "date": { "from": "now" - }, - "etag": "\"fixture-etag\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-request-id": "fixture-request-id", - "x-ms-request-server-encrypted": "true", - "x-ms-server-encrypted": "true", - "x-ms-version": "2023-11-03" + } }, "body": { - "encoding": "base64", - "data": "PEVudW1lcmF0aW9uUmVzdWx0cyBTZXJ2aWNlRW5kcG9pbnQ9Imh0dHA6Ly9maXh0dXJlLyIgQ29udGFpbmVyTmFtZT0iZml4dHVyZSI+PFByZWZpeD48L1ByZWZpeD48QmxvYnM+PEJsb2I+PE5hbWU+YTwvTmFtZT48UHJvcGVydGllcz48TGFzdC1Nb2RpZmllZD5Nb24sIDAxIEphbiAyMDI0IDAwOjAwOjAwIEdNVDwvTGFzdC1Nb2RpZmllZD48RXRhZz4iZml4dHVyZSI8L0V0YWc+PENvbnRlbnQtTGVuZ3RoPjU8L0NvbnRlbnQtTGVuZ3RoPjxCbG9iVHlwZT5CbG9ja0Jsb2I8L0Jsb2JUeXBlPjwvUHJvcGVydGllcz48L0Jsb2I+PEJsb2I+PE5hbWU+ejwvTmFtZT48UHJvcGVydGllcz48TGFzdC1Nb2RpZmllZD5Nb24sIDAxIEphbiAyMDI0IDAwOjAwOjAwIEdNVDwvTGFzdC1Nb2RpZmllZD48RXRhZz4iZml4dHVyZSI8L0V0YWc+PENvbnRlbnQtTGVuZ3RoPjU8L0NvbnRlbnQtTGVuZ3RoPjxCbG9iVHlwZT5CbG9ja0Jsb2I8L0Jsb2JUeXBlPjwvUHJvcGVydGllcz48L0Jsb2I+PC9CbG9icz48TmV4dE1hcmtlcj48L05leHRNYXJrZXI+PC9FbnVtZXJhdGlvblJlc3VsdHM+" + "encoding": "utf8", + "data": "--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 0\r\n\r\nHTTP/1.1 403 This request is not authorized to perform this operation using this permission.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: AuthorizationPermissionMismatch\r\nx-ms-version: 2023-11-03\r\nContent-Length: 129\r\nContent-Type: application/xml\r\n\r\nAuthorizationPermissionMismatchFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 1\r\n\r\nHTTP/1.1 403 This request is not authorized to perform this operation using this permission.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: AuthorizationPermissionMismatch\r\nx-ms-version: 2023-11-03\r\nContent-Length: 129\r\nContent-Type: application/xml\r\n\r\nAuthorizationPermissionMismatchFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 2\r\n\r\nHTTP/1.1 403 This request is not authorized to perform this operation using this permission.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: AuthorizationPermissionMismatch\r\nx-ms-version: 2023-11-03\r\nContent-Length: 129\r\nContent-Type: application/xml\r\n\r\nAuthorizationPermissionMismatchFixture error\r\n--batchresponse_fixture--" }, "framing": "chunked" } @@ -21715,13 +49724,34 @@ } }, { - "at": "/value/keys", + "at": "/value/deleted", + "optional": false, + "rule": { + "is": "equal", + "value": [] + } + }, + { + "at": "/value/errors", "optional": false, "rule": { "is": "equal", "value": [ - "a", - "z" + { + "code": "AuthorizationPermissionMismatch", + "key": "object-tests/batch/a.txt", + "status": 403 + }, + { + "code": "AuthorizationPermissionMismatch", + "key": "object-tests/batch/b.txt", + "status": 403 + }, + { + "code": "AuthorizationPermissionMismatch", + "key": "object-tests/batch/absent.txt", + "status": 403 + } ] } } @@ -21729,16 +49759,22 @@ "refusal": null }, { - "id": "operations/azure/list-page", - "profile": "azure", + "id": "operations/azure-hns/delete-many-answers-out-of-order", + "profile": "azure-hns", "lane": "core", - "purpose": "list page", + "purpose": "Match each part of a batch answer to its deletion by Content-ID, which links them, not by position. Azure has answered every recorded batch in order, up to 256 parts; this answer is written by hand", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "https://learn.microsoft.com/en-us/rest/api/storageservices/blob-batch" ], + "origin": "constructed", + "derived_from": "operations/azure-hns/delete-many", "call": { - "op": "list_page", - "prefix": "object-tests/board/" + "keys": [ + "object-tests/batch/a.txt", + "object-tests/batch/b.txt", + "object-tests/batch/absent.txt" + ], + "op": "delete_many" }, "exchanges": [ { @@ -21750,7 +49786,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "POST" } }, { @@ -21762,11 +49798,11 @@ } }, { - "at": "/body_base64", + "at": "/headers/content-type", "optional": false, "rule": { - "is": "equal", - "value": "" + "is": "matches", + "pattern": "multipart/mixed; boundary=batch_[0-9A-Za-z-]+" } }, { @@ -21782,33 +49818,44 @@ "optional": false, "rule": { "is": "equal", - "value": "list" + "value": "batch" } }, { - "at": "/query/prefix", + "at": "", "optional": false, "rule": { - "is": "equal", - "value": "object-tests/board/" + "is": "blob_batch", + "subrequests": [ + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/a.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/b.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/absent.txt" + } + ] } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 200, + "status": 202, "headers": { - "content-type": "application/xml", + "content-type": "multipart/mixed; boundary=batchresponse_fixture", "date": { "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { "encoding": "utf8", - "data": "object-tests/board/object-tests/board/a.txt2024-01-01T00:00:00.9908400ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-704c5ddfc8cb8application/octet-streamJdVa0oOqQAr0ZMdtcTwHrQ==BlockBlobHottrueunlockedavailabletrueobject-tests/board/nested/c.txt2024-01-01T00:00:00.7881326ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-48ff0e151ab71application/octet-streamSooI8J03tzeVZJA4QItfMw==BlockBlobHottrueunlockedavailabletrueobject-tests/board/z.txt2024-01-01T00:00:00.3834597ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-b905747bf74f2application/octet-streamJe0by0I7C3IA9IX8X/ccjg==BlockBlobHottrueunlockedavailabletrue" + "data": "--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 2\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 0\r\n\r\nHTTP/1.1 202 Accepted\r\nx-ms-request-id: fixture\r\nx-ms-delete-type-permanent: true\r\nx-ms-version: 2023-11-03\r\n\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 1\r\n\r\nHTTP/1.1 202 Accepted\r\nx-ms-request-id: fixture\r\nx-ms-delete-type-permanent: true\r\nx-ms-version: 2023-11-03\r\n\r\n--batchresponse_fixture--" }, "framing": "chunked" } @@ -21826,220 +49873,50 @@ } }, { - "at": "/value/entries/0/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/board/a.txt" - } - }, - { - "at": "/value/entries/0/size", - "optional": false, - "rule": { - "is": "equal", - "value": 8 - } - }, - { - "at": "/value/entries/0/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-704c5ddfc8cb" - } - }, - { - "at": "/value/entries/0/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/0/version", - "optional": false, - "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.9908400Z" - } - }, - { - "at": "/value/entries/0/is_current_version", - "optional": false, - "rule": { - "is": "equal", - "value": true - } - }, - { - "at": "/value/entries/0/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "JdVa0oOqQAr0ZMdtcTwHrQ==" - } - }, - { - "at": "/value/entries/1/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/board/nested/c.txt" - } - }, - { - "at": "/value/entries/1/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/1/etag", + "at": "/value/deleted", "optional": false, "rule": { "is": "equal", - "value": "fixture-48ff0e151ab7" - } - }, - { - "at": "/value/entries/1/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" + "value": [ + "object-tests/batch/a.txt", + "object-tests/batch/b.txt" ] } }, { - "at": "/value/entries/1/version", - "optional": false, - "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.7881326Z" - } - }, - { - "at": "/value/entries/1/is_current_version", - "optional": false, - "rule": { - "is": "equal", - "value": true - } - }, - { - "at": "/value/entries/1/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "SooI8J03tzeVZJA4QItfMw==" - } - }, - { - "at": "/value/entries/2/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/board/z.txt" - } - }, - { - "at": "/value/entries/2/size", - "optional": false, - "rule": { - "is": "equal", - "value": 2 - } - }, - { - "at": "/value/entries/2/etag", + "at": "/value/errors", "optional": false, "rule": { "is": "equal", - "value": "fixture-b905747bf74f" - } - }, - { - "at": "/value/entries/2/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" + "value": [ + { + "code": "BlobNotFound", + "key": "object-tests/batch/absent.txt", + "status": 404 + } ] } - }, - { - "at": "/value/entries/2/version", - "optional": false, - "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.3834597Z" - } - }, - { - "at": "/value/entries/2/is_current_version", - "optional": false, - "rule": { - "is": "equal", - "value": true - } - }, - { - "at": "/value/entries/2/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "Je0by0I7C3IA9IX8X/ccjg==" - } - }, - { - "at": "/value/entries", - "optional": false, - "rule": { - "is": "array_length", - "value": 3 - } - }, - { - "at": "/value/prefixes", - "optional": false, - "rule": { - "is": "array_length", - "value": 0 - } - }, - { - "at": "/value/continuation_token", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } } ], "refusal": null }, { - "id": "operations/azure/list-prefix-without-slash", - "profile": "azure", + "id": "operations/azure-hns/delete-many-lf-line-endings", + "profile": "azure-hns", "lane": "core", - "purpose": "list prefix without slash", + "purpose": "Read a batch answer whose lines end in LF alone correctly, or report it as an error, but never half-read it. Azure has not been seen to send it: HTTP and multipart require CRLF. This answer is the recorded one with every CR removed", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "https://learn.microsoft.com/en-us/rest/api/storageservices/blob-batch" ], + "origin": "constructed", + "derived_from": "operations/azure-hns/delete-many", "call": { - "op": "list_page", - "prefix": "object-tests/boa" + "keys": [ + "object-tests/batch/a.txt", + "object-tests/batch/b.txt", + "object-tests/batch/absent.txt" + ], + "op": "delete_many" }, "exchanges": [ { @@ -22051,7 +49928,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "POST" } }, { @@ -22063,11 +49940,11 @@ } }, { - "at": "/body_base64", + "at": "/headers/content-type", "optional": false, "rule": { - "is": "equal", - "value": "" + "is": "matches", + "pattern": "multipart/mixed; boundary=batch_[0-9A-Za-z-]+" } }, { @@ -22083,33 +49960,44 @@ "optional": false, "rule": { "is": "equal", - "value": "list" + "value": "batch" } }, { - "at": "/query/prefix", + "at": "", "optional": false, "rule": { - "is": "equal", - "value": "object-tests/boa" + "is": "blob_batch", + "subrequests": [ + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/a.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/b.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/absent.txt" + } + ] } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 200, + "status": 202, "headers": { - "content-type": "application/xml", + "content-type": "multipart/mixed; boundary=batchresponse_fixture", "date": { "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { "encoding": "utf8", - "data": "object-tests/boaobject-tests/board/a.txt2024-01-01T00:00:00.9908400ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-704c5ddfc8cb8application/octet-streamJdVa0oOqQAr0ZMdtcTwHrQ==BlockBlobHottrueunlockedavailabletrueobject-tests/board/nested/c.txt2024-01-01T00:00:00.7881326ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-48ff0e151ab71application/octet-streamSooI8J03tzeVZJA4QItfMw==BlockBlobHottrueunlockedavailabletrueobject-tests/board/z.txt2024-01-01T00:00:00.3834597ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-b905747bf74f2application/octet-streamJe0by0I7C3IA9IX8X/ccjg==BlockBlobHottrueunlockedavailabletrue" + "data": "--batchresponse_fixture\nContent-Type: application/http\nContent-ID: 0\n\nHTTP/1.1 202 Accepted\nx-ms-request-id: fixture\nx-ms-delete-type-permanent: true\nx-ms-version: 2023-11-03\n\n--batchresponse_fixture\nContent-Type: application/http\nContent-ID: 1\n\nHTTP/1.1 202 Accepted\nx-ms-request-id: fixture\nx-ms-delete-type-permanent: true\nx-ms-version: 2023-11-03\n\n--batchresponse_fixture\nContent-Type: application/http\nContent-ID: 2\n\nHTTP/1.1 404 The specified blob does not exist.\nx-ms-request-id: fixture\nx-ms-error-code: BlobNotFound\nx-ms-version: 2023-11-03\nContent-Length: 110\nContent-Type: application/xml\n\nBlobNotFoundFixture error\n--batchresponse_fixture--" }, "framing": "chunked" } @@ -22121,227 +50009,59 @@ { "at": "/outcome", "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/entries/0/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/board/a.txt" - } - }, - { - "at": "/value/entries/0/size", - "optional": false, - "rule": { - "is": "equal", - "value": 8 - } - }, - { - "at": "/value/entries/0/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-704c5ddfc8cb" - } - }, - { - "at": "/value/entries/0/snapshot", - "optional": true, "rule": { "is": "one_of", "values": [ - null, - "" + "ok", + "error" ] } }, { - "at": "/value/entries/0/version", - "optional": false, - "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.9908400Z" - } - }, - { - "at": "/value/entries/0/is_current_version", - "optional": false, - "rule": { - "is": "equal", - "value": true - } - }, - { - "at": "/value/entries/0/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "JdVa0oOqQAr0ZMdtcTwHrQ==" - } - }, - { - "at": "/value/entries/1/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/board/nested/c.txt" - } - }, - { - "at": "/value/entries/1/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/1/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-48ff0e151ab7" - } - }, - { - "at": "/value/entries/1/snapshot", + "at": "/value/deleted", "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/1/version", - "optional": false, - "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.7881326Z" - } - }, - { - "at": "/value/entries/1/is_current_version", - "optional": false, - "rule": { - "is": "equal", - "value": true - } - }, - { - "at": "/value/entries/1/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "SooI8J03tzeVZJA4QItfMw==" - } - }, - { - "at": "/value/entries/2/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/board/z.txt" - } - }, - { - "at": "/value/entries/2/size", - "optional": false, - "rule": { - "is": "equal", - "value": 2 - } - }, - { - "at": "/value/entries/2/etag", - "optional": false, "rule": { "is": "equal", - "value": "fixture-b905747bf74f" - } - }, - { - "at": "/value/entries/2/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" + "value": [ + "object-tests/batch/a.txt", + "object-tests/batch/b.txt" ] } }, { - "at": "/value/entries/2/version", - "optional": false, - "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.3834597Z" - } - }, - { - "at": "/value/entries/2/is_current_version", - "optional": false, - "rule": { - "is": "equal", - "value": true - } - }, - { - "at": "/value/entries/2/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "Je0by0I7C3IA9IX8X/ccjg==" - } - }, - { - "at": "/value/entries", - "optional": false, - "rule": { - "is": "array_length", - "value": 3 - } - }, - { - "at": "/value/prefixes", - "optional": false, - "rule": { - "is": "array_length", - "value": 0 - } - }, - { - "at": "/value/continuation_token", - "optional": false, + "at": "/value/errors", + "optional": true, "rule": { "is": "equal", - "value": "" + "value": [ + { + "code": "BlobNotFound", + "key": "object-tests/batch/absent.txt", + "status": 404 + } + ] } } ], "refusal": null }, { - "id": "operations/azure/list-separator-keys-delimited", - "profile": "azure", + "id": "operations/azure-hns/delete-many-without-content-id", + "profile": "azure-hns", "lane": "core", - "purpose": "list separator keys delimited", + "purpose": "Report a batch answer whose parts carry no Content-ID as an error. Without one, only the order of the parts would link a result to its key, and a guess could report one key deleted when another failed. Azure echoes the Content-ID of every subrequest; this answer is the recorded one with them removed", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "https://learn.microsoft.com/en-us/rest/api/storageservices/blob-batch" ], + "origin": "constructed", + "derived_from": "operations/azure-hns/delete-many", "call": { - "delimiter": "/", - "op": "list_page", - "prefix": "object-tests/separators/" + "keys": [ + "object-tests/batch/a.txt", + "object-tests/batch/b.txt", + "object-tests/batch/absent.txt" + ], + "op": "delete_many" }, "exchanges": [ { @@ -22353,7 +50073,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "POST" } }, { @@ -22365,11 +50085,11 @@ } }, { - "at": "/body_base64", + "at": "/headers/content-type", "optional": false, "rule": { - "is": "equal", - "value": "" + "is": "matches", + "pattern": "multipart/mixed; boundary=batch_[0-9A-Za-z-]+" } }, { @@ -22385,41 +50105,44 @@ "optional": false, "rule": { "is": "equal", - "value": "list" - } - }, - { - "at": "/query/prefix", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/separators/" + "value": "batch" } }, { - "at": "/query/delimiter", + "at": "", "optional": false, "rule": { - "is": "equal", - "value": "/" + "is": "blob_batch", + "subrequests": [ + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/a.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/b.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/absent.txt" + } + ] } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 200, + "status": 202, "headers": { - "content-type": "application/xml", + "content-type": "multipart/mixed; boundary=batchresponse_fixture", "date": { "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { "encoding": "utf8", - "data": "object-tests/separators//object-tests/separators/..leading2024-01-01T00:00:00.1857029ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-99f23038e5ea1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/separators/a.b/object-tests/separators/dot2024-01-01T00:00:00.2106231ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-ccbcb2d755851application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/separators/double/object-tests/separators/space /object-tests/separators/trailing/" + "data": "--batchresponse_fixture\r\nContent-Type: application/http\r\n\r\nHTTP/1.1 202 Accepted\r\nx-ms-request-id: fixture\r\nx-ms-delete-type-permanent: true\r\nx-ms-version: 2023-11-03\r\n\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\n\r\nHTTP/1.1 202 Accepted\r\nx-ms-request-id: fixture\r\nx-ms-delete-type-permanent: true\r\nx-ms-version: 2023-11-03\r\n\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture--" }, "framing": "chunked" } @@ -22433,197 +50156,29 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/entries/0/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/separators/..leading" - } - }, - { - "at": "/value/entries/0/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/0/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-99f23038e5ea" - } - }, - { - "at": "/value/entries/0/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/0/version", - "optional": false, - "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.1857029Z" - } - }, - { - "at": "/value/entries/0/is_current_version", - "optional": false, - "rule": { - "is": "equal", - "value": true - } - }, - { - "at": "/value/entries/0/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "xMpCOKC5I4INzFCab3WEmw==" - } - }, - { - "at": "/value/entries/1/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/separators/dot" - } - }, - { - "at": "/value/entries/1/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/1/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-ccbcb2d75585" - } - }, - { - "at": "/value/entries/1/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/1/version", - "optional": false, - "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.2106231Z" - } - }, - { - "at": "/value/entries/1/is_current_version", - "optional": false, - "rule": { - "is": "equal", - "value": true - } - }, - { - "at": "/value/entries/1/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "xMpCOKC5I4INzFCab3WEmw==" - } - }, - { - "at": "/value/entries", - "optional": false, - "rule": { - "is": "array_length", - "value": 2 - } - }, - { - "at": "/value/prefixes/0", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/separators/a.b/" - } - }, - { - "at": "/value/prefixes/1", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/separators/double/" - } - }, - { - "at": "/value/prefixes/2", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/separators/space /" - } - }, - { - "at": "/value/prefixes/3", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/separators/trailing/" - } - }, - { - "at": "/value/prefixes", - "optional": false, - "rule": { - "is": "array_length", - "value": 4 - } - }, - { - "at": "/value/continuation_token", - "optional": false, - "rule": { - "is": "equal", - "value": "" + "value": "error" } } ], "refusal": null }, { - "id": "operations/azure/list-separator-keys", - "profile": "azure", + "id": "operations/azure-hns/delete-many-server-busy", + "profile": "azure-hns", "lane": "core", - "purpose": "list separator keys", + "purpose": "Report a batch that Azure answers as a whole with 503 ServerBusy as an error, never as deleted keys. A client may retry up to five times first", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "https://learn.microsoft.com/en-us/rest/api/storageservices/blob-batch" ], + "origin": "transient", + "derived_from": "operations/azure-hns/delete-many", "call": { - "op": "list_page", - "prefix": "object-tests/separators/" + "keys": [ + "object-tests/batch/a.txt", + "object-tests/batch/b.txt", + "object-tests/batch/absent.txt" + ], + "op": "delete_many" }, "exchanges": [ { @@ -22635,7 +50190,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "POST" } }, { @@ -22647,11 +50202,11 @@ } }, { - "at": "/body_base64", + "at": "/headers/content-type", "optional": false, "rule": { - "is": "equal", - "value": "" + "is": "matches", + "pattern": "multipart/mixed; boundary=batch_[0-9A-Za-z-]+" } }, { @@ -22667,446 +50222,222 @@ "optional": false, "rule": { "is": "equal", - "value": "list" + "value": "batch" } }, { - "at": "/query/prefix", + "at": "", "optional": false, "rule": { - "is": "equal", - "value": "object-tests/separators/" + "is": "blob_batch", + "subrequests": [ + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/a.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/b.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/absent.txt" + } + ] } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 200, + "status": 503, "headers": { "content-type": "application/xml", "date": { "from": "now" }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + "x-ms-error-code": "ServerBusy" }, "body": { "encoding": "utf8", - "data": "object-tests/separators/object-tests/separators/..leading2024-01-01T00:00:00.1857029ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-99f23038e5ea1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/separators/a.b/c2024-01-01T00:00:00.4918444ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-4a4f8766cc8e1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/separators/dot2024-01-01T00:00:00.2106231ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-ccbcb2d755851application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/separators/double//slash2024-01-01T00:00:00.9957719ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-32b8d82fce871application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/separators/space /x2024-01-01T00:00:00.8166959ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-0b64e32539cd1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/separators/trailing/2024-01-01T00:00:00.6886650ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-3be5b05a5c3b1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrue" - }, - "framing": "chunked" + "data": "ServerBusyFixture error" + } } } ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/entries/0/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/separators/..leading" - } - }, - { - "at": "/value/entries/0/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/0/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-99f23038e5ea" - } - }, - { - "at": "/value/entries/0/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/0/version", - "optional": false, - "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.1857029Z" - } - }, - { - "at": "/value/entries/0/is_current_version", - "optional": false, - "rule": { - "is": "equal", - "value": true - } - }, - { - "at": "/value/entries/0/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "xMpCOKC5I4INzFCab3WEmw==" - } - }, - { - "at": "/value/entries/1/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/separators/a.b/c" - } - }, - { - "at": "/value/entries/1/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/1/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-4a4f8766cc8e" - } - }, - { - "at": "/value/entries/1/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/1/version", - "optional": false, - "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.4918444Z" - } - }, - { - "at": "/value/entries/1/is_current_version", - "optional": false, - "rule": { - "is": "equal", - "value": true - } - }, - { - "at": "/value/entries/1/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "xMpCOKC5I4INzFCab3WEmw==" - } - }, - { - "at": "/value/entries/2/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/separators/dot" - } - }, - { - "at": "/value/entries/2/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/2/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-ccbcb2d75585" - } - }, - { - "at": "/value/entries/2/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/2/version", - "optional": false, - "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.2106231Z" - } - }, - { - "at": "/value/entries/2/is_current_version", - "optional": false, - "rule": { - "is": "equal", - "value": true - } - }, - { - "at": "/value/entries/2/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "xMpCOKC5I4INzFCab3WEmw==" - } - }, - { - "at": "/value/entries/3/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/separators/double//slash" - } - }, - { - "at": "/value/entries/3/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/3/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-32b8d82fce87" - } - }, - { - "at": "/value/entries/3/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/3/version", - "optional": false, - "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.9957719Z" - } - }, - { - "at": "/value/entries/3/is_current_version", - "optional": false, - "rule": { - "is": "equal", - "value": true - } - }, - { - "at": "/value/entries/3/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "xMpCOKC5I4INzFCab3WEmw==" - } - }, - { - "at": "/value/entries/4/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/separators/space /x" - } - }, - { - "at": "/value/entries/4/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/4/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-0b64e32539cd" - } - }, - { - "at": "/value/entries/4/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/4/version", - "optional": false, - "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.8166959Z" - } - }, - { - "at": "/value/entries/4/is_current_version", - "optional": false, - "rule": { - "is": "equal", - "value": true - } - }, - { - "at": "/value/entries/4/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "xMpCOKC5I4INzFCab3WEmw==" - } - }, - { - "at": "/value/entries/5/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/separators/trailing/" - } - }, - { - "at": "/value/entries/5/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/5/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-3be5b05a5c3b" - } - }, - { - "at": "/value/entries/5/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/5/version", - "optional": false, - "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.6886650Z" - } - }, - { - "at": "/value/entries/5/is_current_version", - "optional": false, - "rule": { - "is": "equal", - "value": true - } - }, - { - "at": "/value/entries/5/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "xMpCOKC5I4INzFCab3WEmw==" - } - }, - { - "at": "/value/entries", - "optional": false, - "rule": { - "is": "array_length", - "value": 6 - } }, { - "at": "/value/prefixes", - "optional": false, - "rule": { - "is": "array_length", - "value": 0 - } + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "POST" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture" + } + }, + { + "at": "/headers/content-type", + "optional": false, + "rule": { + "is": "matches", + "pattern": "multipart/mixed; boundary=batch_[0-9A-Za-z-]+" + } + }, + { + "at": "/query/restype", + "optional": false, + "rule": { + "is": "equal", + "value": "container" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "batch" + } + }, + { + "at": "", + "optional": false, + "rule": { + "is": "blob_batch", + "subrequests": [ + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/a.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/b.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/absent.txt" + } + ] + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 503, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "ServerBusy" + }, + "body": { + "encoding": "utf8", + "data": "ServerBusyFixture error" + } + } + } + ], + "optional": true }, { - "at": "/value/continuation_token", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - } - ], - "refusal": null - }, - { - "id": "operations/azure/list-snapshots-after-delete", - "profile": "azure", - "lane": "core", - "purpose": "list snapshots after delete", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "include": [ - "snapshots" - ], - "op": "list_page", - "prefix": "object-tests/snapshots-all/" - }, - "exchanges": [ + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "POST" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture" + } + }, + { + "at": "/headers/content-type", + "optional": false, + "rule": { + "is": "matches", + "pattern": "multipart/mixed; boundary=batch_[0-9A-Za-z-]+" + } + }, + { + "at": "/query/restype", + "optional": false, + "rule": { + "is": "equal", + "value": "container" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "batch" + } + }, + { + "at": "", + "optional": false, + "rule": { + "is": "blob_batch", + "subrequests": [ + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/a.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/b.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/absent.txt" + } + ] + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 503, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "ServerBusy" + }, + "body": { + "encoding": "utf8", + "data": "ServerBusyFixture error" + } + } + } + ], + "optional": true + }, { "alternatives": [ { @@ -23116,7 +50447,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "POST" } }, { @@ -23128,11 +50459,11 @@ } }, { - "at": "/body_base64", + "at": "/headers/content-type", "optional": false, "rule": { - "is": "equal", - "value": "" + "is": "matches", + "pattern": "multipart/mixed; boundary=batch_[0-9A-Za-z-]+" } }, { @@ -23148,46 +50479,222 @@ "optional": false, "rule": { "is": "equal", - "value": "list" + "value": "batch" } }, { - "at": "/query/prefix", + "at": "", + "optional": false, + "rule": { + "is": "blob_batch", + "subrequests": [ + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/a.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/b.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/absent.txt" + } + ] + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 503, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "ServerBusy" + }, + "body": { + "encoding": "utf8", + "data": "ServerBusyFixture error" + } + } + } + ], + "optional": true + }, + { + "alternatives": [ + { + "request": [ + { + "at": "/method", "optional": false, "rule": { "is": "equal", - "value": "object-tests/snapshots-all/" + "value": "POST" } }, { - "at": "/query/include", + "at": "/path", "optional": false, "rule": { "is": "equal", - "value": "snapshots" + "value": "/fixture" + } + }, + { + "at": "/headers/content-type", + "optional": false, + "rule": { + "is": "matches", + "pattern": "multipart/mixed; boundary=batch_[0-9A-Za-z-]+" + } + }, + { + "at": "/query/restype", + "optional": false, + "rule": { + "is": "equal", + "value": "container" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "batch" + } + }, + { + "at": "", + "optional": false, + "rule": { + "is": "blob_batch", + "subrequests": [ + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/a.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/b.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/absent.txt" + } + ] } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 200, + "status": 503, "headers": { "content-type": "application/xml", "date": { "from": "now" }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + "x-ms-error-code": "ServerBusy" }, "body": { "encoding": "utf8", - "data": "object-tests/snapshots-all/" + "data": "ServerBusyFixture error" + } + } + } + ], + "optional": true + }, + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "POST" + } }, - "framing": "chunked" + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture" + } + }, + { + "at": "/headers/content-type", + "optional": false, + "rule": { + "is": "matches", + "pattern": "multipart/mixed; boundary=batch_[0-9A-Za-z-]+" + } + }, + { + "at": "/query/restype", + "optional": false, + "rule": { + "is": "equal", + "value": "container" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "batch" + } + }, + { + "at": "", + "optional": false, + "rule": { + "is": "blob_batch", + "subrequests": [ + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/a.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/b.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/absent.txt" + } + ] + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 503, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "ServerBusy" + }, + "body": { + "encoding": "utf8", + "data": "ServerBusyFixture error" + } } } - ] + ], + "optional": true } ], "expect": [ @@ -23196,50 +50703,296 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/entries", - "optional": false, - "rule": { - "is": "array_length", - "value": 0 + "value": "error" } }, { - "at": "/value/prefixes", + "at": "/status", "optional": false, "rule": { - "is": "array_length", - "value": 0 + "is": "equal", + "value": 503 } }, { - "at": "/value/continuation_token", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "ServerBusy" } } ], "refusal": null }, { - "id": "operations/azure/list-snapshots-after-snapshots-deleted", - "profile": "azure", + "id": "operations/azure-hns/delete-many-256", + "profile": "azure-hns", "lane": "core", - "purpose": "list snapshots after snapshots deleted", + "purpose": "Delete 256 keys in one batch, the most Azure takes", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "https://learn.microsoft.com/en-us/rest/api/storageservices/blob-batch" ], "call": { - "include": [ - "snapshots" + "keys": [ + "object-tests/batch/many-0000.txt", + "object-tests/batch/many-0001.txt", + "object-tests/batch/many-0002.txt", + "object-tests/batch/many-0003.txt", + "object-tests/batch/many-0004.txt", + "object-tests/batch/many-0005.txt", + "object-tests/batch/many-0006.txt", + "object-tests/batch/many-0007.txt", + "object-tests/batch/many-0008.txt", + "object-tests/batch/many-0009.txt", + "object-tests/batch/many-0010.txt", + "object-tests/batch/many-0011.txt", + "object-tests/batch/many-0012.txt", + "object-tests/batch/many-0013.txt", + "object-tests/batch/many-0014.txt", + "object-tests/batch/many-0015.txt", + "object-tests/batch/many-0016.txt", + "object-tests/batch/many-0017.txt", + "object-tests/batch/many-0018.txt", + "object-tests/batch/many-0019.txt", + "object-tests/batch/many-0020.txt", + "object-tests/batch/many-0021.txt", + "object-tests/batch/many-0022.txt", + "object-tests/batch/many-0023.txt", + "object-tests/batch/many-0024.txt", + "object-tests/batch/many-0025.txt", + "object-tests/batch/many-0026.txt", + "object-tests/batch/many-0027.txt", + "object-tests/batch/many-0028.txt", + "object-tests/batch/many-0029.txt", + "object-tests/batch/many-0030.txt", + "object-tests/batch/many-0031.txt", + "object-tests/batch/many-0032.txt", + "object-tests/batch/many-0033.txt", + "object-tests/batch/many-0034.txt", + "object-tests/batch/many-0035.txt", + "object-tests/batch/many-0036.txt", + "object-tests/batch/many-0037.txt", + "object-tests/batch/many-0038.txt", + "object-tests/batch/many-0039.txt", + "object-tests/batch/many-0040.txt", + "object-tests/batch/many-0041.txt", + "object-tests/batch/many-0042.txt", + "object-tests/batch/many-0043.txt", + "object-tests/batch/many-0044.txt", + "object-tests/batch/many-0045.txt", + "object-tests/batch/many-0046.txt", + "object-tests/batch/many-0047.txt", + "object-tests/batch/many-0048.txt", + "object-tests/batch/many-0049.txt", + "object-tests/batch/many-0050.txt", + "object-tests/batch/many-0051.txt", + "object-tests/batch/many-0052.txt", + "object-tests/batch/many-0053.txt", + "object-tests/batch/many-0054.txt", + "object-tests/batch/many-0055.txt", + "object-tests/batch/many-0056.txt", + "object-tests/batch/many-0057.txt", + "object-tests/batch/many-0058.txt", + "object-tests/batch/many-0059.txt", + "object-tests/batch/many-0060.txt", + "object-tests/batch/many-0061.txt", + "object-tests/batch/many-0062.txt", + "object-tests/batch/many-0063.txt", + "object-tests/batch/many-0064.txt", + "object-tests/batch/many-0065.txt", + "object-tests/batch/many-0066.txt", + "object-tests/batch/many-0067.txt", + "object-tests/batch/many-0068.txt", + "object-tests/batch/many-0069.txt", + "object-tests/batch/many-0070.txt", + "object-tests/batch/many-0071.txt", + "object-tests/batch/many-0072.txt", + "object-tests/batch/many-0073.txt", + "object-tests/batch/many-0074.txt", + "object-tests/batch/many-0075.txt", + "object-tests/batch/many-0076.txt", + "object-tests/batch/many-0077.txt", + "object-tests/batch/many-0078.txt", + "object-tests/batch/many-0079.txt", + "object-tests/batch/many-0080.txt", + "object-tests/batch/many-0081.txt", + "object-tests/batch/many-0082.txt", + "object-tests/batch/many-0083.txt", + "object-tests/batch/many-0084.txt", + "object-tests/batch/many-0085.txt", + "object-tests/batch/many-0086.txt", + "object-tests/batch/many-0087.txt", + "object-tests/batch/many-0088.txt", + "object-tests/batch/many-0089.txt", + "object-tests/batch/many-0090.txt", + "object-tests/batch/many-0091.txt", + "object-tests/batch/many-0092.txt", + "object-tests/batch/many-0093.txt", + "object-tests/batch/many-0094.txt", + "object-tests/batch/many-0095.txt", + "object-tests/batch/many-0096.txt", + "object-tests/batch/many-0097.txt", + "object-tests/batch/many-0098.txt", + "object-tests/batch/many-0099.txt", + "object-tests/batch/many-0100.txt", + "object-tests/batch/many-0101.txt", + "object-tests/batch/many-0102.txt", + "object-tests/batch/many-0103.txt", + "object-tests/batch/many-0104.txt", + "object-tests/batch/many-0105.txt", + "object-tests/batch/many-0106.txt", + "object-tests/batch/many-0107.txt", + "object-tests/batch/many-0108.txt", + "object-tests/batch/many-0109.txt", + "object-tests/batch/many-0110.txt", + "object-tests/batch/many-0111.txt", + "object-tests/batch/many-0112.txt", + "object-tests/batch/many-0113.txt", + "object-tests/batch/many-0114.txt", + "object-tests/batch/many-0115.txt", + "object-tests/batch/many-0116.txt", + "object-tests/batch/many-0117.txt", + "object-tests/batch/many-0118.txt", + "object-tests/batch/many-0119.txt", + "object-tests/batch/many-0120.txt", + "object-tests/batch/many-0121.txt", + "object-tests/batch/many-0122.txt", + "object-tests/batch/many-0123.txt", + "object-tests/batch/many-0124.txt", + "object-tests/batch/many-0125.txt", + "object-tests/batch/many-0126.txt", + "object-tests/batch/many-0127.txt", + "object-tests/batch/many-0128.txt", + "object-tests/batch/many-0129.txt", + "object-tests/batch/many-0130.txt", + "object-tests/batch/many-0131.txt", + "object-tests/batch/many-0132.txt", + "object-tests/batch/many-0133.txt", + "object-tests/batch/many-0134.txt", + "object-tests/batch/many-0135.txt", + "object-tests/batch/many-0136.txt", + "object-tests/batch/many-0137.txt", + "object-tests/batch/many-0138.txt", + "object-tests/batch/many-0139.txt", + "object-tests/batch/many-0140.txt", + "object-tests/batch/many-0141.txt", + "object-tests/batch/many-0142.txt", + "object-tests/batch/many-0143.txt", + "object-tests/batch/many-0144.txt", + "object-tests/batch/many-0145.txt", + "object-tests/batch/many-0146.txt", + "object-tests/batch/many-0147.txt", + "object-tests/batch/many-0148.txt", + "object-tests/batch/many-0149.txt", + "object-tests/batch/many-0150.txt", + "object-tests/batch/many-0151.txt", + "object-tests/batch/many-0152.txt", + "object-tests/batch/many-0153.txt", + "object-tests/batch/many-0154.txt", + "object-tests/batch/many-0155.txt", + "object-tests/batch/many-0156.txt", + "object-tests/batch/many-0157.txt", + "object-tests/batch/many-0158.txt", + "object-tests/batch/many-0159.txt", + "object-tests/batch/many-0160.txt", + "object-tests/batch/many-0161.txt", + "object-tests/batch/many-0162.txt", + "object-tests/batch/many-0163.txt", + "object-tests/batch/many-0164.txt", + "object-tests/batch/many-0165.txt", + "object-tests/batch/many-0166.txt", + "object-tests/batch/many-0167.txt", + "object-tests/batch/many-0168.txt", + "object-tests/batch/many-0169.txt", + "object-tests/batch/many-0170.txt", + "object-tests/batch/many-0171.txt", + "object-tests/batch/many-0172.txt", + "object-tests/batch/many-0173.txt", + "object-tests/batch/many-0174.txt", + "object-tests/batch/many-0175.txt", + "object-tests/batch/many-0176.txt", + "object-tests/batch/many-0177.txt", + "object-tests/batch/many-0178.txt", + "object-tests/batch/many-0179.txt", + "object-tests/batch/many-0180.txt", + "object-tests/batch/many-0181.txt", + "object-tests/batch/many-0182.txt", + "object-tests/batch/many-0183.txt", + "object-tests/batch/many-0184.txt", + "object-tests/batch/many-0185.txt", + "object-tests/batch/many-0186.txt", + "object-tests/batch/many-0187.txt", + "object-tests/batch/many-0188.txt", + "object-tests/batch/many-0189.txt", + "object-tests/batch/many-0190.txt", + "object-tests/batch/many-0191.txt", + "object-tests/batch/many-0192.txt", + "object-tests/batch/many-0193.txt", + "object-tests/batch/many-0194.txt", + "object-tests/batch/many-0195.txt", + "object-tests/batch/many-0196.txt", + "object-tests/batch/many-0197.txt", + "object-tests/batch/many-0198.txt", + "object-tests/batch/many-0199.txt", + "object-tests/batch/many-0200.txt", + "object-tests/batch/many-0201.txt", + "object-tests/batch/many-0202.txt", + "object-tests/batch/many-0203.txt", + "object-tests/batch/many-0204.txt", + "object-tests/batch/many-0205.txt", + "object-tests/batch/many-0206.txt", + "object-tests/batch/many-0207.txt", + "object-tests/batch/many-0208.txt", + "object-tests/batch/many-0209.txt", + "object-tests/batch/many-0210.txt", + "object-tests/batch/many-0211.txt", + "object-tests/batch/many-0212.txt", + "object-tests/batch/many-0213.txt", + "object-tests/batch/many-0214.txt", + "object-tests/batch/many-0215.txt", + "object-tests/batch/many-0216.txt", + "object-tests/batch/many-0217.txt", + "object-tests/batch/many-0218.txt", + "object-tests/batch/many-0219.txt", + "object-tests/batch/many-0220.txt", + "object-tests/batch/many-0221.txt", + "object-tests/batch/many-0222.txt", + "object-tests/batch/many-0223.txt", + "object-tests/batch/many-0224.txt", + "object-tests/batch/many-0225.txt", + "object-tests/batch/many-0226.txt", + "object-tests/batch/many-0227.txt", + "object-tests/batch/many-0228.txt", + "object-tests/batch/many-0229.txt", + "object-tests/batch/many-0230.txt", + "object-tests/batch/many-0231.txt", + "object-tests/batch/many-0232.txt", + "object-tests/batch/many-0233.txt", + "object-tests/batch/many-0234.txt", + "object-tests/batch/many-0235.txt", + "object-tests/batch/many-0236.txt", + "object-tests/batch/many-0237.txt", + "object-tests/batch/many-0238.txt", + "object-tests/batch/many-0239.txt", + "object-tests/batch/many-0240.txt", + "object-tests/batch/many-0241.txt", + "object-tests/batch/many-0242.txt", + "object-tests/batch/many-0243.txt", + "object-tests/batch/many-0244.txt", + "object-tests/batch/many-0245.txt", + "object-tests/batch/many-0246.txt", + "object-tests/batch/many-0247.txt", + "object-tests/batch/many-0248.txt", + "object-tests/batch/many-0249.txt", + "object-tests/batch/many-0250.txt", + "object-tests/batch/many-0251.txt", + "object-tests/batch/many-0252.txt", + "object-tests/batch/many-0253.txt", + "object-tests/batch/many-0254.txt", + "object-tests/batch/many-0255.txt" ], - "op": "list_page", - "prefix": "object-tests/snapshots-only/" + "op": "delete_many" }, "exchanges": [ { @@ -23251,7 +51004,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "POST" } }, { @@ -23263,11 +51016,11 @@ } }, { - "at": "/body_base64", + "at": "/headers/content-type", "optional": false, "rule": { - "is": "equal", - "value": "" + "is": "matches", + "pattern": "multipart/mixed; boundary=batch_[0-9A-Za-z-]+" } }, { @@ -23283,158 +51036,2641 @@ "optional": false, "rule": { "is": "equal", - "value": "list" - } - }, - { - "at": "/query/prefix", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/snapshots-only/" + "value": "batch" } }, { - "at": "/query/include", - "optional": false, - "rule": { - "is": "equal", - "value": "snapshots" + "at": "", + "optional": false, + "rule": { + "is": "blob_batch", + "subrequests": [ + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0000.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0001.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0002.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0003.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0004.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0005.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0006.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0007.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0008.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0009.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0010.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0011.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0012.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0013.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0014.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0015.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0016.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0017.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0018.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0019.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0020.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0021.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0022.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0023.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0024.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0025.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0026.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0027.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0028.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0029.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0030.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0031.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0032.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0033.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0034.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0035.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0036.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0037.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0038.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0039.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0040.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0041.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0042.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0043.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0044.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0045.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0046.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0047.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0048.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0049.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0050.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0051.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0052.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0053.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0054.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0055.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0056.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0057.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0058.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0059.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0060.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0061.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0062.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0063.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0064.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0065.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0066.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0067.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0068.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0069.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0070.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0071.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0072.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0073.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0074.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0075.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0076.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0077.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0078.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0079.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0080.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0081.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0082.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0083.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0084.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0085.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0086.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0087.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0088.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0089.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0090.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0091.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0092.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0093.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0094.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0095.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0096.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0097.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0098.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0099.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0100.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0101.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0102.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0103.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0104.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0105.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0106.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0107.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0108.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0109.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0110.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0111.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0112.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0113.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0114.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0115.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0116.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0117.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0118.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0119.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0120.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0121.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0122.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0123.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0124.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0125.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0126.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0127.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0128.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0129.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0130.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0131.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0132.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0133.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0134.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0135.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0136.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0137.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0138.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0139.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0140.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0141.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0142.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0143.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0144.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0145.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0146.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0147.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0148.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0149.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0150.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0151.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0152.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0153.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0154.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0155.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0156.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0157.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0158.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0159.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0160.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0161.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0162.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0163.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0164.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0165.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0166.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0167.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0168.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0169.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0170.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0171.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0172.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0173.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0174.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0175.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0176.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0177.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0178.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0179.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0180.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0181.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0182.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0183.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0184.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0185.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0186.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0187.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0188.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0189.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0190.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0191.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0192.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0193.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0194.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0195.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0196.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0197.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0198.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0199.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0200.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0201.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0202.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0203.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0204.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0205.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0206.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0207.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0208.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0209.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0210.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0211.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0212.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0213.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0214.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0215.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0216.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0217.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0218.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0219.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0220.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0221.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0222.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0223.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0224.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0225.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0226.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0227.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0228.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0229.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0230.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0231.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0232.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0233.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0234.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0235.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0236.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0237.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0238.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0239.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0240.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0241.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0242.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0243.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0244.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0245.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0246.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0247.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0248.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0249.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0250.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0251.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0252.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0253.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0254.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0255.txt" + } + ] } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 200, + "status": 202, "headers": { - "content-type": "application/xml", + "content-type": "multipart/mixed; boundary=batchresponse_fixture", "date": { "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { "encoding": "utf8", - "data": "object-tests/snapshots-only/object-tests/snapshots-only/object.txt2024-01-01T00:00:00.6170785ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-493478beeeaf4application/octet-streamTYtghPPRZ7dsrGaiKpG+Ag==BlockBlobHottrueunlockedavailabletrue" + "data": "--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 0\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 1\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 2\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 3\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 4\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 5\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 6\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 7\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 8\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 9\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 10\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 11\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 12\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 13\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 14\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 15\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 16\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 17\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 18\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 19\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 20\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 21\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 22\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 23\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 24\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 25\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 26\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 27\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 28\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 29\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 30\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 31\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 32\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 33\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 34\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 35\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 36\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 37\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 38\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 39\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 40\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 41\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 42\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 43\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 44\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 45\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 46\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 47\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 48\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 49\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 50\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 51\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 52\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 53\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 54\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 55\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 56\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 57\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 58\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 59\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 60\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 61\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 62\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 63\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 64\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 65\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 66\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 67\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 68\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 69\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 70\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 71\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 72\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 73\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 74\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 75\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 76\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 77\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 78\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 79\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 80\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 81\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 82\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 83\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 84\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 85\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 86\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 87\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 88\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 89\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 90\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 91\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 92\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 93\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 94\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 95\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 96\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 97\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 98\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 99\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 100\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 101\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 102\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 103\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 104\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 105\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 106\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 107\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 108\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 109\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 110\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 111\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 112\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 113\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 114\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 115\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 116\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 117\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 118\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 119\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 120\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 121\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 122\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 123\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 124\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 125\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 126\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 127\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 128\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 129\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 130\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 131\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 132\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 133\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 134\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 135\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 136\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 137\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 138\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 139\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 140\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 141\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 142\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 143\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 144\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 145\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 146\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 147\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 148\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 149\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 150\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 151\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 152\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 153\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 154\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 155\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 156\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 157\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 158\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 159\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 160\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 161\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 162\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 163\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 164\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 165\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 166\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 167\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 168\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 169\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 170\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 171\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 172\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 173\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 174\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 175\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 176\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 177\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 178\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 179\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 180\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 181\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 182\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 183\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 184\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 185\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 186\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 187\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 188\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 189\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 190\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 191\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 192\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 193\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 194\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 195\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 196\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 197\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 198\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 199\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 200\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 201\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 202\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 203\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 204\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 205\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 206\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 207\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 208\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 209\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 210\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 211\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 212\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 213\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 214\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 215\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 216\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 217\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 218\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 219\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 220\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 221\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 222\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 223\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 224\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 225\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 226\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 227\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 228\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 229\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 230\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 231\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 232\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 233\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 234\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 235\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 236\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 237\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 238\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 239\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 240\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 241\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 242\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 243\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 244\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 245\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 246\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 247\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 248\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 249\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 250\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 251\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 252\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 253\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 254\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 255\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture--" }, "framing": "chunked" } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/entries/0/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/snapshots-only/object.txt" - } - }, - { - "at": "/value/entries/0/size", - "optional": false, - "rule": { - "is": "equal", - "value": 4 - } - }, - { - "at": "/value/entries/0/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-493478beeeaf" - } - }, - { - "at": "/value/entries/0/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/deleted", + "optional": false, + "rule": { + "is": "equal", + "value": [] + } + }, + { + "at": "/value/errors", + "optional": false, + "rule": { + "is": "equal", + "value": [ + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0000.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0001.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0002.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0003.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0004.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0005.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0006.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0007.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0008.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0009.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0010.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0011.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0012.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0013.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0014.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0015.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0016.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0017.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0018.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0019.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0020.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0021.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0022.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0023.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0024.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0025.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0026.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0027.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0028.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0029.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0030.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0031.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0032.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0033.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0034.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0035.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0036.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0037.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0038.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0039.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0040.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0041.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0042.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0043.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0044.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0045.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0046.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0047.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0048.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0049.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0050.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0051.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0052.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0053.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0054.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0055.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0056.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0057.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0058.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0059.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0060.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0061.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0062.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0063.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0064.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0065.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0066.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0067.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0068.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0069.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0070.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0071.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0072.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0073.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0074.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0075.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0076.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0077.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0078.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0079.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0080.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0081.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0082.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0083.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0084.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0085.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0086.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0087.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0088.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0089.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0090.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0091.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0092.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0093.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0094.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0095.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0096.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0097.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0098.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0099.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0100.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0101.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0102.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0103.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0104.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0105.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0106.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0107.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0108.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0109.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0110.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0111.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0112.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0113.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0114.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0115.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0116.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0117.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0118.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0119.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0120.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0121.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0122.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0123.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0124.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0125.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0126.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0127.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0128.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0129.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0130.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0131.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0132.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0133.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0134.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0135.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0136.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0137.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0138.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0139.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0140.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0141.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0142.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0143.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0144.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0145.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0146.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0147.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0148.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0149.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0150.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0151.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0152.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0153.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0154.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0155.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0156.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0157.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0158.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0159.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0160.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0161.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0162.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0163.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0164.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0165.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0166.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0167.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0168.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0169.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0170.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0171.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0172.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0173.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0174.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0175.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0176.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0177.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0178.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0179.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0180.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0181.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0182.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0183.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0184.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0185.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0186.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0187.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0188.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0189.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0190.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0191.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0192.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0193.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0194.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0195.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0196.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0197.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0198.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0199.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0200.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0201.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0202.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0203.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0204.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0205.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0206.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0207.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0208.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0209.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0210.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0211.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0212.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0213.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0214.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0215.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0216.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0217.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0218.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0219.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0220.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0221.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0222.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0223.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0224.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0225.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0226.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0227.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0228.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0229.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0230.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0231.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0232.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0233.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0234.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0235.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0236.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0237.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0238.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0239.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0240.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0241.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0242.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0243.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0244.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0245.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0246.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0247.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0248.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0249.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0250.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0251.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0252.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0253.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0254.txt", + "status": 404 + }, + { + "code": "BlobNotFound", + "key": "object-tests/batch/many-0255.txt", + "status": 404 + } ] } - }, - { - "at": "/value/entries/0/version", - "optional": false, - "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.6170785Z" - } - }, - { - "at": "/value/entries/0/is_current_version", - "optional": false, - "rule": { - "is": "equal", - "value": true - } - }, - { - "at": "/value/entries/0/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "TYtghPPRZ7dsrGaiKpG+Ag==" - } - }, - { - "at": "/value/entries", - "optional": false, - "rule": { - "is": "array_length", - "value": 1 - } - }, - { - "at": "/value/prefixes", - "optional": false, - "rule": { - "is": "array_length", - "value": 0 - } - }, - { - "at": "/value/continuation_token", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } } ], "refusal": null }, { - "id": "operations/azure/list-snapshots-and-versions", - "profile": "azure", + "id": "operations/azure-hns/delete-many-257", + "profile": "azure-hns", "lane": "core", - "purpose": "list snapshots and versions", + "purpose": "Report a batch of 257 deletions, one more than Azure takes, as an error. Azure answers 202 with one part and no Content-ID, 400 ExceedsMaxBatchRequestCount, for the whole batch, not one part per deletion. A client may refuse it before sending", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "https://learn.microsoft.com/en-us/rest/api/storageservices/blob-batch" ], "call": { - "include": [ - "snapshots", - "versions" + "keys": [ + "object-tests/batch/many-0000.txt", + "object-tests/batch/many-0001.txt", + "object-tests/batch/many-0002.txt", + "object-tests/batch/many-0003.txt", + "object-tests/batch/many-0004.txt", + "object-tests/batch/many-0005.txt", + "object-tests/batch/many-0006.txt", + "object-tests/batch/many-0007.txt", + "object-tests/batch/many-0008.txt", + "object-tests/batch/many-0009.txt", + "object-tests/batch/many-0010.txt", + "object-tests/batch/many-0011.txt", + "object-tests/batch/many-0012.txt", + "object-tests/batch/many-0013.txt", + "object-tests/batch/many-0014.txt", + "object-tests/batch/many-0015.txt", + "object-tests/batch/many-0016.txt", + "object-tests/batch/many-0017.txt", + "object-tests/batch/many-0018.txt", + "object-tests/batch/many-0019.txt", + "object-tests/batch/many-0020.txt", + "object-tests/batch/many-0021.txt", + "object-tests/batch/many-0022.txt", + "object-tests/batch/many-0023.txt", + "object-tests/batch/many-0024.txt", + "object-tests/batch/many-0025.txt", + "object-tests/batch/many-0026.txt", + "object-tests/batch/many-0027.txt", + "object-tests/batch/many-0028.txt", + "object-tests/batch/many-0029.txt", + "object-tests/batch/many-0030.txt", + "object-tests/batch/many-0031.txt", + "object-tests/batch/many-0032.txt", + "object-tests/batch/many-0033.txt", + "object-tests/batch/many-0034.txt", + "object-tests/batch/many-0035.txt", + "object-tests/batch/many-0036.txt", + "object-tests/batch/many-0037.txt", + "object-tests/batch/many-0038.txt", + "object-tests/batch/many-0039.txt", + "object-tests/batch/many-0040.txt", + "object-tests/batch/many-0041.txt", + "object-tests/batch/many-0042.txt", + "object-tests/batch/many-0043.txt", + "object-tests/batch/many-0044.txt", + "object-tests/batch/many-0045.txt", + "object-tests/batch/many-0046.txt", + "object-tests/batch/many-0047.txt", + "object-tests/batch/many-0048.txt", + "object-tests/batch/many-0049.txt", + "object-tests/batch/many-0050.txt", + "object-tests/batch/many-0051.txt", + "object-tests/batch/many-0052.txt", + "object-tests/batch/many-0053.txt", + "object-tests/batch/many-0054.txt", + "object-tests/batch/many-0055.txt", + "object-tests/batch/many-0056.txt", + "object-tests/batch/many-0057.txt", + "object-tests/batch/many-0058.txt", + "object-tests/batch/many-0059.txt", + "object-tests/batch/many-0060.txt", + "object-tests/batch/many-0061.txt", + "object-tests/batch/many-0062.txt", + "object-tests/batch/many-0063.txt", + "object-tests/batch/many-0064.txt", + "object-tests/batch/many-0065.txt", + "object-tests/batch/many-0066.txt", + "object-tests/batch/many-0067.txt", + "object-tests/batch/many-0068.txt", + "object-tests/batch/many-0069.txt", + "object-tests/batch/many-0070.txt", + "object-tests/batch/many-0071.txt", + "object-tests/batch/many-0072.txt", + "object-tests/batch/many-0073.txt", + "object-tests/batch/many-0074.txt", + "object-tests/batch/many-0075.txt", + "object-tests/batch/many-0076.txt", + "object-tests/batch/many-0077.txt", + "object-tests/batch/many-0078.txt", + "object-tests/batch/many-0079.txt", + "object-tests/batch/many-0080.txt", + "object-tests/batch/many-0081.txt", + "object-tests/batch/many-0082.txt", + "object-tests/batch/many-0083.txt", + "object-tests/batch/many-0084.txt", + "object-tests/batch/many-0085.txt", + "object-tests/batch/many-0086.txt", + "object-tests/batch/many-0087.txt", + "object-tests/batch/many-0088.txt", + "object-tests/batch/many-0089.txt", + "object-tests/batch/many-0090.txt", + "object-tests/batch/many-0091.txt", + "object-tests/batch/many-0092.txt", + "object-tests/batch/many-0093.txt", + "object-tests/batch/many-0094.txt", + "object-tests/batch/many-0095.txt", + "object-tests/batch/many-0096.txt", + "object-tests/batch/many-0097.txt", + "object-tests/batch/many-0098.txt", + "object-tests/batch/many-0099.txt", + "object-tests/batch/many-0100.txt", + "object-tests/batch/many-0101.txt", + "object-tests/batch/many-0102.txt", + "object-tests/batch/many-0103.txt", + "object-tests/batch/many-0104.txt", + "object-tests/batch/many-0105.txt", + "object-tests/batch/many-0106.txt", + "object-tests/batch/many-0107.txt", + "object-tests/batch/many-0108.txt", + "object-tests/batch/many-0109.txt", + "object-tests/batch/many-0110.txt", + "object-tests/batch/many-0111.txt", + "object-tests/batch/many-0112.txt", + "object-tests/batch/many-0113.txt", + "object-tests/batch/many-0114.txt", + "object-tests/batch/many-0115.txt", + "object-tests/batch/many-0116.txt", + "object-tests/batch/many-0117.txt", + "object-tests/batch/many-0118.txt", + "object-tests/batch/many-0119.txt", + "object-tests/batch/many-0120.txt", + "object-tests/batch/many-0121.txt", + "object-tests/batch/many-0122.txt", + "object-tests/batch/many-0123.txt", + "object-tests/batch/many-0124.txt", + "object-tests/batch/many-0125.txt", + "object-tests/batch/many-0126.txt", + "object-tests/batch/many-0127.txt", + "object-tests/batch/many-0128.txt", + "object-tests/batch/many-0129.txt", + "object-tests/batch/many-0130.txt", + "object-tests/batch/many-0131.txt", + "object-tests/batch/many-0132.txt", + "object-tests/batch/many-0133.txt", + "object-tests/batch/many-0134.txt", + "object-tests/batch/many-0135.txt", + "object-tests/batch/many-0136.txt", + "object-tests/batch/many-0137.txt", + "object-tests/batch/many-0138.txt", + "object-tests/batch/many-0139.txt", + "object-tests/batch/many-0140.txt", + "object-tests/batch/many-0141.txt", + "object-tests/batch/many-0142.txt", + "object-tests/batch/many-0143.txt", + "object-tests/batch/many-0144.txt", + "object-tests/batch/many-0145.txt", + "object-tests/batch/many-0146.txt", + "object-tests/batch/many-0147.txt", + "object-tests/batch/many-0148.txt", + "object-tests/batch/many-0149.txt", + "object-tests/batch/many-0150.txt", + "object-tests/batch/many-0151.txt", + "object-tests/batch/many-0152.txt", + "object-tests/batch/many-0153.txt", + "object-tests/batch/many-0154.txt", + "object-tests/batch/many-0155.txt", + "object-tests/batch/many-0156.txt", + "object-tests/batch/many-0157.txt", + "object-tests/batch/many-0158.txt", + "object-tests/batch/many-0159.txt", + "object-tests/batch/many-0160.txt", + "object-tests/batch/many-0161.txt", + "object-tests/batch/many-0162.txt", + "object-tests/batch/many-0163.txt", + "object-tests/batch/many-0164.txt", + "object-tests/batch/many-0165.txt", + "object-tests/batch/many-0166.txt", + "object-tests/batch/many-0167.txt", + "object-tests/batch/many-0168.txt", + "object-tests/batch/many-0169.txt", + "object-tests/batch/many-0170.txt", + "object-tests/batch/many-0171.txt", + "object-tests/batch/many-0172.txt", + "object-tests/batch/many-0173.txt", + "object-tests/batch/many-0174.txt", + "object-tests/batch/many-0175.txt", + "object-tests/batch/many-0176.txt", + "object-tests/batch/many-0177.txt", + "object-tests/batch/many-0178.txt", + "object-tests/batch/many-0179.txt", + "object-tests/batch/many-0180.txt", + "object-tests/batch/many-0181.txt", + "object-tests/batch/many-0182.txt", + "object-tests/batch/many-0183.txt", + "object-tests/batch/many-0184.txt", + "object-tests/batch/many-0185.txt", + "object-tests/batch/many-0186.txt", + "object-tests/batch/many-0187.txt", + "object-tests/batch/many-0188.txt", + "object-tests/batch/many-0189.txt", + "object-tests/batch/many-0190.txt", + "object-tests/batch/many-0191.txt", + "object-tests/batch/many-0192.txt", + "object-tests/batch/many-0193.txt", + "object-tests/batch/many-0194.txt", + "object-tests/batch/many-0195.txt", + "object-tests/batch/many-0196.txt", + "object-tests/batch/many-0197.txt", + "object-tests/batch/many-0198.txt", + "object-tests/batch/many-0199.txt", + "object-tests/batch/many-0200.txt", + "object-tests/batch/many-0201.txt", + "object-tests/batch/many-0202.txt", + "object-tests/batch/many-0203.txt", + "object-tests/batch/many-0204.txt", + "object-tests/batch/many-0205.txt", + "object-tests/batch/many-0206.txt", + "object-tests/batch/many-0207.txt", + "object-tests/batch/many-0208.txt", + "object-tests/batch/many-0209.txt", + "object-tests/batch/many-0210.txt", + "object-tests/batch/many-0211.txt", + "object-tests/batch/many-0212.txt", + "object-tests/batch/many-0213.txt", + "object-tests/batch/many-0214.txt", + "object-tests/batch/many-0215.txt", + "object-tests/batch/many-0216.txt", + "object-tests/batch/many-0217.txt", + "object-tests/batch/many-0218.txt", + "object-tests/batch/many-0219.txt", + "object-tests/batch/many-0220.txt", + "object-tests/batch/many-0221.txt", + "object-tests/batch/many-0222.txt", + "object-tests/batch/many-0223.txt", + "object-tests/batch/many-0224.txt", + "object-tests/batch/many-0225.txt", + "object-tests/batch/many-0226.txt", + "object-tests/batch/many-0227.txt", + "object-tests/batch/many-0228.txt", + "object-tests/batch/many-0229.txt", + "object-tests/batch/many-0230.txt", + "object-tests/batch/many-0231.txt", + "object-tests/batch/many-0232.txt", + "object-tests/batch/many-0233.txt", + "object-tests/batch/many-0234.txt", + "object-tests/batch/many-0235.txt", + "object-tests/batch/many-0236.txt", + "object-tests/batch/many-0237.txt", + "object-tests/batch/many-0238.txt", + "object-tests/batch/many-0239.txt", + "object-tests/batch/many-0240.txt", + "object-tests/batch/many-0241.txt", + "object-tests/batch/many-0242.txt", + "object-tests/batch/many-0243.txt", + "object-tests/batch/many-0244.txt", + "object-tests/batch/many-0245.txt", + "object-tests/batch/many-0246.txt", + "object-tests/batch/many-0247.txt", + "object-tests/batch/many-0248.txt", + "object-tests/batch/many-0249.txt", + "object-tests/batch/many-0250.txt", + "object-tests/batch/many-0251.txt", + "object-tests/batch/many-0252.txt", + "object-tests/batch/many-0253.txt", + "object-tests/batch/many-0254.txt", + "object-tests/batch/many-0255.txt", + "object-tests/batch/many-0256.txt" ], - "op": "list_page", - "prefix": "object-tests/snapshots/" + "op": "delete_many" }, "exchanges": [ { @@ -23446,7 +53682,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "POST" } }, { @@ -23458,11 +53694,11 @@ } }, { - "at": "/body_base64", + "at": "/headers/content-type", "optional": false, "rule": { - "is": "equal", - "value": "" + "is": "matches", + "pattern": "multipart/mixed; boundary=batch_[0-9A-Za-z-]+" } }, { @@ -23478,41 +53714,1060 @@ "optional": false, "rule": { "is": "equal", - "value": "list" - } - }, - { - "at": "/query/prefix", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/snapshots/" + "value": "batch" } }, { - "at": "/query/include", - "optional": false, - "rule": { - "is": "equal", - "value": "snapshots,versions" + "at": "", + "optional": false, + "rule": { + "is": "blob_batch", + "subrequests": [ + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0000.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0001.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0002.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0003.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0004.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0005.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0006.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0007.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0008.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0009.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0010.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0011.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0012.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0013.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0014.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0015.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0016.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0017.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0018.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0019.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0020.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0021.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0022.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0023.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0024.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0025.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0026.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0027.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0028.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0029.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0030.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0031.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0032.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0033.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0034.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0035.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0036.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0037.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0038.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0039.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0040.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0041.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0042.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0043.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0044.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0045.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0046.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0047.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0048.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0049.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0050.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0051.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0052.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0053.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0054.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0055.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0056.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0057.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0058.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0059.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0060.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0061.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0062.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0063.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0064.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0065.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0066.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0067.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0068.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0069.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0070.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0071.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0072.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0073.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0074.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0075.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0076.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0077.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0078.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0079.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0080.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0081.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0082.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0083.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0084.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0085.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0086.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0087.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0088.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0089.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0090.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0091.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0092.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0093.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0094.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0095.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0096.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0097.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0098.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0099.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0100.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0101.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0102.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0103.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0104.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0105.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0106.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0107.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0108.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0109.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0110.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0111.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0112.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0113.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0114.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0115.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0116.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0117.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0118.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0119.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0120.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0121.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0122.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0123.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0124.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0125.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0126.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0127.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0128.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0129.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0130.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0131.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0132.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0133.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0134.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0135.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0136.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0137.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0138.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0139.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0140.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0141.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0142.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0143.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0144.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0145.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0146.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0147.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0148.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0149.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0150.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0151.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0152.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0153.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0154.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0155.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0156.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0157.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0158.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0159.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0160.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0161.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0162.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0163.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0164.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0165.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0166.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0167.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0168.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0169.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0170.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0171.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0172.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0173.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0174.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0175.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0176.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0177.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0178.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0179.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0180.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0181.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0182.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0183.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0184.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0185.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0186.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0187.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0188.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0189.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0190.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0191.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0192.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0193.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0194.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0195.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0196.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0197.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0198.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0199.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0200.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0201.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0202.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0203.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0204.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0205.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0206.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0207.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0208.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0209.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0210.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0211.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0212.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0213.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0214.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0215.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0216.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0217.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0218.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0219.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0220.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0221.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0222.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0223.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0224.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0225.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0226.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0227.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0228.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0229.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0230.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0231.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0232.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0233.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0234.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0235.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0236.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0237.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0238.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0239.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0240.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0241.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0242.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0243.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0244.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0245.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0246.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0247.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0248.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0249.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0250.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0251.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0252.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0253.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0254.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0255.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/many-0256.txt" + } + ] } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 200, + "status": 202, "headers": { - "content-type": "application/xml", + "content-type": "multipart/mixed; boundary=batchresponse_fixture", "date": { "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { "encoding": "utf8", - "data": "object-tests/snapshots/object-tests/snapshots/object.txt2024-01-01T00:00:00.4877091ZMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-7adbbe4768f33application/octet-stream+XxdKZQb+xsv2rCHSQargg==BlockBlobHottruetrueobject-tests/snapshots/object.txt2024-01-01T00:00:00.7351568ZMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-7adbbe4768f33application/octet-stream+XxdKZQb+xsv2rCHSQargg==BlockBlobHottruetrueobject-tests/snapshots/object.txt2024-01-01T00:00:00.8746441ZMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-7adbbe4768f33application/octet-stream+XxdKZQb+xsv2rCHSQargg==BlockBlobHottruetrueobject-tests/snapshots/object.txt2024-01-01T00:00:00.6268993ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-222f410e528f3application/octet-streamuKn3Fdu2T9XFbneDxoIKYQ==BlockBlobHottrueunlockedavailabletrue" + "data": "--batchresponse_fixture\r\nContent-Type: application/http\r\n\r\nHTTP/1.1 400 The batch operation exceeds maximum number of allowed subrequests.\r\nx-ms-error-code: ExceedsMaxBatchRequestCount\r\nx-ms-request-id: fixture\r\nx-ms-version: 2023-11-03\r\nContent-Length: 125\r\nContent-Type: application/xml\r\n\r\nExceedsMaxBatchRequestCountFixture error\r\n--batchresponse_fixture--" }, "framing": "chunked" } @@ -23526,672 +54781,84 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/entries/0/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/snapshots/object.txt" - } - }, - { - "at": "/value/entries/0/size", - "optional": false, - "rule": { - "is": "equal", - "value": 3 - } - }, - { - "at": "/value/entries/0/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-7adbbe4768f3" - } - }, - { - "at": "/value/entries/0/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/0/version", - "optional": false, - "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.4877091Z" - } - }, - { - "at": "/value/entries/0/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/0/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "+XxdKZQb+xsv2rCHSQargg==" - } - }, - { - "at": "/value/entries/1/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/snapshots/object.txt" - } - }, - { - "at": "/value/entries/1/size", - "optional": false, - "rule": { - "is": "equal", - "value": 3 - } - }, - { - "at": "/value/entries/1/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-7adbbe4768f3" - } - }, - { - "at": "/value/entries/1/snapshot", - "optional": false, - "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.7351568Z" - } - }, - { - "at": "/value/entries/1/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/1/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/1/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "+XxdKZQb+xsv2rCHSQargg==" - } - }, - { - "at": "/value/entries/2/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/snapshots/object.txt" - } - }, - { - "at": "/value/entries/2/size", - "optional": false, - "rule": { - "is": "equal", - "value": 3 - } - }, - { - "at": "/value/entries/2/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-7adbbe4768f3" - } - }, - { - "at": "/value/entries/2/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/2/version", - "optional": false, - "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.8746441Z" - } - }, - { - "at": "/value/entries/2/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/2/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "+XxdKZQb+xsv2rCHSQargg==" - } - }, - { - "at": "/value/entries/3/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/snapshots/object.txt" - } - }, - { - "at": "/value/entries/3/size", - "optional": false, - "rule": { - "is": "equal", - "value": 3 - } - }, - { - "at": "/value/entries/3/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-222f410e528f" - } - }, - { - "at": "/value/entries/3/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/3/version", - "optional": false, - "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.6268993Z" - } - }, - { - "at": "/value/entries/3/is_current_version", - "optional": false, - "rule": { - "is": "equal", - "value": true + "value": "error" } }, { - "at": "/value/entries/3/content_md5_base64", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "uKn3Fdu2T9XFbneDxoIKYQ==" - } - }, - { - "at": "/value/entries", - "optional": false, - "rule": { - "is": "array_length", - "value": 4 - } - }, - { - "at": "/value/prefixes", - "optional": false, - "rule": { - "is": "array_length", - "value": 0 + "value": 400 } }, { - "at": "/value/continuation_token", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "ExceedsMaxBatchRequestCount" } } ], - "refusal": null - }, - { - "id": "operations/azure/list-snapshots", - "profile": "azure", - "lane": "core", - "purpose": "list snapshots", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "include": [ - "snapshots" - ], - "op": "list_page", - "prefix": "object-tests/snapshots/" - }, - "exchanges": [ - { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/query/restype", - "optional": false, - "rule": { - "is": "equal", - "value": "container" - } - }, - { - "at": "/query/comp", - "optional": false, - "rule": { - "is": "equal", - "value": "list" - } - }, - { - "at": "/query/prefix", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/snapshots/" - } - }, - { - "at": "/query/include", - "optional": false, - "rule": { - "is": "equal", - "value": "snapshots" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" - }, - "body": { - "encoding": "utf8", - "data": "object-tests/snapshots/object-tests/snapshots/object.txt2024-01-01T00:00:00.7351568ZMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-7adbbe4768f33application/octet-stream+XxdKZQb+xsv2rCHSQargg==BlockBlobHottruetrueobject-tests/snapshots/object.txt2024-01-01T00:00:00.6268993ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-222f410e528f3application/octet-streamuKn3Fdu2T9XFbneDxoIKYQ==BlockBlobHottrueunlockedavailabletrue" - }, - "framing": "chunked" - } - } - ] - } - ], - "expect": [ + "refusal": [ { "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/entries/0/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/snapshots/object.txt" - } - }, - { - "at": "/value/entries/0/size", - "optional": false, - "rule": { - "is": "equal", - "value": 3 - } - }, - { - "at": "/value/entries/0/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-7adbbe4768f3" - } - }, - { - "at": "/value/entries/0/snapshot", - "optional": false, - "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.7351568Z" - } - }, - { - "at": "/value/entries/0/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/0/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/0/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "+XxdKZQb+xsv2rCHSQargg==" - } - }, - { - "at": "/value/entries/1/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/snapshots/object.txt" + "value": "refused" } }, { - "at": "/value/entries/1/size", + "at": "/kind", "optional": false, "rule": { - "is": "equal", - "value": 3 + "is": "matches", + "pattern": ".+" } }, { - "at": "/value/entries/1/etag", + "at": "/parameter", "optional": false, "rule": { "is": "equal", - "value": "fixture-222f410e528f" + "value": "keys" } }, { - "at": "/value/entries/1/snapshot", + "at": "/status", "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/1/version", - "optional": false, - "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.6268993Z" - } - }, - { - "at": "/value/entries/1/is_current_version", - "optional": false, - "rule": { - "is": "equal", - "value": true - } - }, - { - "at": "/value/entries/1/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "uKn3Fdu2T9XFbneDxoIKYQ==" - } - }, - { - "at": "/value/entries", - "optional": false, - "rule": { - "is": "array_length", - "value": 2 - } - }, - { - "at": "/value/prefixes", - "optional": false, - "rule": { - "is": "array_length", - "value": 0 - } - }, - { - "at": "/value/continuation_token", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - } - ], - "refusal": null - }, - { - "id": "operations/azure/list-staged-only", - "profile": "azure", - "lane": "core", - "purpose": "list staged only", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "op": "list_page", - "prefix": "object-tests/multipart/staged.bin" - }, - "exchanges": [ - { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/query/restype", - "optional": false, - "rule": { - "is": "equal", - "value": "container" - } - }, - { - "at": "/query/comp", - "optional": false, - "rule": { - "is": "equal", - "value": "list" - } - }, - { - "at": "/query/prefix", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/multipart/staged.bin" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" - }, - "body": { - "encoding": "utf8", - "data": "object-tests/multipart/staged.bin" - }, - "framing": "chunked" - } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, "rule": { "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/entries", - "optional": false, - "rule": { - "is": "array_length", - "value": 0 - } - }, - { - "at": "/value/prefixes", - "optional": false, - "rule": { - "is": "array_length", - "value": 0 + "value": 400 } }, { - "at": "/value/continuation_token", - "optional": false, + "at": "/code", + "optional": true, "rule": { "is": "equal", - "value": "" + "value": "ExceedsMaxBatchRequestCount" } } - ], - "refusal": null + ] }, { - "id": "operations/azure/list-unauthenticated", - "profile": "azure", + "id": "operations/azure-hns/delete-many-unauthenticated", + "profile": "azure-hns", "lane": "core", - "purpose": "Report the service authorization error for this operation; signature acceptance is tested separately.", + "purpose": "Report a batch whose token Azure does not accept as one error for the whole batch, as Azure answers it, not as an answer per key", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "https://learn.microsoft.com/en-us/rest/api/storageservices/blob-batch" ], "call": { - "op": "list_page", - "prefix": "object-tests/" + "keys": [ + "object-tests/batch/a.txt", + "object-tests/batch/b.txt", + "object-tests/batch/absent.txt" + ], + "op": "delete_many" }, "exchanges": [ { @@ -24203,7 +54870,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "POST" } }, { @@ -24215,11 +54882,11 @@ } }, { - "at": "/body_base64", + "at": "/headers/content-type", "optional": false, "rule": { - "is": "equal", - "value": "" + "is": "matches", + "pattern": "multipart/mixed; boundary=batch_[0-9A-Za-z-]+" } }, { @@ -24235,15 +54902,28 @@ "optional": false, "rule": { "is": "equal", - "value": "list" + "value": "batch" } }, { - "at": "/query/prefix", + "at": "", "optional": false, "rule": { - "is": "equal", - "value": "object-tests/" + "is": "blob_batch", + "subrequests": [ + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/a.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/b.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/absent.txt" + } + ] } } ], @@ -24296,19 +54976,20 @@ "refusal": null }, { - "id": "operations/azure/list-versions-of-deleted-object", - "profile": "azure", + "id": "operations/azure-hns/delete-many-container-missing", + "profile": "azure-hns", "lane": "core", - "purpose": "list versions of deleted object", + "purpose": "Report a batch in a missing container, which Azure answers 202 with 404 ContainerNotFound for each deletion, as that error for each key and none deleted, or as one error of kind container_not_found", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "https://learn.microsoft.com/en-us/rest/api/storageservices/blob-batch" ], "call": { - "include": [ - "versions" + "keys": [ + "object-tests/batch/a.txt", + "object-tests/batch/b.txt", + "object-tests/batch/absent.txt" ], - "op": "list_page", - "prefix": "object-tests/versions-mtydohr2/deleted.txt" + "op": "delete_many" }, "exchanges": [ { @@ -24320,7 +55001,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "POST" } }, { @@ -24332,11 +55013,11 @@ } }, { - "at": "/body_base64", + "at": "/headers/content-type", "optional": false, "rule": { - "is": "equal", - "value": "" + "is": "matches", + "pattern": "multipart/mixed; boundary=batch_[0-9A-Za-z-]+" } }, { @@ -24352,41 +55033,44 @@ "optional": false, "rule": { "is": "equal", - "value": "list" - } - }, - { - "at": "/query/prefix", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/versions-mtydohr2/deleted.txt" + "value": "batch" } }, { - "at": "/query/include", + "at": "", "optional": false, "rule": { - "is": "equal", - "value": "versions" + "is": "blob_batch", + "subrequests": [ + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/a.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/b.txt" + }, + { + "method": "DELETE", + "path": "/fixture/object-tests/batch/absent.txt" + } + ] } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 200, + "status": 202, "headers": { - "content-type": "application/xml", + "content-type": "multipart/mixed; boundary=batchresponse_fixture", "date": { "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { "encoding": "utf8", - "data": "object-tests/versions-mtydohr2/deleted.txtobject-tests/versions-mtydohr2/deleted.txt2024-01-01T00:00:00.0160641ZMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-3b1602b981e92application/octet-streamASCk+RlqX5659SPzH5FNpw==BlockBlobHottruetrueobject-tests/versions-mtydohr2/deleted.txt2024-01-01T00:00:00.3127057ZMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-629d3a1755352application/octet-stream4cgEiIU9hqudbez+MNiTDw==BlockBlobHottruetrueobject-tests/versions-mtydohr2/deleted.txt2024-01-01T00:00:00.0760252ZMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-4de1996d2b4b2application/octet-streamip/X39qAKSH9xAefmlKM6A==BlockBlobHottruetrue" + "data": "--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 0\r\n\r\nHTTP/1.1 404 The specified container does not exist.\r\nx-ms-error-code: ContainerNotFound\r\nx-ms-request-id: fixture\r\nx-ms-version: 2023-11-03\r\nContent-Length: 115\r\nContent-Type: application/xml\r\n\r\nContainerNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 1\r\n\r\nHTTP/1.1 404 The specified container does not exist.\r\nx-ms-error-code: ContainerNotFound\r\nx-ms-request-id: fixture\r\nx-ms-version: 2023-11-03\r\nContent-Length: 115\r\nContent-Type: application/xml\r\n\r\nContainerNotFoundFixture error\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 2\r\n\r\nHTTP/1.1 404 The specified container does not exist.\r\nx-ms-error-code: ContainerNotFound\r\nx-ms-request-id: fixture\r\nx-ms-version: 2023-11-03\r\nContent-Length: 115\r\nContent-Type: application/xml\r\n\r\nContainerNotFoundFixture error\r\n--batchresponse_fixture--" }, "framing": "chunked" } @@ -24398,238 +55082,69 @@ { "at": "/outcome", "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/entries/0/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/versions-mtydohr2/deleted.txt" - } - }, - { - "at": "/value/entries/0/size", - "optional": false, - "rule": { - "is": "equal", - "value": 2 - } - }, - { - "at": "/value/entries/0/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-3b1602b981e9" - } - }, - { - "at": "/value/entries/0/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/0/version", - "optional": false, - "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.0160641Z" - } - }, - { - "at": "/value/entries/0/is_current_version", - "optional": true, "rule": { "is": "one_of", "values": [ - null, - false + "ok", + "error" ] } }, { - "at": "/value/entries/0/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "ASCk+RlqX5659SPzH5FNpw==" - } - }, - { - "at": "/value/entries/1/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/versions-mtydohr2/deleted.txt" - } - }, - { - "at": "/value/entries/1/size", - "optional": false, - "rule": { - "is": "equal", - "value": 2 - } - }, - { - "at": "/value/entries/1/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-629d3a175535" - } - }, - { - "at": "/value/entries/1/snapshot", + "at": "/value/deleted", "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/1/version", - "optional": false, "rule": { "is": "equal", - "value": "2024-01-01T00:00:00.3127057Z" + "value": [] } }, { - "at": "/value/entries/1/is_current_version", + "at": "/value/errors", "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/1/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "4cgEiIU9hqudbez+MNiTDw==" - } - }, - { - "at": "/value/entries/2/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/versions-mtydohr2/deleted.txt" - } - }, - { - "at": "/value/entries/2/size", - "optional": false, - "rule": { - "is": "equal", - "value": 2 - } - }, - { - "at": "/value/entries/2/etag", - "optional": false, "rule": { "is": "equal", - "value": "fixture-4de1996d2b4b" - } - }, - { - "at": "/value/entries/2/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" + "value": [ + { + "code": "ContainerNotFound", + "key": "object-tests/batch/a.txt", + "status": 404 + }, + { + "code": "ContainerNotFound", + "key": "object-tests/batch/b.txt", + "status": 404 + }, + { + "code": "ContainerNotFound", + "key": "object-tests/batch/absent.txt", + "status": 404 + } ] } }, { - "at": "/value/entries/2/version", - "optional": false, - "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.0760252Z" - } - }, - { - "at": "/value/entries/2/is_current_version", + "at": "/kind", "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/2/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "ip/X39qAKSH9xAefmlKM6A==" - } - }, - { - "at": "/value/entries", - "optional": false, - "rule": { - "is": "array_length", - "value": 3 - } - }, - { - "at": "/value/prefixes", - "optional": false, - "rule": { - "is": "array_length", - "value": 0 - } - }, - { - "at": "/value/continuation_token", - "optional": false, "rule": { "is": "equal", - "value": "" + "value": "container_not_found" } } ], "refusal": null }, { - "id": "operations/azure/list-versions", - "profile": "azure", + "id": "operations/azure-hns/delete-leased-if-match-without-lease-id", + "profile": "azure-hns", "lane": "core", - "purpose": "list versions", + "purpose": "Refuse to delete a leased object whose If-Match holds but that names no lease ID", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "https://learn.microsoft.com/en-us/rest/api/storageservices/lease-blob" ], "call": { - "include": [ - "versions" - ], - "op": "list_page", - "prefix": "object-tests/versions-mtydohr2/" + "if_match": "\"fixture-etag\"", + "key": "object-tests/leases/object.txt", + "op": "delete" }, "exchanges": [ { @@ -24641,7 +55156,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "DELETE" } }, { @@ -24649,7 +55164,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/leases/object.txt" } }, { @@ -24661,55 +55176,29 @@ } }, { - "at": "/query/restype", - "optional": false, - "rule": { - "is": "equal", - "value": "container" - } - }, - { - "at": "/query/comp", - "optional": false, - "rule": { - "is": "equal", - "value": "list" - } - }, - { - "at": "/query/prefix", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/versions-mtydohr2/" - } - }, - { - "at": "/query/include", + "at": "/headers/if-match", "optional": false, "rule": { "is": "equal", - "value": "versions" + "value": "\"fixture-etag\"" } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 200, + "status": 412, "headers": { "content-type": "application/xml", "date": { "from": "now" }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + "x-ms-error-code": "LeaseIdMissing" }, "body": { "encoding": "utf8", - "data": "object-tests/versions-mtydohr2/object-tests/versions-mtydohr2/object.txt2024-01-01T00:00:00.2318906ZMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-9dc9ff8bf5132application/octet-streamZlTHNMyrj0QP8IJetEPcfw==BlockBlobHottruetrueobject-tests/versions-mtydohr2/object.txt2024-01-01T00:00:00.3326281ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-9e3bb87be41c2application/octet-streamGyZ2GcSBLMRu4oF0eITKUA==BlockBlobHottrueunlockedavailabletrue" - }, - "framing": "chunked" + "data": "LeaseIdMissingFixture error" + } } } ] @@ -24721,168 +55210,39 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/entries/0/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/versions-mtydohr2/object.txt" - } - }, - { - "at": "/value/entries/0/size", - "optional": false, - "rule": { - "is": "equal", - "value": 2 - } - }, - { - "at": "/value/entries/0/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-9dc9ff8bf513" - } - }, - { - "at": "/value/entries/0/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/0/version", - "optional": false, - "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.2318906Z" - } - }, - { - "at": "/value/entries/0/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/0/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "ZlTHNMyrj0QP8IJetEPcfw==" - } - }, - { - "at": "/value/entries/1/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/versions-mtydohr2/object.txt" - } - }, - { - "at": "/value/entries/1/size", - "optional": false, - "rule": { - "is": "equal", - "value": 2 - } - }, - { - "at": "/value/entries/1/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-9e3bb87be41c" - } - }, - { - "at": "/value/entries/1/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/1/version", - "optional": false, - "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.3326281Z" - } - }, - { - "at": "/value/entries/1/is_current_version", - "optional": false, - "rule": { - "is": "equal", - "value": true + "value": "error" } }, { - "at": "/value/entries/1/content_md5_base64", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "GyZ2GcSBLMRu4oF0eITKUA==" - } - }, - { - "at": "/value/entries", - "optional": false, - "rule": { - "is": "array_length", - "value": 2 - } - }, - { - "at": "/value/prefixes", - "optional": false, - "rule": { - "is": "array_length", - "value": 0 + "value": 412 } }, { - "at": "/value/continuation_token", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "LeaseIdMissing" } } ], "refusal": null }, { - "id": "operations/azure/list-written-with-hashes", - "profile": "azure", + "id": "operations/azure-hns/delete-leased-without-lease-id", + "profile": "azure-hns", "lane": "core", - "purpose": "list written with hashes", + "purpose": "Refuse to delete a leased object without its lease ID", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "https://learn.microsoft.com/en-us/rest/api/storageservices/lease-blob" ], "call": { - "op": "list_page", - "prefix": "object-tests/hashes/" + "key": "object-tests/leases/object.txt", + "op": "delete" }, "exchanges": [ { @@ -24894,7 +55254,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "DELETE" } }, { @@ -24902,7 +55262,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/leases/object.txt" } }, { @@ -24912,49 +55272,23 @@ "is": "equal", "value": "" } - }, - { - "at": "/query/restype", - "optional": false, - "rule": { - "is": "equal", - "value": "container" - } - }, - { - "at": "/query/comp", - "optional": false, - "rule": { - "is": "equal", - "value": "list" - } - }, - { - "at": "/query/prefix", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/hashes/" - } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 200, + "status": 412, "headers": { "content-type": "application/xml", "date": { "from": "now" }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + "x-ms-error-code": "LeaseIdMissing" }, "body": { "encoding": "utf8", - "data": "object-tests/hashes/object-tests/hashes/committed.bin2024-01-01T00:00:00.2802899ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-879f71a2d23b13application/octet-streamN6YZkbg+Lyfxtskwn8iRCg==BlockBlobHottrueunlockedavailabletrueobject-tests/hashes/crc64.txt2024-01-01T00:00:00.1153123ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-c55cf5f18aae13application/octet-stream9XBvAwWoR9o=N6YZkbg+Lyfxtskwn8iRCg==BlockBlobHottrueunlockedavailabletrueobject-tests/hashes/md5.txt2024-01-01T00:00:00.7803759ZtrueMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-1f199b777f0713application/octet-streamN6YZkbg+Lyfxtskwn8iRCg==BlockBlobHottrueunlockedavailabletrue" - }, - "framing": "chunked" + "data": "LeaseIdMissingFixture error" + } } } ] @@ -24966,233 +55300,41 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/entries/0/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/hashes/committed.bin" - } - }, - { - "at": "/value/entries/0/size", - "optional": false, - "rule": { - "is": "equal", - "value": 13 - } - }, - { - "at": "/value/entries/0/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-879f71a2d23b" - } - }, - { - "at": "/value/entries/0/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/0/version", - "optional": false, - "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.2802899Z" - } - }, - { - "at": "/value/entries/0/is_current_version", - "optional": false, - "rule": { - "is": "equal", - "value": true - } - }, - { - "at": "/value/entries/0/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "N6YZkbg+Lyfxtskwn8iRCg==" - } - }, - { - "at": "/value/entries/1/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/hashes/crc64.txt" - } - }, - { - "at": "/value/entries/1/size", - "optional": false, - "rule": { - "is": "equal", - "value": 13 - } - }, - { - "at": "/value/entries/1/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-c55cf5f18aae" - } - }, - { - "at": "/value/entries/1/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/1/version", - "optional": false, - "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.1153123Z" - } - }, - { - "at": "/value/entries/1/is_current_version", - "optional": false, - "rule": { - "is": "equal", - "value": true - } - }, - { - "at": "/value/entries/1/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "N6YZkbg+Lyfxtskwn8iRCg==" - } - }, - { - "at": "/value/entries/1/content_crc64_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "9XBvAwWoR9o=" - } - }, - { - "at": "/value/entries/2/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/hashes/md5.txt" - } - }, - { - "at": "/value/entries/2/size", - "optional": false, - "rule": { - "is": "equal", - "value": 13 - } - }, - { - "at": "/value/entries/2/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-1f199b777f07" - } - }, - { - "at": "/value/entries/2/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/2/version", - "optional": false, - "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.7803759Z" - } - }, - { - "at": "/value/entries/2/is_current_version", - "optional": false, - "rule": { - "is": "equal", - "value": true + "value": "error" } }, { - "at": "/value/entries/2/content_md5_base64", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "N6YZkbg+Lyfxtskwn8iRCg==" - } - }, - { - "at": "/value/entries", - "optional": false, - "rule": { - "is": "array_length", - "value": 3 - } - }, - { - "at": "/value/prefixes", - "optional": false, - "rule": { - "is": "array_length", - "value": 0 + "value": 412 } }, { - "at": "/value/continuation_token", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "LeaseIdMissing" } } ], "refusal": null }, { - "id": "operations/azure/put-container-missing", - "profile": "azure", + "id": "operations/azure-hns/delete-server-busy", + "profile": "azure-hns", "lane": "core", - "purpose": "put container missing", + "purpose": "Report a 503 ServerBusy answer as an error, after at most 5 retries", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "https://learn.microsoft.com/en-us/rest/api/storageservices/common-rest-api-error-codes", + "https://learn.microsoft.com/en-us/rest/api/storageservices/blob-service-error-codes" ], + "origin": "transient", "call": { - "body_base64": "bm90aGluZyBpcyBzdG9yZWQ=", - "key": "object.txt", - "op": "put" + "key": "object-tests/remove/present.txt", + "op": "delete" }, "exchanges": [ { @@ -25204,7 +55346,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "DELETE" } }, { @@ -25212,7 +55354,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object.txt" + "value": "/fixture/object-tests/remove/present.txt" } }, { @@ -25220,86 +55362,176 @@ "optional": false, "rule": { "is": "equal", - "value": "bm90aGluZyBpcyBzdG9yZWQ=" + "value": "" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 503, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "ServerBusy" + }, + "body": { + "encoding": "utf8", + "data": "ServerBusyThe server is currently unable to receive requests. Please retry your request." + } + } + } + ] + }, + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "DELETE" } }, { - "at": "/headers/x-ms-blob-type", + "at": "/path", "optional": false, "rule": { "is": "equal", - "value": "BlockBlob" + "value": "/fixture/object-tests/remove/present.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 404, + "status": 503, "headers": { "content-type": "application/xml", "date": { "from": "now" }, - "x-ms-error-code": "ContainerNotFound" + "x-ms-error-code": "ServerBusy" }, "body": { "encoding": "utf8", - "data": "ContainerNotFoundFixture error" + "data": "ServerBusyThe server is currently unable to receive requests. Please retry your request." } } } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "error" - } + ], + "optional": true }, { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 404 - } + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "DELETE" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/remove/present.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 503, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "ServerBusy" + }, + "body": { + "encoding": "utf8", + "data": "ServerBusyThe server is currently unable to receive requests. Please retry your request." + } + } + } + ], + "optional": true }, { - "at": "/code", - "optional": false, - "rule": { - "is": "equal", - "value": "ContainerNotFound" - } - } - ], - "refusal": null - }, - { - "id": "operations/azure/put-crc64-mismatch", - "profile": "azure", - "lane": "core", - "purpose": "put crc64 mismatch", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "body_base64": "ZGVjbGFyZWQtYm9keQ==", - "checksum": { - "algorithm": "azure_crc64", - "value_base64": "khqMBK+EUSA=" + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "DELETE" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/remove/present.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 503, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "ServerBusy" + }, + "body": { + "encoding": "utf8", + "data": "ServerBusyThe server is currently unable to receive requests. Please retry your request." + } + } + } + ], + "optional": true }, - "key": "object-tests/hashes/crc64-mismatch.txt", - "op": "put" - }, - "exchanges": [ { "alternatives": [ { @@ -25309,7 +55541,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "DELETE" } }, { @@ -25317,7 +55549,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/hashes/crc64-mismatch.txt" + "value": "/fixture/object-tests/remove/present.txt" } }, { @@ -25325,46 +55557,78 @@ "optional": false, "rule": { "is": "equal", - "value": "ZGVjbGFyZWQtYm9keQ==" + "value": "" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 503, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "ServerBusy" + }, + "body": { + "encoding": "utf8", + "data": "ServerBusyThe server is currently unable to receive requests. Please retry your request." + } + } + } + ], + "optional": true + }, + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "DELETE" } }, { - "at": "/headers/x-ms-content-crc64", + "at": "/path", "optional": false, "rule": { "is": "equal", - "value": "khqMBK+EUSA=" + "value": "/fixture/object-tests/remove/present.txt" } }, { - "at": "/headers/x-ms-blob-type", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "BlockBlob" + "value": "" } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 400, + "status": 503, "headers": { "content-type": "application/xml", "date": { "from": "now" }, - "x-ms-error-code": "Crc64Mismatch" + "x-ms-error-code": "ServerBusy" }, "body": { "encoding": "utf8", - "data": "Crc64MismatchFixture error" + "data": "ServerBusyThe server is currently unable to receive requests. Please retry your request." } } } - ] + ], + "optional": true } ], "expect": [ @@ -25381,7 +55645,7 @@ "optional": false, "rule": { "is": "equal", - "value": 400 + "value": 503 } }, { @@ -25389,24 +55653,24 @@ "optional": false, "rule": { "is": "equal", - "value": "Crc64Mismatch" + "value": "ServerBusy" } } ], "refusal": null }, { - "id": "operations/azure/put-created-empty", - "profile": "azure", + "id": "operations/azure-hns/delete-if-unmodified-since-past", + "profile": "azure-hns", "lane": "core", - "purpose": "put created empty", + "purpose": "Refuse a delete with 412 when the object changed after If-Unmodified-Since", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "body_base64": "", - "key": "object-tests/write/empty.bin", - "op": "put" + "if_unmodified_since": "Sat, 01 Jan 2000 00:00:00 GMT", + "key": "object-tests/remove/present.txt", + "op": "delete" }, "exchanges": [ { @@ -25418,7 +55682,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "DELETE" } }, { @@ -25426,7 +55690,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/write/empty.bin" + "value": "/fixture/object-tests/remove/present.txt" } }, { @@ -25438,34 +55702,28 @@ } }, { - "at": "/headers/x-ms-blob-type", + "at": "/headers/if-unmodified-since", "optional": false, "rule": { "is": "equal", - "value": "BlockBlob" + "value": "Sat, 01 Jan 2000 00:00:00 GMT" } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 201, + "status": 412, "headers": { - "content-md5": "1B2M2Y8AsgTpgAmY7PhCfg==", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-ee13937a1c94\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true", - "x-ms-version-id": "2024-01-01T00:00:00.7573734Z" + "x-ms-error-code": "ConditionNotMet" }, "body": { - "encoding": "base64", - "data": "" + "encoding": "utf8", + "data": "ConditionNotMetFixture error" } } } @@ -25478,40 +55736,39 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "error" } }, { - "at": "/value/etag", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-ee13937a1c94\"" + "value": 412 } }, { - "at": "/value/version", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": "2024-01-01T00:00:00.7573734Z" + "value": "ConditionNotMet" } } ], "refusal": null }, { - "id": "operations/azure/put-created", - "profile": "azure", + "id": "operations/azure-hns/delete-container-missing", + "profile": "azure-hns", "lane": "core", - "purpose": "put created", + "purpose": "delete container missing. A client reports it as container_not_found: the bucket or container is absent, not the object", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "body_base64": "MDEyMzQ1Njc4OQ==", - "key": "object-tests/write/object.txt", - "op": "put" + "key": "object.txt", + "op": "delete" }, "exchanges": [ { @@ -25523,7 +55780,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "DELETE" } }, { @@ -25531,7 +55788,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/write/object.txt" + "value": "/fixture/object.txt" } }, { @@ -25539,38 +55796,24 @@ "optional": false, "rule": { "is": "equal", - "value": "MDEyMzQ1Njc4OQ==" - } - }, - { - "at": "/headers/x-ms-blob-type", - "optional": false, - "rule": { - "is": "equal", - "value": "BlockBlob" + "value": "" } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 201, + "status": 404, "headers": { - "content-md5": "eB5eJF1ptWaXm4bijSPyxw==", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-b9991ef94e3d\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true", - "x-ms-version-id": "2024-01-01T00:00:00.2084665Z" + "x-ms-error-code": "ContainerNotFound" }, "body": { - "encoding": "base64", - "data": "" + "encoding": "utf8", + "data": "ContainerNotFoundFixture error" } } } @@ -25583,40 +55826,48 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "error" } }, { - "at": "/value/etag", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-b9991ef94e3d\"" + "value": 404 } }, { - "at": "/value/version", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": "2024-01-01T00:00:00.2084665Z" + "value": "ContainerNotFound" + } + }, + { + "at": "/kind", + "optional": false, + "rule": { + "is": "equal", + "value": "container_not_found" } } ], "refusal": null }, { - "id": "operations/azure/put-created-key-question", - "profile": "azure", + "id": "operations/azure-hns/delete-current-version", + "profile": "azure-hns", "lane": "core", - "purpose": "put created, with the key \"question?mark.txt\"", + "purpose": "delete current version", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "body_base64": "MDEyMzQ1Njc4OQ==", - "key": "object-tests/keys/question?mark.txt", - "op": "put" + "key": "object-tests/versions-mtypy4jp/object.txt", + "op": "delete", + "version": "none-2" }, "exchanges": [ { @@ -25628,7 +55879,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "DELETE" } }, { @@ -25636,7 +55887,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/question?mark.txt" + "value": "/fixture/object-tests/versions-mtypy4jp/object.txt" } }, { @@ -25644,38 +55895,31 @@ "optional": false, "rule": { "is": "equal", - "value": "MDEyMzQ1Njc4OQ==" + "value": "" } }, { - "at": "/headers/x-ms-blob-type", + "at": "/query/versionid", "optional": false, "rule": { "is": "equal", - "value": "BlockBlob" + "value": "none-2" } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 201, + "status": 400, "headers": { - "content-md5": "eB5eJF1ptWaXm4bijSPyxw==", + "content-type": "application/xml", "date": { "from": "now" - }, - "etag": "\"fixture-b9991ef94e3d\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true", - "x-ms-version-id": "2024-01-01T00:00:00.2084665Z" + } }, "body": { - "encoding": "base64", - "data": "" + "encoding": "utf8", + "data": "InvalidQueryParameterValueFixture error" } } } @@ -25688,40 +55932,40 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "error" } }, { - "at": "/value/etag", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-b9991ef94e3d\"" + "value": 400 } }, { - "at": "/value/version", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": "2024-01-01T00:00:00.2084665Z" + "value": "InvalidQueryParameterValue" } } ], "refusal": null }, { - "id": "operations/azure/put-created-key-hash", - "profile": "azure", + "id": "operations/azure-hns/delete-if-match-current", + "profile": "azure-hns", "lane": "core", - "purpose": "put created, with the key \"hash#tag.txt\"", + "purpose": "delete if match current", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "body_base64": "MDEyMzQ1Njc4OQ==", - "key": "object-tests/keys/hash#tag.txt", - "op": "put" + "if_match": "\"fixture-51797d9f787d\"", + "key": "object-tests/remove/conditional.txt", + "op": "delete" }, "exchanges": [ { @@ -25733,7 +55977,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "DELETE" } }, { @@ -25741,7 +55985,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/hash#tag.txt" + "value": "/fixture/object-tests/remove/conditional.txt" } }, { @@ -25749,34 +55993,28 @@ "optional": false, "rule": { "is": "equal", - "value": "MDEyMzQ1Njc4OQ==" + "value": "" } }, { - "at": "/headers/x-ms-blob-type", + "at": "/headers/if-match", "optional": false, "rule": { "is": "equal", - "value": "BlockBlob" + "value": "\"fixture-51797d9f787d\"" } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 201, + "status": 202, "headers": { - "content-md5": "eB5eJF1ptWaXm4bijSPyxw==", "date": { "from": "now" }, - "etag": "\"fixture-b9991ef94e3d\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true", - "x-ms-version-id": "2024-01-01T00:00:00.2084665Z" + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "base64", @@ -25795,38 +56033,21 @@ "is": "equal", "value": "ok" } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-b9991ef94e3d\"" - } - }, - { - "at": "/value/version", - "optional": false, - "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.2084665Z" - } } ], "refusal": null }, { - "id": "operations/azure/put-created-key-percent", - "profile": "azure", + "id": "operations/azure-hns/delete-missing", + "profile": "azure-hns", "lane": "core", - "purpose": "put created, with the key \"percent%20.txt\"", + "purpose": "delete missing. A client reports it as not_found: the object is absent", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "body_base64": "MDEyMzQ1Njc4OQ==", - "key": "object-tests/keys/percent%20.txt", - "op": "put" + "key": "object-tests/remove/absent.txt", + "op": "delete" }, "exchanges": [ { @@ -25838,7 +56059,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "DELETE" } }, { @@ -25846,7 +56067,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/percent%20.txt" + "value": "/fixture/object-tests/remove/absent.txt" } }, { @@ -25854,38 +56075,24 @@ "optional": false, "rule": { "is": "equal", - "value": "MDEyMzQ1Njc4OQ==" - } - }, - { - "at": "/headers/x-ms-blob-type", - "optional": false, - "rule": { - "is": "equal", - "value": "BlockBlob" + "value": "" } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 201, + "status": 404, "headers": { - "content-md5": "eB5eJF1ptWaXm4bijSPyxw==", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-b9991ef94e3d\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true", - "x-ms-version-id": "2024-01-01T00:00:00.2084665Z" + "x-ms-error-code": "BlobNotFound" }, "body": { - "encoding": "base64", - "data": "" + "encoding": "utf8", + "data": "BlobNotFoundFixture error" } } } @@ -25898,40 +56105,48 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "error" } }, { - "at": "/value/etag", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-b9991ef94e3d\"" + "value": 404 } }, { - "at": "/value/version", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": "2024-01-01T00:00:00.2084665Z" + "value": "BlobNotFound" + } + }, + { + "at": "/kind", + "optional": false, + "rule": { + "is": "equal", + "value": "not_found" } } ], "refusal": null }, { - "id": "operations/azure/put-created-key-plus", - "profile": "azure", + "id": "operations/azure-hns/delete-precondition-failed", + "profile": "azure-hns", "lane": "core", - "purpose": "put created, with the key \"plus+plus.txt\"", + "purpose": "delete precondition failed", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "body_base64": "MDEyMzQ1Njc4OQ==", - "key": "object-tests/keys/plus+plus.txt", - "op": "put" + "if_match": "\"fixture-088e5dc109cf\"", + "key": "object-tests/remove/conditional.txt", + "op": "delete" }, "exchanges": [ { @@ -25943,7 +56158,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "DELETE" } }, { @@ -25951,7 +56166,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/plus+plus.txt" + "value": "/fixture/object-tests/remove/conditional.txt" } }, { @@ -25959,38 +56174,32 @@ "optional": false, "rule": { "is": "equal", - "value": "MDEyMzQ1Njc4OQ==" + "value": "" } }, { - "at": "/headers/x-ms-blob-type", + "at": "/headers/if-match", "optional": false, "rule": { "is": "equal", - "value": "BlockBlob" + "value": "\"fixture-088e5dc109cf\"" } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 201, + "status": 412, "headers": { - "content-md5": "eB5eJF1ptWaXm4bijSPyxw==", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-b9991ef94e3d\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true", - "x-ms-version-id": "2024-01-01T00:00:00.2084665Z" + "x-ms-error-code": "ConditionNotMet" }, "body": { - "encoding": "base64", - "data": "" + "encoding": "utf8", + "data": "ConditionNotMetFixture error" } } } @@ -26003,40 +56212,43 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "error" } }, { - "at": "/value/etag", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-b9991ef94e3d\"" + "value": 412 } }, { - "at": "/value/version", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": "2024-01-01T00:00:00.2084665Z" + "value": "ConditionNotMet" } } ], "refusal": null }, { - "id": "operations/azure/put-created-key-space", - "profile": "azure", + "id": "operations/azure-hns/delete-precondition-failed-code-in-body", + "profile": "azure-hns", "lane": "core", - "purpose": "put created, with the key \"space name.txt\"", + "purpose": "delete precondition failed, with the error code only in the XML body", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp", + "https://learn.microsoft.com/en-us/rest/api/storageservices/common-rest-api-error-codes", + "https://learn.microsoft.com/en-us/rest/api/storageservices/blob-service-error-codes" ], + "origin": "constructed", "call": { - "body_base64": "MDEyMzQ1Njc4OQ==", - "key": "object-tests/keys/space name.txt", - "op": "put" + "if_match": "\"fixture-088e5dc109cf\"", + "key": "object-tests/remove/conditional.txt", + "op": "delete" }, "exchanges": [ { @@ -26048,7 +56260,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "DELETE" } }, { @@ -26056,7 +56268,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/space name.txt" + "value": "/fixture/object-tests/remove/conditional.txt" } }, { @@ -26064,38 +56276,31 @@ "optional": false, "rule": { "is": "equal", - "value": "MDEyMzQ1Njc4OQ==" + "value": "" } }, { - "at": "/headers/x-ms-blob-type", + "at": "/headers/if-match", "optional": false, "rule": { "is": "equal", - "value": "BlockBlob" + "value": "\"fixture-088e5dc109cf\"" } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 201, + "status": 412, "headers": { - "content-md5": "eB5eJF1ptWaXm4bijSPyxw==", + "content-type": "application/xml", "date": { "from": "now" - }, - "etag": "\"fixture-b9991ef94e3d\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true", - "x-ms-version-id": "2024-01-01T00:00:00.2084665Z" + } }, "body": { - "encoding": "base64", - "data": "" + "encoding": "utf8", + "data": "ConditionNotMetFixture error" } } } @@ -26108,40 +56313,40 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "error" } }, { - "at": "/value/etag", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-b9991ef94e3d\"" + "value": 412 } }, { - "at": "/value/version", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": "2024-01-01T00:00:00.2084665Z" + "value": "ConditionNotMet" } } ], "refusal": null }, { - "id": "operations/azure/put-created-key-non-ascii", - "profile": "azure", + "id": "operations/azure-hns/delete-previous-version", + "profile": "azure-hns", "lane": "core", - "purpose": "put created, with the key \"café/雪.txt\"", + "purpose": "delete previous version", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "body_base64": "MDEyMzQ1Njc4OQ==", - "key": "object-tests/keys/café/雪.txt", - "op": "put" + "key": "object-tests/versions-mtypy4jp/object.txt", + "op": "delete", + "version": "none-1" }, "exchanges": [ { @@ -26153,7 +56358,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "DELETE" } }, { @@ -26161,7 +56366,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/café/雪.txt" + "value": "/fixture/object-tests/versions-mtypy4jp/object.txt" } }, { @@ -26169,38 +56374,31 @@ "optional": false, "rule": { "is": "equal", - "value": "MDEyMzQ1Njc4OQ==" + "value": "" } }, { - "at": "/headers/x-ms-blob-type", + "at": "/query/versionid", "optional": false, "rule": { "is": "equal", - "value": "BlockBlob" + "value": "none-1" } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 201, + "status": 400, "headers": { - "content-md5": "eB5eJF1ptWaXm4bijSPyxw==", + "content-type": "application/xml", "date": { "from": "now" - }, - "etag": "\"fixture-b9991ef94e3d\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true", - "x-ms-version-id": "2024-01-01T00:00:00.2084665Z" + } }, "body": { - "encoding": "base64", - "data": "" + "encoding": "utf8", + "data": "InvalidQueryParameterValueFixture error" } } } @@ -26213,40 +56411,39 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "error" } }, { - "at": "/value/etag", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-b9991ef94e3d\"" + "value": 400 } }, { - "at": "/value/version", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": "2024-01-01T00:00:00.2084665Z" + "value": "InvalidQueryParameterValue" } } ], "refusal": null }, { - "id": "operations/azure/put-created-key-double-slash", - "profile": "azure", + "id": "operations/azure-hns/delete-refused-for-snapshots", + "profile": "azure-hns", "lane": "core", - "purpose": "put created, with the key \"double//slash.txt\"", + "purpose": "Report the service authorization error for this operation; signature acceptance is tested separately.", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "body_base64": "MDEyMzQ1Njc4OQ==", - "key": "object-tests/keys/double//slash.txt", - "op": "put" + "key": "object-tests/snapshots/object.txt", + "op": "delete" }, "exchanges": [ { @@ -26258,7 +56455,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "DELETE" } }, { @@ -26266,7 +56463,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/double//slash.txt" + "value": "/fixture/object-tests/snapshots/object.txt" } }, { @@ -26274,34 +56471,20 @@ "optional": false, "rule": { "is": "equal", - "value": "MDEyMzQ1Njc4OQ==" - } - }, - { - "at": "/headers/x-ms-blob-type", - "optional": false, - "rule": { - "is": "equal", - "value": "BlockBlob" + "value": "" } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 201, + "status": 202, "headers": { - "content-md5": "eB5eJF1ptWaXm4bijSPyxw==", "date": { "from": "now" }, - "etag": "\"fixture-b9991ef94e3d\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true", - "x-ms-version-id": "2024-01-01T00:00:00.2084665Z" + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "base64", @@ -26320,38 +56503,21 @@ "is": "equal", "value": "ok" } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-b9991ef94e3d\"" - } - }, - { - "at": "/value/version", - "optional": false, - "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.2084665Z" - } } ], "refusal": null }, { - "id": "operations/azure/put-created-key-trailing-slash", - "profile": "azure", + "id": "operations/azure-hns/delete-refused", + "profile": "azure-hns", "lane": "core", - "purpose": "put created, with the key \"trailing-slash/\"", + "purpose": "Report the service authorization error for this operation; signature acceptance is tested separately.", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "body_base64": "MDEyMzQ1Njc4OQ==", - "key": "object-tests/keys/trailing-slash/", - "op": "put" + "key": "object.txt", + "op": "delete" }, "exchanges": [ { @@ -26363,7 +56529,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "DELETE" } }, { @@ -26371,7 +56537,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/trailing-slash/" + "value": "/fixture/object.txt" } }, { @@ -26379,38 +56545,24 @@ "optional": false, "rule": { "is": "equal", - "value": "MDEyMzQ1Njc4OQ==" - } - }, - { - "at": "/headers/x-ms-blob-type", - "optional": false, - "rule": { - "is": "equal", - "value": "BlockBlob" + "value": "" } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 201, + "status": 404, "headers": { - "content-md5": "eB5eJF1ptWaXm4bijSPyxw==", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-b9991ef94e3d\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true", - "x-ms-version-id": "2024-01-01T00:00:00.2084665Z" + "x-ms-error-code": "ContainerNotFound" }, "body": { - "encoding": "base64", - "data": "" + "encoding": "utf8", + "data": "ContainerNotFoundFixture error" } } } @@ -26423,40 +56575,40 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "error" } }, { - "at": "/value/etag", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-b9991ef94e3d\"" + "value": 404 } }, { - "at": "/value/version", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": "2024-01-01T00:00:00.2084665Z" + "value": "ContainerNotFound" } } ], "refusal": null }, { - "id": "operations/azure/copy-missing-source", - "profile": "azure", + "id": "operations/azure-hns/delete-snapshot", + "profile": "azure-hns", "lane": "core", - "purpose": "Refuse a copy whose source does not exist", + "purpose": "delete snapshot", "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/copy-blob" + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "key": "object-tests/copy/target.txt", - "op": "copy", - "source_key": "object-tests/copy/absent.txt" + "key": "object-tests/snapshots/object.txt", + "op": "delete", + "snapshot": "2024-01-01T00:00:00.8557081Z" }, "exchanges": [ { @@ -26468,7 +56620,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "DELETE" } }, { @@ -26476,7 +56628,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/copy/target.txt" + "value": "/fixture/object-tests/snapshots/object.txt" } }, { @@ -26488,11 +56640,11 @@ } }, { - "at": "/headers/x-ms-copy-source", + "at": "/query/snapshot", "optional": false, "rule": { - "is": "matches", - "pattern": "https?://[^/]+/fixture/object-tests/copy/absent\\.txt" + "is": "equal", + "value": "2024-01-01T00:00:00.8557081Z" } } ], @@ -26545,17 +56697,17 @@ "refusal": null }, { - "id": "operations/azure/copy", - "profile": "azure", + "id": "operations/azure-hns/delete-snapshots-only", + "profile": "azure-hns", "lane": "core", - "purpose": "Copy an object to another key in the same container", + "purpose": "delete snapshots only", "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/copy-blob" + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "key": "object-tests/copy/target.txt", - "op": "copy", - "source_key": "object-tests/copy/source.txt" + "key": "object-tests/snapshots-only/object.txt", + "op": "delete", + "snapshots": "only" }, "exchanges": [ { @@ -26567,7 +56719,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "DELETE" } }, { @@ -26575,7 +56727,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/copy/target.txt" + "value": "/fixture/object-tests/snapshots-only/object.txt" } }, { @@ -26587,29 +56739,28 @@ } }, { - "at": "/headers/x-ms-copy-source", + "at": "/headers/x-ms-delete-snapshots", "optional": false, "rule": { - "is": "matches", - "pattern": "https?://[^/]+/fixture/object-tests/copy/source\\.txt" + "is": "equal", + "value": "only" } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 202, + "status": 404, "headers": { + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-etag\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-copy-id": "fixture-copy-id", - "x-ms-copy-status": "success" + "x-ms-error-code": "BlobNotFound" }, "body": { - "encoding": "empty" + "encoding": "utf8", + "data": "BlobNotFoundFixture error" } } } @@ -26622,31 +56773,39 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "error" } }, { - "at": "/value/copy_status", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "success" + "value": 404 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "BlobNotFound" } } ], "refusal": null }, { - "id": "operations/azure/get-page-ranges", - "profile": "azure", + "id": "operations/azure-hns/delete-unauthenticated", + "profile": "azure-hns", "lane": "core", - "purpose": "List the written ranges of a page blob", + "purpose": "Report the service authorization error for this operation; signature acceptance is tested separately.", "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/get-page-ranges" + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "key": "object-tests/pages/object.vhd", - "op": "azure.get_page_ranges" + "key": "object-tests/remove/absent.txt", + "op": "delete" }, "exchanges": [ { @@ -26658,7 +56817,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "DELETE" } }, { @@ -26666,7 +56825,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/pages/object.vhd" + "value": "/fixture/object-tests/remove/absent.txt" } }, { @@ -26676,34 +56835,23 @@ "is": "equal", "value": "" } - }, - { - "at": "/query/comp", - "optional": false, - "rule": { - "is": "equal", - "value": "pagelist" - } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 200, + "status": 401, "headers": { "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-etag\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-content-length": "1024" + "x-ms-error-code": "InvalidAuthenticationInfo" }, "body": { "encoding": "utf8", - "data": "0511" - }, - "framing": "chunked" + "data": "InvalidAuthenticationInfoFixture error" + } } } ] @@ -26715,38 +56863,39 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "error" } }, { - "at": "/value/ranges", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": [ - { - "end": 512, - "start": 0 - } - ] + "value": 401 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "InvalidAuthenticationInfo" } } ], "refusal": null }, { - "id": "operations/azure/upload-pages-unaligned", - "profile": "azure", + "id": "operations/azure-hns/delete-versioned-object", + "profile": "azure-hns", "lane": "core", - "purpose": "Refuse a page write that does not start on a 512-byte boundary", + "purpose": "delete versioned object", "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/put-page" + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "body_base64": "cHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHA=", - "key": "object-tests/pages/object.vhd", - "offset": 1, - "op": "azure.upload_pages" + "key": "object-tests/versions-mtypy4jp/deleted.txt", + "op": "delete" }, "exchanges": [ { @@ -26758,7 +56907,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "DELETE" } }, { @@ -26766,7 +56915,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/pages/object.vhd" + "value": "/fixture/object-tests/versions-mtypy4jp/deleted.txt" } }, { @@ -26774,48 +56923,24 @@ "optional": false, "rule": { "is": "equal", - "value": "cHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHA=" - } - }, - { - "at": "/query/comp", - "optional": false, - "rule": { - "is": "equal", - "value": "page" - } - }, - { - "at": "/headers/x-ms-page-write", - "optional": false, - "rule": { - "is": "equal", - "value": "update" - } - }, - { - "at": "/headers/x-ms-range", - "optional": false, - "rule": { - "is": "equal", - "value": "bytes=1-512" + "value": "" } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 400, + "status": 202, "headers": { - "content-type": "application/xml", "date": { "from": "now" }, - "x-ms-error-code": "InvalidHeaderValue" + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "InvalidHeaderValueFixture error" + "encoding": "base64", + "data": "" } } } @@ -26828,41 +56953,24 @@ "optional": false, "rule": { "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 400 - } - }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "equal", - "value": "InvalidHeaderValue" + "value": "ok" } } ], "refusal": null }, { - "id": "operations/azure/upload-pages", - "profile": "azure", + "id": "operations/azure-hns/delete-with-snapshots", + "profile": "azure-hns", "lane": "core", - "purpose": "Write the first page of a page blob", + "purpose": "delete with snapshots", "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/put-page" + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "body_base64": "cHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHA=", - "key": "object-tests/pages/object.vhd", - "offset": 0, - "op": "azure.upload_pages" + "key": "object-tests/snapshots-all/object.txt", + "op": "delete", + "snapshots": "include" }, "exchanges": [ { @@ -26874,7 +56982,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "DELETE" } }, { @@ -26882,7 +56990,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/pages/object.vhd" + "value": "/fixture/object-tests/snapshots-all/object.txt" } }, { @@ -26890,49 +56998,32 @@ "optional": false, "rule": { "is": "equal", - "value": "cHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHA=" - } - }, - { - "at": "/query/comp", - "optional": false, - "rule": { - "is": "equal", - "value": "page" - } - }, - { - "at": "/headers/x-ms-page-write", - "optional": false, - "rule": { - "is": "equal", - "value": "update" + "value": "" } }, { - "at": "/headers/x-ms-range", + "at": "/headers/x-ms-delete-snapshots", "optional": false, "rule": { "is": "equal", - "value": "bytes=0-511" + "value": "include" } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 201, + "status": 202, "headers": { "date": { "from": "now" }, - "etag": "\"fixture-etag\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-sequence-number": "0", - "x-ms-request-server-encrypted": "true" + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "empty" + "encoding": "base64", + "data": "" } } } @@ -26952,17 +57043,16 @@ "refusal": null }, { - "id": "operations/azure/create-page", - "profile": "azure", + "id": "operations/azure-hns/get-after-snapshots-deleted", + "profile": "azure-hns", "lane": "core", - "purpose": "Create a page blob of 1,024 bytes", + "purpose": "get after snapshots deleted", "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/put-blob" + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "key": "object-tests/pages/object.vhd", - "op": "azure.create_page", - "size": 1024 + "key": "object-tests/snapshots-only/object.txt", + "op": "get" }, "exchanges": [ { @@ -26974,7 +57064,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -26982,7 +57072,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/pages/object.vhd" + "value": "/fixture/object-tests/snapshots-only/object.txt" } }, { @@ -26992,38 +57082,29 @@ "is": "equal", "value": "" } - }, - { - "at": "/headers/x-ms-blob-type", - "optional": false, - "rule": { - "is": "equal", - "value": "PageBlob" - } - }, - { - "at": "/headers/x-ms-blob-content-length", - "optional": false, - "rule": { - "is": "equal", - "value": "1024" - } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 201, + "status": 200, "headers": { + "content-md5": "TYtghPPRZ7dsrGaiKpG+Ag==", + "content-type": "application/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-etag\"", + "etag": "\"fixture-8fc260370f1a\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true" + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true" }, "body": { - "encoding": "empty" + "encoding": "base64", + "data": "a2VwdA==" } } } @@ -27038,22 +57119,72 @@ "is": "equal", "value": "ok" } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-8fc260370f1a\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 4 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "application/octet-stream" + } + }, + { + "at": "/value/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "TYtghPPRZ7dsrGaiKpG+Ag==" + } + }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "a2VwdA==" + } } ], "refusal": null }, { - "id": "operations/azure/append-block-to-block-blob", - "profile": "azure", + "id": "operations/azure-hns/get-committed-nothing", + "profile": "azure-hns", "lane": "core", - "purpose": "Refuse an append to a block blob", + "purpose": "get committed nothing", "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/append-block" + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "body_base64": "c2Vjb25k", - "key": "object-tests/append/object.log", - "op": "azure.append_block" + "key": "object-tests/multipart/empty.bin", + "op": "get" }, "exchanges": [ { @@ -27065,7 +57196,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -27073,7 +57204,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/append/object.log" + "value": "/fixture/object-tests/multipart/empty.bin" } }, { @@ -27081,32 +57212,30 @@ "optional": false, "rule": { "is": "equal", - "value": "c2Vjb25k" - } - }, - { - "at": "/query/comp", - "optional": false, - "rule": { - "is": "equal", - "value": "appendblock" + "value": "" } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 409, + "status": 200, "headers": { - "content-type": "application/xml", + "content-type": "application/octet-stream", "date": { "from": "now" }, - "x-ms-error-code": "InvalidBlobType" + "etag": "\"fixture-072bed78cc6a\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true" }, "body": { - "encoding": "utf8", - "data": "InvalidBlobTypeFixture error" + "encoding": "base64", + "data": "" } } } @@ -27119,41 +57248,66 @@ "optional": false, "rule": { "is": "equal", - "value": "error" + "value": "ok" } }, { - "at": "/status", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": 409 + "value": "\"fixture-072bed78cc6a\"" } }, { - "at": "/code", + "at": "/value/size", "optional": false, "rule": { "is": "equal", - "value": "InvalidBlobType" + "value": 0 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "application/octet-stream" + } + }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" } } ], "refusal": null }, { - "id": "operations/azure/append-block-at-wrong-position", - "profile": "azure", + "id": "operations/azure-hns/get-committed-over-whole-object", + "profile": "azure-hns", "lane": "core", - "purpose": "Refuse an append whose position condition does not match the blob length", + "purpose": "get committed over whole object", "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/append-block" + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "append_position": 0, - "body_base64": "c2Vjb25k", - "key": "object-tests/append/object.log", - "op": "azure.append_block" + "key": "object-tests/multipart/over.bin", + "op": "get" }, "exchanges": [ { @@ -27165,7 +57319,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -27173,7 +57327,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/append/object.log" + "value": "/fixture/object-tests/multipart/over.bin" } }, { @@ -27181,40 +57335,30 @@ "optional": false, "rule": { "is": "equal", - "value": "c2Vjb25k" - } - }, - { - "at": "/query/comp", - "optional": false, - "rule": { - "is": "equal", - "value": "appendblock" - } - }, - { - "at": "/headers/x-ms-blob-condition-appendpos", - "optional": false, - "rule": { - "is": "equal", - "value": "0" + "value": "" } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 412, + "status": 200, "headers": { - "content-type": "application/xml", + "content-type": "application/octet-stream", "date": { "from": "now" }, - "x-ms-error-code": "AppendPositionConditionNotMet" + "etag": "\"fixture-7dc650e58291\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true" }, "body": { - "encoding": "utf8", - "data": "AppendPositionConditionNotMetFixture error" + "encoding": "base64", + "data": "YmxvY2s=" } } } @@ -27223,44 +57367,70 @@ ], "expect": [ { - "at": "/outcome", + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-7dc650e58291\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 5 + } + }, + { + "at": "/value/content_type", "optional": false, "rule": { "is": "equal", - "value": "error" + "value": "application/octet-stream" } }, { - "at": "/status", - "optional": false, + "at": "/value/version", + "optional": true, "rule": { - "is": "equal", - "value": 412 + "is": "one_of", + "values": [ + null, + "" + ] } }, { - "at": "/code", + "at": "/value/body_base64", "optional": false, "rule": { "is": "equal", - "value": "AppendPositionConditionNotMet" + "value": "YmxvY2s=" } } ], "refusal": null }, { - "id": "operations/azure/append-block", - "profile": "azure", + "id": "operations/azure-hns/get-committed", + "profile": "azure-hns", "lane": "core", - "purpose": "Append a block to an append blob and report its offset", + "purpose": "get committed", "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/append-block" + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "body_base64": "c2Vjb25k", - "key": "object-tests/append/object.log", - "op": "azure.append_block" + "key": "object-tests/multipart/committed.bin", + "op": "get" }, "exchanges": [ { @@ -27272,7 +57442,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -27280,7 +57450,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/append/object.log" + "value": "/fixture/object-tests/multipart/committed.bin" } }, { @@ -27288,34 +57458,30 @@ "optional": false, "rule": { "is": "equal", - "value": "c2Vjb25k" - } - }, - { - "at": "/query/comp", - "optional": false, - "rule": { - "is": "equal", - "value": "appendblock" + "value": "" } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 201, + "status": 200, "headers": { + "content-type": "application/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-etag\"", + "etag": "\"fixture-8ec031f3abfa\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-append-offset": "5", - "x-ms-blob-committed-block-count": "2", - "x-ms-request-server-encrypted": "true" + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true" }, "body": { - "encoding": "empty" + "encoding": "base64", + "data": "Zmlyc3RzZWNvbmQ=" } } } @@ -27332,35 +57498,62 @@ } }, { - "at": "/value/append_offset", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": 5 + "value": "\"fixture-8ec031f3abfa\"" } }, { - "at": "/value/committed_block_count", + "at": "/value/size", "optional": false, "rule": { "is": "equal", - "value": 2 + "value": 11 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "application/octet-stream" + } + }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "Zmlyc3RzZWNvbmQ=" } } ], "refusal": null }, { - "id": "operations/azure/create-append", - "profile": "azure", + "id": "operations/azure-hns/get-container-missing", + "profile": "azure-hns", "lane": "core", - "purpose": "Create an empty append blob", + "purpose": "get container missing. A client reports it as container_not_found: the bucket or container is absent, not the object", "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/put-blob" + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "key": "object-tests/append/object.log", - "op": "azure.create_append" + "key": "object.txt", + "op": "get" }, "exchanges": [ { @@ -27372,7 +57565,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -27380,7 +57573,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/append/object.log" + "value": "/fixture/object.txt" } }, { @@ -27390,30 +57583,22 @@ "is": "equal", "value": "" } - }, - { - "at": "/headers/x-ms-blob-type", - "optional": false, - "rule": { - "is": "equal", - "value": "AppendBlob" - } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 201, + "status": 404, "headers": { + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-etag\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true" + "x-ms-error-code": "ContainerNotFound" }, "body": { - "encoding": "empty" + "encoding": "utf8", + "data": "ContainerNotFoundFixture error" } } } @@ -27426,25 +57611,47 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 404 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "ContainerNotFound" + } + }, + { + "at": "/kind", + "optional": false, + "rule": { + "is": "equal", + "value": "container_not_found" } } ], "refusal": null }, { - "id": "operations/azure/put-leased-if-match-without-lease-id", - "profile": "azure", + "id": "operations/azure-hns/head-container-missing", + "profile": "azure-hns", "lane": "core", - "purpose": "Refuse a write to a leased object whose If-Match holds but that names no lease ID", + "purpose": "Report a HEAD of a blob in a missing container as container_not_found. Azure answers 404 without a body, but names ContainerNotFound in x-ms-error-code", "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/lease-blob" + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "body_base64": "c2Vjb25k", - "if_match": "\"fixture-etag\"", - "key": "object-tests/leases/object.txt", - "op": "put" + "key": "object.txt", + "op": "head" }, "exchanges": [ { @@ -27456,7 +57663,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "HEAD" } }, { @@ -27464,7 +57671,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/leases/object.txt" + "value": "/fixture/object.txt" } }, { @@ -27472,40 +57679,22 @@ "optional": false, "rule": { "is": "equal", - "value": "c2Vjb25k" - } - }, - { - "at": "/headers/x-ms-blob-type", - "optional": false, - "rule": { - "is": "equal", - "value": "BlockBlob" - } - }, - { - "at": "/headers/if-match", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-etag\"" + "value": "" } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 412, + "status": 404, "headers": { - "content-type": "application/xml", "date": { "from": "now" }, - "x-ms-error-code": "LeaseIdMissing" + "x-ms-error-code": "ContainerNotFound" }, "body": { - "encoding": "utf8", - "data": "LeaseIdMissingFixture error" + "encoding": "empty" } } } @@ -27526,7 +57715,7 @@ "optional": false, "rule": { "is": "equal", - "value": 412 + "value": 404 } }, { @@ -27534,25 +57723,32 @@ "optional": false, "rule": { "is": "equal", - "value": "LeaseIdMissing" + "value": "ContainerNotFound" + } + }, + { + "at": "/kind", + "optional": false, + "rule": { + "is": "equal", + "value": "container_not_found" } } ], "refusal": null }, { - "id": "operations/azure/put-leased-with-lease-id", - "profile": "azure", + "id": "operations/azure-hns/get-current-version-of-deleted-object", + "profile": "azure-hns", "lane": "core", - "purpose": "Write to a leased object with its lease ID", + "purpose": "get current version of deleted object", "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/lease-blob" + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "body_base64": "c2Vjb25k", - "key": "object-tests/leases/object.txt", - "lease_id": "11111111-2222-3333-4444-555555555555", - "op": "put" + "key": "object-tests/versions-mtypy4jp/deleted.txt", + "op": "get", + "version": "none-2" }, "exchanges": [ { @@ -27564,7 +57760,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -27572,7 +57768,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/leases/object.txt" + "value": "/fixture/object-tests/versions-mtypy4jp/deleted.txt" } }, { @@ -27580,40 +57776,31 @@ "optional": false, "rule": { "is": "equal", - "value": "c2Vjb25k" - } - }, - { - "at": "/headers/x-ms-blob-type", - "optional": false, - "rule": { - "is": "equal", - "value": "BlockBlob" + "value": "" } }, { - "at": "/headers/x-ms-lease-id", + "at": "/query/versionid", "optional": false, "rule": { "is": "equal", - "value": "11111111-2222-3333-4444-555555555555" + "value": "none-2" } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 201, + "status": 400, "headers": { + "content-type": "application/xml", "date": { "from": "now" - }, - "etag": "\"fixture-etag\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true" + } }, "body": { - "encoding": "empty" + "encoding": "utf8", + "data": "InvalidQueryParameterValueFixture error" } } } @@ -27626,24 +57813,39 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 400 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "InvalidQueryParameterValue" } } ], "refusal": null }, { - "id": "operations/azure/put-leased-without-lease-id", - "profile": "azure", + "id": "operations/azure-hns/get-current-version", + "profile": "azure-hns", "lane": "core", - "purpose": "Refuse a write to a leased object that names no lease ID", + "purpose": "get current version", "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/lease-blob" + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "body_base64": "c2Vjb25k", - "key": "object-tests/leases/object.txt", - "op": "put" + "key": "object-tests/versions-mtypy4jp/object.txt", + "op": "get" }, "exchanges": [ { @@ -27655,7 +57857,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -27663,7 +57865,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/leases/object.txt" + "value": "/fixture/object-tests/versions-mtypy4jp/object.txt" } }, { @@ -27671,32 +57873,31 @@ "optional": false, "rule": { "is": "equal", - "value": "c2Vjb25k" - } - }, - { - "at": "/headers/x-ms-blob-type", - "optional": false, - "rule": { - "is": "equal", - "value": "BlockBlob" + "value": "" } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 412, + "status": 200, "headers": { - "content-type": "application/xml", + "content-md5": "GyZ2GcSBLMRu4oF0eITKUA==", + "content-type": "application/octet-stream", "date": { "from": "now" }, - "x-ms-error-code": "LeaseIdMissing" + "etag": "\"fixture-ecff54f15562\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true" }, "body": { - "encoding": "utf8", - "data": "LeaseIdMissingFixture error" + "encoding": "base64", + "data": "djI=" } } } @@ -27709,41 +57910,75 @@ "optional": false, "rule": { "is": "equal", - "value": "error" + "value": "ok" } }, { - "at": "/status", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": 412 + "value": "\"fixture-ecff54f15562\"" } }, { - "at": "/code", + "at": "/value/size", "optional": false, "rule": { "is": "equal", - "value": "LeaseIdMissing" + "value": 2 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "application/octet-stream" + } + }, + { + "at": "/value/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "GyZ2GcSBLMRu4oF0eITKUA==" + } + }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "djI=" } } ], "refusal": null }, { - "id": "operations/azure/lease-break", - "profile": "azure", + "id": "operations/azure-hns/get-deleted-snapshot", + "profile": "azure-hns", "lane": "core", - "purpose": "Break a lease at once", + "purpose": "get deleted snapshot", "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/lease-blob" + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "action": "break", - "break_period": 0, - "key": "object-tests/leases/object.txt", - "op": "azure.lease" + "key": "object-tests/snapshots/object.txt", + "op": "get", + "snapshot": "2024-01-01T00:00:00.8557081Z" }, "exchanges": [ { @@ -27755,7 +57990,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -27763,7 +57998,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/leases/object.txt" + "value": "/fixture/object-tests/snapshots/object.txt" } }, { @@ -27775,44 +58010,28 @@ } }, { - "at": "/query/comp", - "optional": false, - "rule": { - "is": "equal", - "value": "lease" - } - }, - { - "at": "/headers/x-ms-lease-action", - "optional": false, - "rule": { - "is": "equal", - "value": "break" - } - }, - { - "at": "/headers/x-ms-lease-break-period", + "at": "/query/snapshot", "optional": false, "rule": { "is": "equal", - "value": "0" + "value": "2024-01-01T00:00:00.8557081Z" } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 202, + "status": 404, "headers": { + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-etag\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-time": "0" + "x-ms-error-code": "BlobNotFound" }, "body": { - "encoding": "empty" + "encoding": "utf8", + "data": "BlobNotFoundFixture error" } } } @@ -27825,25 +58044,39 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 404 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "BlobNotFound" } } ], "refusal": null }, { - "id": "operations/azure/lease-release", - "profile": "azure", + "id": "operations/azure-hns/get-deleted-versioned-object", + "profile": "azure-hns", "lane": "core", - "purpose": "Release a lease", + "purpose": "get deleted versioned object", "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/lease-blob" + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "action": "release", - "key": "object-tests/leases/object.txt", - "lease_id": "11111111-2222-3333-4444-555555555555", - "op": "azure.lease" + "key": "object-tests/versions-mtypy4jp/deleted.txt", + "op": "get" }, "exchanges": [ { @@ -27855,7 +58088,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -27863,7 +58096,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/leases/object.txt" + "value": "/fixture/object-tests/versions-mtypy4jp/deleted.txt" } }, { @@ -27873,45 +58106,22 @@ "is": "equal", "value": "" } - }, - { - "at": "/query/comp", - "optional": false, - "rule": { - "is": "equal", - "value": "lease" - } - }, - { - "at": "/headers/x-ms-lease-action", - "optional": false, - "rule": { - "is": "equal", - "value": "release" - } - }, - { - "at": "/headers/x-ms-lease-id", - "optional": false, - "rule": { - "is": "equal", - "value": "11111111-2222-3333-4444-555555555555" - } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 200, + "status": 404, "headers": { + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-etag\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + "x-ms-error-code": "BlobNotFound" }, "body": { - "encoding": "empty" + "encoding": "utf8", + "data": "BlobNotFoundFixture error" } } } @@ -27924,26 +58134,39 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 404 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "BlobNotFound" } } ], "refusal": null }, { - "id": "operations/azure/lease-acquire-leased", - "profile": "azure", + "id": "operations/azure-hns/get-duplicate-id", + "profile": "azure-hns", "lane": "core", - "purpose": "Refuse a second lease while another lease holds the object", + "purpose": "get duplicate id", "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/lease-blob" + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "action": "acquire", - "duration": 15, - "key": "object-tests/leases/object.txt", - "op": "azure.lease", - "proposed_lease_id": "66666666-7777-8888-9999-000000000000" + "key": "object-tests/multipart/duplicate.bin", + "op": "get" }, "exchanges": [ { @@ -27955,7 +58178,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -27963,7 +58186,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/leases/object.txt" + "value": "/fixture/object-tests/multipart/duplicate.bin" } }, { @@ -27973,54 +58196,28 @@ "is": "equal", "value": "" } - }, - { - "at": "/query/comp", - "optional": false, - "rule": { - "is": "equal", - "value": "lease" - } - }, - { - "at": "/headers/x-ms-lease-action", - "optional": false, - "rule": { - "is": "equal", - "value": "acquire" - } - }, - { - "at": "/headers/x-ms-lease-duration", - "optional": false, - "rule": { - "is": "equal", - "value": "15" - } - }, - { - "at": "/headers/x-ms-proposed-lease-id", - "optional": false, - "rule": { - "is": "equal", - "value": "66666666-7777-8888-9999-000000000000" - } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 409, + "status": 200, "headers": { - "content-type": "application/xml", + "content-type": "application/octet-stream", "date": { "from": "now" }, - "x-ms-error-code": "LeaseAlreadyPresent" + "etag": "\"fixture-a8581b642c5f\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true" }, "body": { - "encoding": "utf8", - "data": "LeaseAlreadyPresentFixture error" + "encoding": "base64", + "data": "c2FtZXNhbWU=" } } } @@ -28033,42 +58230,66 @@ "optional": false, "rule": { "is": "equal", - "value": "error" + "value": "ok" } }, { - "at": "/status", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": 409 + "value": "\"fixture-a8581b642c5f\"" } }, { - "at": "/code", + "at": "/value/size", "optional": false, "rule": { "is": "equal", - "value": "LeaseAlreadyPresent" + "value": 8 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "application/octet-stream" + } + }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "c2FtZXNhbWU=" } } ], "refusal": null }, { - "id": "operations/azure/lease-acquire", - "profile": "azure", + "id": "operations/azure-hns/get-empty", + "profile": "azure-hns", "lane": "core", - "purpose": "Acquire a lease on an object with a proposed lease ID", + "purpose": "get empty", "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/lease-blob" + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "action": "acquire", - "duration": 15, - "key": "object-tests/leases/object.txt", - "op": "azure.lease", - "proposed_lease_id": "11111111-2222-3333-4444-555555555555" + "key": "object-tests/write/empty.bin", + "op": "get" }, "exchanges": [ { @@ -28080,7 +58301,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -28088,7 +58309,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/leases/object.txt" + "value": "/fixture/object-tests/write/empty.bin" } }, { @@ -28098,54 +58319,29 @@ "is": "equal", "value": "" } - }, - { - "at": "/query/comp", - "optional": false, - "rule": { - "is": "equal", - "value": "lease" - } - }, - { - "at": "/headers/x-ms-lease-action", - "optional": false, - "rule": { - "is": "equal", - "value": "acquire" - } - }, - { - "at": "/headers/x-ms-lease-duration", - "optional": false, - "rule": { - "is": "equal", - "value": "15" - } - }, - { - "at": "/headers/x-ms-proposed-lease-id", - "optional": false, - "rule": { - "is": "equal", - "value": "11111111-2222-3333-4444-555555555555" - } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 201, + "status": 200, "headers": { + "content-md5": "1B2M2Y8AsgTpgAmY7PhCfg==", + "content-type": "application/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-etag\"", + "etag": "\"fixture-9373f0410116\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-id": "11111111-2222-3333-4444-555555555555" + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true" }, "body": { - "encoding": "empty" + "encoding": "base64", + "data": "" } } } @@ -28162,30 +58358,73 @@ } }, { - "at": "/value/lease_id", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": "11111111-2222-3333-4444-555555555555" + "value": "\"fixture-9373f0410116\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 0 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "application/octet-stream" + } + }, + { + "at": "/value/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "1B2M2Y8AsgTpgAmY7PhCfg==" + } + }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" } } ], "refusal": null }, { - "id": "operations/azure/put-with-tags", - "profile": "azure", + "id": "operations/azure-hns/get-range-of-empty-object", + "profile": "azure-hns", "lane": "core", - "purpose": "Write an object with tags", + "purpose": "Report a range read of an empty object as 416 InvalidRange: no range of it can be satisfied, not even its first byte", "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/put-blob" + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "body_base64": "Zmlyc3Q=", - "key": "object-tests/tags/object.txt", - "op": "put", - "tags": { - "project": "object-tests" + "key": "object-tests/write/empty.bin", + "op": "get", + "range": { + "end": 1, + "start": 0 } }, "exchanges": [ @@ -28198,7 +58437,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -28206,7 +58445,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/tags/object.txt" + "value": "/fixture/object-tests/write/empty.bin" } }, { @@ -28214,73 +58453,36 @@ "optional": false, "rule": { "is": "equal", - "value": "Zmlyc3Q=" - } - }, - { - "at": "/headers/x-ms-blob-type", - "optional": false, - "rule": { - "is": "equal", - "value": "BlockBlob" + "value": "" } }, { - "at": "/headers/x-ms-tags", + "at": "/headers/range", "optional": false, "rule": { "is": "equal", - "value": "project=object-tests" + "value": "bytes=0-0" } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 201, + "status": 416, "headers": { + "content-range": "bytes */0", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-etag\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true" + "x-ms-error-code": "InvalidRange" }, "body": { - "encoding": "empty" + "encoding": "utf8", + "data": "InvalidRangeFixture error" } } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - } - ], - "refusal": null - }, - { - "id": "operations/azure/get-tags", - "profile": "azure", - "lane": "core", - "purpose": "Read the tags of an object", - "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/get-blob-tags" - ], - "call": { - "key": "object-tests/tags/object.txt", - "op": "azure.get_tags" - }, - "exchanges": [ - { - "alternatives": [ + }, { "request": [ { @@ -28296,7 +58498,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/tags/object.txt" + "value": "/fixture/object-tests/write/empty.bin" } }, { @@ -28308,27 +58510,29 @@ } }, { - "at": "/query/comp", + "at": "/headers/x-ms-range", "optional": false, "rule": { "is": "equal", - "value": "tags" + "value": "bytes=0-0" } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 200, + "status": 416, "headers": { + "content-range": "bytes */0", "content-type": "application/xml", "date": { "from": "now" - } + }, + "x-ms-error-code": "InvalidRange" }, "body": { "encoding": "utf8", - "data": "projectobject-tests" + "data": "InvalidRangeFixture error" } } } @@ -28341,36 +58545,40 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "error" } }, { - "at": "/value/tags", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": { - "project": "object-tests" - } + "value": 416 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "InvalidRange" } } ], "refusal": null }, { - "id": "operations/azure/set-tags", - "profile": "azure", + "id": "operations/azure-hns/get-if-match-current", + "profile": "azure-hns", "lane": "core", - "purpose": "Replace the tags of an object", + "purpose": "get if match current", "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/set-blob-tags" + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "key": "object-tests/tags/object.txt", - "op": "azure.set_tags", - "tags": { - "project": "object-tests" - } + "if_match": "\"fixture-5295cdfd25ff\"", + "key": "object-tests/read/object.txt", + "op": "get" }, "exchanges": [ { @@ -28382,7 +58590,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -28390,48 +58598,47 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/tags/object.txt" - } - }, - { - "at": "/body_text", - "optional": false, - "rule": { - "is": "xml", - "value": "projectobject-tests" + "value": "/fixture/object-tests/read/object.txt" } }, { - "at": "/query/comp", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "tags" + "value": "" } }, { - "at": "/headers/content-type", + "at": "/headers/if-match", "optional": false, "rule": { - "is": "one_of", - "values": [ - "application/xml", - "application/xml; charset=UTF-8" - ] + "is": "equal", + "value": "\"fixture-5295cdfd25ff\"" } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 204, + "status": 200, "headers": { + "content-md5": "H1VC0PNTmj+yaCRN4U931g==", + "content-type": "application/octet-stream", "date": { "from": "now" - } + }, + "etag": "\"fixture-5295cdfd25ff\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true" }, "body": { - "encoding": "empty" + "encoding": "base64", + "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" } } } @@ -28446,23 +58653,73 @@ "is": "equal", "value": "ok" } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-5295cdfd25ff\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 30 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "application/octet-stream" + } + }, + { + "at": "/value/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "H1VC0PNTmj+yaCRN4U931g==" + } + }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + } } ], "refusal": null }, { - "id": "operations/azure/put-with-tier", - "profile": "azure", + "id": "operations/azure-hns/get-if-none-match-other", + "profile": "azure-hns", "lane": "core", - "purpose": "Write an object straight into the Cool access tier", + "purpose": "get if none match other", "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/put-blob" + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "body_base64": "Zmlyc3Q=", - "key": "object-tests/tiers/object.txt", - "op": "put", - "tier": "Cool" + "if_none_match": "\"fixture-088e5dc109cf\"", + "key": "object-tests/read/object.txt", + "op": "get" }, "exchanges": [ { @@ -28474,7 +58731,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -28482,7 +58739,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/tiers/object.txt" + "value": "/fixture/object-tests/read/object.txt" } }, { @@ -28490,40 +58747,39 @@ "optional": false, "rule": { "is": "equal", - "value": "Zmlyc3Q=" - } - }, - { - "at": "/headers/x-ms-blob-type", - "optional": false, - "rule": { - "is": "equal", - "value": "BlockBlob" + "value": "" } }, { - "at": "/headers/x-ms-access-tier", + "at": "/headers/if-none-match", "optional": false, "rule": { "is": "equal", - "value": "Cool" + "value": "\"fixture-088e5dc109cf\"" } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 201, + "status": 200, "headers": { + "content-md5": "H1VC0PNTmj+yaCRN4U931g==", + "content-type": "application/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-etag\"", + "etag": "\"fixture-5295cdfd25ff\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true" + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true" }, "body": { - "encoding": "empty" + "encoding": "base64", + "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" } } } @@ -28532,28 +58788,78 @@ ], "expect": [ { - "at": "/outcome", + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-5295cdfd25ff\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 30 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "application/octet-stream" + } + }, + { + "at": "/value/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "H1VC0PNTmj+yaCRN4U931g==" + } + }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/body_base64", "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" } } ], "refusal": null }, { - "id": "operations/azure/set-tier-unknown", - "profile": "azure", + "id": "operations/azure-hns/get-key-with-hash", + "profile": "azure-hns", "lane": "core", - "purpose": "Refuse an access tier the service does not have", + "purpose": "get key with hash", "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/set-blob-tier" + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "key": "object-tests/tiers/object.txt", - "op": "azure.set_tier", - "tier": "Warm" + "key": "object-tests/names/hash#tag.txt", + "op": "get" }, "exchanges": [ { @@ -28565,7 +58871,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -28573,7 +58879,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/tiers/object.txt" + "value": "/fixture/object-tests/names/hash#tag.txt" } }, { @@ -28583,38 +58889,29 @@ "is": "equal", "value": "" } - }, - { - "at": "/query/comp", - "optional": false, - "rule": { - "is": "equal", - "value": "tier" - } - }, - { - "at": "/headers/x-ms-access-tier", - "optional": false, - "rule": { - "is": "equal", - "value": "Warm" - } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 400, + "status": 200, "headers": { - "content-type": "application/xml", + "content-md5": "xMpCOKC5I4INzFCab3WEmw==", + "content-type": "application/octet-stream", "date": { "from": "now" }, - "x-ms-error-code": "InvalidHeaderValue" + "etag": "\"fixture-ed49e7da63af\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true" }, "body": { - "encoding": "utf8", - "data": "InvalidHeaderValueFixture error" + "encoding": "base64", + "data": "MQ==" } } } @@ -28627,40 +58924,74 @@ "optional": false, "rule": { "is": "equal", - "value": "error" + "value": "ok" } }, { - "at": "/status", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": 400 + "value": "\"fixture-ed49e7da63af\"" } }, { - "at": "/code", + "at": "/value/size", "optional": false, "rule": { "is": "equal", - "value": "InvalidHeaderValue" + "value": 1 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "application/octet-stream" + } + }, + { + "at": "/value/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "xMpCOKC5I4INzFCab3WEmw==" + } + }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MQ==" } } ], "refusal": null }, { - "id": "operations/azure/set-tier-cool", - "profile": "azure", + "id": "operations/azure-hns/get-key-with-percent", + "profile": "azure-hns", "lane": "core", - "purpose": "Move an object to the Cool access tier", + "purpose": "get key with percent", "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/set-blob-tier" + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "key": "object-tests/tiers/object.txt", - "op": "azure.set_tier", - "tier": "Cool" + "key": "object-tests/names/percent%20.txt", + "op": "get" }, "exchanges": [ { @@ -28672,7 +59003,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -28680,7 +59011,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/tiers/object.txt" + "value": "/fixture/object-tests/names/percent%20.txt" } }, { @@ -28690,22 +59021,6 @@ "is": "equal", "value": "" } - }, - { - "at": "/query/comp", - "optional": false, - "rule": { - "is": "equal", - "value": "tier" - } - }, - { - "at": "/headers/x-ms-access-tier", - "optional": false, - "rule": { - "is": "equal", - "value": "Cool" - } } ], "allow_headers": [], @@ -28713,12 +59028,22 @@ "response": { "status": 200, "headers": { + "content-md5": "xMpCOKC5I4INzFCab3WEmw==", + "content-type": "application/octet-stream", "date": { "from": "now" - } + }, + "etag": "\"fixture-c4ca668cf15e\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true" }, "body": { - "encoding": "empty" + "encoding": "base64", + "data": "MQ==" } } } @@ -28733,24 +59058,72 @@ "is": "equal", "value": "ok" } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-c4ca668cf15e\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "application/octet-stream" + } + }, + { + "at": "/value/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "xMpCOKC5I4INzFCab3WEmw==" + } + }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MQ==" + } } ], "refusal": null }, { - "id": "operations/azure/put-internal-error", - "profile": "azure", + "id": "operations/azure-hns/get-key-with-plus", + "profile": "azure-hns", "lane": "core", - "purpose": "Report a 500 InternalError answer as an error, after at most 5 retries", + "purpose": "get key with plus", "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/common-rest-api-error-codes", - "https://learn.microsoft.com/en-us/rest/api/storageservices/blob-service-error-codes" + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], - "origin": "transient", "call": { - "body_base64": "MDEyMzQ1Njc4OQ==", - "key": "object-tests/write/object.txt", - "op": "put" + "key": "object-tests/names/plus+plus.txt", + "op": "get" }, "exchanges": [ { @@ -28762,7 +59135,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -28770,7 +59143,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/write/object.txt" + "value": "/fixture/object-tests/names/plus+plus.txt" } }, { @@ -28778,157 +59151,113 @@ "optional": false, "rule": { "is": "equal", - "value": "MDEyMzQ1Njc4OQ==" - } - }, - { - "at": "/headers/x-ms-blob-type", - "optional": false, - "rule": { - "is": "equal", - "value": "BlockBlob" + "value": "" } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 500, + "status": 200, "headers": { - "content-type": "application/xml", + "content-md5": "xMpCOKC5I4INzFCab3WEmw==", + "content-type": "application/octet-stream", "date": { "from": "now" }, - "x-ms-error-code": "InternalError" + "etag": "\"fixture-f09c0f273191\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true" }, "body": { - "encoding": "utf8", - "data": "InternalErrorThe server encountered an internal error. Please retry the request." + "encoding": "base64", + "data": "MQ==" } } } ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } }, { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "PUT" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/write/object.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "MDEyMzQ1Njc4OQ==" - } - }, - { - "at": "/headers/x-ms-blob-type", - "optional": false, - "rule": { - "is": "equal", - "value": "BlockBlob" - } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 500, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - }, - "x-ms-error-code": "InternalError" - }, - "body": { - "encoding": "utf8", - "data": "InternalErrorThe server encountered an internal error. Please retry the request." - } - } - } - ], - "optional": true + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-f09c0f273191\"" + } }, { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "PUT" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/write/object.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "MDEyMzQ1Njc4OQ==" - } - }, - { - "at": "/headers/x-ms-blob-type", - "optional": false, - "rule": { - "is": "equal", - "value": "BlockBlob" - } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 500, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - }, - "x-ms-error-code": "InternalError" - }, - "body": { - "encoding": "utf8", - "data": "InternalErrorThe server encountered an internal error. Please retry the request." - } - } - } - ], - "optional": true + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "application/octet-stream" + } + }, + { + "at": "/value/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "xMpCOKC5I4INzFCab3WEmw==" + } + }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MQ==" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/get-key-with-space", + "profile": "azure-hns", + "lane": "core", + "purpose": "get key space", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/get-blob" + ], + "call": { + "key": "a b", + "op": "get" + }, + "exchanges": [ { "alternatives": [ { @@ -28938,7 +59267,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -28946,7 +59275,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/write/object.txt" + "value": "/fixture/a b" } }, { @@ -28954,40 +59283,72 @@ "optional": false, "rule": { "is": "equal", - "value": "MDEyMzQ1Njc4OQ==" - } - }, - { - "at": "/headers/x-ms-blob-type", - "optional": false, - "rule": { - "is": "equal", - "value": "BlockBlob" + "value": "" } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 500, + "status": 200, "headers": { - "content-type": "application/xml", + "content-type": "application/octet-stream", "date": { "from": "now" }, - "x-ms-error-code": "InternalError" + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-request-id": "fixture-request-id", + "x-ms-request-server-encrypted": "true", + "x-ms-server-encrypted": "true", + "x-ms-version": "2023-11-03" }, "body": { - "encoding": "utf8", - "data": "InternalErrorThe server encountered an internal error. Please retry the request." + "encoding": "base64", + "data": "aGVsbG8=" } } } - ], - "optional": true + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "aGVsbG8=" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/get-key-with-question", + "profile": "azure-hns", + "lane": "core", + "purpose": "get key question", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/get-blob" + ], + "call": { + "key": "a?b", + "op": "get" + }, + "exchanges": [ { "alternatives": [ { @@ -28997,7 +59358,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -29005,7 +59366,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/write/object.txt" + "value": "/fixture/a?b" } }, { @@ -29013,40 +59374,72 @@ "optional": false, "rule": { "is": "equal", - "value": "MDEyMzQ1Njc4OQ==" - } - }, - { - "at": "/headers/x-ms-blob-type", - "optional": false, - "rule": { - "is": "equal", - "value": "BlockBlob" + "value": "" } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 500, + "status": 200, "headers": { - "content-type": "application/xml", + "content-type": "application/octet-stream", "date": { "from": "now" }, - "x-ms-error-code": "InternalError" + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-request-id": "fixture-request-id", + "x-ms-request-server-encrypted": "true", + "x-ms-server-encrypted": "true", + "x-ms-version": "2023-11-03" }, "body": { - "encoding": "utf8", - "data": "InternalErrorThe server encountered an internal error. Please retry the request." + "encoding": "base64", + "data": "aGVsbG8=" } } } - ], - "optional": true + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "aGVsbG8=" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/get-key-with-non-ascii", + "profile": "azure-hns", + "lane": "core", + "purpose": "get key unicode", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/get-blob" + ], + "call": { + "key": "café/雪", + "op": "get" + }, + "exchanges": [ { "alternatives": [ { @@ -29056,7 +59449,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -29064,7 +59457,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/write/object.txt" + "value": "/fixture/café/雪" } }, { @@ -29072,39 +59465,37 @@ "optional": false, "rule": { "is": "equal", - "value": "MDEyMzQ1Njc4OQ==" - } - }, - { - "at": "/headers/x-ms-blob-type", - "optional": false, - "rule": { - "is": "equal", - "value": "BlockBlob" + "value": "" } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 500, + "status": 200, "headers": { - "content-type": "application/xml", + "content-type": "application/octet-stream", "date": { "from": "now" }, - "x-ms-error-code": "InternalError" + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-request-id": "fixture-request-id", + "x-ms-request-server-encrypted": "true", + "x-ms-server-encrypted": "true", + "x-ms-version": "2023-11-03" }, "body": { - "encoding": "utf8", - "data": "InternalErrorThe server encountered an internal error. Please retry the request." + "encoding": "base64", + "data": "aGVsbG8=" } } } - ], - "optional": true + ] } ], "expect": [ @@ -29113,41 +59504,31 @@ "optional": false, "rule": { "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 500 + "value": "ok" } }, { - "at": "/code", + "at": "/value/body_base64", "optional": false, "rule": { "is": "equal", - "value": "InternalError" + "value": "aGVsbG8=" } } ], "refusal": null }, { - "id": "operations/azure/put-if-unmodified-since-past", - "profile": "azure", + "id": "operations/azure-hns/get-key-with-separators", + "profile": "azure-hns", "lane": "core", - "purpose": "Refuse a write with 412 when the object changed after If-Unmodified-Since", + "purpose": "get key separators", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "https://learn.microsoft.com/en-us/rest/api/storageservices/get-blob" ], "call": { - "body_base64": "MDEyMzQ1Njc4OQ==", - "if_unmodified_since": "Sat, 01 Jan 2000 00:00:00 GMT", - "key": "object-tests/write/object.txt", - "op": "put" + "key": "a//b/", + "op": "get" }, "exchanges": [ { @@ -29159,7 +59540,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -29167,7 +59548,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/write/object.txt" + "value": "/fixture/a//b/" } }, { @@ -29175,42 +59556,24 @@ "optional": false, "rule": { "is": "equal", - "value": "MDEyMzQ1Njc4OQ==" - } - }, - { - "at": "/headers/x-ms-blob-type", - "optional": false, - "rule": { - "is": "equal", - "value": "BlockBlob" - } - }, - { - "at": "/headers/if-unmodified-since", - "optional": false, - "rule": { - "is": "equal", - "value": "Sat, 01 Jan 2000 00:00:00 GMT" + "value": "" } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 412, + "status": 404, "headers": { "content-type": "application/xml", "date": { "from": "now" }, - "x-ms-error-code": "ConditionNotMet" + "x-ms-error-code": "BlobNotFound" }, "body": { "encoding": "utf8", - "data": "ConditionNotMetFixture error" + "data": "BlobNotFoundFixture error" } } } @@ -29231,7 +59594,7 @@ "optional": false, "rule": { "is": "equal", - "value": 412 + "value": 404 } }, { @@ -29239,25 +59602,23 @@ "optional": false, "rule": { "is": "equal", - "value": "ConditionNotMet" + "value": "BlobNotFound" } } ], "refusal": null }, { - "id": "operations/azure/put-content-encoding-gzip", - "profile": "azure", + "id": "operations/azure-hns/get-metadata-empty-value", + "profile": "azure-hns", "lane": "core", - "purpose": "Store Content-Encoding: gzip with a write, and the gzip bytes unchanged", + "purpose": "get metadata empty value", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "body_base64": "H4sIAAAAAAACA0vOzy0oSi0uTk1RyM9TKCgtKsgvTuUCAAHVPIcWAAAA", - "content_encoding": "gzip", - "key": "object-tests/write/object.txt", - "op": "put" + "key": "object-tests/metadata/empty-value.txt", + "op": "get" }, "exchanges": [ { @@ -29269,73 +59630,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/write/object.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "H4sIAAAAAAACA0vOzy0oSi0uTk1RyM9TKCgtKsgvTuUCAAHVPIcWAAAA" - } - }, - { - "at": "/headers/x-ms-blob-type", - "optional": false, - "rule": { - "is": "equal", - "value": "BlockBlob" - } - }, - { - "at": "/headers/x-ms-blob-content-encoding", - "optional": false, - "rule": { - "is": "equal", - "value": "gzip" - } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 201, - "headers": { - "content-md5": "CVsDGvNMZH4SPA4MSLswrA==", - "date": { - "from": "now" - }, - "etag": "\"fixture-b9991ef94e3d\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true", - "x-ms-version-id": "2024-01-01T00:00:00.2084665Z" - }, - "body": { - "encoding": "base64", - "data": "" - } - } - }, - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -29343,7 +59638,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/write/object.txt" + "value": "/fixture/object-tests/metadata/empty-value.txt" } }, { @@ -29351,46 +59646,32 @@ "optional": false, "rule": { "is": "equal", - "value": "H4sIAAAAAAACA0vOzy0oSi0uTk1RyM9TKCgtKsgvTuUCAAHVPIcWAAAA" - } - }, - { - "at": "/headers/x-ms-blob-type", - "optional": false, - "rule": { - "is": "equal", - "value": "BlockBlob" - } - }, - { - "at": "/headers/content-encoding", - "optional": false, - "rule": { - "is": "equal", - "value": "gzip" + "value": "" } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 201, + "status": 200, "headers": { - "content-md5": "CVsDGvNMZH4SPA4MSLswrA==", + "content-md5": "xMpCOKC5I4INzFCab3WEmw==", + "content-type": "application/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-b9991ef94e3d\"", + "etag": "\"fixture-18852ad86043\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true", - "x-ms-version-id": "2024-01-01T00:00:00.2084665Z" + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-meta-empty": "", + "x-ms-server-encrypted": "true" }, "body": { "encoding": "base64", - "data": "" + "data": "MQ==" } } } @@ -29411,36 +59692,77 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-b9991ef94e3d\"" + "value": "\"fixture-18852ad86043\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "application/octet-stream" + } + }, + { + "at": "/value/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "xMpCOKC5I4INzFCab3WEmw==" } }, { "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/body_base64", "optional": false, "rule": { "is": "equal", - "value": "2024-01-01T00:00:00.2084665Z" + "value": "MQ==" + } + }, + { + "at": "/value/metadata", + "optional": false, + "rule": { + "is": "equal", + "value": { + "empty": "" + } } } ], "refusal": null }, { - "id": "operations/azure/put-content-properties", - "profile": "azure", + "id": "operations/azure-hns/get-metadata-of-snapshot", + "profile": "azure-hns", "lane": "core", - "purpose": "Store Content-Type, Content-Language, Content-Disposition and Cache-Control with a write", + "purpose": "get metadata of snapshot", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "body_base64": "MDEyMzQ1Njc4OQ==", - "cache_control": "max-age=3600", - "content_disposition": "attachment; filename=\"report.txt\"", - "content_language": "nl-NL", - "content_type": "text/plain; charset=utf-8", - "key": "object-tests/write/object.txt", - "op": "put" + "key": "object-tests/metadata/snapshotted.txt", + "op": "get", + "snapshot": "2024-01-01T00:00:00.1577201Z" }, "exchanges": [ { @@ -29452,97 +59774,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/write/object.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "MDEyMzQ1Njc4OQ==" - } - }, - { - "at": "/headers/x-ms-blob-type", - "optional": false, - "rule": { - "is": "equal", - "value": "BlockBlob" - } - }, - { - "at": "/headers/x-ms-blob-content-type", - "optional": false, - "rule": { - "is": "equal", - "value": "text/plain; charset=utf-8" - } - }, - { - "at": "/headers/x-ms-blob-content-language", - "optional": false, - "rule": { - "is": "equal", - "value": "nl-NL" - } - }, - { - "at": "/headers/x-ms-blob-content-disposition", - "optional": false, - "rule": { - "is": "equal", - "value": "attachment; filename=\"report.txt\"" - } - }, - { - "at": "/headers/x-ms-blob-cache-control", - "optional": false, - "rule": { - "is": "equal", - "value": "max-age=3600" - } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 201, - "headers": { - "content-md5": "eB5eJF1ptWaXm4bijSPyxw==", - "date": { - "from": "now" - }, - "etag": "\"fixture-b9991ef94e3d\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true", - "x-ms-version-id": "2024-01-01T00:00:00.2084665Z" - }, - "body": { - "encoding": "base64", - "data": "" - } - } - }, - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -29550,7 +59782,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/write/object.txt" + "value": "/fixture/object-tests/metadata/snapshotted.txt" } }, { @@ -29558,70 +59790,32 @@ "optional": false, "rule": { "is": "equal", - "value": "MDEyMzQ1Njc4OQ==" - } - }, - { - "at": "/headers/x-ms-blob-type", - "optional": false, - "rule": { - "is": "equal", - "value": "BlockBlob" - } - }, - { - "at": "/headers/content-type", - "optional": false, - "rule": { - "is": "equal", - "value": "text/plain; charset=utf-8" - } - }, - { - "at": "/headers/content-language", - "optional": false, - "rule": { - "is": "equal", - "value": "nl-NL" - } - }, - { - "at": "/headers/x-ms-blob-content-disposition", - "optional": false, - "rule": { - "is": "equal", - "value": "attachment; filename=\"report.txt\"" + "value": "" } }, { - "at": "/headers/cache-control", + "at": "/query/snapshot", "optional": false, "rule": { "is": "equal", - "value": "max-age=3600" + "value": "2024-01-01T00:00:00.1577201Z" } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 201, + "status": 404, "headers": { - "content-md5": "eB5eJF1ptWaXm4bijSPyxw==", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-b9991ef94e3d\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true", - "x-ms-version-id": "2024-01-01T00:00:00.2084665Z" + "x-ms-error-code": "BlobNotFound" }, "body": { - "encoding": "base64", - "data": "" + "encoding": "utf8", + "data": "BlobNotFoundFixture error" } } } @@ -29634,40 +59828,39 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "error" } }, { - "at": "/value/etag", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-b9991ef94e3d\"" + "value": 404 } }, { - "at": "/value/version", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": "2024-01-01T00:00:00.2084665Z" + "value": "BlobNotFound" } } ], "refusal": null }, { - "id": "operations/azure/put-first-version", - "profile": "azure", + "id": "operations/azure-hns/get-metadata-replaced", + "profile": "azure-hns", "lane": "core", - "purpose": "put first version", + "purpose": "get metadata replaced", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "body_base64": "djE=", - "key": "object-tests/versions-mtydohr2/object.txt", - "op": "put" + "key": "object-tests/metadata/replaced.txt", + "op": "get" }, "exchanges": [ { @@ -29679,7 +59872,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -29687,7 +59880,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/versions-mtydohr2/object.txt" + "value": "/fixture/object-tests/metadata/replaced.txt" } }, { @@ -29695,38 +59888,31 @@ "optional": false, "rule": { "is": "equal", - "value": "djE=" - } - }, - { - "at": "/headers/x-ms-blob-type", - "optional": false, - "rule": { - "is": "equal", - "value": "BlockBlob" + "value": "" } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 201, + "status": 200, "headers": { - "content-md5": "ZlTHNMyrj0QP8IJetEPcfw==", + "content-md5": "yB5yjZ1ML2NvBn+JzBSGLA==", + "content-type": "application/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-5769a0807b46\"", + "etag": "\"fixture-c24dabf9e117\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true", - "x-ms-version-id": "2024-01-01T00:00:00.2318906Z" + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true" }, "body": { "encoding": "base64", - "data": "" + "data": "Mg==" } } } @@ -29747,33 +59933,66 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-5769a0807b46\"" + "value": "\"fixture-c24dabf9e117\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "application/octet-stream" + } + }, + { + "at": "/value/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "yB5yjZ1ML2NvBn+JzBSGLA==" } }, { "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/body_base64", "optional": false, "rule": { "is": "equal", - "value": "2024-01-01T00:00:00.2318906Z" + "value": "Mg==" } } ], "refusal": null }, { - "id": "operations/azure/put-if-match-current", - "profile": "azure", + "id": "operations/azure-hns/get-metadata", + "profile": "azure-hns", "lane": "core", - "purpose": "put if match current", + "purpose": "get metadata", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "body_base64": "cmVwbGFjZWQ=", - "if_match": "\"fixture-b9991ef94e3d\"", - "key": "object-tests/write/object.txt", - "op": "put" + "key": "object-tests/metadata/object.txt", + "op": "get" }, "exchanges": [ { @@ -29785,7 +60004,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -29793,7 +60012,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/write/object.txt" + "value": "/fixture/object-tests/metadata/object.txt" } }, { @@ -29801,46 +60020,33 @@ "optional": false, "rule": { "is": "equal", - "value": "cmVwbGFjZWQ=" - } - }, - { - "at": "/headers/if-match", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-b9991ef94e3d\"" - } - }, - { - "at": "/headers/x-ms-blob-type", - "optional": false, - "rule": { - "is": "equal", - "value": "BlockBlob" + "value": "" } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 201, + "status": 200, "headers": { - "content-md5": "kbskg1kEP+mEFuJZyb3xDQ==", + "content-md5": "xMpCOKC5I4INzFCab3WEmw==", + "content-type": "application/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-3e075954b24b\"", + "etag": "\"fixture-4d04dba3441e\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true", - "x-ms-version-id": "2024-01-01T00:00:00.3814952Z" + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-meta-name": "value", + "x-ms-meta-second": "2", + "x-ms-server-encrypted": "true" }, "body": { "encoding": "base64", - "data": "" + "data": "MQ==" } } } @@ -29861,33 +60067,77 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-3e075954b24b\"" + "value": "\"fixture-4d04dba3441e\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "application/octet-stream" + } + }, + { + "at": "/value/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "xMpCOKC5I4INzFCab3WEmw==" } }, { "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/body_base64", "optional": false, "rule": { "is": "equal", - "value": "2024-01-01T00:00:00.3814952Z" + "value": "MQ==" + } + }, + { + "at": "/value/metadata", + "optional": false, + "rule": { + "is": "equal", + "value": { + "name": "value", + "second": "2" + } } } ], "refusal": null }, { - "id": "operations/azure/put-if-none-match-missing", - "profile": "azure", + "id": "operations/azure-hns/get-metadata-ignores-unknown-headers", + "profile": "azure-hns", "lane": "core", - "purpose": "put if none match missing", + "purpose": "Surface user metadata; unknown headers must not become metadata.", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "https://learn.microsoft.com/en-us/rest/api/storageservices/get-blob" ], "call": { - "body_base64": "ZnJlc2g=", - "if_none_match": "*", - "key": "object-tests/write/fresh.txt", - "op": "put" + "key": "object", + "op": "get" }, "exchanges": [ { @@ -29899,7 +60149,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -29907,7 +60157,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/write/fresh.txt" + "value": "/fixture/object" } }, { @@ -29915,46 +60165,35 @@ "optional": false, "rule": { "is": "equal", - "value": "ZnJlc2g=" - } - }, - { - "at": "/headers/if-none-match", - "optional": false, - "rule": { - "is": "equal", - "value": "*" - } - }, - { - "at": "/headers/x-ms-blob-type", - "optional": false, - "rule": { - "is": "equal", - "value": "BlockBlob" + "value": "" } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 201, + "status": 200, "headers": { - "content-md5": "dgEIWMg2LXMC71+UNqpmOQ==", + "content-type": "application/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-0445b9b5a1dd\"", + "etag": "\"fixture-etag\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-meta-author": "Ada", + "x-ms-request-id": "fixture-request-id", "x-ms-request-server-encrypted": "true", - "x-ms-version-id": "2024-01-01T00:00:00.2457093Z" + "x-ms-server-encrypted": "true", + "x-ms-version": "2023-11-03", + "x-unrelated": "not metadata" }, "body": { "encoding": "base64", - "data": "" + "data": "aGVsbG8=" } } } @@ -29971,36 +60210,37 @@ } }, { - "at": "/value/etag", + "at": "/value/body_base64", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-0445b9b5a1dd\"" + "value": "aGVsbG8=" } }, { - "at": "/value/version", + "at": "/value/metadata", "optional": false, "rule": { "is": "equal", - "value": "2024-01-01T00:00:00.2457093Z" + "value": { + "author": "Ada" + } } } ], "refusal": null }, { - "id": "operations/azure/put-key-1024", - "profile": "azure", + "id": "operations/azure-hns/get-missing", + "profile": "azure-hns", "lane": "core", - "purpose": "put key 1024", + "purpose": "get missing. A client reports it as not_found: the object is absent", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "body_base64": "MQ==", - "key": "object-tests/long/kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", - "op": "put" + "key": "object-tests/read/absent.txt", + "op": "get" }, "exchanges": [ { @@ -30012,7 +60252,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -30020,7 +60260,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/long/kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk" + "value": "/fixture/object-tests/read/absent.txt" } }, { @@ -30028,38 +60268,24 @@ "optional": false, "rule": { "is": "equal", - "value": "MQ==" - } - }, - { - "at": "/headers/x-ms-blob-type", - "optional": false, - "rule": { - "is": "equal", - "value": "BlockBlob" + "value": "" } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 201, + "status": 404, "headers": { - "content-md5": "xMpCOKC5I4INzFCab3WEmw==", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-cf057aba568d\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true", - "x-ms-version-id": "2024-01-01T00:00:00.8738118Z" + "x-ms-error-code": "BlobNotFound" }, "body": { - "encoding": "base64", - "data": "" + "encoding": "utf8", + "data": "BlobNotFoundFixture error" } } } @@ -30072,40 +60298,50 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "error" } }, { - "at": "/value/etag", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-cf057aba568d\"" + "value": 404 } }, { - "at": "/value/version", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": "2024-01-01T00:00:00.8738118Z" + "value": "BlobNotFound" + } + }, + { + "at": "/kind", + "optional": false, + "rule": { + "is": "equal", + "value": "not_found" } } ], "refusal": null }, { - "id": "operations/azure/put-key-1025", - "profile": "azure", + "id": "operations/azure-hns/get-missing-code-in-body", + "profile": "azure-hns", "lane": "core", - "purpose": "put key 1025", + "purpose": "get missing, with the error code only in the XML body. A client reports it as not_found: the object is absent", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp", + "https://learn.microsoft.com/en-us/rest/api/storageservices/common-rest-api-error-codes", + "https://learn.microsoft.com/en-us/rest/api/storageservices/blob-service-error-codes" ], + "origin": "constructed", "call": { - "body_base64": "MQ==", - "key": "object-tests/long/kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", - "op": "put" + "key": "object-tests/read/absent.txt", + "op": "get" }, "exchanges": [ { @@ -30117,7 +60353,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -30125,7 +60361,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/long/kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk" + "value": "/fixture/object-tests/read/absent.txt" } }, { @@ -30133,34 +60369,23 @@ "optional": false, "rule": { "is": "equal", - "value": "MQ==" - } - }, - { - "at": "/headers/x-ms-blob-type", - "optional": false, - "rule": { - "is": "equal", - "value": "BlockBlob" + "value": "" } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 400, + "status": 404, "headers": { "content-type": "application/xml", "date": { "from": "now" - }, - "x-ms-error-code": "OutOfRangeInput" + } }, "body": { "encoding": "utf8", - "data": "OutOfRangeInputFixture error" + "data": "BlobNotFoundFixture error" } } } @@ -30181,7 +60406,7 @@ "optional": false, "rule": { "is": "equal", - "value": 400 + "value": 404 } }, { @@ -30189,65 +60414,32 @@ "optional": false, "rule": { "is": "equal", - "value": "OutOfRangeInput" - } - } - ], - "refusal": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "refused" + "value": "BlobNotFound" } }, { "at": "/kind", "optional": false, - "rule": { - "is": "matches", - "pattern": ".+" - } - }, - { - "at": "/parameter", - "optional": false, - "rule": { - "is": "equal", - "value": "key" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 400 - } - }, - { - "at": "/code", - "optional": false, "rule": { "is": "equal", - "value": "OutOfRangeInput" + "value": "not_found" } } - ] + ], + "refusal": null }, { - "id": "operations/azure/put-key-under-object", - "profile": "azure", + "id": "operations/azure-hns/get-not-modified", + "profile": "azure-hns", "lane": "core", - "purpose": "put key under object", + "purpose": "get not modified", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "body_base64": "MQ==", - "key": "object-tests/order/a/b", - "op": "put" + "if_none_match": "\"fixture-5295cdfd25ff\"", + "key": "object-tests/read/object.txt", + "op": "get" }, "exchanges": [ { @@ -30259,7 +60451,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -30267,7 +60459,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/order/a/b" + "value": "/fixture/object-tests/read/object.txt" } }, { @@ -30275,34 +60467,27 @@ "optional": false, "rule": { "is": "equal", - "value": "MQ==" + "value": "" } }, { - "at": "/headers/x-ms-blob-type", + "at": "/headers/if-none-match", "optional": false, "rule": { "is": "equal", - "value": "BlockBlob" + "value": "\"fixture-5295cdfd25ff\"" } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 201, + "status": 304, "headers": { - "content-md5": "xMpCOKC5I4INzFCab3WEmw==", "date": { "from": "now" }, - "etag": "\"fixture-17ced520f182\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true", - "x-ms-version-id": "2024-01-01T00:00:00.2584945Z" + "x-ms-error-code": "ConditionNotMet" }, "body": { "encoding": "base64", @@ -30319,41 +60504,40 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "error" } }, { - "at": "/value/etag", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-17ced520f182\"" + "value": 304 } }, { - "at": "/value/version", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": "2024-01-01T00:00:00.2584945Z" + "value": "ConditionNotMet" } } ], "refusal": null }, { - "id": "operations/azure/put-lost-the-race-to-create", - "profile": "azure", + "id": "operations/azure-hns/get-precondition-failed", + "profile": "azure-hns", "lane": "core", - "purpose": "put lost the race to create", + "purpose": "get precondition failed", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "body_base64": "YW5vdGhlciBvYmplY3Q=", - "if_none_match": "*", - "key": "object-tests/write/object.txt", - "op": "put" + "if_match": "\"fixture-088e5dc109cf\"", + "key": "object-tests/read/object.txt", + "op": "get" }, "exchanges": [ { @@ -30365,7 +60549,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -30373,7 +60557,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/write/object.txt" + "value": "/fixture/object-tests/read/object.txt" } }, { @@ -30381,42 +60565,32 @@ "optional": false, "rule": { "is": "equal", - "value": "YW5vdGhlciBvYmplY3Q=" - } - }, - { - "at": "/headers/if-none-match", - "optional": false, - "rule": { - "is": "equal", - "value": "*" + "value": "" } }, { - "at": "/headers/x-ms-blob-type", + "at": "/headers/if-match", "optional": false, "rule": { "is": "equal", - "value": "BlockBlob" + "value": "\"fixture-088e5dc109cf\"" } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 409, + "status": 412, "headers": { "content-type": "application/xml", "date": { "from": "now" }, - "x-ms-error-code": "BlobAlreadyExists" + "x-ms-error-code": "ConditionNotMet" }, "body": { "encoding": "utf8", - "data": "BlobAlreadyExistsFixture error" + "data": "ConditionNotMetFixture error" } } } @@ -30437,7 +60611,7 @@ "optional": false, "rule": { "is": "equal", - "value": 409 + "value": 412 } }, { @@ -30445,28 +60619,24 @@ "optional": false, "rule": { "is": "equal", - "value": "BlobAlreadyExists" + "value": "ConditionNotMet" } } ], "refusal": null }, { - "id": "operations/azure/put-md5-mismatch", - "profile": "azure", + "id": "operations/azure-hns/get-previous-version-of-deleted-object", + "profile": "azure-hns", "lane": "core", - "purpose": "put md5 mismatch", + "purpose": "get previous version of deleted object", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "body_base64": "ZGVjbGFyZWQtYm9keQ==", - "checksum": { - "algorithm": "md5", - "value_base64": "eV8yArF8trw9S3cdjGyerw==" - }, - "key": "object-tests/hashes/md5-mismatch.txt", - "op": "put" + "key": "object-tests/versions-mtypy4jp/deleted.txt", + "op": "get", + "version": "none-1" }, "exchanges": [ { @@ -30478,7 +60648,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -30486,7 +60656,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/hashes/md5-mismatch.txt" + "value": "/fixture/object-tests/versions-mtypy4jp/deleted.txt" } }, { @@ -30494,29 +60664,19 @@ "optional": false, "rule": { "is": "equal", - "value": "ZGVjbGFyZWQtYm9keQ==" - } - }, - { - "at": "/headers/content-md5", - "optional": false, - "rule": { - "is": "equal", - "value": "eV8yArF8trw9S3cdjGyerw==" + "value": "" } }, { - "at": "/headers/x-ms-blob-type", + "at": "/query/versionid", "optional": false, "rule": { "is": "equal", - "value": "BlockBlob" + "value": "none-1" } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { "status": 400, @@ -30524,12 +60684,11 @@ "content-type": "application/xml", "date": { "from": "now" - }, - "x-ms-error-code": "Md5Mismatch" + } }, "body": { "encoding": "utf8", - "data": "Md5MismatchFixture error" + "data": "InvalidQueryParameterValueFixture error" } } } @@ -30558,27 +60717,24 @@ "optional": false, "rule": { "is": "equal", - "value": "Md5Mismatch" + "value": "InvalidQueryParameterValue" } } ], "refusal": null }, { - "id": "operations/azure/put-metadata-empty-value", - "profile": "azure", + "id": "operations/azure-hns/get-previous-version", + "profile": "azure-hns", "lane": "core", - "purpose": "put metadata empty value", + "purpose": "get previous version", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "body_base64": "MQ==", - "key": "object-tests/metadata/empty-value.txt", - "metadata": { - "empty": "" - }, - "op": "put" + "key": "object-tests/versions-mtypy4jp/object.txt", + "op": "get", + "version": "none-1" }, "exchanges": [ { @@ -30590,7 +60746,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -30598,54 +60754,39 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/metadata/empty-value.txt" + "value": "/fixture/object-tests/versions-mtypy4jp/object.txt" } }, { "at": "/body_base64", "optional": false, - "rule": { - "is": "equal", - "value": "MQ==" - } - }, - { - "at": "/headers/x-ms-meta-empty", - "optional": false, "rule": { "is": "equal", "value": "" } }, { - "at": "/headers/x-ms-blob-type", + "at": "/query/versionid", "optional": false, "rule": { "is": "equal", - "value": "BlockBlob" + "value": "none-1" } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 201, + "status": 400, "headers": { - "content-md5": "xMpCOKC5I4INzFCab3WEmw==", + "content-type": "application/xml", "date": { "from": "now" - }, - "etag": "\"fixture-333d95b64818\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true", - "x-ms-version-id": "2024-01-01T00:00:00.9480929Z" + } }, "body": { - "encoding": "base64", - "data": "" + "encoding": "utf8", + "data": "InvalidQueryParameterValueFixture error" } } } @@ -30658,43 +60799,43 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "error" } }, { - "at": "/value/etag", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-333d95b64818\"" + "value": 400 } }, { - "at": "/value/version", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": "2024-01-01T00:00:00.9480929Z" + "value": "InvalidQueryParameterValue" } } ], "refusal": null }, { - "id": "operations/azure/put-metadata-invalid-name", - "profile": "azure", + "id": "operations/azure-hns/get-range-inverted", + "profile": "azure-hns", "lane": "core", - "purpose": "put metadata invalid name", + "purpose": "get range inverted", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "body_base64": "MQ==", - "key": "object-tests/metadata/invalid-name.txt", - "metadata": { - "not-valid": "1" - }, - "op": "put" + "key": "object-tests/read/object.txt", + "op": "get", + "range": { + "end": 2, + "start": 6 + } }, "exchanges": [ { @@ -30706,7 +60847,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -30714,7 +60855,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/metadata/invalid-name.txt" + "value": "/fixture/object-tests/read/object.txt" } }, { @@ -30722,42 +60863,98 @@ "optional": false, "rule": { "is": "equal", - "value": "MQ==" + "value": "" } }, { - "at": "/headers/x-ms-meta-not-valid", + "at": "/headers/range", "optional": false, "rule": { "is": "equal", - "value": "1" + "value": "bytes=6-1" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-md5": "H1VC0PNTmj+yaCRN4U931g==", + "content-type": "application/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-5295cdfd25ff\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true" + }, + "body": { + "encoding": "base64", + "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + } + } + }, + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" } }, { - "at": "/headers/x-ms-blob-type", + "at": "/path", "optional": false, "rule": { "is": "equal", - "value": "BlockBlob" + "value": "/fixture/object-tests/read/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/x-ms-range", + "optional": false, + "rule": { + "is": "equal", + "value": "bytes=6-1" } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 400, + "status": 200, "headers": { - "content-type": "application/xml", + "content-md5": "H1VC0PNTmj+yaCRN4U931g==", + "content-type": "application/octet-stream", "date": { "from": "now" }, - "x-ms-error-code": "InvalidMetadata" + "etag": "\"fixture-5295cdfd25ff\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true" }, "body": { - "encoding": "utf8", - "data": "InvalidMetadataFixture error" + "encoding": "base64", + "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" } } } @@ -30770,81 +60967,104 @@ "optional": false, "rule": { "is": "equal", - "value": "error" + "value": "ok" } }, { - "at": "/status", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": 400 + "value": "\"fixture-5295cdfd25ff\"" } }, { - "at": "/code", + "at": "/value/size", "optional": false, "rule": { "is": "equal", - "value": "InvalidMetadata" + "value": 30 } - } - ], - "refusal": [ + }, { - "at": "/outcome", + "at": "/value/content_type", "optional": false, "rule": { "is": "equal", - "value": "refused" + "value": "application/octet-stream" } }, { - "at": "/kind", + "at": "/value/content_md5_base64", "optional": false, "rule": { - "is": "matches", - "pattern": ".+" + "is": "equal", + "value": "H1VC0PNTmj+yaCRN4U931g==" } }, { - "at": "/parameter", + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/body_base64", "optional": false, "rule": { "is": "equal", - "value": "metadata" + "value": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" } - }, + } + ], + "refusal": [ { - "at": "/status", - "optional": true, + "at": "/outcome", + "optional": false, "rule": { "is": "equal", - "value": 400 + "value": "refused" } }, { - "at": "/code", - "optional": true, + "at": "/kind", + "optional": false, + "rule": { + "is": "matches", + "pattern": ".+" + } + }, + { + "at": "/parameter", + "optional": false, "rule": { "is": "equal", - "value": "InvalidMetadata" + "value": "range" } } - ] + ], + "decline_permitted": true }, { - "id": "operations/azure/put-metadata-replaced", - "profile": "azure", + "id": "operations/azure-hns/get-range-empty", + "profile": "azure-hns", "lane": "core", - "purpose": "put metadata replaced", + "purpose": "Read a range of no bytes, whose start equals its end. HTTP has no form for it: bytes=5-4 is inverted, and the service ignores it and sends the whole object. A client may refuse it instead", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "body_base64": "Mg==", - "key": "object-tests/metadata/replaced.txt", - "op": "put" + "key": "object-tests/read/object.txt", + "op": "get", + "range": { + "end": 5, + "start": 5 + } }, "exchanges": [ { @@ -30856,7 +61076,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -30864,7 +61084,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/metadata/replaced.txt" + "value": "/fixture/object-tests/read/object.txt" } }, { @@ -30872,92 +61092,42 @@ "optional": false, "rule": { "is": "equal", - "value": "Mg==" + "value": "" } }, { - "at": "/headers/x-ms-blob-type", + "at": "/headers/range", "optional": false, "rule": { "is": "equal", - "value": "BlockBlob" + "value": "bytes=5-4" } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 201, + "status": 200, "headers": { - "content-md5": "yB5yjZ1ML2NvBn+JzBSGLA==", + "content-md5": "H1VC0PNTmj+yaCRN4U931g==", + "content-type": "application/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-37b036d8c13f\"", + "etag": "\"fixture-5295cdfd25ff\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true", - "x-ms-version-id": "2024-01-01T00:00:00.7487600Z" + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true" }, "body": { "encoding": "base64", - "data": "" + "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" } } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-37b036d8c13f\"" - } - }, - { - "at": "/value/version", - "optional": false, - "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.7487600Z" - } - } - ], - "refusal": null - }, - { - "id": "operations/azure/put-metadata", - "profile": "azure", - "lane": "core", - "purpose": "put metadata", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "body_base64": "MQ==", - "key": "object-tests/metadata/object.txt", - "metadata": { - "name": "value", - "second": "2" - }, - "op": "put" - }, - "exchanges": [ - { - "alternatives": [ + }, { "request": [ { @@ -30965,7 +61135,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -30973,7 +61143,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/metadata/object.txt" + "value": "/fixture/object-tests/read/object.txt" } }, { @@ -30981,54 +61151,39 @@ "optional": false, "rule": { "is": "equal", - "value": "MQ==" - } - }, - { - "at": "/headers/x-ms-meta-name", - "optional": false, - "rule": { - "is": "equal", - "value": "value" - } - }, - { - "at": "/headers/x-ms-meta-second", - "optional": false, - "rule": { - "is": "equal", - "value": "2" + "value": "" } }, { - "at": "/headers/x-ms-blob-type", + "at": "/headers/x-ms-range", "optional": false, "rule": { "is": "equal", - "value": "BlockBlob" + "value": "bytes=5-4" } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 201, + "status": 200, "headers": { - "content-md5": "xMpCOKC5I4INzFCab3WEmw==", + "content-md5": "H1VC0PNTmj+yaCRN4U931g==", + "content-type": "application/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-9abbc5e374ca\"", + "etag": "\"fixture-5295cdfd25ff\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true", - "x-ms-version-id": "2024-01-01T00:00:00.7035036Z" + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true" }, "body": { "encoding": "base64", - "data": "" + "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" } } } @@ -31049,35 +61204,95 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-9abbc5e374ca\"" + "value": "\"fixture-5295cdfd25ff\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 30 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "application/octet-stream" + } + }, + { + "at": "/value/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "H1VC0PNTmj+yaCRN4U931g==" } }, { "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/body_base64", "optional": false, "rule": { "is": "equal", - "value": "2024-01-01T00:00:00.7035036Z" + "value": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" } } ], - "refusal": null + "refusal": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "refused" + } + }, + { + "at": "/kind", + "optional": false, + "rule": { + "is": "matches", + "pattern": ".+" + } + }, + { + "at": "/parameter", + "optional": false, + "rule": { + "is": "equal", + "value": "range" + } + } + ], + "decline_permitted": true }, { - "id": "operations/azure/put-metadata-identifier-name", - "profile": "azure", + "id": "operations/azure-hns/get-range-not-satisfiable", + "profile": "azure-hns", "lane": "core", - "purpose": "An Azure metadata name must be a C# identifier, which may start with an underscore and hold digits. Send _a1; only a name that is no identifier may be refused.", + "purpose": "get range not satisfiable", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "body_base64": "MQ==", - "key": "object-tests/metadata/identifier-name.txt", - "metadata": { - "_a1": "1" - }, - "op": "put" + "key": "object-tests/read/object.txt", + "op": "get", + "range": { + "start": 40 + } }, "exchanges": [ { @@ -31089,7 +61304,60 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/read/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/range", + "optional": false, + "rule": { + "is": "equal", + "value": "bytes=40-" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 416, + "headers": { + "content-range": "bytes */30", + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "InvalidRange" + }, + "body": { + "encoding": "utf8", + "data": "InvalidRangeFixture error" + } + } + }, + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" } }, { @@ -31097,7 +61365,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/metadata/identifier-name.txt" + "value": "/fixture/object-tests/read/object.txt" } }, { @@ -31105,46 +61373,33 @@ "optional": false, "rule": { "is": "equal", - "value": "MQ==" - } - }, - { - "at": "/headers/x-ms-meta-_a1", - "optional": false, - "rule": { - "is": "equal", - "value": "1" + "value": "" } }, { - "at": "/headers/x-ms-blob-type", + "at": "/headers/x-ms-range", "optional": false, "rule": { "is": "equal", - "value": "BlockBlob" + "value": "bytes=40-" } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 201, + "status": 416, "headers": { - "content-md5": "xMpCOKC5I4INzFCab3WEmw==", + "content-range": "bytes */30", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-9abbc5e374ca\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true", - "x-ms-version-id": "2024-01-01T00:00:00.7035036Z" + "x-ms-error-code": "InvalidRange" }, "body": { - "encoding": "base64", - "data": "" + "encoding": "utf8", + "data": "InvalidRangeFixture error" } } } @@ -31157,40 +61412,43 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "error" } }, { - "at": "/value/etag", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-9abbc5e374ca\"" + "value": 416 } }, { - "at": "/value/version", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": "2024-01-01T00:00:00.7035036Z" + "value": "InvalidRange" } } ], "refusal": null }, { - "id": "operations/azure/put-over-snapshotted", - "profile": "azure", + "id": "operations/azure-hns/get-range-past-the-end", + "profile": "azure-hns", "lane": "core", - "purpose": "put over snapshotted", + "purpose": "Read a range that ends past the object, which the service clips to the object's end. Report the window it served from Content-Range, bytes 28-29/30, so that the caller sees the range was clipped", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "body_base64": "dHdv", - "key": "object-tests/snapshots/object.txt", - "op": "put" + "key": "object-tests/read/object.txt", + "op": "get", + "range": { + "end": 64, + "start": 28 + } }, "exchanges": [ { @@ -31202,7 +61460,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -31210,7 +61468,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/snapshots/object.txt" + "value": "/fixture/object-tests/read/object.txt" } }, { @@ -31218,88 +61476,42 @@ "optional": false, "rule": { "is": "equal", - "value": "dHdv" + "value": "" } }, { - "at": "/headers/x-ms-blob-type", + "at": "/headers/range", "optional": false, "rule": { "is": "equal", - "value": "BlockBlob" + "value": "bytes=28-63" } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 201, + "status": 206, "headers": { - "content-md5": "uKn3Fdu2T9XFbneDxoIKYQ==", + "content-range": "bytes 28-29/30", + "content-type": "application/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-937c89bb7b5c\"", + "etag": "\"fixture-5295cdfd25ff\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true", - "x-ms-version-id": "2024-01-01T00:00:00.6268993Z" + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true" }, "body": { "encoding": "base64", - "data": "" + "data": "Y3Q=" } } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-937c89bb7b5c\"" - } - }, - { - "at": "/value/version", - "optional": false, - "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.6268993Z" - } - } - ], - "refusal": null - }, - { - "id": "operations/azure/put-overwrite", - "profile": "azure", - "lane": "core", - "purpose": "put overwrite", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "body_base64": "b3ZlcndyaXR0ZW4=", - "key": "object-tests/write/object.txt", - "op": "put" - }, - "exchanges": [ - { - "alternatives": [ + }, { "request": [ { @@ -31307,7 +61519,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -31315,7 +61527,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/write/object.txt" + "value": "/fixture/object-tests/read/object.txt" } }, { @@ -31323,38 +61535,39 @@ "optional": false, "rule": { "is": "equal", - "value": "b3ZlcndyaXR0ZW4=" + "value": "" } }, { - "at": "/headers/x-ms-blob-type", + "at": "/headers/x-ms-range", "optional": false, "rule": { "is": "equal", - "value": "BlockBlob" + "value": "bytes=28-63" } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 201, + "status": 206, "headers": { - "content-md5": "UJ/0v/8wp3EDqsNAaOpGxw==", + "content-range": "bytes 28-29/30", + "content-type": "application/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-cf4724500964\"", + "etag": "\"fixture-5295cdfd25ff\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true", - "x-ms-version-id": "2024-01-01T00:00:00.7758823Z" + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true" }, "body": { "encoding": "base64", - "data": "" + "data": "Y3Q=" } } } @@ -31375,33 +61588,70 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-cf4724500964\"" + "value": "\"fixture-5295cdfd25ff\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 2 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "application/octet-stream" } }, { "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/body_base64", "optional": false, "rule": { "is": "equal", - "value": "2024-01-01T00:00:00.7758823Z" + "value": "Y3Q=" + } + }, + { + "at": "/value/content_range", + "optional": false, + "rule": { + "is": "equal", + "value": "bytes 28-29/30" } } ], "refusal": null }, { - "id": "operations/azure/put-precondition-failed", - "profile": "azure", + "id": "operations/azure-hns/get-range-single-byte", + "profile": "azure-hns", "lane": "core", - "purpose": "put precondition failed", + "purpose": "get range single byte", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "body_base64": "YW5vdGhlciBvYmplY3Q=", - "if_match": "\"fixture-088e5dc109cf\"", - "key": "object-tests/write/object.txt", - "op": "put" + "key": "object-tests/read/object.txt", + "op": "get", + "range": { + "end": 1, + "start": 0 + } }, "exchanges": [ { @@ -31413,7 +61663,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -31421,7 +61671,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/write/object.txt" + "value": "/fixture/object-tests/read/object.txt" } }, { @@ -31429,96 +61679,42 @@ "optional": false, "rule": { "is": "equal", - "value": "YW5vdGhlciBvYmplY3Q=" - } - }, - { - "at": "/headers/if-match", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-088e5dc109cf\"" + "value": "" } }, { - "at": "/headers/x-ms-blob-type", + "at": "/headers/range", "optional": false, "rule": { "is": "equal", - "value": "BlockBlob" + "value": "bytes=0-0" } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 412, + "status": 206, "headers": { - "content-type": "application/xml", + "content-range": "bytes 0-0/30", + "content-type": "application/octet-stream", "date": { "from": "now" }, - "x-ms-error-code": "ConditionNotMet" + "etag": "\"fixture-5295cdfd25ff\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true" }, "body": { - "encoding": "utf8", - "data": "ConditionNotMetFixture error" + "encoding": "base64", + "data": "MA==" } } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 412 - } - }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "equal", - "value": "ConditionNotMet" - } - } - ], - "refusal": null - }, - { - "id": "operations/azure/put-precondition-failed-code-in-body", - "profile": "azure", - "lane": "core", - "purpose": "put precondition failed, with the error code only in the XML body", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp", - "https://learn.microsoft.com/en-us/rest/api/storageservices/common-rest-api-error-codes", - "https://learn.microsoft.com/en-us/rest/api/storageservices/blob-service-error-codes" - ], - "origin": "constructed", - "call": { - "body_base64": "YW5vdGhlciBvYmplY3Q=", - "if_match": "\"fixture-088e5dc109cf\"", - "key": "object-tests/write/object.txt", - "op": "put" - }, - "exchanges": [ - { - "alternatives": [ + }, { "request": [ { @@ -31526,7 +61722,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -31534,7 +61730,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/write/object.txt" + "value": "/fixture/object-tests/read/object.txt" } }, { @@ -31542,41 +61738,39 @@ "optional": false, "rule": { "is": "equal", - "value": "YW5vdGhlciBvYmplY3Q=" - } - }, - { - "at": "/headers/if-match", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-088e5dc109cf\"" + "value": "" } }, { - "at": "/headers/x-ms-blob-type", + "at": "/headers/x-ms-range", "optional": false, "rule": { "is": "equal", - "value": "BlockBlob" + "value": "bytes=0-0" } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 412, + "status": 206, "headers": { - "content-type": "application/xml", + "content-range": "bytes 0-0/30", + "content-type": "application/octet-stream", "date": { "from": "now" - } + }, + "etag": "\"fixture-5295cdfd25ff\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true" }, "body": { - "encoding": "utf8", - "data": "ConditionNotMetFixture error" + "encoding": "base64", + "data": "MA==" } } } @@ -31589,40 +61783,70 @@ "optional": false, "rule": { "is": "equal", - "value": "error" + "value": "ok" } }, { - "at": "/status", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": 412 + "value": "\"fixture-5295cdfd25ff\"" } }, { - "at": "/code", + "at": "/value/size", "optional": false, "rule": { "is": "equal", - "value": "ConditionNotMet" + "value": 1 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "application/octet-stream" + } + }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MA==" } } ], "refusal": null }, { - "id": "operations/azure/put-refused", - "profile": "azure", + "id": "operations/azure-hns/get-range", + "profile": "azure-hns", "lane": "core", - "purpose": "Report the service authorization error for this operation; signature acceptance is tested separately.", + "purpose": "get range", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "body_base64": "bm90aGluZyBpcyBzdG9yZWQ=", - "key": "object.txt", - "op": "put" + "key": "object-tests/read/object.txt", + "op": "get", + "range": { + "end": 6, + "start": 2 + } }, "exchanges": [ { @@ -31634,7 +61858,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -31642,7 +61866,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object.txt" + "value": "/fixture/object-tests/read/object.txt" } }, { @@ -31650,84 +61874,42 @@ "optional": false, "rule": { "is": "equal", - "value": "bm90aGluZyBpcyBzdG9yZWQ=" + "value": "" } }, { - "at": "/headers/x-ms-blob-type", + "at": "/headers/range", "optional": false, "rule": { "is": "equal", - "value": "BlockBlob" + "value": "bytes=2-5" } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 403, + "status": 206, "headers": { - "content-type": "application/xml", + "content-range": "bytes 2-5/30", + "content-type": "application/octet-stream", "date": { "from": "now" }, - "x-ms-error-code": "AuthorizationPermissionMismatch" + "etag": "\"fixture-5295cdfd25ff\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true" }, "body": { - "encoding": "utf8", - "data": "AuthorizationPermissionMismatchFixture error" + "encoding": "base64", + "data": "MjM0NQ==" } } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 403 - } - }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "equal", - "value": "AuthorizationPermissionMismatch" - } - } - ], - "refusal": null - }, - { - "id": "operations/azure/put-second-version", - "profile": "azure", - "lane": "core", - "purpose": "put second version", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "body_base64": "djI=", - "key": "object-tests/versions-mtydohr2/object.txt", - "op": "put" - }, - "exchanges": [ - { - "alternatives": [ + }, { "request": [ { @@ -31735,7 +61917,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -31743,7 +61925,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/versions-mtydohr2/object.txt" + "value": "/fixture/object-tests/read/object.txt" } }, { @@ -31751,38 +61933,39 @@ "optional": false, "rule": { "is": "equal", - "value": "djI=" + "value": "" } }, { - "at": "/headers/x-ms-blob-type", + "at": "/headers/x-ms-range", "optional": false, "rule": { "is": "equal", - "value": "BlockBlob" + "value": "bytes=2-5" } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 201, + "status": 206, "headers": { - "content-md5": "GyZ2GcSBLMRu4oF0eITKUA==", + "content-range": "bytes 2-5/30", + "content-type": "application/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-4768de772705\"", + "etag": "\"fixture-5295cdfd25ff\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true", - "x-ms-version-id": "2024-01-01T00:00:00.3326281Z" + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true" }, "body": { "encoding": "base64", - "data": "" + "data": "MjM0NQ==" } } } @@ -31803,32 +61986,61 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-4768de772705\"" + "value": "\"fixture-5295cdfd25ff\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 4 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "application/octet-stream" } }, { "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/body_base64", "optional": false, "rule": { "is": "equal", - "value": "2024-01-01T00:00:00.3326281Z" + "value": "MjM0NQ==" } } ], "refusal": null }, { - "id": "operations/azure/put-unauthenticated", - "profile": "azure", + "id": "operations/azure-hns/get-range-open", + "profile": "azure-hns", "lane": "core", - "purpose": "Report the service authorization error for this operation; signature acceptance is tested separately.", + "purpose": "get range open", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "https://learn.microsoft.com/en-us/rest/api/storageservices/get-blob" ], "call": { - "body_base64": "bm90aGluZyBpcyBzdG9yZWQ=", - "key": "object-tests/write/object.txt", - "op": "put" + "key": "object", + "op": "get", + "range": { + "start": 3 + } }, "exchanges": [ { @@ -31840,7 +62052,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -31848,7 +62060,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/write/object.txt" + "value": "/fixture/object" } }, { @@ -31856,88 +62068,45 @@ "optional": false, "rule": { "is": "equal", - "value": "bm90aGluZyBpcyBzdG9yZWQ=" + "value": "" } }, { - "at": "/headers/x-ms-blob-type", + "at": "/headers/range", "optional": false, "rule": { "is": "equal", - "value": "BlockBlob" + "value": "bytes=3-" } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 401, + "status": 206, "headers": { - "content-type": "application/xml", + "content-range": "bytes 3-4/5", + "content-type": "application/octet-stream", "date": { "from": "now" }, - "x-ms-error-code": "InvalidAuthenticationInfo" + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-request-id": "fixture-request-id", + "x-ms-request-server-encrypted": "true", + "x-ms-server-encrypted": "true", + "x-ms-version": "2023-11-03" }, "body": { - "encoding": "utf8", - "data": "InvalidAuthenticationInfoFixture error" + "encoding": "base64", + "data": "bG8=" } } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 401 - } - }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "equal", - "value": "InvalidAuthenticationInfo" - } - } - ], - "refusal": null - }, - { - "id": "operations/azure/put-with-crc64", - "profile": "azure", - "lane": "core", - "purpose": "put with crc64", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "body_base64": "ZGVjbGFyZWQtYm9keQ==", - "checksum": { - "algorithm": "azure_crc64", - "value_base64": "9XBvAwWoR9o=" - }, - "key": "object-tests/hashes/crc64.txt", - "op": "put" - }, - "exchanges": [ - { - "alternatives": [ + }, { "request": [ { @@ -31945,7 +62114,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -31953,7 +62122,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/hashes/crc64.txt" + "value": "/fixture/object" } }, { @@ -31961,46 +62130,42 @@ "optional": false, "rule": { "is": "equal", - "value": "ZGVjbGFyZWQtYm9keQ==" - } - }, - { - "at": "/headers/x-ms-content-crc64", - "optional": false, - "rule": { - "is": "equal", - "value": "9XBvAwWoR9o=" + "value": "" } }, { - "at": "/headers/x-ms-blob-type", + "at": "/headers/x-ms-range", "optional": false, "rule": { "is": "equal", - "value": "BlockBlob" + "value": "bytes=3-" } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 201, + "status": 206, "headers": { - "content-md5": "N6YZkbg+Lyfxtskwn8iRCg==", + "content-range": "bytes 3-4/5", + "content-type": "application/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-90cfcb93036b\"", + "etag": "\"fixture-etag\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-request-id": "fixture-request-id", "x-ms-request-server-encrypted": "true", - "x-ms-version-id": "2024-01-01T00:00:00.1153123Z" + "x-ms-server-encrypted": "true", + "x-ms-version": "2023-11-03" }, "body": { "encoding": "base64", - "data": "" + "data": "bG8=" } } } @@ -32017,40 +62182,27 @@ } }, { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-90cfcb93036b\"" - } - }, - { - "at": "/value/version", + "at": "/value/body_base64", "optional": false, "rule": { "is": "equal", - "value": "2024-01-01T00:00:00.1153123Z" + "value": "bG8=" } } ], "refusal": null }, { - "id": "operations/azure/put-with-md5", - "profile": "azure", + "id": "operations/azure-hns/get-reordered", + "profile": "azure-hns", "lane": "core", - "purpose": "put with md5", + "purpose": "get reordered", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "body_base64": "ZGVjbGFyZWQtYm9keQ==", - "checksum": { - "algorithm": "md5", - "value_base64": "N6YZkbg+Lyfxtskwn8iRCg==" - }, - "key": "object-tests/hashes/md5.txt", - "op": "put" + "key": "object-tests/multipart/reordered.bin", + "op": "get" }, "exchanges": [ { @@ -32062,7 +62214,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -32070,7 +62222,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/hashes/md5.txt" + "value": "/fixture/object-tests/multipart/reordered.bin" } }, { @@ -32078,46 +62230,30 @@ "optional": false, "rule": { "is": "equal", - "value": "ZGVjbGFyZWQtYm9keQ==" - } - }, - { - "at": "/headers/content-md5", - "optional": false, - "rule": { - "is": "equal", - "value": "N6YZkbg+Lyfxtskwn8iRCg==" - } - }, - { - "at": "/headers/x-ms-blob-type", - "optional": false, - "rule": { - "is": "equal", - "value": "BlockBlob" + "value": "" } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 201, + "status": 200, "headers": { - "content-md5": "N6YZkbg+Lyfxtskwn8iRCg==", + "content-type": "application/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-494ad7275bf7\"", + "etag": "\"fixture-446301cfeaef\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true", - "x-ms-version-id": "2024-01-01T00:00:00.7803759Z" + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true" }, "body": { "encoding": "base64", - "data": "" + "data": "c2Vjb25kZmlyc3Q=" } } } @@ -32138,31 +62274,58 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-494ad7275bf7\"" + "value": "\"fixture-446301cfeaef\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 11 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "application/octet-stream" } }, { "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/body_base64", "optional": false, "rule": { "is": "equal", - "value": "2024-01-01T00:00:00.7803759Z" + "value": "c2Vjb25kZmlyc3Q=" } } ], "refusal": null }, { - "id": "operations/azure/snapshot", - "profile": "azure", + "id": "operations/azure-hns/get-replacement", + "profile": "azure-hns", "lane": "core", - "purpose": "snapshot", + "purpose": "get replacement", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "key": "object-tests/snapshots/object.txt", - "op": "azure.snapshot" + "key": "object-tests/multipart/replaced.bin", + "op": "get" }, "exchanges": [ { @@ -32174,7 +62337,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -32182,7 +62345,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/snapshots/object.txt" + "value": "/fixture/object-tests/multipart/replaced.bin" } }, { @@ -32192,36 +62355,28 @@ "is": "equal", "value": "" } - }, - { - "at": "/query/comp", - "optional": false, - "rule": { - "is": "equal", - "value": "snapshot" - } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 201, + "status": 200, "headers": { + "content-type": "application/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-e3698635ab53\"", + "etag": "\"fixture-9c5e55ff559c\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "false", - "x-ms-snapshot": "2024-01-01T00:00:00.7351568Z", - "x-ms-version-id": "2024-01-01T00:00:00.8746441Z" + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true" }, "body": { "encoding": "base64", - "data": "" + "data": "RklSU1Q=" } } } @@ -32238,29 +62393,63 @@ } }, { - "at": "/value/snapshot", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": "2024-01-01T00:00:00.7351568Z" + "value": "\"fixture-9c5e55ff559c\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 5 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "application/octet-stream" + } + }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "RklSU1Q=" } } ], "refusal": null }, { - "id": "operations/azure/stage-empty", - "profile": "azure", + "id": "operations/azure-hns/get-snapshot", + "profile": "azure-hns", "lane": "core", - "purpose": "stage empty", + "purpose": "get snapshot", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "block_id_base64": "MDAwMDAz", - "body_base64": "", - "key": "object-tests/multipart/staged.bin", - "op": "azure.stage_block" + "key": "object-tests/snapshots/object.txt", + "op": "get", + "snapshot": "2024-01-01T00:00:00.1577201Z" }, "exchanges": [ { @@ -32272,7 +62461,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -32280,7 +62469,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/staged.bin" + "value": "/fixture/object-tests/snapshots/object.txt" } }, { @@ -32292,38 +62481,28 @@ } }, { - "at": "/query/comp", - "optional": false, - "rule": { - "is": "equal", - "value": "block" - } - }, - { - "at": "/query/blockid", + "at": "/query/snapshot", "optional": false, "rule": { "is": "equal", - "value": "MDAwMDAz" + "value": "2024-01-01T00:00:00.1577201Z" } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 400, + "status": 404, "headers": { "content-type": "application/xml", "date": { "from": "now" }, - "x-ms-error-code": "InvalidHeaderValue" + "x-ms-error-code": "BlobNotFound" }, "body": { "encoding": "utf8", - "data": "InvalidHeaderValueFixture error" + "data": "BlobNotFoundFixture error" } } } @@ -32344,7 +62523,7 @@ "optional": false, "rule": { "is": "equal", - "value": 400 + "value": 404 } }, { @@ -32352,25 +62531,23 @@ "optional": false, "rule": { "is": "equal", - "value": "InvalidHeaderValue" + "value": "BlobNotFound" } } ], "refusal": null }, { - "id": "operations/azure/stage-escaped-id", - "profile": "azure", + "id": "operations/azure-hns/get-staged-only", + "profile": "azure-hns", "lane": "core", - "purpose": "stage escaped id", + "purpose": "get staged only", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "block_id_base64": "+/8=", - "body_base64": "b25l", - "key": "object-tests/multipart/escaped.bin", - "op": "azure.stage_block" + "key": "object-tests/multipart/staged.bin", + "op": "get" }, "exchanges": [ { @@ -32382,7 +62559,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -32390,7 +62567,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/escaped.bin" + "value": "/fixture/object-tests/multipart/staged.bin" } }, { @@ -32398,43 +62575,24 @@ "optional": false, "rule": { "is": "equal", - "value": "b25l" - } - }, - { - "at": "/query/comp", - "optional": false, - "rule": { - "is": "equal", - "value": "block" - } - }, - { - "at": "/query/blockid", - "optional": false, - "rule": { - "is": "equal", - "value": "+/8=" + "value": "" } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 201, + "status": 404, "headers": { + "content-type": "application/xml", "date": { "from": "now" }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true" + "x-ms-error-code": "BlobNotFound" }, "body": { - "encoding": "base64", - "data": "" + "encoding": "utf8", + "data": "BlobNotFoundFixture error" } } } @@ -32447,36 +62605,42 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "error" } }, { - "at": "/value/etag", - "optional": true, + "at": "/status", + "optional": false, "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "is": "equal", + "value": 404 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "BlobNotFound" } } ], "refusal": null }, { - "id": "operations/azure/stage-id-too-long", - "profile": "azure", + "id": "operations/azure-hns/get-suffix-longer-than-object", + "profile": "azure-hns", "lane": "core", - "purpose": "stage id too long", + "purpose": "get suffix longer than object", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "block_id_base64": "eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHg=", - "body_base64": "dGhpcmQ=", - "key": "object-tests/multipart/staged.bin", - "op": "azure.stage_block" + "key": "object-tests/read/object.txt", + "op": "get", + "range": { + "suffix": 100 + } }, "exchanges": [ { @@ -32484,62 +62648,118 @@ { "request": [ { - "at": "/method", + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/read/object.txt" + } + }, + { + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "" } }, { - "at": "/path", + "at": "/headers/range", "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/staged.bin" + "value": "bytes=-100" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-md5": "H1VC0PNTmj+yaCRN4U931g==", + "content-type": "application/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-5295cdfd25ff\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true" + }, + "body": { + "encoding": "base64", + "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + } + } + }, + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" } }, { - "at": "/body_base64", + "at": "/path", "optional": false, "rule": { "is": "equal", - "value": "dGhpcmQ=" + "value": "/fixture/object-tests/read/object.txt" } }, { - "at": "/query/comp", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "block" + "value": "" } }, { - "at": "/query/blockid", + "at": "/headers/x-ms-range", "optional": false, "rule": { "is": "equal", - "value": "eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHg=" + "value": "bytes=-100" } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 400, + "status": 200, "headers": { - "content-type": "application/xml", + "content-md5": "H1VC0PNTmj+yaCRN4U931g==", + "content-type": "application/octet-stream", "date": { "from": "now" }, - "x-ms-error-code": "OutOfRangeInput" + "etag": "\"fixture-5295cdfd25ff\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true" }, "body": { - "encoding": "utf8", - "data": "OutOfRangeInputBlock ID exceeds 64 decoded bytes." + "encoding": "base64", + "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" } } } @@ -32552,82 +62772,103 @@ "optional": false, "rule": { "is": "equal", - "value": "error" + "value": "ok" } }, { - "at": "/status", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": 400 + "value": "\"fixture-5295cdfd25ff\"" } }, { - "at": "/code", + "at": "/value/size", "optional": false, "rule": { "is": "equal", - "value": "OutOfRangeInput" + "value": 30 } - } - ], - "refusal": [ + }, { - "at": "/outcome", + "at": "/value/content_type", "optional": false, "rule": { "is": "equal", - "value": "refused" + "value": "application/octet-stream" } }, { - "at": "/kind", + "at": "/value/content_md5_base64", "optional": false, "rule": { - "is": "matches", - "pattern": ".+" + "is": "equal", + "value": "H1VC0PNTmj+yaCRN4U931g==" } }, { - "at": "/parameter", + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/body_base64", "optional": false, "rule": { "is": "equal", - "value": "block_id_base64" + "value": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" } - }, + } + ], + "refusal": [ { - "at": "/status", - "optional": true, + "at": "/outcome", + "optional": false, "rule": { "is": "equal", - "value": 400 + "value": "refused" } }, { - "at": "/code", - "optional": true, + "at": "/kind", + "optional": false, + "rule": { + "is": "matches", + "pattern": ".+" + } + }, + { + "at": "/parameter", + "optional": false, "rule": { "is": "equal", - "value": "OutOfRangeInput" + "value": "range" } } - ] + ], + "decline_permitted": true }, { - "id": "operations/azure/stage-mixed-length-id", - "profile": "azure", + "id": "operations/azure-hns/get-suffix", + "profile": "azure-hns", "lane": "core", - "purpose": "stage mixed length id", + "purpose": "get suffix", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "block_id_base64": "YS1tdWNoLWxvbmdlci1ibG9jay1pZGVudGlmaWVy", - "body_base64": "dGhpcmQ=", - "key": "object-tests/multipart/staged.bin", - "op": "azure.stage_block" + "key": "object-tests/read/object.txt", + "op": "get", + "range": { + "suffix": 6 + } }, "exchanges": [ { @@ -32639,7 +62880,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -32647,7 +62888,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/staged.bin" + "value": "/fixture/object-tests/read/object.txt" } }, { @@ -32655,96 +62896,42 @@ "optional": false, "rule": { "is": "equal", - "value": "dGhpcmQ=" - } - }, - { - "at": "/query/comp", - "optional": false, - "rule": { - "is": "equal", - "value": "block" + "value": "" } }, { - "at": "/query/blockid", + "at": "/headers/range", "optional": false, "rule": { "is": "equal", - "value": "YS1tdWNoLWxvbmdlci1ibG9jay1pZGVudGlmaWVy" + "value": "bytes=-6" } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 400, + "status": 200, "headers": { - "content-type": "application/xml", + "content-md5": "H1VC0PNTmj+yaCRN4U931g==", + "content-type": "application/octet-stream", "date": { "from": "now" }, - "x-ms-error-code": "InvalidBlobOrBlock" + "etag": "\"fixture-5295cdfd25ff\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true" }, "body": { - "encoding": "utf8", - "data": "InvalidBlobOrBlockFixture error" + "encoding": "base64", + "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" } } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 400 - } - }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "equal", - "value": "InvalidBlobOrBlock" - } - } - ], - "refusal": null - }, - { - "id": "operations/azure/stage-mixed-length-id-code-in-body", - "profile": "azure", - "lane": "core", - "purpose": "stage mixed length id, with the error code only in the XML body", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp", - "https://learn.microsoft.com/en-us/rest/api/storageservices/common-rest-api-error-codes", - "https://learn.microsoft.com/en-us/rest/api/storageservices/blob-service-error-codes" - ], - "origin": "constructed", - "call": { - "block_id_base64": "YS1tdWNoLWxvbmdlci1ibG9jay1pZGVudGlmaWVy", - "body_base64": "dGhpcmQ=", - "key": "object-tests/multipart/staged.bin", - "op": "azure.stage_block" - }, - "exchanges": [ - { - "alternatives": [ + }, { "request": [ { @@ -32752,7 +62939,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -32760,7 +62947,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/staged.bin" + "value": "/fixture/object-tests/read/object.txt" } }, { @@ -32768,41 +62955,39 @@ "optional": false, "rule": { "is": "equal", - "value": "dGhpcmQ=" - } - }, - { - "at": "/query/comp", - "optional": false, - "rule": { - "is": "equal", - "value": "block" + "value": "" } }, { - "at": "/query/blockid", + "at": "/headers/x-ms-range", "optional": false, "rule": { "is": "equal", - "value": "YS1tdWNoLWxvbmdlci1ibG9jay1pZGVudGlmaWVy" + "value": "bytes=-6" } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 400, + "status": 200, "headers": { - "content-type": "application/xml", + "content-md5": "H1VC0PNTmj+yaCRN4U931g==", + "content-type": "application/octet-stream", "date": { "from": "now" - } + }, + "etag": "\"fixture-5295cdfd25ff\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true" }, "body": { - "encoding": "utf8", - "data": "InvalidBlobOrBlockFixture error" + "encoding": "base64", + "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" } } } @@ -32815,41 +63000,100 @@ "optional": false, "rule": { "is": "equal", - "value": "error" + "value": "ok" } }, { - "at": "/status", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": 400 + "value": "\"fixture-5295cdfd25ff\"" } }, { - "at": "/code", + "at": "/value/size", "optional": false, "rule": { "is": "equal", - "value": "InvalidBlobOrBlock" + "value": 30 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "application/octet-stream" + } + }, + { + "at": "/value/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "H1VC0PNTmj+yaCRN4U931g==" + } + }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" } } ], - "refusal": null + "refusal": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "refused" + } + }, + { + "at": "/kind", + "optional": false, + "rule": { + "is": "matches", + "pattern": ".+" + } + }, + { + "at": "/parameter", + "optional": false, + "rule": { + "is": "equal", + "value": "range" + } + } + ], + "decline_permitted": true }, { - "id": "operations/azure/stage-unauthenticated", - "profile": "azure", + "id": "operations/azure-hns/get-unauthenticated", + "profile": "azure-hns", "lane": "core", "purpose": "Report the service authorization error for this operation; signature acceptance is tested separately.", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "block_id_base64": "MDAwMDAx", - "body_base64": "Zmlyc3Q=", - "key": "object-tests/multipart/staged.bin", - "op": "azure.stage_block" + "key": "object-tests/read/object.txt", + "op": "get" }, "exchanges": [ { @@ -32861,7 +63105,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -32869,7 +63113,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/staged.bin" + "value": "/fixture/object-tests/read/object.txt" } }, { @@ -32877,29 +63121,11 @@ "optional": false, "rule": { "is": "equal", - "value": "Zmlyc3Q=" - } - }, - { - "at": "/query/comp", - "optional": false, - "rule": { - "is": "equal", - "value": "block" - } - }, - { - "at": "/query/blockid", - "optional": false, - "rule": { - "is": "equal", - "value": "MDAwMDAx" + "value": "" } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { "status": 401, @@ -32948,18 +63174,17 @@ "refusal": null }, { - "id": "operations/azure/stage", - "profile": "azure", + "id": "operations/azure-hns/get-unknown-snapshot", + "profile": "azure-hns", "lane": "core", - "purpose": "stage", + "purpose": "get unknown snapshot", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "block_id_base64": "MDAwMDAy", - "body_base64": "c2Vjb25k", - "key": "object-tests/multipart/staged.bin", - "op": "azure.stage_block" + "key": "object-tests/snapshots/object.txt", + "op": "get", + "snapshot": "2024-01-01T00:00:00.4364169Z" }, "exchanges": [ { @@ -32971,7 +63196,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -32979,7 +63204,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/staged.bin" + "value": "/fixture/object-tests/snapshots/object.txt" } }, { @@ -32987,43 +63212,32 @@ "optional": false, "rule": { "is": "equal", - "value": "c2Vjb25k" - } - }, - { - "at": "/query/comp", - "optional": false, - "rule": { - "is": "equal", - "value": "block" + "value": "" } }, { - "at": "/query/blockid", + "at": "/query/snapshot", "optional": false, "rule": { "is": "equal", - "value": "MDAwMDAy" + "value": "2024-01-01T00:00:00.4364169Z" } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 201, + "status": 404, "headers": { + "content-type": "application/xml", "date": { "from": "now" }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true" + "x-ms-error-code": "BlobNotFound" }, "body": { - "encoding": "base64", - "data": "" + "encoding": "utf8", + "data": "BlobNotFoundFixture error" } } } @@ -33036,36 +63250,40 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "error" } }, { - "at": "/value/etag", - "optional": true, + "at": "/status", + "optional": false, "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "is": "equal", + "value": 404 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "BlobNotFound" } } ], "refusal": null }, { - "id": "operations/azure/stage-id-64-bytes", - "profile": "azure", + "id": "operations/azure-hns/get-unknown-version", + "profile": "azure-hns", "lane": "core", - "purpose": "A block ID decodes to at most 64 bytes, and Azure stages a block whose ID decodes to exactly 64. Send it; only a longer ID may be refused.", + "purpose": "get unknown version", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "block_id_base64": "eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eA==", - "body_base64": "c2Vjb25k", - "key": "object-tests/multipart/staged.bin", - "op": "azure.stage_block" + "key": "object-tests/versions-mtypy4jp/object.txt", + "op": "get", + "version": "2024-01-01T00:00:00.4364169Z" }, "exchanges": [ { @@ -33077,7 +63295,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -33085,7 +63303,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/staged.bin" + "value": "/fixture/object-tests/versions-mtypy4jp/object.txt" } }, { @@ -33093,43 +63311,32 @@ "optional": false, "rule": { "is": "equal", - "value": "c2Vjb25k" - } - }, - { - "at": "/query/comp", - "optional": false, - "rule": { - "is": "equal", - "value": "block" + "value": "" } }, { - "at": "/query/blockid", + "at": "/query/versionid", "optional": false, "rule": { "is": "equal", - "value": "eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eA==" + "value": "2024-01-01T00:00:00.4364169Z" } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 201, + "status": 409, "headers": { + "content-type": "application/xml", "date": { "from": "now" }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true" + "x-ms-error-code": "FeatureNotYetSupportedForHierarchicalNamespaceAccounts" }, "body": { - "encoding": "base64", - "data": "" + "encoding": "utf8", + "data": "FeatureNotYetSupportedForHierarchicalNamespaceAccountsFixture error" } } } @@ -33142,36 +63349,39 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "error" } }, { - "at": "/value/etag", - "optional": true, + "at": "/status", + "optional": false, "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "is": "equal", + "value": 409 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "FeatureNotYetSupportedForHierarchicalNamespaceAccounts" } } ], "refusal": null }, { - "id": "operations/azure/stage-key-question", - "profile": "azure", + "id": "operations/azure-hns/get-whole", + "profile": "azure-hns", "lane": "core", - "purpose": "stage, with the key \"question?mark.txt\"", + "purpose": "get whole", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "block_id_base64": "MDAwMDAy", - "body_base64": "c2Vjb25k", - "key": "object-tests/keys/question?mark.txt", - "op": "azure.stage_block" + "key": "object-tests/read/object.txt", + "op": "get" }, "exchanges": [ { @@ -33183,7 +63393,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -33191,7 +63401,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/question?mark.txt" + "value": "/fixture/object-tests/read/object.txt" } }, { @@ -33199,43 +63409,31 @@ "optional": false, "rule": { "is": "equal", - "value": "c2Vjb25k" - } - }, - { - "at": "/query/comp", - "optional": false, - "rule": { - "is": "equal", - "value": "block" - } - }, - { - "at": "/query/blockid", - "optional": false, - "rule": { - "is": "equal", - "value": "MDAwMDAy" + "value": "" } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 201, + "status": 200, "headers": { + "content-md5": "H1VC0PNTmj+yaCRN4U931g==", + "content-type": "application/octet-stream", "date": { "from": "now" }, + "etag": "\"fixture-5295cdfd25ff\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true" + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true" }, "body": { "encoding": "base64", - "data": "" + "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" } } } @@ -33253,6 +63451,38 @@ }, { "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-5295cdfd25ff\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 30 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "application/octet-stream" + } + }, + { + "at": "/value/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "H1VC0PNTmj+yaCRN4U931g==" + } + }, + { + "at": "/value/version", "optional": true, "rule": { "is": "one_of", @@ -33261,23 +63491,29 @@ "" ] } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + } } ], "refusal": null }, { - "id": "operations/azure/stage-key-hash", - "profile": "azure", + "id": "operations/azure-hns/get-xml-looking", + "profile": "azure-hns", "lane": "core", - "purpose": "stage, with the key \"hash#tag.txt\"", + "purpose": "get xml looking", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "https://learn.microsoft.com/en-us/rest/api/storageservices/get-blob" ], "call": { - "block_id_base64": "MDAwMDAy", - "body_base64": "c2Vjb25k", - "key": "object-tests/keys/hash#tag.txt", - "op": "azure.stage_block" + "key": "object", + "op": "get" }, "exchanges": [ { @@ -33289,7 +63525,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -33297,7 +63533,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/hash#tag.txt" + "value": "/fixture/object" } }, { @@ -33305,43 +63541,33 @@ "optional": false, "rule": { "is": "equal", - "value": "c2Vjb25k" - } - }, - { - "at": "/query/comp", - "optional": false, - "rule": { - "is": "equal", - "value": "block" - } - }, - { - "at": "/query/blockid", - "optional": false, - "rule": { - "is": "equal", - "value": "MDAwMDAy" + "value": "" } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 201, + "status": 200, "headers": { + "content-type": "application/octet-stream", "date": { "from": "now" }, + "etag": "\"fixture-etag\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true" + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-request-id": "fixture-request-id", + "x-ms-request-server-encrypted": "true", + "x-ms-server-encrypted": "true", + "x-ms-version": "2023-11-03" }, "body": { "encoding": "base64", - "data": "" + "data": "PEVycm9yPnN0aWxsIG9iamVjdCBieXRlczwvRXJyb3I+" } } } @@ -33358,32 +63584,28 @@ } }, { - "at": "/value/etag", - "optional": true, + "at": "/value/body_base64", + "optional": false, "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "is": "equal", + "value": "PEVycm9yPnN0aWxsIG9iamVjdCBieXRlczwvRXJyb3I+" } } ], "refusal": null }, { - "id": "operations/azure/stage-key-percent", - "profile": "azure", + "id": "operations/azure-hns/get-noise-tolerance", + "profile": "azure-hns", "lane": "core", - "purpose": "stage, with the key \"percent%20.txt\"", + "purpose": "get noise tolerance", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "https://learn.microsoft.com/en-us/rest/api/storageservices/get-blob" ], + "origin": "constructed", "call": { - "block_id_base64": "MDAwMDAy", - "body_base64": "c2Vjb25k", - "key": "object-tests/keys/percent%20.txt", - "op": "azure.stage_block" + "key": "object", + "op": "get" }, "exchanges": [ { @@ -33395,7 +63617,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -33403,7 +63625,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/percent%20.txt" + "value": "/fixture/object" } }, { @@ -33411,43 +63633,34 @@ "optional": false, "rule": { "is": "equal", - "value": "c2Vjb25k" - } - }, - { - "at": "/query/comp", - "optional": false, - "rule": { - "is": "equal", - "value": "block" - } - }, - { - "at": "/query/blockid", - "optional": false, - "rule": { - "is": "equal", - "value": "MDAwMDAy" + "value": "" } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 201, + "status": 200, "headers": { + "content-type": "application/octet-stream", "date": { "from": "now" }, + "etag": "\"a-different-etag\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-fixture-unknown": "ignored", + "x-ms-blob-type": "BlockBlob", "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true" + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-request-id": "another-id", + "x-ms-request-server-encrypted": "true", + "x-ms-server-encrypted": "true", + "x-ms-version": "2023-11-03" }, "body": { "encoding": "base64", - "data": "" + "data": "aGVsbG8=" } } } @@ -33464,32 +63677,29 @@ } }, { - "at": "/value/etag", - "optional": true, + "at": "/value/body_base64", + "optional": false, "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "is": "equal", + "value": "aGVsbG8=" } } ], "refusal": null }, { - "id": "operations/azure/stage-key-plus", - "profile": "azure", + "id": "operations/azure-hns/get-body-cut-short", + "profile": "azure-hns", "lane": "core", - "purpose": "stage, with the key \"plus+plus.txt\"", + "purpose": "Report a body that ends before its Content-Length as an error, or resume it, but never return the short body", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "https://www.rfc-editor.org/rfc/rfc9112#section-8", + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_client.cpp" ], + "origin": "transient", "call": { - "block_id_base64": "MDAwMDAy", - "body_base64": "c2Vjb25k", - "key": "object-tests/keys/plus+plus.txt", - "op": "azure.stage_block" + "key": "object-tests/read/object.txt", + "op": "get" }, "exchanges": [ { @@ -33501,7 +63711,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -33509,7 +63719,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/plus+plus.txt" + "value": "/fixture/object-tests/read/object.txt" } }, { @@ -33517,87 +63727,37 @@ "optional": false, "rule": { "is": "equal", - "value": "c2Vjb25k" - } - }, - { - "at": "/query/comp", - "optional": false, - "rule": { - "is": "equal", - "value": "block" - } - }, - { - "at": "/query/blockid", - "optional": false, - "rule": { - "is": "equal", - "value": "MDAwMDAy" + "value": "" } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 201, + "status": 200, "headers": { + "content-md5": "H1VC0PNTmj+yaCRN4U931g==", + "content-type": "application/octet-stream", "date": { "from": "now" }, + "etag": "\"fixture-5295cdfd25ff\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true" + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true" }, "body": { "encoding": "base64", - "data": "" - } + "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + }, + "truncate_body_after": 15 } } ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } }, - { - "at": "/value/etag", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - } - ], - "refusal": null - }, - { - "id": "operations/azure/stage-key-space", - "profile": "azure", - "lane": "core", - "purpose": "stage, with the key \"space name.txt\"", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "block_id_base64": "MDAwMDAy", - "body_base64": "c2Vjb25k", - "key": "object-tests/keys/space name.txt", - "op": "azure.stage_block" - }, - "exchanges": [ { "alternatives": [ { @@ -33607,7 +63767,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -33615,7 +63775,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/space name.txt" + "value": "/fixture/object-tests/read/object.txt" } }, { @@ -33623,23 +63783,7 @@ "optional": false, "rule": { "is": "equal", - "value": "c2Vjb25k" - } - }, - { - "at": "/query/comp", - "optional": false, - "rule": { - "is": "equal", - "value": "block" - } - }, - { - "at": "/query/blockid", - "optional": false, - "rule": { - "is": "equal", - "value": "MDAwMDAy" + "value": "" } } ], @@ -33648,64 +63792,27 @@ ], "allow_query": [], "response": { - "status": 201, + "status": 200, "headers": { + "content-md5": "H1VC0PNTmj+yaCRN4U931g==", + "content-type": "application/octet-stream", "date": { "from": "now" }, + "etag": "\"fixture-5295cdfd25ff\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true" + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true" }, "body": { "encoding": "base64", - "data": "" + "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" } } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/etag", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - } - ], - "refusal": null - }, - { - "id": "operations/azure/stage-key-non-ascii", - "profile": "azure", - "lane": "core", - "purpose": "stage, with the key \"café/雪.txt\"", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "block_id_base64": "MDAwMDAy", - "body_base64": "c2Vjb25k", - "key": "object-tests/keys/café/雪.txt", - "op": "azure.stage_block" - }, - "exchanges": [ - { - "alternatives": [ + }, { "request": [ { @@ -33713,7 +63820,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -33721,7 +63828,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/café/雪.txt" + "value": "/fixture/object-tests/read/object.txt" } }, { @@ -33729,89 +63836,50 @@ "optional": false, "rule": { "is": "equal", - "value": "c2Vjb25k" + "value": "" } }, { - "at": "/query/comp", + "at": "/headers/range", "optional": false, "rule": { "is": "equal", - "value": "block" + "value": "bytes=15-" } }, { - "at": "/query/blockid", + "at": "/headers/if-match", "optional": false, "rule": { "is": "equal", - "value": "MDAwMDAy" + "value": "\"fixture-5295cdfd25ff\"" } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 201, + "status": 206, "headers": { + "content-range": "bytes 15-29/30", + "content-type": "application/octet-stream", "date": { "from": "now" }, + "etag": "\"fixture-5295cdfd25ff\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true" + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true" }, "body": { "encoding": "base64", - "data": "" + "data": "Y3QtdGVzdHMtb2JqZWN0" } } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/etag", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - } - ], - "refusal": null - }, - { - "id": "operations/azure/stage-key-double-slash", - "profile": "azure", - "lane": "core", - "purpose": "stage, with the key \"double//slash.txt\"", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "block_id_base64": "MDAwMDAy", - "body_base64": "c2Vjb25k", - "key": "object-tests/keys/double//slash.txt", - "op": "azure.stage_block" - }, - "exchanges": [ - { - "alternatives": [ + }, { "request": [ { @@ -33819,7 +63887,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -33827,7 +63895,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/double//slash.txt" + "value": "/fixture/object-tests/read/object.txt" } }, { @@ -33835,47 +63903,52 @@ "optional": false, "rule": { "is": "equal", - "value": "c2Vjb25k" + "value": "" } }, { - "at": "/query/comp", + "at": "/headers/x-ms-range", "optional": false, "rule": { "is": "equal", - "value": "block" + "value": "bytes=15-" } }, { - "at": "/query/blockid", + "at": "/headers/if-match", "optional": false, "rule": { "is": "equal", - "value": "MDAwMDAy" + "value": "\"fixture-5295cdfd25ff\"" } - } - ], - "allow_headers": [ - "content-type" + } ], + "allow_headers": [], "allow_query": [], "response": { - "status": 201, + "status": 206, "headers": { + "content-range": "bytes 15-29/30", + "content-type": "application/octet-stream", "date": { "from": "now" }, + "etag": "\"fixture-5295cdfd25ff\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true" + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true" }, "body": { "encoding": "base64", - "data": "" + "data": "Y3QtdGVzdHMtb2JqZWN0" } } } - ] + ], + "optional": true } ], "expect": [ @@ -33883,37 +63956,37 @@ "at": "/outcome", "optional": false, "rule": { - "is": "equal", - "value": "ok" + "is": "one_of", + "values": [ + "error", + "ok" + ] } }, { - "at": "/value/etag", + "at": "/value/body_base64", "optional": true, "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "is": "equal", + "value": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" } } ], "refusal": null }, { - "id": "operations/azure/stage-key-trailing-slash", - "profile": "azure", + "id": "operations/azure-hns/get-server-busy", + "profile": "azure-hns", "lane": "core", - "purpose": "stage, with the key \"trailing-slash/\"", + "purpose": "Report a 503 ServerBusy answer as an error, after at most 5 retries", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "https://learn.microsoft.com/en-us/rest/api/storageservices/common-rest-api-error-codes", + "https://learn.microsoft.com/en-us/rest/api/storageservices/blob-service-error-codes" ], + "origin": "transient", "call": { - "block_id_base64": "MDAwMDAy", - "body_base64": "c2Vjb25k", - "key": "object-tests/keys/trailing-slash/", - "op": "azure.stage_block" + "key": "object-tests/read/object.txt", + "op": "get" }, "exchanges": [ { @@ -33925,7 +63998,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -33933,7 +64006,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/trailing-slash/" + "value": "/fixture/object-tests/read/object.txt" } }, { @@ -33941,86 +64014,78 @@ "optional": false, "rule": { "is": "equal", - "value": "c2Vjb25k" + "value": "" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 503, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "ServerBusy" + }, + "body": { + "encoding": "utf8", + "data": "ServerBusyThe server is currently unable to receive requests. Please retry your request." + } + } + } + ] + }, + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" } }, { - "at": "/query/comp", + "at": "/path", "optional": false, "rule": { "is": "equal", - "value": "block" + "value": "/fixture/object-tests/read/object.txt" } }, { - "at": "/query/blockid", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "MDAwMDAy" + "value": "" } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 201, + "status": 503, "headers": { + "content-type": "application/xml", "date": { "from": "now" }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true" + "x-ms-error-code": "ServerBusy" }, "body": { - "encoding": "base64", - "data": "" + "encoding": "utf8", + "data": "ServerBusyThe server is currently unable to receive requests. Please retry your request." } } } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } + ], + "optional": true }, - { - "at": "/value/etag", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - } - ], - "refusal": null - }, - { - "id": "operations/azure/staged-absent", - "profile": "azure", - "lane": "core", - "purpose": "staged absent", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "key": "object-tests/multipart/absent.bin", - "kind": "all", - "op": "azure.list_blocks" - }, - "exchanges": [ { "alternatives": [ { @@ -34038,7 +64103,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/absent.bin" + "value": "/fixture/object-tests/read/object.txt" } }, { @@ -34048,89 +64113,77 @@ "is": "equal", "value": "" } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 503, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "ServerBusy" }, + "body": { + "encoding": "utf8", + "data": "ServerBusyThe server is currently unable to receive requests. Please retry your request." + } + } + } + ], + "optional": true + }, + { + "alternatives": [ + { + "request": [ { - "at": "/query/comp", + "at": "/method", "optional": false, "rule": { "is": "equal", - "value": "blocklist" + "value": "GET" } }, { - "at": "/query/blocklisttype", + "at": "/path", "optional": false, "rule": { "is": "equal", - "value": "all" + "value": "/fixture/object-tests/read/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 404, + "status": 503, "headers": { "content-type": "application/xml", "date": { "from": "now" }, - "x-ms-error-code": "BlobNotFound" + "x-ms-error-code": "ServerBusy" }, "body": { "encoding": "utf8", - "data": "BlobNotFoundFixture error" + "data": "ServerBusyThe server is currently unable to receive requests. Please retry your request." } } } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 404 - } + ], + "optional": true }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "equal", - "value": "BlobNotFound" - } - } - ], - "refusal": null - }, - { - "id": "operations/azure/staged-absent-code-in-body", - "profile": "azure", - "lane": "core", - "purpose": "staged absent, with the error code only in the XML body", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp", - "https://learn.microsoft.com/en-us/rest/api/storageservices/common-rest-api-error-codes", - "https://learn.microsoft.com/en-us/rest/api/storageservices/blob-service-error-codes" - ], - "origin": "constructed", - "call": { - "key": "object-tests/multipart/absent.bin", - "kind": "all", - "op": "azure.list_blocks" - }, - "exchanges": [ { "alternatives": [ { @@ -34148,7 +64201,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/absent.bin" + "value": "/fixture/object-tests/read/object.txt" } }, { @@ -34158,41 +64211,76 @@ "is": "equal", "value": "" } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 503, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "ServerBusy" + }, + "body": { + "encoding": "utf8", + "data": "ServerBusyThe server is currently unable to receive requests. Please retry your request." + } + } + } + ], + "optional": true + }, + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } }, { - "at": "/query/comp", + "at": "/path", "optional": false, "rule": { "is": "equal", - "value": "blocklist" + "value": "/fixture/object-tests/read/object.txt" } }, { - "at": "/query/blocklisttype", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "all" + "value": "" } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 404, + "status": 503, "headers": { "content-type": "application/xml", "date": { "from": "now" - } + }, + "x-ms-error-code": "ServerBusy" }, "body": { "encoding": "utf8", - "data": "BlobNotFoundFixture error" + "data": "ServerBusyThe server is currently unable to receive requests. Please retry your request." } } } - ] + ], + "optional": true } ], "expect": [ @@ -34209,7 +64297,7 @@ "optional": false, "rule": { "is": "equal", - "value": 404 + "value": 503 } }, { @@ -34217,24 +64305,24 @@ "optional": false, "rule": { "is": "equal", - "value": "BlobNotFound" + "value": "ServerBusy" } } ], "refusal": null }, { - "id": "operations/azure/staged-after-commit", - "profile": "azure", + "id": "operations/azure-hns/get-if-unmodified-since-past", + "profile": "azure-hns", "lane": "core", - "purpose": "staged after commit", + "purpose": "Refuse a read with 412 when the object changed after If-Unmodified-Since", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "key": "object-tests/multipart/committed.bin", - "kind": "all", - "op": "azure.list_blocks" + "if_unmodified_since": "Sat, 01 Jan 2000 00:00:00 GMT", + "key": "object-tests/read/object.txt", + "op": "get" }, "exchanges": [ { @@ -34254,7 +64342,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/committed.bin" + "value": "/fixture/object-tests/read/object.txt" } }, { @@ -34266,40 +64354,29 @@ } }, { - "at": "/query/comp", - "optional": false, - "rule": { - "is": "equal", - "value": "blocklist" - } - }, - { - "at": "/query/blocklisttype", + "at": "/headers/if-unmodified-since", "optional": false, "rule": { "is": "equal", - "value": "all" + "value": "Sat, 01 Jan 2000 00:00:00 GMT" } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 200, + "status": 412, "headers": { "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-be8efdb79010\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + "x-ms-error-code": "ConditionNotMet" }, "body": { "encoding": "utf8", - "data": "MDAwMDAx5MDAwMDAy6" - }, - "framing": "chunked" + "data": "ConditionNotMetFixture error" + } } } ] @@ -34311,72 +64388,40 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/committed/0/id_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "MDAwMDAx" - } - }, - { - "at": "/value/committed/0/size", - "optional": false, - "rule": { - "is": "equal", - "value": 5 + "value": "error" } }, { - "at": "/value/committed/1/id_base64", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "MDAwMDAy" + "value": 412 } }, { - "at": "/value/committed/1/size", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": 6 - } - }, - { - "at": "/value/committed", - "optional": false, - "rule": { - "is": "array_length", - "value": 2 - } - }, - { - "at": "/value/uncommitted", - "optional": false, - "rule": { - "is": "array_length", - "value": 0 + "value": "ConditionNotMet" } } ], "refusal": null }, { - "id": "operations/azure/staged-after-replacement", - "profile": "azure", + "id": "operations/azure-hns/get-if-modified-since-future", + "profile": "azure-hns", "lane": "core", - "purpose": "staged after replacement", + "purpose": "Report 304 when If-Modified-Since names a future date, which Azure does not ignore", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "key": "object-tests/multipart/replaced.bin", - "kind": "all", - "op": "azure.list_blocks" + "if_modified_since": "Fri, 01 Jan 2100 00:00:00 GMT", + "key": "object-tests/read/object.txt", + "op": "get" }, "exchanges": [ { @@ -34396,7 +64441,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/replaced.bin" + "value": "/fixture/object-tests/read/object.txt" } }, { @@ -34408,40 +64453,27 @@ } }, { - "at": "/query/comp", - "optional": false, - "rule": { - "is": "equal", - "value": "blocklist" - } - }, - { - "at": "/query/blocklisttype", + "at": "/headers/if-modified-since", "optional": false, "rule": { "is": "equal", - "value": "all" + "value": "Fri, 01 Jan 2100 00:00:00 GMT" } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 200, + "status": 304, "headers": { - "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-2184b3e6c2c3\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + "x-ms-error-code": "ConditionNotMet" }, "body": { - "encoding": "utf8", - "data": "MDAwMDAx5" - }, - "framing": "chunked" + "encoding": "empty" + } } } ] @@ -34453,56 +64485,40 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "error" } }, { - "at": "/value/committed/0/id_base64", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "MDAwMDAx" + "value": 304 } }, { - "at": "/value/committed/0/size", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": 5 - } - }, - { - "at": "/value/committed", - "optional": false, - "rule": { - "is": "array_length", - "value": 1 - } - }, - { - "at": "/value/uncommitted", - "optional": false, - "rule": { - "is": "array_length", - "value": 0 + "value": "ConditionNotMet" } } ], "refusal": null }, { - "id": "operations/azure/staged-after-whole-write", - "profile": "azure", + "id": "operations/azure-hns/get-if-modified-since-past", + "profile": "azure-hns", "lane": "core", - "purpose": "staged after whole write", + "purpose": "Read an object modified since a past date", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "key": "object-tests/multipart/whole.bin", - "kind": "all", - "op": "azure.list_blocks" + "if_modified_since": "Sat, 01 Jan 2000 00:00:00 GMT", + "key": "object-tests/read/object.txt", + "op": "get" }, "exchanges": [ { @@ -34522,7 +64538,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/whole.bin" + "value": "/fixture/object-tests/read/object.txt" } }, { @@ -34534,19 +64550,11 @@ } }, { - "at": "/query/comp", - "optional": false, - "rule": { - "is": "equal", - "value": "blocklist" - } - }, - { - "at": "/query/blocklisttype", + "at": "/headers/if-modified-since", "optional": false, "rule": { "is": "equal", - "value": "all" + "value": "Sat, 01 Jan 2000 00:00:00 GMT" } } ], @@ -34555,19 +64563,23 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", + "content-md5": "H1VC0PNTmj+yaCRN4U931g==", + "content-type": "application/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-f439b54167cb\"", + "etag": "\"fixture-5295cdfd25ff\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true" }, "body": { - "encoding": "utf8", - "data": "" - }, - "framing": "chunked" + "encoding": "base64", + "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + } } } ] @@ -34583,36 +64595,70 @@ } }, { - "at": "/value/committed", + "at": "/value/etag", "optional": false, "rule": { - "is": "array_length", - "value": 0 + "is": "equal", + "value": "\"fixture-5295cdfd25ff\"" } }, { - "at": "/value/uncommitted", + "at": "/value/size", "optional": false, "rule": { - "is": "array_length", - "value": 0 + "is": "equal", + "value": 30 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "application/octet-stream" + } + }, + { + "at": "/value/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "H1VC0PNTmj+yaCRN4U931g==" + } + }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" } } ], "refusal": null }, { - "id": "operations/azure/staged-committed-empty", - "profile": "azure", + "id": "operations/azure-hns/get-content-encoding-gzip", + "profile": "azure-hns", "lane": "core", - "purpose": "staged committed empty", + "purpose": "Return the stored gzip bytes and Content-Encoding: gzip without decoding them", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "key": "object-tests/multipart/staged.bin", - "kind": "committed", - "op": "azure.list_blocks" + "key": "object-tests/read/object.txt", + "op": "get" }, "exchanges": [ { @@ -34632,7 +64678,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/staged.bin" + "value": "/fixture/object-tests/read/object.txt" } }, { @@ -34642,22 +64688,6 @@ "is": "equal", "value": "" } - }, - { - "at": "/query/comp", - "optional": false, - "rule": { - "is": "equal", - "value": "blocklist" - } - }, - { - "at": "/query/blocklisttype", - "optional": false, - "rule": { - "is": "equal", - "value": "committed" - } } ], "allow_headers": [], @@ -34665,18 +64695,24 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", + "content-encoding": "gzip", + "content-md5": "CVsDGvNMZH4SPA4MSLswrA==", + "content-type": "application/octet-stream", "date": { "from": "now" }, + "etag": "\"fixture-5295cdfd25ff\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true" }, "body": { - "encoding": "utf8", - "data": "" - }, - "framing": "chunked" + "encoding": "base64", + "data": "H4sIAAAAAAACA0vOzy0oSi0uTk1RyM9TKCgtKsgvTuUCAAHVPIcWAAAA" + } } } ] @@ -34692,36 +64728,78 @@ } }, { - "at": "/value/committed", + "at": "/value/etag", "optional": false, "rule": { - "is": "array_length", - "value": 0 + "is": "equal", + "value": "\"fixture-5295cdfd25ff\"" } }, { - "at": "/value/uncommitted", + "at": "/value/size", "optional": false, "rule": { - "is": "array_length", - "value": 0 + "is": "equal", + "value": 42 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "application/octet-stream" + } + }, + { + "at": "/value/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "CVsDGvNMZH4SPA4MSLswrA==" + } + }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "H4sIAAAAAAACA0vOzy0oSi0uTk1RyM9TKCgtKsgvTuUCAAHVPIcWAAAA" + } + }, + { + "at": "/value/content_encoding", + "optional": false, + "rule": { + "is": "equal", + "value": "gzip" } } ], "refusal": null }, { - "id": "operations/azure/staged-committed-nothing", - "profile": "azure", + "id": "operations/azure-hns/get-content-properties", + "profile": "azure-hns", "lane": "core", - "purpose": "staged committed nothing", + "purpose": "Return the stored content properties from a GET", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "key": "object-tests/multipart/empty.bin", - "kind": "all", - "op": "azure.list_blocks" + "key": "object-tests/read/object.txt", + "op": "get" }, "exchanges": [ { @@ -34741,7 +64819,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/empty.bin" + "value": "/fixture/object-tests/read/object.txt" } }, { @@ -34751,22 +64829,6 @@ "is": "equal", "value": "" } - }, - { - "at": "/query/comp", - "optional": false, - "rule": { - "is": "equal", - "value": "blocklist" - } - }, - { - "at": "/query/blocklisttype", - "optional": false, - "rule": { - "is": "equal", - "value": "all" - } } ], "allow_headers": [], @@ -34774,19 +64836,26 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", + "cache-control": "max-age=3600", + "content-disposition": "attachment; filename=\"report.txt\"", + "content-language": "nl-NL", + "content-md5": "H1VC0PNTmj+yaCRN4U931g==", + "content-type": "text/plain; charset=utf-8", "date": { "from": "now" }, - "etag": "\"fixture-265df060a55b\"", + "etag": "\"fixture-5295cdfd25ff\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true" }, "body": { - "encoding": "utf8", - "data": "" - }, - "framing": "chunked" + "encoding": "base64", + "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + } } } ] @@ -34802,36 +64871,94 @@ } }, { - "at": "/value/committed", + "at": "/value/etag", "optional": false, "rule": { - "is": "array_length", - "value": 0 + "is": "equal", + "value": "\"fixture-5295cdfd25ff\"" } }, { - "at": "/value/uncommitted", + "at": "/value/size", "optional": false, "rule": { - "is": "array_length", - "value": 0 + "is": "equal", + "value": 30 + } + }, + { + "at": "/value/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "H1VC0PNTmj+yaCRN4U931g==" + } + }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "text/plain; charset=utf-8" + } + }, + { + "at": "/value/content_language", + "optional": false, + "rule": { + "is": "equal", + "value": "nl-NL" + } + }, + { + "at": "/value/content_disposition", + "optional": false, + "rule": { + "is": "equal", + "value": "attachment; filename=\"report.txt\"" + } + }, + { + "at": "/value/cache_control", + "optional": false, + "rule": { + "is": "equal", + "value": "max-age=3600" } } ], "refusal": null }, { - "id": "operations/azure/staged-escaped-id", - "profile": "azure", + "id": "operations/azure-hns/get-with-staged-blocks", + "profile": "azure-hns", "lane": "core", - "purpose": "staged escaped id", + "purpose": "get with staged blocks", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "key": "object-tests/multipart/escaped.bin", - "kind": "all", - "op": "azure.list_blocks" + "key": "object-tests/multipart/pending.bin", + "op": "get" }, "exchanges": [ { @@ -34851,7 +64978,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/escaped.bin" + "value": "/fixture/object-tests/multipart/pending.bin" } }, { @@ -34861,22 +64988,6 @@ "is": "equal", "value": "" } - }, - { - "at": "/query/comp", - "optional": false, - "rule": { - "is": "equal", - "value": "blocklist" - } - }, - { - "at": "/query/blocklisttype", - "optional": false, - "rule": { - "is": "equal", - "value": "all" - } } ], "allow_headers": [], @@ -34884,18 +64995,22 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", + "content-type": "application/octet-stream", "date": { "from": "now" }, + "etag": "\"fixture-ce92c4d48b08\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true" }, "body": { - "encoding": "utf8", - "data": "+/8=3" - }, - "framing": "chunked" + "encoding": "base64", + "data": "Zmlyc3RzZWNvbmQ=" + } } } ] @@ -34911,52 +65026,62 @@ } }, { - "at": "/value/committed", + "at": "/value/etag", "optional": false, "rule": { - "is": "array_length", - "value": 0 + "is": "equal", + "value": "\"fixture-ce92c4d48b08\"" } }, { - "at": "/value/uncommitted/0/id_base64", + "at": "/value/size", "optional": false, "rule": { "is": "equal", - "value": "+/8=" + "value": 11 } }, { - "at": "/value/uncommitted/0/size", + "at": "/value/content_type", "optional": false, "rule": { "is": "equal", - "value": 3 + "value": "application/octet-stream" } }, { - "at": "/value/uncommitted", + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/body_base64", "optional": false, "rule": { - "is": "array_length", - "value": 1 + "is": "equal", + "value": "Zmlyc3RzZWNvbmQ=" } } ], "refusal": null }, { - "id": "operations/azure/staged-replacement", - "profile": "azure", + "id": "operations/azure-hns/head-committed-declaring-md5", + "profile": "azure-hns", "lane": "core", - "purpose": "staged replacement", + "purpose": "head committed declaring md5", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "key": "object-tests/multipart/pending.bin", - "kind": "all", - "op": "azure.list_blocks" + "key": "object-tests/hashes/committed.bin", + "op": "head" }, "exchanges": [ { @@ -34968,7 +65093,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "HEAD" } }, { @@ -34976,7 +65101,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/pending.bin" + "value": "/fixture/object-tests/hashes/committed.bin" } }, { @@ -34986,22 +65111,6 @@ "is": "equal", "value": "" } - }, - { - "at": "/query/comp", - "optional": false, - "rule": { - "is": "equal", - "value": "blocklist" - } - }, - { - "at": "/query/blocklisttype", - "optional": false, - "rule": { - "is": "equal", - "value": "all" - } } ], "allow_headers": [], @@ -35009,19 +65118,24 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", + "content-length": "13", + "content-md5": "N6YZkbg+Lyfxtskwn8iRCg==", + "content-type": "application/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-9c5ca12bcfc9\"", + "etag": "\"fixture-9a581bc70e20\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true" }, "body": { - "encoding": "utf8", - "data": "MDAwMDAx5MDAwMDAy6MDAwMDAx5" - }, - "framing": "chunked" + "encoding": "base64", + "data": "" + } } } ] @@ -35037,84 +65151,62 @@ } }, { - "at": "/value/committed/0/id_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "MDAwMDAx" - } - }, - { - "at": "/value/committed/0/size", - "optional": false, - "rule": { - "is": "equal", - "value": 5 - } - }, - { - "at": "/value/committed/1/id_base64", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": "MDAwMDAy" + "value": "\"fixture-9a581bc70e20\"" } }, { - "at": "/value/committed/1/size", + "at": "/value/size", "optional": false, "rule": { "is": "equal", - "value": 6 - } - }, - { - "at": "/value/committed", - "optional": false, - "rule": { - "is": "array_length", - "value": 2 + "value": 13 } }, { - "at": "/value/uncommitted/0/id_base64", + "at": "/value/content_type", "optional": false, "rule": { "is": "equal", - "value": "MDAwMDAx" + "value": "application/octet-stream" } }, { - "at": "/value/uncommitted/0/size", + "at": "/value/content_md5_base64", "optional": false, "rule": { "is": "equal", - "value": 5 + "value": "N6YZkbg+Lyfxtskwn8iRCg==" } }, { - "at": "/value/uncommitted", - "optional": false, + "at": "/value/version", + "optional": true, "rule": { - "is": "array_length", - "value": 1 + "is": "one_of", + "values": [ + null, + "" + ] } } ], "refusal": null }, { - "id": "operations/azure/staged-uncommitted-only", - "profile": "azure", + "id": "operations/azure-hns/head-committed", + "profile": "azure-hns", "lane": "core", - "purpose": "staged uncommitted only", + "purpose": "head committed", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "key": "object-tests/multipart/staged.bin", - "kind": "all", - "op": "azure.list_blocks" + "key": "object-tests/multipart/committed.bin", + "op": "head" }, "exchanges": [ { @@ -35126,7 +65218,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "HEAD" } }, { @@ -35134,7 +65226,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/staged.bin" + "value": "/fixture/object-tests/multipart/committed.bin" } }, { @@ -35144,22 +65236,6 @@ "is": "equal", "value": "" } - }, - { - "at": "/query/comp", - "optional": false, - "rule": { - "is": "equal", - "value": "blocklist" - } - }, - { - "at": "/query/blocklisttype", - "optional": false, - "rule": { - "is": "equal", - "value": "all" - } } ], "allow_headers": [], @@ -35167,18 +65243,23 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", + "content-length": "11", + "content-type": "application/octet-stream", "date": { "from": "now" }, + "etag": "\"fixture-8ec031f3abfa\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true" }, "body": { - "encoding": "utf8", - "data": "MDAwMDAx5MDAwMDAy6" - }, - "framing": "chunked" + "encoding": "base64", + "data": "" + } } } ] @@ -35194,68 +65275,54 @@ } }, { - "at": "/value/committed", - "optional": false, - "rule": { - "is": "array_length", - "value": 0 - } - }, - { - "at": "/value/uncommitted/0/id_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "MDAwMDAx" - } - }, - { - "at": "/value/uncommitted/0/size", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": 5 + "value": "\"fixture-8ec031f3abfa\"" } }, { - "at": "/value/uncommitted/1/id_base64", + "at": "/value/size", "optional": false, "rule": { "is": "equal", - "value": "MDAwMDAy" + "value": 11 } }, { - "at": "/value/uncommitted/1/size", + "at": "/value/content_type", "optional": false, "rule": { "is": "equal", - "value": 6 + "value": "application/octet-stream" } }, { - "at": "/value/uncommitted", - "optional": false, + "at": "/value/version", + "optional": true, "rule": { - "is": "array_length", - "value": 2 + "is": "one_of", + "values": [ + null, + "" + ] } } ], "refusal": null }, { - "id": "operations/azure/staged-uncommitted", - "profile": "azure", + "id": "operations/azure-hns/head-metadata", + "profile": "azure-hns", "lane": "core", - "purpose": "staged uncommitted", + "purpose": "head metadata", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "key": "object-tests/multipart/staged.bin", - "kind": "uncommitted", - "op": "azure.list_blocks" + "key": "object-tests/metadata/object.txt", + "op": "head" }, "exchanges": [ { @@ -35267,7 +65334,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "HEAD" } }, { @@ -35275,7 +65342,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/staged.bin" + "value": "/fixture/object-tests/metadata/object.txt" } }, { @@ -35285,22 +65352,6 @@ "is": "equal", "value": "" } - }, - { - "at": "/query/comp", - "optional": false, - "rule": { - "is": "equal", - "value": "blocklist" - } - }, - { - "at": "/query/blocklisttype", - "optional": false, - "rule": { - "is": "equal", - "value": "uncommitted" - } } ], "allow_headers": [], @@ -35308,18 +65359,26 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", + "content-length": "1", + "content-md5": "xMpCOKC5I4INzFCab3WEmw==", + "content-type": "application/octet-stream", "date": { "from": "now" }, + "etag": "\"fixture-4d04dba3441e\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-meta-name": "value", + "x-ms-meta-second": "2", + "x-ms-server-encrypted": "true" }, "body": { - "encoding": "utf8", - "data": "MDAwMDAx5MDAwMDAy6" - }, - "framing": "chunked" + "encoding": "base64", + "data": "" + } } } ] @@ -35335,68 +65394,73 @@ } }, { - "at": "/value/committed", + "at": "/value/etag", "optional": false, "rule": { - "is": "array_length", - "value": 0 + "is": "equal", + "value": "\"fixture-4d04dba3441e\"" } }, { - "at": "/value/uncommitted/0/id_base64", + "at": "/value/size", "optional": false, "rule": { "is": "equal", - "value": "MDAwMDAx" + "value": 1 } }, { - "at": "/value/uncommitted/0/size", + "at": "/value/content_type", "optional": false, "rule": { "is": "equal", - "value": 5 + "value": "application/octet-stream" } }, { - "at": "/value/uncommitted/1/id_base64", + "at": "/value/content_md5_base64", "optional": false, "rule": { "is": "equal", - "value": "MDAwMDAy" + "value": "xMpCOKC5I4INzFCab3WEmw==" } }, { - "at": "/value/uncommitted/1/size", - "optional": false, + "at": "/value/version", + "optional": true, "rule": { - "is": "equal", - "value": 6 + "is": "one_of", + "values": [ + null, + "" + ] } }, { - "at": "/value/uncommitted", + "at": "/value/metadata", "optional": false, "rule": { - "is": "array_length", - "value": 2 + "is": "equal", + "value": { + "name": "value", + "second": "2" + } } } ], "refusal": null }, { - "id": "operations/azure-hns/commit-container-missing", + "id": "operations/azure-hns/head-missing", "profile": "azure-hns", "lane": "core", - "purpose": "commit container missing", + "purpose": "head missing. A client reports it as not_found: the object is absent", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "blocks": [], - "key": "object.bin", - "op": "azure.commit_blocks" + "key": "object-tests/read/absent.txt", + "op": "head" }, "exchanges": [ { @@ -35408,7 +65472,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "HEAD" } }, { @@ -35416,42 +65480,31 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object.bin" - } - }, - { - "at": "/body_text", - "optional": false, - "rule": { - "is": "xml", - "value": "" + "value": "/fixture/object-tests/read/absent.txt" } }, { - "at": "/query/comp", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "blocklist" + "value": "" } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { "status": 404, "headers": { - "content-type": "application/xml", "date": { "from": "now" }, - "x-ms-error-code": "ContainerNotFound" + "x-ms-error-code": "BlobNotFound" }, "body": { - "encoding": "utf8", - "data": "ContainerNotFoundFixture error" + "encoding": "base64", + "data": "" } } } @@ -35480,30 +65533,32 @@ "optional": false, "rule": { "is": "equal", - "value": "ContainerNotFound" + "value": "BlobNotFound" + } + }, + { + "at": "/kind", + "optional": false, + "rule": { + "is": "equal", + "value": "not_found" } } ], "refusal": null }, { - "id": "operations/azure-hns/commit-declaring-md5", + "id": "operations/azure-hns/head-previous-version", "profile": "azure-hns", "lane": "core", - "purpose": "commit declaring md5", + "purpose": "head previous version", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "blocks": [ - { - "id_base64": "MDAwMDAx", - "kind": "latest" - } - ], - "content_md5_base64": "N6YZkbg+Lyfxtskwn8iRCg==", - "key": "object-tests/hashes/committed.bin", - "op": "azure.commit_blocks" + "key": "object-tests/versions-mtypy4jp/object.txt", + "op": "head", + "version": "none-1" }, "exchanges": [ { @@ -35515,7 +65570,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "HEAD" } }, { @@ -35523,48 +65578,34 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/hashes/committed.bin" - } - }, - { - "at": "/body_text", - "optional": false, - "rule": { - "is": "xml", - "value": "MDAwMDAx" + "value": "/fixture/object-tests/versions-mtypy4jp/object.txt" } }, { - "at": "/headers/x-ms-blob-content-md5", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "N6YZkbg+Lyfxtskwn8iRCg==" + "value": "" } }, { - "at": "/query/comp", + "at": "/query/versionid", "optional": false, "rule": { "is": "equal", - "value": "blocklist" + "value": "none-1" } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 201, + "status": 400, "headers": { "date": { "from": "now" - }, - "etag": "\"fixture-9a581bc70e20\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true" + } }, "body": { "encoding": "base64", @@ -35581,52 +65622,32 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "error" } }, { - "at": "/value/etag", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-9a581bc70e20\"" - } - }, - { - "at": "/value/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "value": 400 } } ], "refusal": null }, { - "id": "operations/azure-hns/commit-duplicate-id", + "id": "operations/azure-hns/head-snapshot", "profile": "azure-hns", "lane": "core", - "purpose": "commit duplicate id", + "purpose": "head snapshot", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "blocks": [ - { - "id_base64": "MDAwMDAx", - "kind": "latest" - }, - { - "id_base64": "MDAwMDAx", - "kind": "latest" - } - ], - "key": "object-tests/multipart/duplicate.bin", - "op": "azure.commit_blocks" + "key": "object-tests/snapshots/object.txt", + "op": "head", + "snapshot": "2024-01-01T00:00:00.1577201Z" }, "exchanges": [ { @@ -35638,7 +65659,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "HEAD" } }, { @@ -35646,40 +65667,35 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/duplicate.bin" + "value": "/fixture/object-tests/snapshots/object.txt" } }, { - "at": "/body_text", + "at": "/body_base64", "optional": false, "rule": { - "is": "xml", - "value": "MDAwMDAxMDAwMDAx" + "is": "equal", + "value": "" } }, { - "at": "/query/comp", + "at": "/query/snapshot", "optional": false, "rule": { "is": "equal", - "value": "blocklist" + "value": "2024-01-01T00:00:00.1577201Z" } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 201, + "status": 404, "headers": { "date": { "from": "now" }, - "etag": "\"fixture-a8581b642c5f\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true" + "x-ms-error-code": "BlobNotFound" }, "body": { "encoding": "base64", @@ -35696,48 +65712,39 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "error" } }, { - "at": "/value/etag", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-a8581b642c5f\"" + "value": 404 } }, { - "at": "/value/version", - "optional": true, + "at": "/code", + "optional": false, "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "is": "equal", + "value": "BlobNotFound" } } ], "refusal": null }, { - "id": "operations/azure-hns/commit-escaped-id", + "id": "operations/azure-hns/head-written-with-crc64", "profile": "azure-hns", "lane": "core", - "purpose": "commit escaped id", + "purpose": "head written with crc64", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "blocks": [ - { - "id_base64": "+/8=", - "kind": "latest" - } - ], - "key": "object-tests/multipart/escaped.bin", - "op": "azure.commit_blocks" + "key": "object-tests/hashes/crc64.txt", + "op": "head" }, "exchanges": [ { @@ -35749,7 +65756,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "HEAD" } }, { @@ -35757,40 +65764,36 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/escaped.bin" - } - }, - { - "at": "/body_text", - "optional": false, - "rule": { - "is": "xml", - "value": "+/8=" + "value": "/fixture/object-tests/hashes/crc64.txt" } }, { - "at": "/query/comp", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "blocklist" + "value": "" } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 201, + "status": 200, "headers": { + "content-length": "13", + "content-md5": "N6YZkbg+Lyfxtskwn8iRCg==", + "content-type": "application/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-77b5e2317b8a\"", + "etag": "\"fixture-bf462a2f52f2\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true" + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true" }, "body": { "encoding": "base64", @@ -35815,7 +65818,31 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-77b5e2317b8a\"" + "value": "\"fixture-bf462a2f52f2\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 13 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "application/octet-stream" + } + }, + { + "at": "/value/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "N6YZkbg+Lyfxtskwn8iRCg==" } }, { @@ -35833,23 +65860,16 @@ "refusal": null }, { - "id": "operations/azure-hns/commit-lost-the-race-to-create", + "id": "operations/azure-hns/head-written-with-md5", "profile": "azure-hns", "lane": "core", - "purpose": "commit lost the race to create", + "purpose": "head written with md5", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "blocks": [ - { - "id_base64": "MDAwMDAx", - "kind": "latest" - } - ], - "if_none_match": "*", - "key": "object-tests/multipart/pending.bin", - "op": "azure.commit_blocks" + "key": "object-tests/hashes/md5.txt", + "op": "head" }, "exchanges": [ { @@ -35861,7 +65881,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "HEAD" } }, { @@ -35869,50 +65889,40 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/pending.bin" - } - }, - { - "at": "/body_text", - "optional": false, - "rule": { - "is": "xml", - "value": "MDAwMDAx" - } - }, - { - "at": "/headers/if-none-match", - "optional": false, - "rule": { - "is": "equal", - "value": "*" + "value": "/fixture/object-tests/hashes/md5.txt" } }, { - "at": "/query/comp", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "blocklist" + "value": "" } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 409, + "status": 200, "headers": { - "content-type": "application/xml", + "content-length": "13", + "content-md5": "N6YZkbg+Lyfxtskwn8iRCg==", + "content-type": "application/octet-stream", "date": { "from": "now" }, - "x-ms-error-code": "BlobAlreadyExists" + "etag": "\"fixture-15ae0acd3480\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true" }, "body": { - "encoding": "utf8", - "data": "BlobAlreadyExistsFixture error" + "encoding": "base64", + "data": "" } } } @@ -35925,40 +65935,66 @@ "optional": false, "rule": { "is": "equal", - "value": "error" + "value": "ok" } }, { - "at": "/status", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": 409 + "value": "\"fixture-15ae0acd3480\"" } }, { - "at": "/code", + "at": "/value/size", "optional": false, "rule": { "is": "equal", - "value": "BlobAlreadyExists" + "value": 13 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "application/octet-stream" + } + }, + { + "at": "/value/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "N6YZkbg+Lyfxtskwn8iRCg==" + } + }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] } } ], "refusal": null }, { - "id": "operations/azure-hns/commit-nothing", + "id": "operations/azure-hns/head", "profile": "azure-hns", "lane": "core", - "purpose": "commit nothing", + "purpose": "head", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "blocks": [], - "key": "object-tests/multipart/empty.bin", - "op": "azure.commit_blocks" + "key": "object-tests/read/object.txt", + "op": "head" }, "exchanges": [ { @@ -35970,7 +66006,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "HEAD" } }, { @@ -35978,40 +66014,36 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/empty.bin" - } - }, - { - "at": "/body_text", - "optional": false, - "rule": { - "is": "xml", - "value": "" + "value": "/fixture/object-tests/read/object.txt" } }, { - "at": "/query/comp", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "blocklist" + "value": "" } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 201, + "status": 200, "headers": { + "content-length": "30", + "content-md5": "H1VC0PNTmj+yaCRN4U931g==", + "content-type": "application/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-072bed78cc6a\"", + "etag": "\"fixture-5295cdfd25ff\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true" + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true" }, "body": { "encoding": "base64", @@ -36036,7 +66068,31 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-072bed78cc6a\"" + "value": "\"fixture-5295cdfd25ff\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 30 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "application/octet-stream" + } + }, + { + "at": "/value/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "H1VC0PNTmj+yaCRN4U931g==" } }, { @@ -36054,22 +66110,16 @@ "refusal": null }, { - "id": "operations/azure-hns/commit-over-whole-object", + "id": "operations/azure-hns/head-key-question", "profile": "azure-hns", "lane": "core", - "purpose": "commit over whole object", + "purpose": "head, with the key \"question?mark.txt\"", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "blocks": [ - { - "id_base64": "MDAwMDAx", - "kind": "latest" - } - ], - "key": "object-tests/multipart/over.bin", - "op": "azure.commit_blocks" + "key": "object-tests/keys/question?mark.txt", + "op": "head" }, "exchanges": [ { @@ -36081,7 +66131,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "HEAD" } }, { @@ -36089,40 +66139,36 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/over.bin" - } - }, - { - "at": "/body_text", - "optional": false, - "rule": { - "is": "xml", - "value": "MDAwMDAx" + "value": "/fixture/object-tests/keys/question?mark.txt" } }, { - "at": "/query/comp", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "blocklist" + "value": "" } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 201, + "status": 200, "headers": { + "content-length": "30", + "content-md5": "H1VC0PNTmj+yaCRN4U931g==", + "content-type": "application/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-7dc650e58291\"", + "etag": "\"fixture-5295cdfd25ff\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true" + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true" }, "body": { "encoding": "base64", @@ -36147,7 +66193,31 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-7dc650e58291\"" + "value": "\"fixture-5295cdfd25ff\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 30 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "application/octet-stream" + } + }, + { + "at": "/value/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "H1VC0PNTmj+yaCRN4U931g==" } }, { @@ -36165,23 +66235,16 @@ "refusal": null }, { - "id": "operations/azure-hns/commit-precondition-failed", + "id": "operations/azure-hns/head-key-hash", "profile": "azure-hns", "lane": "core", - "purpose": "commit precondition failed", + "purpose": "head, with the key \"hash#tag.txt\"", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "blocks": [ - { - "id_base64": "MDAwMDAx", - "kind": "latest" - } - ], - "if_match": "\"fixture-088e5dc109cf\"", - "key": "object-tests/multipart/pending.bin", - "op": "azure.commit_blocks" + "key": "object-tests/keys/hash#tag.txt", + "op": "head" }, "exchanges": [ { @@ -36193,7 +66256,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "HEAD" } }, { @@ -36201,50 +66264,40 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/pending.bin" - } - }, - { - "at": "/body_text", - "optional": false, - "rule": { - "is": "xml", - "value": "MDAwMDAx" - } - }, - { - "at": "/headers/if-match", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-088e5dc109cf\"" + "value": "/fixture/object-tests/keys/hash#tag.txt" } }, { - "at": "/query/comp", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "blocklist" + "value": "" } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 412, + "status": 200, "headers": { - "content-type": "application/xml", + "content-length": "30", + "content-md5": "H1VC0PNTmj+yaCRN4U931g==", + "content-type": "application/octet-stream", "date": { "from": "now" }, - "x-ms-error-code": "ConditionNotMet" + "etag": "\"fixture-5295cdfd25ff\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true" }, "body": { - "encoding": "utf8", - "data": "ConditionNotMetFixture error" + "encoding": "base64", + "data": "" } } } @@ -36257,150 +66310,66 @@ "optional": false, "rule": { "is": "equal", - "value": "error" + "value": "ok" } }, { - "at": "/status", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": 412 + "value": "\"fixture-5295cdfd25ff\"" } }, { - "at": "/code", + "at": "/value/size", "optional": false, "rule": { "is": "equal", - "value": "ConditionNotMet" + "value": 30 } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/commit-refused", - "profile": "azure-hns", - "lane": "core", - "purpose": "Report the service authorization error for this operation; signature acceptance is tested separately.", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "blocks": [], - "key": "object.bin", - "op": "azure.commit_blocks" - }, - "exchanges": [ - { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "PUT" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object.bin" - } - }, - { - "at": "/body_text", - "optional": false, - "rule": { - "is": "xml", - "value": "" - } - }, - { - "at": "/query/comp", - "optional": false, - "rule": { - "is": "equal", - "value": "blocklist" - } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 404, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - }, - "x-ms-error-code": "ContainerNotFound" - }, - "body": { - "encoding": "utf8", - "data": "ContainerNotFoundFixture error" - } - } - } - ] - } - ], - "expect": [ + }, { - "at": "/outcome", + "at": "/value/content_type", "optional": false, "rule": { "is": "equal", - "value": "error" + "value": "application/octet-stream" } }, { - "at": "/status", + "at": "/value/content_md5_base64", "optional": false, "rule": { "is": "equal", - "value": 404 + "value": "H1VC0PNTmj+yaCRN4U931g==" } }, { - "at": "/code", - "optional": false, + "at": "/value/version", + "optional": true, "rule": { - "is": "equal", - "value": "ContainerNotFound" + "is": "one_of", + "values": [ + null, + "" + ] } } ], "refusal": null }, { - "id": "operations/azure-hns/commit-reordered", + "id": "operations/azure-hns/head-key-percent", "profile": "azure-hns", "lane": "core", - "purpose": "commit reordered", + "purpose": "head, with the key \"percent%20.txt\"", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "blocks": [ - { - "id_base64": "MDAwMDAy", - "kind": "latest" - }, - { - "id_base64": "MDAwMDAx", - "kind": "latest" - } - ], - "key": "object-tests/multipart/reordered.bin", - "op": "azure.commit_blocks" + "key": "object-tests/keys/percent%20.txt", + "op": "head" }, "exchanges": [ { @@ -36412,7 +66381,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "HEAD" } }, { @@ -36420,40 +66389,36 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/reordered.bin" - } - }, - { - "at": "/body_text", - "optional": false, - "rule": { - "is": "xml", - "value": "MDAwMDAyMDAwMDAx" + "value": "/fixture/object-tests/keys/percent%20.txt" } }, { - "at": "/query/comp", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "blocklist" + "value": "" } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 201, + "status": 200, "headers": { + "content-length": "30", + "content-md5": "H1VC0PNTmj+yaCRN4U931g==", + "content-type": "application/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-446301cfeaef\"", + "etag": "\"fixture-5295cdfd25ff\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true" + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true" }, "body": { "encoding": "base64", @@ -36478,7 +66443,31 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-446301cfeaef\"" + "value": "\"fixture-5295cdfd25ff\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 30 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "application/octet-stream" + } + }, + { + "at": "/value/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "H1VC0PNTmj+yaCRN4U931g==" } }, { @@ -36496,22 +66485,16 @@ "refusal": null }, { - "id": "operations/azure-hns/commit-replacement", + "id": "operations/azure-hns/head-key-plus", "profile": "azure-hns", "lane": "core", - "purpose": "commit replacement", + "purpose": "head, with the key \"plus+plus.txt\"", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "blocks": [ - { - "id_base64": "MDAwMDAx", - "kind": "latest" - } - ], - "key": "object-tests/multipart/replaced.bin", - "op": "azure.commit_blocks" + "key": "object-tests/keys/plus+plus.txt", + "op": "head" }, "exchanges": [ { @@ -36523,7 +66506,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "HEAD" } }, { @@ -36531,40 +66514,36 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/replaced.bin" - } - }, - { - "at": "/body_text", - "optional": false, - "rule": { - "is": "xml", - "value": "MDAwMDAx" + "value": "/fixture/object-tests/keys/plus+plus.txt" } }, { - "at": "/query/comp", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "blocklist" + "value": "" } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 201, + "status": 200, "headers": { + "content-length": "30", + "content-md5": "H1VC0PNTmj+yaCRN4U931g==", + "content-type": "application/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-9c5e55ff559c\"", + "etag": "\"fixture-5295cdfd25ff\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true" + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true" }, "body": { "encoding": "base64", @@ -36589,7 +66568,31 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-9c5e55ff559c\"" + "value": "\"fixture-5295cdfd25ff\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 30 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "application/octet-stream" + } + }, + { + "at": "/value/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "H1VC0PNTmj+yaCRN4U931g==" } }, { @@ -36607,26 +66610,16 @@ "refusal": null }, { - "id": "operations/azure-hns/commit-unstaged-id", + "id": "operations/azure-hns/head-key-space", "profile": "azure-hns", "lane": "core", - "purpose": "commit unstaged id", + "purpose": "head, with the key \"space name.txt\"", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "blocks": [ - { - "id_base64": "MDAwMDAx", - "kind": "latest" - }, - { - "id_base64": "MDAwMDA5", - "kind": "latest" - } - ], - "key": "object-tests/multipart/staged.bin", - "op": "azure.commit_blocks" + "key": "object-tests/keys/space name.txt", + "op": "head" }, "exchanges": [ { @@ -36638,7 +66631,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "HEAD" } }, { @@ -36646,42 +66639,40 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/staged.bin" - } - }, - { - "at": "/body_text", - "optional": false, - "rule": { - "is": "xml", - "value": "MDAwMDAxMDAwMDA5" + "value": "/fixture/object-tests/keys/space name.txt" } }, { - "at": "/query/comp", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "blocklist" + "value": "" } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 400, + "status": 200, "headers": { - "content-type": "application/xml", + "content-length": "30", + "content-md5": "H1VC0PNTmj+yaCRN4U931g==", + "content-type": "application/octet-stream", "date": { "from": "now" }, - "x-ms-error-code": "InvalidBlockList" + "etag": "\"fixture-5295cdfd25ff\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true" }, "body": { - "encoding": "utf8", - "data": "InvalidBlockListFixture error" + "encoding": "base64", + "data": "" } } } @@ -36694,52 +66685,66 @@ "optional": false, "rule": { "is": "equal", - "value": "error" + "value": "ok" } }, { - "at": "/status", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": 400 + "value": "\"fixture-5295cdfd25ff\"" } }, { - "at": "/code", + "at": "/value/size", "optional": false, "rule": { "is": "equal", - "value": "InvalidBlockList" + "value": 30 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "application/octet-stream" + } + }, + { + "at": "/value/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "H1VC0PNTmj+yaCRN4U931g==" + } + }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] } } ], "refusal": null }, { - "id": "operations/azure-hns/commit-unstaged-id-code-in-body", + "id": "operations/azure-hns/head-key-non-ascii", "profile": "azure-hns", "lane": "core", - "purpose": "commit unstaged id, with the error code only in the XML body", + "purpose": "head, with the key \"café/雪.txt\"", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp", - "https://learn.microsoft.com/en-us/rest/api/storageservices/common-rest-api-error-codes", - "https://learn.microsoft.com/en-us/rest/api/storageservices/blob-service-error-codes" + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], - "origin": "constructed", "call": { - "blocks": [ - { - "id_base64": "MDAwMDAx", - "kind": "latest" - }, - { - "id_base64": "MDAwMDA5", - "kind": "latest" - } - ], - "key": "object-tests/multipart/staged.bin", - "op": "azure.commit_blocks" + "key": "object-tests/keys/café/雪.txt", + "op": "head" }, "exchanges": [ { @@ -36751,7 +66756,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "HEAD" } }, { @@ -36759,41 +66764,40 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/staged.bin" - } - }, - { - "at": "/body_text", - "optional": false, - "rule": { - "is": "xml", - "value": "MDAwMDAxMDAwMDA5" + "value": "/fixture/object-tests/keys/café/雪.txt" } }, { - "at": "/query/comp", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "blocklist" + "value": "" } - } - ], - "allow_headers": [ - "content-type" + } ], + "allow_headers": [], "allow_query": [], "response": { - "status": 400, + "status": 200, "headers": { - "content-type": "application/xml", + "content-length": "30", + "content-md5": "H1VC0PNTmj+yaCRN4U931g==", + "content-type": "application/octet-stream", "date": { "from": "now" - } + }, + "etag": "\"fixture-5295cdfd25ff\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true" }, "body": { - "encoding": "utf8", - "data": "InvalidBlockListFixture error" + "encoding": "base64", + "data": "" } } } @@ -36806,49 +66810,66 @@ "optional": false, "rule": { "is": "equal", - "value": "error" + "value": "ok" } }, { - "at": "/status", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": 400 + "value": "\"fixture-5295cdfd25ff\"" } }, { - "at": "/code", + "at": "/value/size", "optional": false, "rule": { "is": "equal", - "value": "InvalidBlockList" + "value": 30 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "application/octet-stream" + } + }, + { + "at": "/value/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "H1VC0PNTmj+yaCRN4U931g==" + } + }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] } } ], "refusal": null }, { - "id": "operations/azure-hns/commit", + "id": "operations/azure-hns/head-key-double-slash", "profile": "azure-hns", "lane": "core", - "purpose": "commit", + "purpose": "head, with the key \"double//slash.txt\"", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "blocks": [ - { - "id_base64": "MDAwMDAx", - "kind": "latest" - }, - { - "id_base64": "MDAwMDAy", - "kind": "latest" - } - ], - "key": "object-tests/multipart/committed.bin", - "op": "azure.commit_blocks" + "key": "object-tests/keys/double//slash.txt", + "op": "head" }, "exchanges": [ { @@ -36860,7 +66881,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "HEAD" } }, { @@ -36868,40 +66889,36 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/committed.bin" - } - }, - { - "at": "/body_text", - "optional": false, - "rule": { - "is": "xml", - "value": "MDAwMDAxMDAwMDAy" + "value": "/fixture/object-tests/keys/double//slash.txt" } }, { - "at": "/query/comp", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "blocklist" + "value": "" } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 201, + "status": 200, "headers": { + "content-length": "30", + "content-md5": "H1VC0PNTmj+yaCRN4U931g==", + "content-type": "application/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-8ec031f3abfa\"", + "etag": "\"fixture-5295cdfd25ff\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true" + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true" }, "body": { "encoding": "base64", @@ -36926,7 +66943,31 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-8ec031f3abfa\"" + "value": "\"fixture-5295cdfd25ff\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 30 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "application/octet-stream" + } + }, + { + "at": "/value/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "H1VC0PNTmj+yaCRN4U931g==" } }, { @@ -36944,26 +66985,16 @@ "refusal": null }, { - "id": "operations/azure-hns/commit-key-question", + "id": "operations/azure-hns/head-key-trailing-slash", "profile": "azure-hns", "lane": "core", - "purpose": "commit, with the key \"question?mark.txt\"", + "purpose": "head, with the key \"trailing-slash/\"", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "blocks": [ - { - "id_base64": "MDAwMDAx", - "kind": "latest" - }, - { - "id_base64": "MDAwMDAy", - "kind": "latest" - } - ], - "key": "object-tests/keys/question?mark.txt", - "op": "azure.commit_blocks" + "key": "object-tests/keys/trailing-slash/", + "op": "head" }, "exchanges": [ { @@ -36975,7 +67006,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "HEAD" } }, { @@ -36983,44 +67014,30 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/question?mark.txt" - } - }, - { - "at": "/body_text", - "optional": false, - "rule": { - "is": "xml", - "value": "MDAwMDAxMDAwMDAy" + "value": "/fixture/object-tests/keys/trailing-slash/" } }, { - "at": "/query/comp", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "blocklist" + "value": "" } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 201, + "status": 404, "headers": { "date": { "from": "now" }, - "etag": "\"fixture-8ec031f3abfa\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true" + "x-ms-error-code": "BlobNotFound" }, "body": { - "encoding": "base64", - "data": "" + "encoding": "empty" } } } @@ -37033,52 +67050,39 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "error" } }, { - "at": "/value/etag", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-8ec031f3abfa\"" + "value": 404 } }, { - "at": "/value/version", - "optional": true, + "at": "/code", + "optional": false, "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "is": "equal", + "value": "BlobNotFound" } } ], "refusal": null }, { - "id": "operations/azure-hns/commit-key-hash", + "id": "operations/azure-hns/head-content-properties", "profile": "azure-hns", "lane": "core", - "purpose": "commit, with the key \"hash#tag.txt\"", + "purpose": "Return the stored content properties from a HEAD", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "blocks": [ - { - "id_base64": "MDAwMDAx", - "kind": "latest" - }, - { - "id_base64": "MDAwMDAy", - "kind": "latest" - } - ], - "key": "object-tests/keys/hash#tag.txt", - "op": "azure.commit_blocks" + "key": "object-tests/read/object.txt", + "op": "head" }, "exchanges": [ { @@ -37090,7 +67094,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "HEAD" } }, { @@ -37098,40 +67102,39 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/hash#tag.txt" - } - }, - { - "at": "/body_text", - "optional": false, - "rule": { - "is": "xml", - "value": "MDAwMDAxMDAwMDAy" + "value": "/fixture/object-tests/read/object.txt" } }, { - "at": "/query/comp", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "blocklist" + "value": "" } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 201, + "status": 200, "headers": { + "cache-control": "max-age=3600", + "content-disposition": "attachment; filename=\"report.txt\"", + "content-language": "nl-NL", + "content-length": "30", + "content-md5": "H1VC0PNTmj+yaCRN4U931g==", + "content-type": "text/plain; charset=utf-8", "date": { "from": "now" }, - "etag": "\"fixture-8ec031f3abfa\"", + "etag": "\"fixture-5295cdfd25ff\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true" + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true" }, "body": { "encoding": "base64", @@ -37156,7 +67159,23 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-8ec031f3abfa\"" + "value": "\"fixture-5295cdfd25ff\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 30 + } + }, + { + "at": "/value/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "H1VC0PNTmj+yaCRN4U931g==" } }, { @@ -37169,31 +67188,54 @@ "" ] } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "text/plain; charset=utf-8" + } + }, + { + "at": "/value/content_language", + "optional": false, + "rule": { + "is": "equal", + "value": "nl-NL" + } + }, + { + "at": "/value/content_disposition", + "optional": false, + "rule": { + "is": "equal", + "value": "attachment; filename=\"report.txt\"" + } + }, + { + "at": "/value/cache_control", + "optional": false, + "rule": { + "is": "equal", + "value": "max-age=3600" + } } ], "refusal": null }, { - "id": "operations/azure-hns/commit-key-percent", + "id": "operations/azure-hns/head-if-unmodified-since-past", "profile": "azure-hns", "lane": "core", - "purpose": "commit, with the key \"percent%20.txt\"", + "purpose": "Refuse a HEAD with 412 when the object changed after If-Unmodified-Since", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "blocks": [ - { - "id_base64": "MDAwMDAx", - "kind": "latest" - }, - { - "id_base64": "MDAwMDAy", - "kind": "latest" - } - ], - "key": "object-tests/keys/percent%20.txt", - "op": "azure.commit_blocks" + "if_unmodified_since": "Sat, 01 Jan 2000 00:00:00 GMT", + "key": "object-tests/read/object.txt", + "op": "head" }, "exchanges": [ { @@ -37205,7 +67247,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "HEAD" } }, { @@ -37213,44 +67255,38 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/percent%20.txt" + "value": "/fixture/object-tests/read/object.txt" } }, { - "at": "/body_text", + "at": "/body_base64", "optional": false, "rule": { - "is": "xml", - "value": "MDAwMDAxMDAwMDAy" + "is": "equal", + "value": "" } }, { - "at": "/query/comp", + "at": "/headers/if-unmodified-since", "optional": false, "rule": { "is": "equal", - "value": "blocklist" + "value": "Sat, 01 Jan 2000 00:00:00 GMT" } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 201, + "status": 412, "headers": { "date": { "from": "now" }, - "etag": "\"fixture-8ec031f3abfa\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true" + "x-ms-error-code": "ConditionNotMet" }, "body": { - "encoding": "base64", - "data": "" + "encoding": "empty" } } } @@ -37263,52 +67299,39 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "error" } }, { - "at": "/value/etag", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-8ec031f3abfa\"" + "value": 412 } }, { - "at": "/value/version", - "optional": true, + "at": "/code", + "optional": false, "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "is": "equal", + "value": "ConditionNotMet" } } ], "refusal": null }, { - "id": "operations/azure-hns/commit-key-plus", + "id": "operations/azure-hns/head-copy-status", "profile": "azure-hns", "lane": "core", - "purpose": "commit, with the key \"plus+plus.txt\"", + "purpose": "Report the copy that wrote a blob, its x-ms-copy-status and x-ms-copy-id, from a HEAD of the blob", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "https://learn.microsoft.com/en-us/rest/api/storageservices/get-blob-properties" ], "call": { - "blocks": [ - { - "id_base64": "MDAwMDAx", - "kind": "latest" - }, - { - "id_base64": "MDAwMDAy", - "kind": "latest" - } - ], - "key": "object-tests/keys/plus+plus.txt", - "op": "azure.commit_blocks" + "key": "object-tests/copy/target.txt", + "op": "head" }, "exchanges": [ { @@ -37320,7 +67343,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "HEAD" } }, { @@ -37328,44 +67351,43 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/plus+plus.txt" - } - }, - { - "at": "/body_text", - "optional": false, - "rule": { - "is": "xml", - "value": "MDAwMDAxMDAwMDAy" + "value": "/fixture/object-tests/copy/target.txt" } }, { - "at": "/query/comp", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "blocklist" + "value": "" } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 201, + "status": 200, "headers": { + "content-length": "5", + "content-type": "application/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-8ec031f3abfa\"", + "etag": "\"fixture-16c44f0af72d\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-copy-completion-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-copy-id": "fixture-copy-id", + "x-ms-copy-progress": "5/5", + "x-ms-copy-source": "https://fixture.blob.core.windows.net/fixture/object-tests/copy/source.txt", + "x-ms-copy-status": "success", "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true" + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true" }, "body": { - "encoding": "base64", - "data": "" + "encoding": "empty" } } } @@ -37382,48 +67404,35 @@ } }, { - "at": "/value/etag", + "at": "/value/copy_status", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-8ec031f3abfa\"" + "value": "success" } }, { - "at": "/value/version", - "optional": true, + "at": "/value/copy_id", + "optional": false, "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "is": "equal", + "value": "fixture-copy-id" } } ], "refusal": null }, { - "id": "operations/azure-hns/commit-key-space", + "id": "operations/azure-hns/head-access-tier", "profile": "azure-hns", "lane": "core", - "purpose": "commit, with the key \"space name.txt\"", + "purpose": "Report a blob's access tier, which Azure sends in x-ms-access-tier", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "blocks": [ - { - "id_base64": "MDAwMDAx", - "kind": "latest" - }, - { - "id_base64": "MDAwMDAy", - "kind": "latest" - } - ], - "key": "object-tests/keys/space name.txt", - "op": "azure.commit_blocks" + "key": "object-tests/read/object.txt", + "op": "head" }, "exchanges": [ { @@ -37435,7 +67444,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "HEAD" } }, { @@ -37443,40 +67452,37 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/space name.txt" - } - }, - { - "at": "/body_text", - "optional": false, - "rule": { - "is": "xml", - "value": "MDAwMDAxMDAwMDAy" + "value": "/fixture/object-tests/read/object.txt" } }, { - "at": "/query/comp", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "blocklist" + "value": "" } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 201, + "status": 200, "headers": { + "content-length": "30", + "content-md5": "H1VC0PNTmj+yaCRN4U931g==", + "content-type": "application/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-8ec031f3abfa\"", + "etag": "\"fixture-5295cdfd25ff\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-access-tier": "Cool", + "x-ms-blob-type": "BlockBlob", "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true" + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-server-encrypted": "true" }, "body": { "encoding": "base64", @@ -37497,48 +67503,27 @@ } }, { - "at": "/value/etag", + "at": "/value/access_tier", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-8ec031f3abfa\"" - } - }, - { - "at": "/value/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "value": "Cool" } } ], "refusal": null }, { - "id": "operations/azure-hns/commit-key-non-ascii", + "id": "operations/azure-hns/list-after-delete-with-versions", "profile": "azure-hns", "lane": "core", - "purpose": "commit, with the key \"café/雪.txt\"", + "purpose": "list after delete with versions", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "blocks": [ - { - "id_base64": "MDAwMDAx", - "kind": "latest" - }, - { - "id_base64": "MDAwMDAy", - "kind": "latest" - } - ], - "key": "object-tests/keys/café/雪.txt", - "op": "azure.commit_blocks" + "op": "list_page", + "prefix": "object-tests/versions-mtypy4jp/deleted.txt" }, "exchanges": [ { @@ -37550,7 +67535,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -37558,15 +67543,23 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/café/雪.txt" + "value": "/fixture" } }, { - "at": "/body_text", + "at": "/body_base64", "optional": false, "rule": { - "is": "xml", - "value": "MDAwMDAxMDAwMDAy" + "is": "equal", + "value": "" + } + }, + { + "at": "/query/restype", + "optional": false, + "rule": { + "is": "equal", + "value": "container" } }, { @@ -37574,29 +67567,35 @@ "optional": false, "rule": { "is": "equal", - "value": "blocklist" + "value": "list" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/versions-mtypy4jp/deleted.txt" } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 201, + "status": 200, "headers": { + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-8ec031f3abfa\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true" + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "" - } + "encoding": "utf8", + "data": "object-tests/versions-mtypy4jp/deleted.txt" + }, + "framing": "chunked" } } ] @@ -37612,48 +67611,44 @@ } }, { - "at": "/value/etag", + "at": "/value/entries", "optional": false, "rule": { - "is": "equal", - "value": "\"fixture-8ec031f3abfa\"" + "is": "array_length", + "value": 0 } }, { - "at": "/value/version", - "optional": true, + "at": "/value/prefixes", + "optional": false, "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "is": "array_length", + "value": 0 + } + }, + { + "at": "/value/continuation_token", + "optional": false, + "rule": { + "is": "equal", + "value": "" } } ], "refusal": null }, { - "id": "operations/azure-hns/commit-key-double-slash", + "id": "operations/azure-hns/list-bad-marker", "profile": "azure-hns", "lane": "core", - "purpose": "commit, with the key \"double//slash.txt\"", + "purpose": "list bad marker", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "blocks": [ - { - "id_base64": "MDAwMDAx", - "kind": "latest" - }, - { - "id_base64": "MDAwMDAy", - "kind": "latest" - } - ], - "key": "object-tests/keys/double//slash.txt", - "op": "azure.commit_blocks" + "continuation_token": "fixture-marker+/1d52c72a655f=", + "op": "list_page", + "prefix": "object-tests/board/" }, "exchanges": [ { @@ -37665,7 +67660,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -37673,15 +67668,23 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/double//slash.txt" + "value": "/fixture" } }, { - "at": "/body_text", + "at": "/body_base64", "optional": false, "rule": { - "is": "xml", - "value": "MDAwMDAxMDAwMDAy" + "is": "equal", + "value": "" + } + }, + { + "at": "/query/restype", + "optional": false, + "rule": { + "is": "equal", + "value": "container" } }, { @@ -37689,28 +67692,40 @@ "optional": false, "rule": { "is": "equal", - "value": "blocklist" + "value": "list" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/" + } + }, + { + "at": "/query/marker", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-marker+/1d52c72a655f=" } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 201, + "status": 400, "headers": { + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-8ec031f3abfa\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true" + "x-ms-error-code": "InvalidQueryParameterValue" }, "body": { - "encoding": "base64", - "data": "" + "encoding": "utf8", + "data": "InvalidQueryParameterValueFixture error" } } } @@ -37723,52 +67738,43 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "error" } }, { - "at": "/value/etag", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-8ec031f3abfa\"" + "value": 400 } }, { - "at": "/value/version", - "optional": true, + "at": "/code", + "optional": false, "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "is": "equal", + "value": "InvalidQueryParameterValue" } } ], "refusal": null }, { - "id": "operations/azure-hns/commit-key-trailing-slash", + "id": "operations/azure-hns/list-bad-marker-code-in-body", "profile": "azure-hns", "lane": "core", - "purpose": "commit, with the key \"trailing-slash/\"", + "purpose": "list bad marker, with the error code only in the XML body", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp", + "https://learn.microsoft.com/en-us/rest/api/storageservices/common-rest-api-error-codes", + "https://learn.microsoft.com/en-us/rest/api/storageservices/blob-service-error-codes" ], + "origin": "constructed", "call": { - "blocks": [ - { - "id_base64": "MDAwMDAx", - "kind": "latest" - }, - { - "id_base64": "MDAwMDAy", - "kind": "latest" - } - ], - "key": "object-tests/keys/trailing-slash/", - "op": "azure.commit_blocks" + "continuation_token": "fixture-marker+/1d52c72a655f=", + "op": "list_page", + "prefix": "object-tests/board/" }, "exchanges": [ { @@ -37780,7 +67786,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -37788,15 +67794,23 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/trailing-slash/" + "value": "/fixture" } }, { - "at": "/body_text", + "at": "/body_base64", "optional": false, "rule": { - "is": "xml", - "value": "MDAwMDAxMDAwMDAy" + "is": "equal", + "value": "" + } + }, + { + "at": "/query/restype", + "optional": false, + "rule": { + "is": "equal", + "value": "container" } }, { @@ -37804,13 +67818,27 @@ "optional": false, "rule": { "is": "equal", - "value": "blocklist" + "value": "list" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/" + } + }, + { + "at": "/query/marker", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-marker+/1d52c72a655f=" } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { "status": 400, @@ -37818,12 +67846,11 @@ "content-type": "application/xml", "date": { "from": "now" - }, - "x-ms-error-code": "InvalidBlockList" + } }, "body": { "encoding": "utf8", - "data": "InvalidBlockListFixture error" + "data": "InvalidQueryParameterValueFixture error" } } } @@ -37852,23 +67879,23 @@ "optional": false, "rule": { "is": "equal", - "value": "InvalidBlockList" + "value": "InvalidQueryParameterValue" } } ], "refusal": null }, { - "id": "operations/azure-hns/delete-accepted", + "id": "operations/azure-hns/list-container-missing", "profile": "azure-hns", "lane": "core", - "purpose": "delete accepted", + "purpose": "list container missing. A client reports it as container_not_found: the bucket or container is absent, not the object", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "key": "object-tests/remove/present.txt", - "op": "delete" + "op": "list_page", + "prefix": "" }, "exchanges": [ { @@ -37880,7 +67907,7 @@ "optional": false, "rule": { "is": "equal", - "value": "DELETE" + "value": "GET" } }, { @@ -37888,7 +67915,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/remove/present.txt" + "value": "/fixture" } }, { @@ -37898,22 +67925,46 @@ "is": "equal", "value": "" } + }, + { + "at": "/query/restype", + "optional": false, + "rule": { + "is": "equal", + "value": "container" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "list" + } + }, + { + "at": "/query/prefix", + "optional": true, + "rule": { + "is": "equal", + "value": "" + } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 202, + "status": 404, "headers": { + "content-type": "application/xml", "date": { "from": "now" }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + "x-ms-error-code": "ContainerNotFound" }, "body": { - "encoding": "base64", - "data": "" + "encoding": "utf8", + "data": "ContainerNotFoundFixture error" } } } @@ -37926,23 +67977,48 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 404 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "ContainerNotFound" + } + }, + { + "at": "/kind", + "optional": false, + "rule": { + "is": "equal", + "value": "container_not_found" } } ], "refusal": null }, { - "id": "operations/azure-hns/delete-accepted-key-question", + "id": "operations/azure-hns/list-delimited", "profile": "azure-hns", "lane": "core", - "purpose": "delete accepted, with the key \"question?mark.txt\"", + "purpose": "list delimited", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "key": "object-tests/keys/question?mark.txt", - "op": "delete" + "delimiter": "/", + "op": "list_page", + "prefix": "object-tests/board/" }, "exchanges": [ { @@ -37954,7 +68030,7 @@ "optional": false, "rule": { "is": "equal", - "value": "DELETE" + "value": "GET" } }, { @@ -37962,7 +68038,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/question?mark.txt" + "value": "/fixture" } }, { @@ -37972,13 +68048,46 @@ "is": "equal", "value": "" } + }, + { + "at": "/query/restype", + "optional": false, + "rule": { + "is": "equal", + "value": "container" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "list" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/" + } + }, + { + "at": "/query/delimiter", + "optional": false, + "rule": { + "is": "equal", + "value": "/" + } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 202, + "status": 200, "headers": { + "content-type": "application/xml", "date": { "from": "now" }, @@ -37986,9 +68095,10 @@ "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "" - } + "encoding": "utf8", + "data": "object-tests/board//object-tests/board/a.txtMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-e8a4acb31ab1file8application/octet-streamJdVa0oOqQAr0ZMdtcTwHrQ==BlockBlobHottrueunlockedavailabletrueobject-tests/board/nested/Mon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMT0x8DF10FBAC3E874Cdirectory0BlockBlobHottrueunlockedavailabletrueobject-tests/board/z.txtMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-0d608f7e2d51file2application/octet-streamJe0by0I7C3IA9IX8X/ccjg==BlockBlobHottrueunlockedavailabletrue" + }, + "framing": "chunked" } } ] @@ -37996,27 +68106,190 @@ ], "expect": [ { - "at": "/outcome", + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/entries/0/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/a.txt" + } + }, + { + "at": "/value/entries/0/size", + "optional": false, + "rule": { + "is": "equal", + "value": 8 + } + }, + { + "at": "/value/entries/0/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-e8a4acb31ab1" + } + }, + { + "at": "/value/entries/0/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/0/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "JdVa0oOqQAr0ZMdtcTwHrQ==" + } + }, + { + "at": "/value/entries/1/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/z.txt" + } + }, + { + "at": "/value/entries/1/size", + "optional": false, + "rule": { + "is": "equal", + "value": 2 + } + }, + { + "at": "/value/entries/1/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-0d608f7e2d51" + } + }, + { + "at": "/value/entries/1/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/1/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/1/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/1/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "Je0by0I7C3IA9IX8X/ccjg==" + } + }, + { + "at": "/value/entries", + "optional": false, + "rule": { + "is": "array_length", + "value": 2 + } + }, + { + "at": "/value/prefixes/0", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/nested/" + } + }, + { + "at": "/value/prefixes", + "optional": false, + "rule": { + "is": "array_length", + "value": 1 + } + }, + { + "at": "/value/continuation_token", "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "" } } ], "refusal": null }, { - "id": "operations/azure-hns/delete-accepted-key-hash", + "id": "operations/azure-hns/list-other-delimiter", "profile": "azure-hns", "lane": "core", - "purpose": "delete accepted, with the key \"hash#tag.txt\"", + "purpose": "Report the 400 DelimiterIsInvalidForHNS that an HNS account answers to any delimiter but /", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "key": "object-tests/keys/hash#tag.txt", - "op": "delete" + "delimiter": "-", + "op": "list_page", + "prefix": "object-tests/dashes/" }, "exchanges": [ { @@ -38028,7 +68301,7 @@ "optional": false, "rule": { "is": "equal", - "value": "DELETE" + "value": "GET" } }, { @@ -38036,7 +68309,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/hash#tag.txt" + "value": "/fixture" } }, { @@ -38046,96 +68319,54 @@ "is": "equal", "value": "" } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 202, - "headers": { - "date": { - "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" }, - "body": { - "encoding": "base64", - "data": "" - } - } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/delete-accepted-key-percent", - "profile": "azure-hns", - "lane": "core", - "purpose": "delete accepted, with the key \"percent%20.txt\"", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "key": "object-tests/keys/percent%20.txt", - "op": "delete" - }, - "exchanges": [ - { - "alternatives": [ - { - "request": [ { - "at": "/method", + "at": "/query/restype", "optional": false, "rule": { "is": "equal", - "value": "DELETE" + "value": "container" } }, { - "at": "/path", + "at": "/query/comp", "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/percent%20.txt" + "value": "list" } }, { - "at": "/body_base64", + "at": "/query/prefix", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "object-tests/dashes/" + } + }, + { + "at": "/query/delimiter", + "optional": false, + "rule": { + "is": "equal", + "value": "-" } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 202, + "status": 400, "headers": { + "content-type": "application/xml", "date": { "from": "now" }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + "x-ms-error-code": "DelimiterIsInvalidForHNS" }, "body": { - "encoding": "base64", - "data": "" + "encoding": "utf8", + "data": "DelimiterIsInvalidForHNSThe only delimiter supported for hierarchical namespace accounts is '/'." } } } @@ -38148,23 +68379,80 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 400 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "DelimiterIsInvalidForHNS" } } ], - "refusal": null + "refusal": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "refused" + } + }, + { + "at": "/kind", + "optional": false, + "rule": { + "is": "matches", + "pattern": ".+" + } + }, + { + "at": "/parameter", + "optional": false, + "rule": { + "is": "equal", + "value": "delimiter" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 400 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "DelimiterIsInvalidForHNS" + } + } + ] }, { - "id": "operations/azure-hns/delete-accepted-key-plus", + "id": "operations/azure-hns/list-empty", "profile": "azure-hns", "lane": "core", - "purpose": "delete accepted, with the key \"plus+plus.txt\"", + "purpose": "list empty", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "key": "object-tests/keys/plus+plus.txt", - "op": "delete" + "op": "list_page", + "prefix": "object-tests/nothing/" }, "exchanges": [ { @@ -38176,7 +68464,7 @@ "optional": false, "rule": { "is": "equal", - "value": "DELETE" + "value": "GET" } }, { @@ -38184,7 +68472,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/plus+plus.txt" + "value": "/fixture" } }, { @@ -38194,87 +68482,38 @@ "is": "equal", "value": "" } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 202, - "headers": { - "date": { - "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" }, - "body": { - "encoding": "base64", - "data": "" - } - } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/delete-accepted-key-space", - "profile": "azure-hns", - "lane": "core", - "purpose": "delete accepted, with the key \"space name.txt\"", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "key": "object-tests/keys/space name.txt", - "op": "delete" - }, - "exchanges": [ - { - "alternatives": [ - { - "request": [ { - "at": "/method", + "at": "/query/restype", "optional": false, "rule": { "is": "equal", - "value": "DELETE" + "value": "container" } }, { - "at": "/path", + "at": "/query/comp", "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/space name.txt" + "value": "list" } }, { - "at": "/body_base64", + "at": "/query/prefix", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "object-tests/nothing/" } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 202, + "status": 200, "headers": { + "content-type": "application/xml", "date": { "from": "now" }, @@ -38282,9 +68521,10 @@ "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "" - } + "encoding": "utf8", + "data": "object-tests/nothing/" + }, + "framing": "chunked" } } ] @@ -38298,21 +68538,45 @@ "is": "equal", "value": "ok" } + }, + { + "at": "/value/entries", + "optional": false, + "rule": { + "is": "array_length", + "value": 0 + } + }, + { + "at": "/value/prefixes", + "optional": false, + "rule": { + "is": "array_length", + "value": 0 + } + }, + { + "at": "/value/continuation_token", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } } ], "refusal": null }, { - "id": "operations/azure-hns/delete-accepted-key-non-ascii", + "id": "operations/azure-hns/list-all-empty", "profile": "azure-hns", "lane": "core", - "purpose": "delete accepted, with the key \"café/雪.txt\"", + "purpose": "list empty", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "https://learn.microsoft.com/en-us/rest/api/storageservices/list-blobs" ], "call": { - "key": "object-tests/keys/café/雪.txt", - "op": "delete" + "op": "list", + "prefix": "" }, "exchanges": [ { @@ -38324,7 +68588,7 @@ "optional": false, "rule": { "is": "equal", - "value": "DELETE" + "value": "GET" } }, { @@ -38332,7 +68596,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/café/雪.txt" + "value": "/fixture" } }, { @@ -38342,76 +68606,26 @@ "is": "equal", "value": "" } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 202, - "headers": { - "date": { - "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" }, - "body": { - "encoding": "base64", - "data": "" - } - } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/delete-accepted-key-double-slash", - "profile": "azure-hns", - "lane": "core", - "purpose": "delete accepted, with the key \"double//slash.txt\"", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "key": "object-tests/keys/double//slash.txt", - "op": "delete" - }, - "exchanges": [ - { - "alternatives": [ - { - "request": [ { - "at": "/method", + "at": "/query/restype", "optional": false, "rule": { "is": "equal", - "value": "DELETE" + "value": "container" } }, { - "at": "/path", + "at": "/query/comp", "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/double//slash.txt" + "value": "list" } }, { - "at": "/body_base64", - "optional": false, + "at": "/query/prefix", + "optional": true, "rule": { "is": "equal", "value": "" @@ -38421,18 +68635,28 @@ "allow_headers": [], "allow_query": [], "response": { - "status": 202, + "status": 200, "headers": { + "content-type": "application/xml", "date": { "from": "now" }, + "etag": "\"fixture-etag\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-request-id": "fixture-request-id", + "x-ms-request-server-encrypted": "true", + "x-ms-server-encrypted": "true", + "x-ms-version": "2023-11-03" }, "body": { "encoding": "base64", - "data": "" - } + "data": "PEVudW1lcmF0aW9uUmVzdWx0cyBTZXJ2aWNlRW5kcG9pbnQ9Imh0dHA6Ly9maXh0dXJlLyIgQ29udGFpbmVyTmFtZT0iZml4dHVyZSI+PFByZWZpeD48L1ByZWZpeD48QmxvYnM+PC9CbG9icz48TmV4dE1hcmtlcj48L05leHRNYXJrZXI+PC9FbnVtZXJhdGlvblJlc3VsdHM+" + }, + "framing": "chunked" } } ] @@ -38446,21 +68670,29 @@ "is": "equal", "value": "ok" } + }, + { + "at": "/value/keys", + "optional": false, + "rule": { + "is": "equal", + "value": [] + } } ], "refusal": null }, { - "id": "operations/azure-hns/delete-accepted-key-trailing-slash", + "id": "operations/azure-hns/list-encoded-names", "profile": "azure-hns", "lane": "core", - "purpose": "delete accepted, with the key \"trailing-slash/\"", + "purpose": "list encoded names", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "key": "object-tests/keys/trailing-slash/", - "op": "delete" + "op": "list_page", + "prefix": "object-tests/names/" }, "exchanges": [ { @@ -38472,7 +68704,7 @@ "optional": false, "rule": { "is": "equal", - "value": "DELETE" + "value": "GET" } }, { @@ -38480,7 +68712,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/trailing-slash/" + "value": "/fixture" } }, { @@ -38490,23 +68722,49 @@ "is": "equal", "value": "" } + }, + { + "at": "/query/restype", + "optional": false, + "rule": { + "is": "equal", + "value": "container" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "list" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/names/" + } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 400, + "status": 200, "headers": { "content-type": "application/xml", "date": { "from": "now" }, - "x-ms-error-code": "InvalidUri" + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "utf8", - "data": "InvalidUriFixture error" - } + "data": "object-tests/names/object-tests%2Fnames%2F100%25-%EF%BF%BE-name.txtMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-78b47742a630file1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/names/a&b.txtMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-f951d7d7ec22file1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/names/backMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-e64e63e9a87bdirectory0BlockBlobHottrueunlockedavailabletrueobject-tests/names/back/slash.txtMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-e9c0e2dbcfe1file1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/names/café.txtMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-7d8cf0126958file1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/names/hash#tag.txtMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-abf3c382e0bafile1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/names/percent%20.txtMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-7ded7554e543file1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/names/plus+plus.txtMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-235b28f1c86ffile1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/names/q?mark.txtMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-cb57b84f4392file1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrue" + }, + "framing": "chunked" } } ] @@ -38518,43 +68776,632 @@ "optional": false, "rule": { "is": "equal", - "value": "error" + "value": "ok" } }, { - "at": "/status", + "at": "/value/entries/0/key", "optional": false, "rule": { "is": "equal", - "value": 400 + "value": "object-tests/names/100%-￾-name.txt" } }, { - "at": "/code", + "at": "/value/entries/0/size", "optional": false, "rule": { "is": "equal", - "value": "InvalidUri" + "value": 1 + } + }, + { + "at": "/value/entries/0/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-78b47742a630" + } + }, + { + "at": "/value/entries/0/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/0/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "xMpCOKC5I4INzFCab3WEmw==" + } + }, + { + "at": "/value/entries/1/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/names/a&b.txt" + } + }, + { + "at": "/value/entries/1/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/1/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-f951d7d7ec22" + } + }, + { + "at": "/value/entries/1/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/1/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/1/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/1/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "xMpCOKC5I4INzFCab3WEmw==" + } + }, + { + "at": "/value/entries/2/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/names/back" + } + }, + { + "at": "/value/entries/2/size", + "optional": false, + "rule": { + "is": "equal", + "value": 0 + } + }, + { + "at": "/value/entries/2/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-e64e63e9a87b" + } + }, + { + "at": "/value/entries/2/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/2/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/2/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/2/directory", + "optional": false, + "rule": { + "is": "equal", + "value": true + } + }, + { + "at": "/value/entries/3/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/names/back/slash.txt" + } + }, + { + "at": "/value/entries/3/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/3/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-e9c0e2dbcfe1" + } + }, + { + "at": "/value/entries/3/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/3/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/3/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/3/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "xMpCOKC5I4INzFCab3WEmw==" + } + }, + { + "at": "/value/entries/4/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/names/café.txt" + } + }, + { + "at": "/value/entries/4/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/4/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-7d8cf0126958" + } + }, + { + "at": "/value/entries/4/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/4/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/4/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/4/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "xMpCOKC5I4INzFCab3WEmw==" + } + }, + { + "at": "/value/entries/5/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/names/hash#tag.txt" + } + }, + { + "at": "/value/entries/5/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/5/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-abf3c382e0ba" + } + }, + { + "at": "/value/entries/5/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/5/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/5/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/5/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "xMpCOKC5I4INzFCab3WEmw==" + } + }, + { + "at": "/value/entries/6/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/names/percent%20.txt" + } + }, + { + "at": "/value/entries/6/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/6/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-7ded7554e543" + } + }, + { + "at": "/value/entries/6/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/6/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/6/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/6/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "xMpCOKC5I4INzFCab3WEmw==" + } + }, + { + "at": "/value/entries/7/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/names/plus+plus.txt" + } + }, + { + "at": "/value/entries/7/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/7/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-235b28f1c86f" + } + }, + { + "at": "/value/entries/7/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/7/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/7/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/7/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "xMpCOKC5I4INzFCab3WEmw==" + } + }, + { + "at": "/value/entries/8/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/names/q?mark.txt" + } + }, + { + "at": "/value/entries/8/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/8/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-cb57b84f4392" + } + }, + { + "at": "/value/entries/8/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/8/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/8/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/8/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "xMpCOKC5I4INzFCab3WEmw==" + } + }, + { + "at": "/value/entries", + "optional": false, + "rule": { + "is": "array_length", + "value": 9 + } + }, + { + "at": "/value/prefixes", + "optional": false, + "rule": { + "is": "array_length", + "value": 0 + } + }, + { + "at": "/value/continuation_token", + "optional": false, + "rule": { + "is": "equal", + "value": "" } } ], "refusal": null }, { - "id": "operations/azure-hns/delete-many", + "id": "operations/azure-hns/list-xml-escaped", "profile": "azure-hns", "lane": "core", - "purpose": "Delete several objects in one batch and report each result", + "purpose": "list xml escaped", "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/blob-batch" + "https://learn.microsoft.com/en-us/rest/api/storageservices/list-blobs" ], "call": { - "keys": [ - "object-tests/batch/a.txt", - "object-tests/batch/b.txt", - "object-tests/batch/absent.txt" - ], - "op": "delete_many" + "op": "list", + "prefix": "" }, "exchanges": [ { @@ -38566,7 +69413,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "GET" } }, { @@ -38578,51 +69425,61 @@ } }, { - "at": "/headers/content-type", + "at": "/body_base64", "optional": false, "rule": { - "is": "matches", - "pattern": "multipart/mixed; boundary=batch_[0-9A-Za-z-]+" + "is": "equal", + "value": "" } }, { - "at": "/body_text", + "at": "/query/restype", "optional": false, "rule": { - "is": "matches", - "pattern": "(?s).*DELETE (?:https?://[^/]+)?/fixture/object-tests/batch/a\\.txt HTTP/1\\.1.*DELETE (?:https?://[^/]+)?/fixture/object-tests/batch/b\\.txt HTTP/1\\.1.*DELETE (?:https?://[^/]+)?/fixture/object-tests/batch/absent\\.txt HTTP/1\\.1.*" + "is": "equal", + "value": "container" } }, { - "at": "/query/restype", + "at": "/query/comp", "optional": false, "rule": { "is": "equal", - "value": "container" + "value": "list" } }, { - "at": "/query/comp", - "optional": false, + "at": "/query/prefix", + "optional": true, "rule": { "is": "equal", - "value": "batch" + "value": "" } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 202, + "status": 200, "headers": { - "content-type": "multipart/mixed; boundary=batchresponse_fixture", + "content-type": "application/xml", "date": { "from": "now" - } + }, + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-request-id": "fixture-request-id", + "x-ms-request-server-encrypted": "true", + "x-ms-server-encrypted": "true", + "x-ms-version": "2023-11-03" }, "body": { - "encoding": "utf8", - "data": "--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 0\r\n\r\nHTTP/1.1 202 Accepted\r\nx-ms-request-id: fixture-0\r\nx-ms-delete-type-permanent: true\r\nx-ms-version: 2023-11-03\r\nServer: Windows-Azure-Blob/1.0\r\n\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 1\r\n\r\nHTTP/1.1 202 Accepted\r\nx-ms-request-id: fixture-1\r\nx-ms-delete-type-permanent: true\r\nx-ms-version: 2023-11-03\r\nServer: Windows-Azure-Blob/1.0\r\n\r\n--batchresponse_fixture\r\nContent-Type: application/http\r\nContent-ID: 2\r\n\r\nHTTP/1.1 404 The specified blob does not exist.\r\nx-ms-request-id: fixture-2\r\nx-ms-error-code: BlobNotFound\r\nx-ms-version: 2023-11-03\r\nContent-Length: 110\r\nContent-Type: application/xml\r\nServer: Windows-Azure-Blob/1.0\r\n\r\nBlobNotFoundFixture error\r\n--batchresponse_fixture--" + "encoding": "base64", + "data": "PEVudW1lcmF0aW9uUmVzdWx0cyBTZXJ2aWNlRW5kcG9pbnQ9Imh0dHA6Ly9maXh0dXJlLyIgQ29udGFpbmVyTmFtZT0iZml4dHVyZSI+PFByZWZpeD48L1ByZWZpeD48QmxvYnM+PEJsb2I+PE5hbWU+YSZhbXA7YjwvTmFtZT48UHJvcGVydGllcz48TGFzdC1Nb2RpZmllZD5Nb24sIDAxIEphbiAyMDI0IDAwOjAwOjAwIEdNVDwvTGFzdC1Nb2RpZmllZD48RXRhZz4iZml4dHVyZSI8L0V0YWc+PENvbnRlbnQtTGVuZ3RoPjU8L0NvbnRlbnQtTGVuZ3RoPjxCbG9iVHlwZT5CbG9ja0Jsb2I8L0Jsb2JUeXBlPjwvUHJvcGVydGllcz48L0Jsb2I+PEJsb2I+PE5hbWU+YyZsdDtkPC9OYW1lPjxQcm9wZXJ0aWVzPjxMYXN0LU1vZGlmaWVkPk1vbiwgMDEgSmFuIDIwMjQgMDA6MDA6MDAgR01UPC9MYXN0LU1vZGlmaWVkPjxFdGFnPiJmaXh0dXJlIjwvRXRhZz48Q29udGVudC1MZW5ndGg+NTwvQ29udGVudC1MZW5ndGg+PEJsb2JUeXBlPkJsb2NrQmxvYjwvQmxvYlR5cGU+PC9Qcm9wZXJ0aWVzPjwvQmxvYj48L0Jsb2JzPjxOZXh0TWFya2VyPjwvTmV4dE1hcmtlcj48L0VudW1lcmF0aW9uUmVzdWx0cz4=" }, "framing": "chunked" } @@ -38640,27 +69497,13 @@ } }, { - "at": "/value/deleted", - "optional": false, - "rule": { - "is": "equal", - "value": [ - "object-tests/batch/a.txt", - "object-tests/batch/b.txt" - ] - } - }, - { - "at": "/value/errors", + "at": "/value/keys", "optional": false, "rule": { "is": "equal", "value": [ - { - "code": "BlobNotFound", - "key": "object-tests/batch/absent.txt", - "status": 404 - } + "a&b", + "cLeaseIdMissingFixture error" - } + "data": "object-tests/board/2object-tests/board/a.txtMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-e8a4acb31ab1file8application/octet-streamJdVa0oOqQAr0ZMdtcTwHrQ==BlockBlobHottrueunlockedavailabletrueobject-tests/board/nestedMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-bcf8c9e06f70directory0BlockBlobHottrueunlockedavailabletruefixture-marker+/17aa95c4a402=" + }, + "framing": "chunked" } } ] @@ -38744,39 +69613,178 @@ "optional": false, "rule": { "is": "equal", - "value": "error" + "value": "ok" } }, { - "at": "/status", + "at": "/value/entries/0/key", "optional": false, "rule": { "is": "equal", - "value": 412 + "value": "object-tests/board/a.txt" } }, { - "at": "/code", + "at": "/value/entries/0/size", "optional": false, "rule": { "is": "equal", - "value": "LeaseIdMissing" + "value": 8 + } + }, + { + "at": "/value/entries/0/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-e8a4acb31ab1" + } + }, + { + "at": "/value/entries/0/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/0/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "JdVa0oOqQAr0ZMdtcTwHrQ==" + } + }, + { + "at": "/value/entries/1/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/nested" + } + }, + { + "at": "/value/entries/1/size", + "optional": false, + "rule": { + "is": "equal", + "value": 0 + } + }, + { + "at": "/value/entries/1/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-bcf8c9e06f70" + } + }, + { + "at": "/value/entries/1/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/1/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/1/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/1/directory", + "optional": false, + "rule": { + "is": "equal", + "value": true + } + }, + { + "at": "/value/entries", + "optional": false, + "rule": { + "is": "array_length", + "value": 2 + } + }, + { + "at": "/value/prefixes", + "optional": false, + "rule": { + "is": "array_length", + "value": 0 + } + }, + { + "at": "/value/continuation_token", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-marker+/17aa95c4a402=" } } ], "refusal": null }, { - "id": "operations/azure-hns/delete-leased-without-lease-id", + "id": "operations/azure-hns/list-page-size-one", "profile": "azure-hns", "lane": "core", - "purpose": "Refuse to delete a leased object without its lease ID", + "purpose": "A page of zero entries is out of range, but a page of one is not. Send a page size of 1 and report the one entry and the continuation token.", "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/lease-blob" + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "key": "object-tests/leases/object.txt", - "op": "delete" + "op": "list_page", + "page_size": 1, + "prefix": "object-tests/board/" }, "exchanges": [ { @@ -38788,7 +69796,7 @@ "optional": false, "rule": { "is": "equal", - "value": "DELETE" + "value": "GET" } }, { @@ -38796,7 +69804,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/leases/object.txt" + "value": "/fixture" } }, { @@ -38806,23 +69814,57 @@ "is": "equal", "value": "" } + }, + { + "at": "/query/restype", + "optional": false, + "rule": { + "is": "equal", + "value": "container" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "list" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/" + } + }, + { + "at": "/query/maxresults", + "optional": false, + "rule": { + "is": "equal", + "value": "1" + } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 412, + "status": 200, "headers": { "content-type": "application/xml", "date": { "from": "now" }, - "x-ms-error-code": "LeaseIdMissing" + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "utf8", - "data": "LeaseIdMissingFixture error" - } + "data": "object-tests/board/1object-tests/board/a.txtMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-e8a4acb31ab1file8application/octet-streamJdVa0oOqQAr0ZMdtcTwHrQ==BlockBlobHottrueunlockedavailabletruefixture-marker+/17aa95c4a402=" + }, + "framing": "chunked" } } ] @@ -38834,41 +69876,115 @@ "optional": false, "rule": { "is": "equal", - "value": "error" + "value": "ok" } }, { - "at": "/status", + "at": "/value/entries/0/key", "optional": false, "rule": { "is": "equal", - "value": 412 + "value": "object-tests/board/a.txt" } }, { - "at": "/code", + "at": "/value/entries/0/size", "optional": false, "rule": { "is": "equal", - "value": "LeaseIdMissing" + "value": 8 + } + }, + { + "at": "/value/entries/0/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-e8a4acb31ab1" + } + }, + { + "at": "/value/entries/0/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/0/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "JdVa0oOqQAr0ZMdtcTwHrQ==" + } + }, + { + "at": "/value/entries", + "optional": false, + "rule": { + "is": "array_length", + "value": 1 + } + }, + { + "at": "/value/prefixes", + "optional": false, + "rule": { + "is": "array_length", + "value": 0 + } + }, + { + "at": "/value/continuation_token", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-marker+/17aa95c4a402=" } } ], "refusal": null }, { - "id": "operations/azure-hns/delete-server-busy", + "id": "operations/azure-hns/list-operation-timed-out", "profile": "azure-hns", "lane": "core", - "purpose": "Report a 503 ServerBusy answer as an error, after at most 5 retries", + "purpose": "Report a 500 OperationTimedOut answer as an error, after at most 5 retries", "sources": [ "https://learn.microsoft.com/en-us/rest/api/storageservices/common-rest-api-error-codes", "https://learn.microsoft.com/en-us/rest/api/storageservices/blob-service-error-codes" ], "origin": "transient", "call": { - "key": "object-tests/remove/present.txt", - "op": "delete" + "op": "list_page", + "page_size": 2, + "prefix": "object-tests/board/" }, "exchanges": [ { @@ -38880,7 +69996,7 @@ "optional": false, "rule": { "is": "equal", - "value": "DELETE" + "value": "GET" } }, { @@ -38888,7 +70004,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/remove/present.txt" + "value": "/fixture" } }, { @@ -38898,22 +70014,54 @@ "is": "equal", "value": "" } + }, + { + "at": "/query/restype", + "optional": false, + "rule": { + "is": "equal", + "value": "container" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "list" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/" + } + }, + { + "at": "/query/maxresults", + "optional": false, + "rule": { + "is": "equal", + "value": "2" + } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 503, + "status": 500, "headers": { "content-type": "application/xml", "date": { "from": "now" }, - "x-ms-error-code": "ServerBusy" + "x-ms-error-code": "OperationTimedOut" }, "body": { "encoding": "utf8", - "data": "ServerBusyThe server is currently unable to receive requests. Please retry your request." + "data": "OperationTimedOutThe operation could not be completed within the permitted time." } } } @@ -38928,7 +70076,7 @@ "optional": false, "rule": { "is": "equal", - "value": "DELETE" + "value": "GET" } }, { @@ -38936,7 +70084,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/remove/present.txt" + "value": "/fixture" } }, { @@ -38946,71 +70094,54 @@ "is": "equal", "value": "" } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 503, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - }, - "x-ms-error-code": "ServerBusy" }, - "body": { - "encoding": "utf8", - "data": "ServerBusyThe server is currently unable to receive requests. Please retry your request." - } - } - } - ], - "optional": true - }, - { - "alternatives": [ - { - "request": [ { - "at": "/method", + "at": "/query/restype", "optional": false, "rule": { "is": "equal", - "value": "DELETE" + "value": "container" } }, { - "at": "/path", + "at": "/query/comp", "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/remove/present.txt" + "value": "list" } }, { - "at": "/body_base64", + "at": "/query/prefix", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "object-tests/board/" + } + }, + { + "at": "/query/maxresults", + "optional": false, + "rule": { + "is": "equal", + "value": "2" } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 503, + "status": 500, "headers": { "content-type": "application/xml", "date": { "from": "now" }, - "x-ms-error-code": "ServerBusy" + "x-ms-error-code": "OperationTimedOut" }, "body": { "encoding": "utf8", - "data": "ServerBusyThe server is currently unable to receive requests. Please retry your request." + "data": "OperationTimedOutThe operation could not be completed within the permitted time." } } } @@ -39026,7 +70157,7 @@ "optional": false, "rule": { "is": "equal", - "value": "DELETE" + "value": "GET" } }, { @@ -39034,7 +70165,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/remove/present.txt" + "value": "/fixture" } }, { @@ -39044,71 +70175,54 @@ "is": "equal", "value": "" } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 503, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - }, - "x-ms-error-code": "ServerBusy" }, - "body": { - "encoding": "utf8", - "data": "ServerBusyThe server is currently unable to receive requests. Please retry your request." - } - } - } - ], - "optional": true - }, - { - "alternatives": [ - { - "request": [ { - "at": "/method", + "at": "/query/restype", "optional": false, "rule": { "is": "equal", - "value": "DELETE" + "value": "container" } }, { - "at": "/path", + "at": "/query/comp", "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/remove/present.txt" + "value": "list" } }, { - "at": "/body_base64", + "at": "/query/prefix", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "object-tests/board/" + } + }, + { + "at": "/query/maxresults", + "optional": false, + "rule": { + "is": "equal", + "value": "2" } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 503, + "status": 500, "headers": { "content-type": "application/xml", "date": { "from": "now" }, - "x-ms-error-code": "ServerBusy" + "x-ms-error-code": "OperationTimedOut" }, "body": { "encoding": "utf8", - "data": "ServerBusyThe server is currently unable to receive requests. Please retry your request." + "data": "OperationTimedOutThe operation could not be completed within the permitted time." } } } @@ -39124,7 +70238,7 @@ "optional": false, "rule": { "is": "equal", - "value": "DELETE" + "value": "GET" } }, { @@ -39132,7 +70246,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/remove/present.txt" + "value": "/fixture" } }, { @@ -39142,169 +70256,60 @@ "is": "equal", "value": "" } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 503, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - }, - "x-ms-error-code": "ServerBusy" }, - "body": { - "encoding": "utf8", - "data": "ServerBusyThe server is currently unable to receive requests. Please retry your request." - } - } - } - ], - "optional": true - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 503 - } - }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "equal", - "value": "ServerBusy" - } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/delete-if-unmodified-since-past", - "profile": "azure-hns", - "lane": "core", - "purpose": "Refuse a delete with 412 when the object changed after If-Unmodified-Since", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "if_unmodified_since": "Sat, 01 Jan 2000 00:00:00 GMT", - "key": "object-tests/remove/present.txt", - "op": "delete" - }, - "exchanges": [ - { - "alternatives": [ - { - "request": [ { - "at": "/method", + "at": "/query/restype", "optional": false, "rule": { "is": "equal", - "value": "DELETE" + "value": "container" } }, { - "at": "/path", + "at": "/query/comp", "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/remove/present.txt" + "value": "list" } }, { - "at": "/body_base64", + "at": "/query/prefix", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "object-tests/board/" } }, { - "at": "/headers/if-unmodified-since", + "at": "/query/maxresults", "optional": false, "rule": { "is": "equal", - "value": "Sat, 01 Jan 2000 00:00:00 GMT" + "value": "2" } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 412, + "status": 500, "headers": { "content-type": "application/xml", "date": { "from": "now" }, - "x-ms-error-code": "ConditionNotMet" + "x-ms-error-code": "OperationTimedOut" }, "body": { "encoding": "utf8", - "data": "ConditionNotMetFixture error" + "data": "OperationTimedOutThe operation could not be completed within the permitted time." } } } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 412 - } + ], + "optional": true }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "equal", - "value": "ConditionNotMet" - } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/delete-container-missing", - "profile": "azure-hns", - "lane": "core", - "purpose": "delete container missing", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "key": "object.txt", - "op": "delete" - }, - "exchanges": [ { "alternatives": [ { @@ -39314,7 +70319,7 @@ "optional": false, "rule": { "is": "equal", - "value": "DELETE" + "value": "GET" } }, { @@ -39322,7 +70327,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object.txt" + "value": "/fixture" } }, { @@ -39332,168 +70337,60 @@ "is": "equal", "value": "" } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 404, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - }, - "x-ms-error-code": "ContainerNotFound" }, - "body": { - "encoding": "utf8", - "data": "ContainerNotFoundFixture error" - } - } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 404 - } - }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "equal", - "value": "ContainerNotFound" - } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/delete-current-version", - "profile": "azure-hns", - "lane": "core", - "purpose": "delete current version", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "key": "object-tests/versions-mtypy4jp/object.txt", - "op": "delete", - "version": "none-2" - }, - "exchanges": [ - { - "alternatives": [ - { - "request": [ { - "at": "/method", + "at": "/query/restype", "optional": false, "rule": { "is": "equal", - "value": "DELETE" + "value": "container" } }, { - "at": "/path", + "at": "/query/comp", "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/versions-mtypy4jp/object.txt" + "value": "list" } }, { - "at": "/body_base64", + "at": "/query/prefix", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "object-tests/board/" } }, { - "at": "/query/versionid", + "at": "/query/maxresults", "optional": false, "rule": { "is": "equal", - "value": "none-2" + "value": "2" } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 400, + "status": 500, "headers": { "content-type": "application/xml", "date": { "from": "now" - } + }, + "x-ms-error-code": "OperationTimedOut" }, "body": { "encoding": "utf8", - "data": "InvalidQueryParameterValueFixture error" + "data": "OperationTimedOutThe operation could not be completed within the permitted time." } } } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 400 - } + ], + "optional": true }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "equal", - "value": "InvalidQueryParameterValue" - } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/delete-if-match-current", - "profile": "azure-hns", - "lane": "core", - "purpose": "delete if match current", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "if_match": "\"fixture-51797d9f787d\"", - "key": "object-tests/remove/conditional.txt", - "op": "delete" - }, - "exchanges": [ { "alternatives": [ { @@ -39503,7 +70400,7 @@ "optional": false, "rule": { "is": "equal", - "value": "DELETE" + "value": "GET" } }, { @@ -39511,7 +70408,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/remove/conditional.txt" + "value": "/fixture" } }, { @@ -39523,106 +70420,57 @@ } }, { - "at": "/headers/if-match", + "at": "/query/restype", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-51797d9f787d\"" + "value": "container" } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 202, - "headers": { - "date": { - "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" }, - "body": { - "encoding": "base64", - "data": "" - } - } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/delete-missing", - "profile": "azure-hns", - "lane": "core", - "purpose": "delete missing", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "key": "object-tests/remove/absent.txt", - "op": "delete" - }, - "exchanges": [ - { - "alternatives": [ - { - "request": [ { - "at": "/method", + "at": "/query/comp", "optional": false, "rule": { "is": "equal", - "value": "DELETE" + "value": "list" } }, { - "at": "/path", + "at": "/query/prefix", "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/remove/absent.txt" + "value": "object-tests/board/" } }, { - "at": "/body_base64", + "at": "/query/maxresults", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "2" } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 404, + "status": 500, "headers": { "content-type": "application/xml", "date": { "from": "now" }, - "x-ms-error-code": "BlobNotFound" + "x-ms-error-code": "OperationTimedOut" }, "body": { "encoding": "utf8", - "data": "BlobNotFoundFixture error" + "data": "OperationTimedOutThe operation could not be completed within the permitted time." } } } - ] + ], + "optional": true } ], "expect": [ @@ -39639,7 +70487,7 @@ "optional": false, "rule": { "is": "equal", - "value": 404 + "value": 500 } }, { @@ -39647,24 +70495,24 @@ "optional": false, "rule": { "is": "equal", - "value": "BlobNotFound" + "value": "OperationTimedOut" } } ], "refusal": null }, { - "id": "operations/azure-hns/delete-precondition-failed", + "id": "operations/azure-hns/list-key-equal-to-prefix-delimited", "profile": "azure-hns", "lane": "core", - "purpose": "delete precondition failed", + "purpose": "list key equal to prefix delimited", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "if_match": "\"fixture-088e5dc109cf\"", - "key": "object-tests/remove/conditional.txt", - "op": "delete" + "delimiter": "/", + "op": "list_page", + "prefix": "object-tests/exact" }, "exchanges": [ { @@ -39676,7 +70524,7 @@ "optional": false, "rule": { "is": "equal", - "value": "DELETE" + "value": "GET" } }, { @@ -39684,7 +70532,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/remove/conditional.txt" + "value": "/fixture" } }, { @@ -39696,29 +70544,55 @@ } }, { - "at": "/headers/if-match", + "at": "/query/restype", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-088e5dc109cf\"" + "value": "container" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "list" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/exact" + } + }, + { + "at": "/query/delimiter", + "optional": false, + "rule": { + "is": "equal", + "value": "/" } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 412, + "status": 200, "headers": { "content-type": "application/xml", "date": { "from": "now" }, - "x-ms-error-code": "ConditionNotMet" + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "utf8", - "data": "ConditionNotMetFixture error" - } + "data": "object-tests/exact/object-tests/exactMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-fef6be204aeafile1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrue" + }, + "framing": "chunked" } } ] @@ -39726,47 +70600,116 @@ ], "expect": [ { - "at": "/outcome", + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/entries/0/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/exact" + } + }, + { + "at": "/value/entries/0/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/0/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-fef6be204aea" + } + }, + { + "at": "/value/entries/0/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/0/content_md5_base64", "optional": false, "rule": { "is": "equal", - "value": "error" + "value": "xMpCOKC5I4INzFCab3WEmw==" } }, { - "at": "/status", + "at": "/value/entries", "optional": false, "rule": { - "is": "equal", - "value": 412 + "is": "array_length", + "value": 1 } }, { - "at": "/code", + "at": "/value/prefixes", + "optional": false, + "rule": { + "is": "array_length", + "value": 0 + } + }, + { + "at": "/value/continuation_token", "optional": false, "rule": { "is": "equal", - "value": "ConditionNotMet" + "value": "" } } ], "refusal": null }, { - "id": "operations/azure-hns/delete-precondition-failed-code-in-body", + "id": "operations/azure-hns/list-key-equal-to-prefix", "profile": "azure-hns", "lane": "core", - "purpose": "delete precondition failed, with the error code only in the XML body", + "purpose": "list key equal to prefix", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp", - "https://learn.microsoft.com/en-us/rest/api/storageservices/common-rest-api-error-codes", - "https://learn.microsoft.com/en-us/rest/api/storageservices/blob-service-error-codes" + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], - "origin": "constructed", "call": { - "if_match": "\"fixture-088e5dc109cf\"", - "key": "object-tests/remove/conditional.txt", - "op": "delete" + "op": "list_page", + "prefix": "object-tests/exact" }, "exchanges": [ { @@ -39778,7 +70721,7 @@ "optional": false, "rule": { "is": "equal", - "value": "DELETE" + "value": "GET" } }, { @@ -39786,7 +70729,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/remove/conditional.txt" + "value": "/fixture" } }, { @@ -39798,28 +70741,47 @@ } }, { - "at": "/headers/if-match", + "at": "/query/restype", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-088e5dc109cf\"" + "value": "container" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "list" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/exact" } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 412, + "status": 200, "headers": { "content-type": "application/xml", "date": { "from": "now" - } + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "utf8", - "data": "ConditionNotMetFixture error" - } + "data": "object-tests/exactobject-tests/exactMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-fef6be204aeafile1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrue" + }, + "framing": "chunked" } } ] @@ -39831,40 +70793,112 @@ "optional": false, "rule": { "is": "equal", - "value": "error" + "value": "ok" } }, { - "at": "/status", + "at": "/value/entries/0/key", "optional": false, "rule": { "is": "equal", - "value": 412 + "value": "object-tests/exact" } }, { - "at": "/code", + "at": "/value/entries/0/size", "optional": false, "rule": { "is": "equal", - "value": "ConditionNotMet" + "value": 1 + } + }, + { + "at": "/value/entries/0/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-fef6be204aea" + } + }, + { + "at": "/value/entries/0/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/0/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "xMpCOKC5I4INzFCab3WEmw==" + } + }, + { + "at": "/value/entries", + "optional": false, + "rule": { + "is": "array_length", + "value": 1 + } + }, + { + "at": "/value/prefixes", + "optional": false, + "rule": { + "is": "array_length", + "value": 0 + } + }, + { + "at": "/value/continuation_token", + "optional": false, + "rule": { + "is": "equal", + "value": "" } } ], "refusal": null }, { - "id": "operations/azure-hns/delete-previous-version", + "id": "operations/azure-hns/list-many-segments", "profile": "azure-hns", "lane": "core", - "purpose": "delete previous version", + "purpose": "list many segments", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "key": "object-tests/versions-mtypy4jp/object.txt", - "op": "delete", - "version": "none-1" + "op": "list_page", + "prefix": "object-tests/s/" }, "exchanges": [ { @@ -39876,7 +70910,7 @@ "optional": false, "rule": { "is": "equal", - "value": "DELETE" + "value": "GET" } }, { @@ -39884,7 +70918,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/versions-mtypy4jp/object.txt" + "value": "/fixture" } }, { @@ -39896,28 +70930,47 @@ } }, { - "at": "/query/versionid", + "at": "/query/restype", "optional": false, "rule": { "is": "equal", - "value": "none-1" + "value": "container" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "list" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/s/" } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 400, + "status": 200, "headers": { "content-type": "application/xml", "date": { "from": "now" - } + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "utf8", - "data": "InvalidQueryParameterValueFixture error" - } + "data": "object-tests/s/object-tests/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-a1b39dcffaf3directory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-8159be643ac0directory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-80c8a1f73c94directory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-7b0fdb4b59dddirectory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-4f1babf5f716directory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-5f419d87193edirectory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-c32f2de5b421directory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-51d97c94b354directory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-581e4ea356a1directory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-5eb2172133aedirectory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-d32c38634d37directory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-3bdc7f728acbdirectory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-8a1c17d8d892directory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-53277b21dbd0directory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-18b5ffb0f548directory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-2250c2114935directory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-8ce858fcdc2bdirectory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-d8660a5bc252directory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-4ec0409f150bdirectory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-aede66c75766directory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-3316748edb9bdirectory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-f7f3bc0b3f92directory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-6a1f4f7934bfdirectory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-87c3fdda2bdadirectory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-4d2fcc081fd8directory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-8956db6ae017directory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-7f1f55a3463bdirectory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-44dd81206643directory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-952096734190directory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-db4655ce498cdirectory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-b2a6d305ae63directory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-23d914b576fbdirectory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-0fe87110b578directory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-55cf88c7a2e2directory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-6815a7113351directory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-70df51065efedirectory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-0e76caa6ea5fdirectory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-97f6d7ad109ddirectory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-b7df38492c3edirectory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-ac2f2336ab74directory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-c2a19efa033cdirectory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-b9e90b553fffdirectory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-0d7c0a17f740directory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-e1d35759d4acdirectory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-1389b2ea70e1directory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-11c5ee820f55directory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-ba489a3d8cb9directory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-548645ff94c6directory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-b21f6737ba6cdirectory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-23eb881b6618directory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-02c3be7f3363directory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-86bca962bd30directory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-1696791242e8directory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-b40699a1e1dbdirectory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-d3fa18807e94directory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-d55c43fd1f89directory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-989ce64e20d6directory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-e6b534521353file1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrue" + }, + "framing": "chunked" } } ] @@ -39925,753 +70978,1144 @@ ], "expect": [ { - "at": "/outcome", + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/entries/0/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/s/s" + } + }, + { + "at": "/value/entries/0/size", + "optional": false, + "rule": { + "is": "equal", + "value": 0 + } + }, + { + "at": "/value/entries/0/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-a1b39dcffaf3" + } + }, + { + "at": "/value/entries/0/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/0/directory", + "optional": false, + "rule": { + "is": "equal", + "value": true + } + }, + { + "at": "/value/entries/1/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/s/s/s" + } + }, + { + "at": "/value/entries/1/size", + "optional": false, + "rule": { + "is": "equal", + "value": 0 + } + }, + { + "at": "/value/entries/1/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-8159be643ac0" + } + }, + { + "at": "/value/entries/1/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/1/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/1/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/1/directory", + "optional": false, + "rule": { + "is": "equal", + "value": true + } + }, + { + "at": "/value/entries/2/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/s/s/s/s" + } + }, + { + "at": "/value/entries/2/size", + "optional": false, + "rule": { + "is": "equal", + "value": 0 + } + }, + { + "at": "/value/entries/2/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-80c8a1f73c94" + } + }, + { + "at": "/value/entries/2/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/2/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/2/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/2/directory", + "optional": false, + "rule": { + "is": "equal", + "value": true + } + }, + { + "at": "/value/entries/3/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/s/s/s/s/s" + } + }, + { + "at": "/value/entries/3/size", + "optional": false, + "rule": { + "is": "equal", + "value": 0 + } + }, + { + "at": "/value/entries/3/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-7b0fdb4b59dd" + } + }, + { + "at": "/value/entries/3/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/3/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/3/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/3/directory", + "optional": false, + "rule": { + "is": "equal", + "value": true + } + }, + { + "at": "/value/entries/4/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/s/s/s/s/s/s" + } + }, + { + "at": "/value/entries/4/size", + "optional": false, + "rule": { + "is": "equal", + "value": 0 + } + }, + { + "at": "/value/entries/4/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-4f1babf5f716" + } + }, + { + "at": "/value/entries/4/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/4/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/4/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/4/directory", + "optional": false, + "rule": { + "is": "equal", + "value": true + } + }, + { + "at": "/value/entries/5/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/s/s/s/s/s/s/s" + } + }, + { + "at": "/value/entries/5/size", + "optional": false, + "rule": { + "is": "equal", + "value": 0 + } + }, + { + "at": "/value/entries/5/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-5f419d87193e" + } + }, + { + "at": "/value/entries/5/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/5/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/5/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/5/directory", + "optional": false, + "rule": { + "is": "equal", + "value": true + } + }, + { + "at": "/value/entries/6/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/s/s/s/s/s/s/s/s" + } + }, + { + "at": "/value/entries/6/size", + "optional": false, + "rule": { + "is": "equal", + "value": 0 + } + }, + { + "at": "/value/entries/6/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-c32f2de5b421" + } + }, + { + "at": "/value/entries/6/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/6/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/6/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/6/directory", + "optional": false, + "rule": { + "is": "equal", + "value": true + } + }, + { + "at": "/value/entries/7/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/s/s/s/s/s/s/s/s/s" + } + }, + { + "at": "/value/entries/7/size", + "optional": false, + "rule": { + "is": "equal", + "value": 0 + } + }, + { + "at": "/value/entries/7/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-51d97c94b354" + } + }, + { + "at": "/value/entries/7/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/7/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/7/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/7/directory", + "optional": false, + "rule": { + "is": "equal", + "value": true + } + }, + { + "at": "/value/entries/8/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/s/s/s/s/s/s/s/s/s/s" + } + }, + { + "at": "/value/entries/8/size", + "optional": false, + "rule": { + "is": "equal", + "value": 0 + } + }, + { + "at": "/value/entries/8/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-581e4ea356a1" + } + }, + { + "at": "/value/entries/8/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/8/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/8/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/8/directory", + "optional": false, + "rule": { + "is": "equal", + "value": true + } + }, + { + "at": "/value/entries/9/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s" + } + }, + { + "at": "/value/entries/9/size", + "optional": false, + "rule": { + "is": "equal", + "value": 0 + } + }, + { + "at": "/value/entries/9/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-5eb2172133ae" + } + }, + { + "at": "/value/entries/9/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/9/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/9/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/9/directory", + "optional": false, + "rule": { + "is": "equal", + "value": true + } + }, + { + "at": "/value/entries/10/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s" + } + }, + { + "at": "/value/entries/10/size", + "optional": false, + "rule": { + "is": "equal", + "value": 0 + } + }, + { + "at": "/value/entries/10/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-d32c38634d37" + } + }, + { + "at": "/value/entries/10/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/10/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/10/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/10/directory", + "optional": false, + "rule": { + "is": "equal", + "value": true + } + }, + { + "at": "/value/entries/11/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s" + } + }, + { + "at": "/value/entries/11/size", + "optional": false, + "rule": { + "is": "equal", + "value": 0 + } + }, + { + "at": "/value/entries/11/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-3bdc7f728acb" + } + }, + { + "at": "/value/entries/11/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/11/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/11/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/11/directory", + "optional": false, + "rule": { + "is": "equal", + "value": true + } + }, + { + "at": "/value/entries/12/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s" + } + }, + { + "at": "/value/entries/12/size", "optional": false, "rule": { "is": "equal", - "value": "error" + "value": 0 } }, { - "at": "/status", + "at": "/value/entries/12/etag", "optional": false, "rule": { "is": "equal", - "value": 400 + "value": "fixture-8a1c17d8d892" } }, { - "at": "/code", - "optional": false, + "at": "/value/entries/12/snapshot", + "optional": true, "rule": { - "is": "equal", - "value": "InvalidQueryParameterValue" + "is": "one_of", + "values": [ + null, + "" + ] } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/delete-refused-for-snapshots", - "profile": "azure-hns", - "lane": "core", - "purpose": "Report the service authorization error for this operation; signature acceptance is tested separately.", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "key": "object-tests/snapshots/object.txt", - "op": "delete" - }, - "exchanges": [ + }, { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "DELETE" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/snapshots/object.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 202, - "headers": { - "date": { - "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" - }, - "body": { - "encoding": "base64", - "data": "" - } - } - } - ] - } - ], - "expect": [ + "at": "/value/entries/12/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, { - "at": "/outcome", + "at": "/value/entries/12/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/12/directory", "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": true } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/delete-refused", - "profile": "azure-hns", - "lane": "core", - "purpose": "Report the service authorization error for this operation; signature acceptance is tested separately.", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "key": "object.txt", - "op": "delete" - }, - "exchanges": [ - { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "DELETE" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 404, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - }, - "x-ms-error-code": "ContainerNotFound" - }, - "body": { - "encoding": "utf8", - "data": "ContainerNotFoundFixture error" - } - } - } - ] - } - ], - "expect": [ + }, { - "at": "/outcome", + "at": "/value/entries/13/key", "optional": false, "rule": { "is": "equal", - "value": "error" + "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" } }, { - "at": "/status", + "at": "/value/entries/13/size", "optional": false, "rule": { "is": "equal", - "value": 404 + "value": 0 } }, { - "at": "/code", + "at": "/value/entries/13/etag", "optional": false, "rule": { "is": "equal", - "value": "ContainerNotFound" + "value": "fixture-53277b21dbd0" } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/delete-snapshot", - "profile": "azure-hns", - "lane": "core", - "purpose": "delete snapshot", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "key": "object-tests/snapshots/object.txt", - "op": "delete", - "snapshot": "2024-01-01T00:00:00.8557081Z" - }, - "exchanges": [ + }, { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "DELETE" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/snapshots/object.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/query/snapshot", - "optional": false, - "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.8557081Z" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 404, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - }, - "x-ms-error-code": "BlobNotFound" - }, - "body": { - "encoding": "utf8", - "data": "BlobNotFoundFixture error" - } - } - } - ] - } - ], - "expect": [ + "at": "/value/entries/13/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, { - "at": "/outcome", - "optional": false, + "at": "/value/entries/13/version", + "optional": true, "rule": { - "is": "equal", - "value": "error" + "is": "one_of", + "values": [ + null, + "" + ] } }, { - "at": "/status", + "at": "/value/entries/13/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/13/directory", "optional": false, "rule": { "is": "equal", - "value": 404 + "value": true } }, { - "at": "/code", + "at": "/value/entries/14/key", "optional": false, "rule": { "is": "equal", - "value": "BlobNotFound" + "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/delete-snapshots-only", - "profile": "azure-hns", - "lane": "core", - "purpose": "delete snapshots only", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "key": "object-tests/snapshots-only/object.txt", - "op": "delete", - "snapshots": "only" - }, - "exchanges": [ - { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "DELETE" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/snapshots-only/object.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/headers/x-ms-delete-snapshots", - "optional": false, - "rule": { - "is": "equal", - "value": "only" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 404, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - }, - "x-ms-error-code": "BlobNotFound" - }, - "body": { - "encoding": "utf8", - "data": "BlobNotFoundFixture error" - } - } - } - ] - } - ], - "expect": [ + }, { - "at": "/outcome", + "at": "/value/entries/14/size", "optional": false, "rule": { "is": "equal", - "value": "error" + "value": 0 } }, { - "at": "/status", + "at": "/value/entries/14/etag", "optional": false, "rule": { "is": "equal", - "value": 404 + "value": "fixture-18b5ffb0f548" } }, { - "at": "/code", + "at": "/value/entries/14/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/14/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/14/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/14/directory", "optional": false, "rule": { "is": "equal", - "value": "BlobNotFound" + "value": true } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/delete-unauthenticated", - "profile": "azure-hns", - "lane": "core", - "purpose": "Report the service authorization error for this operation; signature acceptance is tested separately.", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "key": "object-tests/remove/absent.txt", - "op": "delete" - }, - "exchanges": [ - { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "DELETE" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/remove/absent.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 401, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - }, - "x-ms-error-code": "InvalidAuthenticationInfo" - }, - "body": { - "encoding": "utf8", - "data": "InvalidAuthenticationInfoFixture error" - } - } - } - ] - } - ], - "expect": [ + }, { - "at": "/outcome", + "at": "/value/entries/15/key", "optional": false, "rule": { "is": "equal", - "value": "error" + "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" } }, { - "at": "/status", + "at": "/value/entries/15/size", "optional": false, "rule": { "is": "equal", - "value": 401 + "value": 0 } }, { - "at": "/code", + "at": "/value/entries/15/etag", "optional": false, "rule": { "is": "equal", - "value": "InvalidAuthenticationInfo" + "value": "fixture-2250c2114935" } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/delete-versioned-object", - "profile": "azure-hns", - "lane": "core", - "purpose": "delete versioned object", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "key": "object-tests/versions-mtypy4jp/deleted.txt", - "op": "delete" - }, - "exchanges": [ + }, { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "DELETE" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/versions-mtypy4jp/deleted.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 202, - "headers": { - "date": { - "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" - }, - "body": { - "encoding": "base64", - "data": "" - } - } - } - ] - } - ], - "expect": [ + "at": "/value/entries/15/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, { - "at": "/outcome", + "at": "/value/entries/15/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/15/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/15/directory", "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": true } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/delete-with-snapshots", - "profile": "azure-hns", - "lane": "core", - "purpose": "delete with snapshots", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "key": "object-tests/snapshots-all/object.txt", - "op": "delete", - "snapshots": "include" - }, - "exchanges": [ - { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "DELETE" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/snapshots-all/object.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/headers/x-ms-delete-snapshots", - "optional": false, - "rule": { - "is": "equal", - "value": "include" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 202, - "headers": { - "date": { - "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" - }, - "body": { - "encoding": "base64", - "data": "" - } - } - } - ] - } - ], - "expect": [ + }, { - "at": "/outcome", + "at": "/value/entries/16/key", "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/get-after-snapshots-deleted", - "profile": "azure-hns", - "lane": "core", - "purpose": "get after snapshots deleted", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "key": "object-tests/snapshots-only/object.txt", - "op": "get" - }, - "exchanges": [ + }, { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/snapshots-only/object.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-md5": "TYtghPPRZ7dsrGaiKpG+Ag==", - "content-type": "application/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-8fc260370f1a\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true" - }, - "body": { - "encoding": "base64", - "data": "a2VwdA==" - } - } - } - ] - } - ], - "expect": [ + "at": "/value/entries/16/size", + "optional": false, + "rule": { + "is": "equal", + "value": 0 + } + }, { - "at": "/outcome", + "at": "/value/entries/16/etag", "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "fixture-8ce858fcdc2b" } }, { - "at": "/value/etag", + "at": "/value/entries/16/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/16/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/16/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/16/directory", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-8fc260370f1a\"" + "value": true } }, { - "at": "/value/size", + "at": "/value/entries/17/key", "optional": false, "rule": { "is": "equal", - "value": 4 + "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" } }, { - "at": "/value/content_type", + "at": "/value/entries/17/size", "optional": false, "rule": { "is": "equal", - "value": "application/octet-stream" + "value": 0 } }, { - "at": "/value/content_md5_base64", + "at": "/value/entries/17/etag", "optional": false, "rule": { "is": "equal", - "value": "TYtghPPRZ7dsrGaiKpG+Ag==" + "value": "fixture-d8660a5bc252" } }, { - "at": "/value/version", + "at": "/value/entries/17/snapshot", "optional": true, "rule": { "is": "one_of", @@ -40682,103 +72126,45 @@ } }, { - "at": "/value/body_base64", - "optional": false, + "at": "/value/entries/17/version", + "optional": true, "rule": { - "is": "equal", - "value": "a2VwdA==" + "is": "one_of", + "values": [ + null, + "" + ] } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/get-committed-nothing", - "profile": "azure-hns", - "lane": "core", - "purpose": "get committed nothing", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "key": "object-tests/multipart/empty.bin", - "op": "get" - }, - "exchanges": [ + }, { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/multipart/empty.bin" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-type": "application/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-072bed78cc6a\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true" - }, - "body": { - "encoding": "base64", - "data": "" - } - } - } - ] - } - ], - "expect": [ + "at": "/value/entries/17/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, { - "at": "/outcome", + "at": "/value/entries/17/directory", "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": true } }, { - "at": "/value/etag", + "at": "/value/entries/18/key", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-072bed78cc6a\"" + "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" } }, { - "at": "/value/size", + "at": "/value/entries/18/size", "optional": false, "rule": { "is": "equal", @@ -40786,15 +72172,15 @@ } }, { - "at": "/value/content_type", + "at": "/value/entries/18/etag", "optional": false, "rule": { "is": "equal", - "value": "application/octet-stream" + "value": "fixture-4ec0409f150b" } }, { - "at": "/value/version", + "at": "/value/entries/18/snapshot", "optional": true, "rule": { "is": "one_of", @@ -40805,119 +72191,61 @@ } }, { - "at": "/value/body_base64", - "optional": false, + "at": "/value/entries/18/version", + "optional": true, "rule": { - "is": "equal", - "value": "" + "is": "one_of", + "values": [ + null, + "" + ] } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/get-committed-over-whole-object", - "profile": "azure-hns", - "lane": "core", - "purpose": "get committed over whole object", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "key": "object-tests/multipart/over.bin", - "op": "get" - }, - "exchanges": [ - { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/multipart/over.bin" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-type": "application/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-7dc650e58291\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true" - }, - "body": { - "encoding": "base64", - "data": "YmxvY2s=" - } - } - } - ] - } - ], - "expect": [ + }, { - "at": "/outcome", + "at": "/value/entries/18/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/18/directory", "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": true } }, { - "at": "/value/etag", + "at": "/value/entries/19/key", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-7dc650e58291\"" + "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" } }, { - "at": "/value/size", + "at": "/value/entries/19/size", "optional": false, "rule": { "is": "equal", - "value": 5 + "value": 0 } }, { - "at": "/value/content_type", + "at": "/value/entries/19/etag", "optional": false, "rule": { "is": "equal", - "value": "application/octet-stream" + "value": "fixture-aede66c75766" } }, { - "at": "/value/version", + "at": "/value/entries/19/snapshot", "optional": true, "rule": { "is": "one_of", @@ -40928,119 +72256,61 @@ } }, { - "at": "/value/body_base64", - "optional": false, + "at": "/value/entries/19/version", + "optional": true, "rule": { - "is": "equal", - "value": "YmxvY2s=" + "is": "one_of", + "values": [ + null, + "" + ] } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/get-committed", - "profile": "azure-hns", - "lane": "core", - "purpose": "get committed", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "key": "object-tests/multipart/committed.bin", - "op": "get" - }, - "exchanges": [ + }, { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/multipart/committed.bin" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-type": "application/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-8ec031f3abfa\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true" - }, - "body": { - "encoding": "base64", - "data": "Zmlyc3RzZWNvbmQ=" - } - } - } - ] - } - ], - "expect": [ + "at": "/value/entries/19/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, { - "at": "/outcome", + "at": "/value/entries/19/directory", "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": true } }, { - "at": "/value/etag", + "at": "/value/entries/20/key", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-8ec031f3abfa\"" + "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" } }, { - "at": "/value/size", + "at": "/value/entries/20/size", "optional": false, "rule": { "is": "equal", - "value": 11 + "value": 0 } }, { - "at": "/value/content_type", + "at": "/value/entries/20/etag", "optional": false, "rule": { "is": "equal", - "value": "application/octet-stream" + "value": "fixture-3316748edb9b" } }, { - "at": "/value/version", + "at": "/value/entries/20/snapshot", "optional": true, "rule": { "is": "one_of", @@ -41051,1054 +72321,386 @@ } }, { - "at": "/value/body_base64", - "optional": false, + "at": "/value/entries/20/version", + "optional": true, "rule": { - "is": "equal", - "value": "Zmlyc3RzZWNvbmQ=" + "is": "one_of", + "values": [ + null, + "" + ] } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/get-container-missing", - "profile": "azure-hns", - "lane": "core", - "purpose": "get container missing", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "key": "object.txt", - "op": "get" - }, - "exchanges": [ + }, { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 404, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - }, - "x-ms-error-code": "ContainerNotFound" - }, - "body": { - "encoding": "utf8", - "data": "ContainerNotFoundFixture error" - } - } - } - ] - } - ], - "expect": [ + "at": "/value/entries/20/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, { - "at": "/outcome", + "at": "/value/entries/20/directory", "optional": false, "rule": { "is": "equal", - "value": "error" + "value": true } }, { - "at": "/status", + "at": "/value/entries/21/key", "optional": false, "rule": { "is": "equal", - "value": 404 + "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" } }, { - "at": "/code", + "at": "/value/entries/21/size", "optional": false, "rule": { "is": "equal", - "value": "ContainerNotFound" + "value": 0 } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/list-containers", - "profile": "azure-hns", - "lane": "core", - "purpose": "List the containers whose names start with a prefix", - "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/list-containers2" - ], - "call": { - "op": "azure.list_containers", - "prefix": "otc-listed-" - }, - "exchanges": [ - { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/query/comp", - "optional": false, - "rule": { - "is": "equal", - "value": "list" - } - }, - { - "at": "/query/prefix", - "optional": false, - "rule": { - "is": "equal", - "value": "otc-listed-" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - } - }, - "body": { - "encoding": "utf8", - "data": "otc-listed-otc-listed-aMon, 01 Jan 2024 00:00:00 GMT\"fixture-etag\"unlockedavailablefalsefalseotc-listed-bMon, 01 Jan 2024 00:00:00 GMT\"fixture-etag\"unlockedavailablefalsefalse" - }, - "framing": "chunked" - } - } - ] - } - ], - "expect": [ + }, { - "at": "/outcome", + "at": "/value/entries/21/etag", "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "fixture-f7f3bc0b3f92" } }, { - "at": "/value/containers", - "optional": false, + "at": "/value/entries/21/snapshot", + "optional": true, "rule": { - "is": "equal", - "value": [ - "otc-listed-a", - "otc-listed-b" + "is": "one_of", + "values": [ + null, + "" ] } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/container-properties-absent", - "profile": "azure-hns", - "lane": "core", - "purpose": "Report a missing container when reading its properties", - "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/get-container-properties" - ], - "call": { - "container": "otc-absent", - "op": "azure.container_properties" - }, - "exchanges": [ + }, { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/otc-absent" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/query/restype", - "optional": false, - "rule": { - "is": "equal", - "value": "container" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 404, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - }, - "x-ms-error-code": "ContainerNotFound" - }, - "body": { - "encoding": "utf8", - "data": "ContainerNotFoundFixture error" - } - } - } - ] - } - ], - "expect": [ + "at": "/value/entries/21/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, { - "at": "/outcome", - "optional": false, + "at": "/value/entries/21/is_current_version", + "optional": true, "rule": { - "is": "equal", - "value": "error" + "is": "one_of", + "values": [ + null, + false + ] } }, { - "at": "/status", + "at": "/value/entries/21/directory", "optional": false, "rule": { "is": "equal", - "value": 404 + "value": true } }, { - "at": "/code", + "at": "/value/entries/22/key", "optional": false, "rule": { "is": "equal", - "value": "ContainerNotFound" + "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/container-properties", - "profile": "azure-hns", - "lane": "core", - "purpose": "Read the properties of a container", - "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/get-container-properties" - ], - "call": { - "container": "otc-read", - "op": "azure.container_properties" - }, - "exchanges": [ - { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/otc-read" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/query/restype", - "optional": false, - "rule": { - "is": "equal", - "value": "container" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "date": { - "from": "now" - }, - "etag": "\"fixture-etag\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-has-immutability-policy": "false", - "x-ms-has-legal-hold": "false", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked" - }, - "body": { - "encoding": "empty" - } - } - } - ] - } - ], - "expect": [ + }, { - "at": "/outcome", + "at": "/value/entries/22/size", "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": 0 } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/delete-container-absent", - "profile": "azure-hns", - "lane": "core", - "purpose": "Report a missing container on delete", - "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/delete-container" - ], - "call": { - "container": "otc-absent", - "op": "azure.delete_container" - }, - "exchanges": [ - { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "DELETE" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/otc-absent" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/query/restype", - "optional": false, - "rule": { - "is": "equal", - "value": "container" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 404, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - }, - "x-ms-error-code": "ContainerNotFound" - }, - "body": { - "encoding": "utf8", - "data": "ContainerNotFoundFixture error" - } - } - } - ] - } - ], - "expect": [ + }, { - "at": "/outcome", + "at": "/value/entries/22/etag", "optional": false, "rule": { "is": "equal", - "value": "error" + "value": "fixture-6a1f4f7934bf" } }, { - "at": "/status", - "optional": false, + "at": "/value/entries/22/snapshot", + "optional": true, "rule": { - "is": "equal", - "value": 404 + "is": "one_of", + "values": [ + null, + "" + ] } }, { - "at": "/code", - "optional": false, + "at": "/value/entries/22/version", + "optional": true, "rule": { - "is": "equal", - "value": "ContainerNotFound" + "is": "one_of", + "values": [ + null, + "" + ] } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/delete-container", - "profile": "azure-hns", - "lane": "core", - "purpose": "Delete a container", - "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/delete-container" - ], - "call": { - "container": "otc-deleted", - "op": "azure.delete_container" - }, - "exchanges": [ + }, { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "DELETE" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/otc-deleted" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/query/restype", - "optional": false, - "rule": { - "is": "equal", - "value": "container" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 202, - "headers": { - "date": { - "from": "now" - } - }, - "body": { - "encoding": "empty" - } - } - } - ] - } - ], - "expect": [ + "at": "/value/entries/22/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, { - "at": "/outcome", + "at": "/value/entries/22/directory", "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": true } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/create-container-invalid-name", - "profile": "azure-hns", - "lane": "core", - "purpose": "Refuse a container name with capitals and an underscore", - "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/naming-and-referencing-containers--blobs--and-metadata" - ], - "call": { - "container": "Otc_Invalid", - "op": "azure.create_container" - }, - "exchanges": [ - { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "PUT" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/Otc_Invalid" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/query/restype", - "optional": false, - "rule": { - "is": "equal", - "value": "container" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 400, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - }, - "x-ms-error-code": "InvalidResourceName" - }, - "body": { - "encoding": "utf8", - "data": "InvalidResourceNameFixture error" - } - } - } - ] - } - ], - "expect": [ + }, { - "at": "/outcome", + "at": "/value/entries/23/key", "optional": false, "rule": { "is": "equal", - "value": "error" + "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" } }, { - "at": "/status", + "at": "/value/entries/23/size", "optional": false, "rule": { "is": "equal", - "value": 400 + "value": 0 } }, { - "at": "/code", + "at": "/value/entries/23/etag", "optional": false, "rule": { "is": "equal", - "value": "InvalidResourceName" + "value": "fixture-87c3fdda2bda" } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/create-container-exists", - "profile": "azure-hns", - "lane": "core", - "purpose": "Refuse to create a container that exists", - "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/create-container" - ], - "call": { - "container": "otc-existing", - "op": "azure.create_container" - }, - "exchanges": [ + }, { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "PUT" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/otc-existing" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/query/restype", - "optional": false, - "rule": { - "is": "equal", - "value": "container" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 409, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - }, - "x-ms-error-code": "ContainerAlreadyExists" - }, - "body": { - "encoding": "utf8", - "data": "ContainerAlreadyExistsFixture error" - } - } - } - ] - } - ], - "expect": [ + "at": "/value/entries/23/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, { - "at": "/outcome", + "at": "/value/entries/23/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/23/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/23/directory", "optional": false, "rule": { "is": "equal", - "value": "error" + "value": true } }, { - "at": "/status", + "at": "/value/entries/24/key", "optional": false, "rule": { "is": "equal", - "value": 409 + "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" } }, { - "at": "/code", + "at": "/value/entries/24/size", "optional": false, "rule": { "is": "equal", - "value": "ContainerAlreadyExists" + "value": 0 } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/create-container", - "profile": "azure-hns", - "lane": "core", - "purpose": "Create a container", - "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/create-container" - ], - "call": { - "container": "otc-created", - "op": "azure.create_container" - }, - "exchanges": [ - { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "PUT" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/otc-created" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/query/restype", - "optional": false, - "rule": { - "is": "equal", - "value": "container" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 201, - "headers": { - "date": { - "from": "now" - }, - "etag": "\"fixture-etag\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" - }, - "body": { - "encoding": "empty" - } - } - } - ] - } - ], - "expect": [ + }, { - "at": "/outcome", + "at": "/value/entries/24/etag", "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "fixture-4d2fcc081fd8" } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/get-current-version-of-deleted-object", - "profile": "azure-hns", - "lane": "core", - "purpose": "get current version of deleted object", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "key": "object-tests/versions-mtypy4jp/deleted.txt", - "op": "get", - "version": "none-2" - }, - "exchanges": [ + }, { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/versions-mtypy4jp/deleted.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/query/versionid", - "optional": false, - "rule": { - "is": "equal", - "value": "none-2" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 400, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - } - }, - "body": { - "encoding": "utf8", - "data": "InvalidQueryParameterValueFixture error" - } - } - } - ] - } - ], - "expect": [ + "at": "/value/entries/24/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, { - "at": "/outcome", + "at": "/value/entries/24/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/24/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/24/directory", "optional": false, "rule": { "is": "equal", - "value": "error" + "value": true } }, { - "at": "/status", + "at": "/value/entries/25/key", "optional": false, "rule": { "is": "equal", - "value": 400 + "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" } }, { - "at": "/code", + "at": "/value/entries/25/size", "optional": false, "rule": { "is": "equal", - "value": "InvalidQueryParameterValue" + "value": 0 } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/get-current-version", - "profile": "azure-hns", - "lane": "core", - "purpose": "get current version", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "key": "object-tests/versions-mtypy4jp/object.txt", - "op": "get" - }, - "exchanges": [ - { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/versions-mtypy4jp/object.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-md5": "GyZ2GcSBLMRu4oF0eITKUA==", - "content-type": "application/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-ecff54f15562\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true" - }, - "body": { - "encoding": "base64", - "data": "djI=" - } - } - } - ] - } - ], - "expect": [ + }, { - "at": "/outcome", + "at": "/value/entries/25/etag", "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "fixture-8956db6ae017" } }, { - "at": "/value/etag", + "at": "/value/entries/25/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/25/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/25/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/25/directory", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-ecff54f15562\"" + "value": true } }, { - "at": "/value/size", + "at": "/value/entries/26/key", "optional": false, "rule": { "is": "equal", - "value": 2 + "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" } }, { - "at": "/value/content_type", + "at": "/value/entries/26/size", "optional": false, "rule": { "is": "equal", - "value": "application/octet-stream" + "value": 0 } }, { - "at": "/value/content_md5_base64", + "at": "/value/entries/26/etag", "optional": false, "rule": { "is": "equal", - "value": "GyZ2GcSBLMRu4oF0eITKUA==" + "value": "fixture-7f1f55a3463b" } }, { - "at": "/value/version", + "at": "/value/entries/26/snapshot", "optional": true, "rule": { "is": "one_of", @@ -42109,308 +72711,191 @@ } }, { - "at": "/value/body_base64", + "at": "/value/entries/26/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/26/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/26/directory", "optional": false, "rule": { "is": "equal", - "value": "djI=" + "value": true } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/get-deleted-snapshot", - "profile": "azure-hns", - "lane": "core", - "purpose": "get deleted snapshot", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "key": "object-tests/snapshots/object.txt", - "op": "get", - "snapshot": "2024-01-01T00:00:00.8557081Z" - }, - "exchanges": [ - { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/snapshots/object.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/query/snapshot", - "optional": false, - "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.8557081Z" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 404, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - }, - "x-ms-error-code": "BlobNotFound" - }, - "body": { - "encoding": "utf8", - "data": "BlobNotFoundFixture error" - } - } - } - ] - } - ], - "expect": [ + }, { - "at": "/outcome", + "at": "/value/entries/27/key", "optional": false, "rule": { "is": "equal", - "value": "error" + "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" } }, { - "at": "/status", + "at": "/value/entries/27/size", "optional": false, "rule": { "is": "equal", - "value": 404 + "value": 0 } }, { - "at": "/code", + "at": "/value/entries/27/etag", "optional": false, "rule": { "is": "equal", - "value": "BlobNotFound" + "value": "fixture-44dd81206643" } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/get-deleted-versioned-object", - "profile": "azure-hns", - "lane": "core", - "purpose": "get deleted versioned object", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "key": "object-tests/versions-mtypy4jp/deleted.txt", - "op": "get" - }, - "exchanges": [ + }, { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/versions-mtypy4jp/deleted.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 404, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - }, - "x-ms-error-code": "BlobNotFound" - }, - "body": { - "encoding": "utf8", - "data": "BlobNotFoundFixture error" - } - } - } - ] - } - ], - "expect": [ + "at": "/value/entries/27/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, { - "at": "/outcome", + "at": "/value/entries/27/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/27/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/27/directory", "optional": false, "rule": { "is": "equal", - "value": "error" + "value": true } }, { - "at": "/status", + "at": "/value/entries/28/key", "optional": false, "rule": { "is": "equal", - "value": 404 + "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" } }, { - "at": "/code", + "at": "/value/entries/28/size", "optional": false, "rule": { "is": "equal", - "value": "BlobNotFound" + "value": 0 } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/get-duplicate-id", - "profile": "azure-hns", - "lane": "core", - "purpose": "get duplicate id", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "key": "object-tests/multipart/duplicate.bin", - "op": "get" - }, - "exchanges": [ + }, { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/multipart/duplicate.bin" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-type": "application/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-a8581b642c5f\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true" - }, - "body": { - "encoding": "base64", - "data": "c2FtZXNhbWU=" - } - } - } - ] - } - ], - "expect": [ + "at": "/value/entries/28/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-952096734190" + } + }, { - "at": "/outcome", + "at": "/value/entries/28/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/28/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/28/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/28/directory", "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": true } }, { - "at": "/value/etag", + "at": "/value/entries/29/key", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-a8581b642c5f\"" + "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" } }, { - "at": "/value/size", + "at": "/value/entries/29/size", "optional": false, "rule": { "is": "equal", - "value": 8 + "value": 0 } }, { - "at": "/value/content_type", + "at": "/value/entries/29/etag", "optional": false, "rule": { "is": "equal", - "value": "application/octet-stream" + "value": "fixture-db4655ce498c" } }, { - "at": "/value/version", + "at": "/value/entries/29/snapshot", "optional": true, "rule": { "is": "one_of", @@ -42421,104 +72906,45 @@ } }, { - "at": "/value/body_base64", - "optional": false, + "at": "/value/entries/29/version", + "optional": true, "rule": { - "is": "equal", - "value": "c2FtZXNhbWU=" + "is": "one_of", + "values": [ + null, + "" + ] } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/get-empty", - "profile": "azure-hns", - "lane": "core", - "purpose": "get empty", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "key": "object-tests/write/empty.bin", - "op": "get" - }, - "exchanges": [ + }, { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/write/empty.bin" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-md5": "1B2M2Y8AsgTpgAmY7PhCfg==", - "content-type": "application/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-9373f0410116\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true" - }, - "body": { - "encoding": "base64", - "data": "" - } - } - } - ] - } - ], - "expect": [ + "at": "/value/entries/29/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, { - "at": "/outcome", + "at": "/value/entries/29/directory", "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": true } }, { - "at": "/value/etag", + "at": "/value/entries/30/key", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-9373f0410116\"" + "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" } }, { - "at": "/value/size", + "at": "/value/entries/30/size", "optional": false, "rule": { "is": "equal", @@ -42526,23 +72952,26 @@ } }, { - "at": "/value/content_type", + "at": "/value/entries/30/etag", "optional": false, "rule": { "is": "equal", - "value": "application/octet-stream" + "value": "fixture-b2a6d305ae63" } }, { - "at": "/value/content_md5_base64", - "optional": false, + "at": "/value/entries/30/snapshot", + "optional": true, "rule": { - "is": "equal", - "value": "1B2M2Y8AsgTpgAmY7PhCfg==" + "is": "one_of", + "values": [ + null, + "" + ] } }, { - "at": "/value/version", + "at": "/value/entries/30/version", "optional": true, "rule": { "is": "one_of", @@ -42553,137 +72982,61 @@ } }, { - "at": "/value/body_base64", - "optional": false, + "at": "/value/entries/30/is_current_version", + "optional": true, "rule": { - "is": "equal", - "value": "" + "is": "one_of", + "values": [ + null, + false + ] } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/get-if-match-current", - "profile": "azure-hns", - "lane": "core", - "purpose": "get if match current", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "if_match": "\"fixture-5295cdfd25ff\"", - "key": "object-tests/read/object.txt", - "op": "get" - }, - "exchanges": [ - { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/read/object.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/headers/if-match", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-5295cdfd25ff\"" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-md5": "H1VC0PNTmj+yaCRN4U931g==", - "content-type": "application/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-5295cdfd25ff\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true" - }, - "body": { - "encoding": "base64", - "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" - } - } - } - ] - } - ], - "expect": [ + }, { - "at": "/outcome", + "at": "/value/entries/30/directory", "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": true } }, { - "at": "/value/etag", + "at": "/value/entries/31/key", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-5295cdfd25ff\"" + "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" } }, { - "at": "/value/size", + "at": "/value/entries/31/size", "optional": false, "rule": { "is": "equal", - "value": 30 + "value": 0 } }, { - "at": "/value/content_type", + "at": "/value/entries/31/etag", "optional": false, "rule": { "is": "equal", - "value": "application/octet-stream" + "value": "fixture-23d914b576fb" } }, { - "at": "/value/content_md5_base64", - "optional": false, + "at": "/value/entries/31/snapshot", + "optional": true, "rule": { - "is": "equal", - "value": "H1VC0PNTmj+yaCRN4U931g==" + "is": "one_of", + "values": [ + null, + "" + ] } }, { - "at": "/value/version", + "at": "/value/entries/31/version", "optional": true, "rule": { "is": "one_of", @@ -42694,137 +73047,115 @@ } }, { - "at": "/value/body_base64", + "at": "/value/entries/31/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/31/directory", "optional": false, "rule": { "is": "equal", - "value": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + "value": true } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/get-if-none-match-other", - "profile": "azure-hns", - "lane": "core", - "purpose": "get if none match other", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "if_none_match": "\"fixture-088e5dc109cf\"", - "key": "object-tests/read/object.txt", - "op": "get" - }, - "exchanges": [ + }, { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/read/object.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/headers/if-none-match", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-088e5dc109cf\"" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-md5": "H1VC0PNTmj+yaCRN4U931g==", - "content-type": "application/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-5295cdfd25ff\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true" - }, - "body": { - "encoding": "base64", - "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" - } - } - } - ] - } - ], - "expect": [ + "at": "/value/entries/32/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" + } + }, { - "at": "/outcome", + "at": "/value/entries/32/size", "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": 0 } }, { - "at": "/value/etag", + "at": "/value/entries/32/etag", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-5295cdfd25ff\"" + "value": "fixture-0fe87110b578" } }, { - "at": "/value/size", + "at": "/value/entries/32/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/32/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/32/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/32/directory", "optional": false, "rule": { "is": "equal", - "value": 30 + "value": true } }, { - "at": "/value/content_type", + "at": "/value/entries/33/key", "optional": false, "rule": { "is": "equal", - "value": "application/octet-stream" + "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" } }, { - "at": "/value/content_md5_base64", + "at": "/value/entries/33/size", "optional": false, "rule": { "is": "equal", - "value": "H1VC0PNTmj+yaCRN4U931g==" + "value": 0 } }, { - "at": "/value/version", + "at": "/value/entries/33/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-55cf88c7a2e2" + } + }, + { + "at": "/value/entries/33/snapshot", "optional": true, "rule": { "is": "one_of", @@ -42835,128 +73166,61 @@ } }, { - "at": "/value/body_base64", - "optional": false, + "at": "/value/entries/33/version", + "optional": true, "rule": { - "is": "equal", - "value": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + "is": "one_of", + "values": [ + null, + "" + ] } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/get-key-with-hash", - "profile": "azure-hns", - "lane": "core", - "purpose": "get key with hash", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "key": "object-tests/names/hash#tag.txt", - "op": "get" - }, - "exchanges": [ - { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/names/hash#tag.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-md5": "xMpCOKC5I4INzFCab3WEmw==", - "content-type": "application/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-ed49e7da63af\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true" - }, - "body": { - "encoding": "base64", - "data": "MQ==" - } - } - } - ] - } - ], - "expect": [ + }, { - "at": "/outcome", - "optional": false, + "at": "/value/entries/33/is_current_version", + "optional": true, "rule": { - "is": "equal", - "value": "ok" + "is": "one_of", + "values": [ + null, + false + ] } }, { - "at": "/value/etag", + "at": "/value/entries/33/directory", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-ed49e7da63af\"" + "value": true } }, { - "at": "/value/size", + "at": "/value/entries/34/key", "optional": false, "rule": { "is": "equal", - "value": 1 + "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" } }, { - "at": "/value/content_type", + "at": "/value/entries/34/size", "optional": false, "rule": { "is": "equal", - "value": "application/octet-stream" + "value": 0 } }, { - "at": "/value/content_md5_base64", + "at": "/value/entries/34/etag", "optional": false, "rule": { "is": "equal", - "value": "xMpCOKC5I4INzFCab3WEmw==" + "value": "fixture-6815a7113351" } }, { - "at": "/value/version", + "at": "/value/entries/34/snapshot", "optional": true, "rule": { "is": "one_of", @@ -42967,128 +73231,61 @@ } }, { - "at": "/value/body_base64", - "optional": false, + "at": "/value/entries/34/version", + "optional": true, "rule": { - "is": "equal", - "value": "MQ==" + "is": "one_of", + "values": [ + null, + "" + ] } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/get-key-with-percent", - "profile": "azure-hns", - "lane": "core", - "purpose": "get key with percent", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "key": "object-tests/names/percent%20.txt", - "op": "get" - }, - "exchanges": [ - { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/names/percent%20.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-md5": "xMpCOKC5I4INzFCab3WEmw==", - "content-type": "application/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-c4ca668cf15e\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true" - }, - "body": { - "encoding": "base64", - "data": "MQ==" - } - } - } - ] - } - ], - "expect": [ + }, { - "at": "/outcome", - "optional": false, + "at": "/value/entries/34/is_current_version", + "optional": true, "rule": { - "is": "equal", - "value": "ok" + "is": "one_of", + "values": [ + null, + false + ] } }, { - "at": "/value/etag", + "at": "/value/entries/34/directory", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-c4ca668cf15e\"" + "value": true } }, { - "at": "/value/size", + "at": "/value/entries/35/key", "optional": false, "rule": { "is": "equal", - "value": 1 + "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" } }, { - "at": "/value/content_type", + "at": "/value/entries/35/size", "optional": false, "rule": { "is": "equal", - "value": "application/octet-stream" + "value": 0 } }, { - "at": "/value/content_md5_base64", + "at": "/value/entries/35/etag", "optional": false, "rule": { "is": "equal", - "value": "xMpCOKC5I4INzFCab3WEmw==" + "value": "fixture-70df51065efe" } }, { - "at": "/value/version", + "at": "/value/entries/35/snapshot", "optional": true, "rule": { "is": "one_of", @@ -43099,128 +73296,72 @@ } }, { - "at": "/value/body_base64", - "optional": false, + "at": "/value/entries/35/version", + "optional": true, "rule": { - "is": "equal", - "value": "MQ==" + "is": "one_of", + "values": [ + null, + "" + ] } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/get-key-with-plus", - "profile": "azure-hns", - "lane": "core", - "purpose": "get key with plus", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "key": "object-tests/names/plus+plus.txt", - "op": "get" - }, - "exchanges": [ + }, { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/names/plus+plus.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-md5": "xMpCOKC5I4INzFCab3WEmw==", - "content-type": "application/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-f09c0f273191\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true" - }, - "body": { - "encoding": "base64", - "data": "MQ==" - } - } - } - ] - } - ], - "expect": [ + "at": "/value/entries/35/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, { - "at": "/outcome", + "at": "/value/entries/35/directory", "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": true } }, { - "at": "/value/etag", + "at": "/value/entries/36/key", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-f09c0f273191\"" + "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" } }, { - "at": "/value/size", + "at": "/value/entries/36/size", "optional": false, "rule": { "is": "equal", - "value": 1 + "value": 0 } }, { - "at": "/value/content_type", + "at": "/value/entries/36/etag", "optional": false, "rule": { "is": "equal", - "value": "application/octet-stream" + "value": "fixture-0e76caa6ea5f" } }, { - "at": "/value/content_md5_base64", - "optional": false, + "at": "/value/entries/36/snapshot", + "optional": true, "rule": { - "is": "equal", - "value": "xMpCOKC5I4INzFCab3WEmw==" + "is": "one_of", + "values": [ + null, + "" + ] } }, { - "at": "/value/version", + "at": "/value/entries/36/version", "optional": true, "rule": { "is": "one_of", @@ -43231,492 +73372,245 @@ } }, { - "at": "/value/body_base64", + "at": "/value/entries/36/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/36/directory", "optional": false, "rule": { "is": "equal", - "value": "MQ==" + "value": true } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/get-key-with-space", - "profile": "azure-hns", - "lane": "core", - "purpose": "get key space", - "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/get-blob" - ], - "call": { - "key": "a b", - "op": "get" - }, - "exchanges": [ + }, { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/a b" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-type": "application/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-etag\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-request-id": "fixture-request-id", - "x-ms-request-server-encrypted": "true", - "x-ms-server-encrypted": "true", - "x-ms-version": "2023-11-03" - }, - "body": { - "encoding": "base64", - "data": "aGVsbG8=" - } - } - } - ] - } - ], - "expect": [ + "at": "/value/entries/37/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" + } + }, { - "at": "/outcome", + "at": "/value/entries/37/size", "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": 0 } }, { - "at": "/value/body_base64", + "at": "/value/entries/37/etag", "optional": false, "rule": { "is": "equal", - "value": "aGVsbG8=" + "value": "fixture-97f6d7ad109d" } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/get-key-with-question", - "profile": "azure-hns", - "lane": "core", - "purpose": "get key question", - "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/get-blob" - ], - "call": { - "key": "a?b", - "op": "get" - }, - "exchanges": [ + }, { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/a?b" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-type": "application/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-etag\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-request-id": "fixture-request-id", - "x-ms-request-server-encrypted": "true", - "x-ms-server-encrypted": "true", - "x-ms-version": "2023-11-03" - }, - "body": { - "encoding": "base64", - "data": "aGVsbG8=" - } - } - } - ] - } - ], - "expect": [ + "at": "/value/entries/37/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, { - "at": "/outcome", + "at": "/value/entries/37/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/37/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/37/directory", "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": true } }, { - "at": "/value/body_base64", + "at": "/value/entries/38/key", "optional": false, "rule": { "is": "equal", - "value": "aGVsbG8=" + "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/get-key-with-non-ascii", - "profile": "azure-hns", - "lane": "core", - "purpose": "get key unicode", - "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/get-blob" - ], - "call": { - "key": "café/雪", - "op": "get" - }, - "exchanges": [ - { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/café/雪" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-type": "application/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-etag\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-request-id": "fixture-request-id", - "x-ms-request-server-encrypted": "true", - "x-ms-server-encrypted": "true", - "x-ms-version": "2023-11-03" - }, - "body": { - "encoding": "base64", - "data": "aGVsbG8=" - } - } - } - ] - } - ], - "expect": [ + }, { - "at": "/outcome", + "at": "/value/entries/38/size", "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": 0 } }, { - "at": "/value/body_base64", + "at": "/value/entries/38/etag", "optional": false, "rule": { "is": "equal", - "value": "aGVsbG8=" + "value": "fixture-b7df38492c3e" } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/get-key-with-separators", - "profile": "azure-hns", - "lane": "core", - "purpose": "get key separators", - "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/get-blob" - ], - "call": { - "key": "a//b/", - "op": "get" - }, - "exchanges": [ + }, { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/a//b/" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 404, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - }, - "x-ms-error-code": "BlobNotFound" - }, - "body": { - "encoding": "utf8", - "data": "BlobNotFoundFixture error" - } - } - } - ] - } - ], - "expect": [ + "at": "/value/entries/38/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, { - "at": "/outcome", + "at": "/value/entries/38/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/38/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/38/directory", "optional": false, "rule": { "is": "equal", - "value": "error" + "value": true } }, { - "at": "/status", + "at": "/value/entries/39/key", "optional": false, "rule": { "is": "equal", - "value": 404 + "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" } }, { - "at": "/code", + "at": "/value/entries/39/size", "optional": false, "rule": { "is": "equal", - "value": "BlobNotFound" + "value": 0 } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/get-metadata-empty-value", - "profile": "azure-hns", - "lane": "core", - "purpose": "get metadata empty value", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "key": "object-tests/metadata/empty-value.txt", - "op": "get" - }, - "exchanges": [ - { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/metadata/empty-value.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-md5": "xMpCOKC5I4INzFCab3WEmw==", - "content-type": "application/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-18852ad86043\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-meta-empty": "", - "x-ms-server-encrypted": "true" - }, - "body": { - "encoding": "base64", - "data": "MQ==" - } - } - } - ] - } - ], - "expect": [ + }, { - "at": "/outcome", + "at": "/value/entries/39/etag", "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "fixture-ac2f2336ab74" } }, { - "at": "/value/etag", + "at": "/value/entries/39/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/39/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/39/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/39/directory", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-18852ad86043\"" + "value": true } }, { - "at": "/value/size", + "at": "/value/entries/40/key", "optional": false, "rule": { "is": "equal", - "value": 1 + "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" } }, { - "at": "/value/content_type", + "at": "/value/entries/40/size", "optional": false, "rule": { "is": "equal", - "value": "application/octet-stream" + "value": 0 } }, { - "at": "/value/content_md5_base64", + "at": "/value/entries/40/etag", "optional": false, "rule": { "is": "equal", - "value": "xMpCOKC5I4INzFCab3WEmw==" + "value": "fixture-c2a19efa033c" } }, { - "at": "/value/version", + "at": "/value/entries/40/snapshot", "optional": true, "rule": { "is": "one_of", @@ -43727,237 +73621,126 @@ } }, { - "at": "/value/body_base64", - "optional": false, + "at": "/value/entries/40/version", + "optional": true, "rule": { - "is": "equal", - "value": "MQ==" + "is": "one_of", + "values": [ + null, + "" + ] } }, { - "at": "/value/metadata", + "at": "/value/entries/40/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/40/directory", "optional": false, "rule": { "is": "equal", - "value": { - "empty": "" - } + "value": true } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/get-metadata-of-snapshot", - "profile": "azure-hns", - "lane": "core", - "purpose": "get metadata of snapshot", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "key": "object-tests/metadata/snapshotted.txt", - "op": "get", - "snapshot": "2024-01-01T00:00:00.1577201Z" - }, - "exchanges": [ - { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/metadata/snapshotted.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/query/snapshot", - "optional": false, - "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.1577201Z" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 404, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - }, - "x-ms-error-code": "BlobNotFound" - }, - "body": { - "encoding": "utf8", - "data": "BlobNotFoundFixture error" - } - } - } - ] - } - ], - "expect": [ + }, { - "at": "/outcome", + "at": "/value/entries/41/key", "optional": false, "rule": { "is": "equal", - "value": "error" + "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" } }, { - "at": "/status", + "at": "/value/entries/41/size", "optional": false, "rule": { "is": "equal", - "value": 404 + "value": 0 } }, { - "at": "/code", + "at": "/value/entries/41/etag", "optional": false, "rule": { "is": "equal", - "value": "BlobNotFound" + "value": "fixture-b9e90b553fff" } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/get-metadata-replaced", - "profile": "azure-hns", - "lane": "core", - "purpose": "get metadata replaced", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "key": "object-tests/metadata/replaced.txt", - "op": "get" - }, - "exchanges": [ + }, { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/metadata/replaced.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-md5": "yB5yjZ1ML2NvBn+JzBSGLA==", - "content-type": "application/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-c24dabf9e117\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true" - }, - "body": { - "encoding": "base64", - "data": "Mg==" - } - } - } - ] - } - ], - "expect": [ + "at": "/value/entries/41/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/41/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, { - "at": "/outcome", - "optional": false, + "at": "/value/entries/41/is_current_version", + "optional": true, "rule": { - "is": "equal", - "value": "ok" + "is": "one_of", + "values": [ + null, + false + ] } }, { - "at": "/value/etag", + "at": "/value/entries/41/directory", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-c24dabf9e117\"" + "value": true } }, { - "at": "/value/size", + "at": "/value/entries/42/key", "optional": false, "rule": { "is": "equal", - "value": 1 + "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" } }, { - "at": "/value/content_type", + "at": "/value/entries/42/size", "optional": false, "rule": { "is": "equal", - "value": "application/octet-stream" + "value": 0 } }, { - "at": "/value/content_md5_base64", + "at": "/value/entries/42/etag", "optional": false, "rule": { "is": "equal", - "value": "yB5yjZ1ML2NvBn+JzBSGLA==" + "value": "fixture-0d7c0a17f740" } }, { - "at": "/value/version", + "at": "/value/entries/42/snapshot", "optional": true, "rule": { "is": "one_of", @@ -43968,130 +73751,72 @@ } }, { - "at": "/value/body_base64", - "optional": false, + "at": "/value/entries/42/version", + "optional": true, "rule": { - "is": "equal", - "value": "Mg==" + "is": "one_of", + "values": [ + null, + "" + ] } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/get-metadata", - "profile": "azure-hns", - "lane": "core", - "purpose": "get metadata", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "key": "object-tests/metadata/object.txt", - "op": "get" - }, - "exchanges": [ + }, { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/metadata/object.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-md5": "xMpCOKC5I4INzFCab3WEmw==", - "content-type": "application/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-4d04dba3441e\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-meta-name": "value", - "x-ms-meta-second": "2", - "x-ms-server-encrypted": "true" - }, - "body": { - "encoding": "base64", - "data": "MQ==" - } - } - } - ] - } - ], - "expect": [ + "at": "/value/entries/42/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, { - "at": "/outcome", + "at": "/value/entries/42/directory", "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": true } }, { - "at": "/value/etag", + "at": "/value/entries/43/key", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-4d04dba3441e\"" + "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" } }, { - "at": "/value/size", + "at": "/value/entries/43/size", "optional": false, "rule": { "is": "equal", - "value": 1 + "value": 0 } }, { - "at": "/value/content_type", + "at": "/value/entries/43/etag", "optional": false, "rule": { "is": "equal", - "value": "application/octet-stream" + "value": "fixture-e1d35759d4ac" } }, { - "at": "/value/content_md5_base64", - "optional": false, + "at": "/value/entries/43/snapshot", + "optional": true, "rule": { - "is": "equal", - "value": "xMpCOKC5I4INzFCab3WEmw==" + "is": "one_of", + "values": [ + null, + "" + ] } }, { - "at": "/value/version", + "at": "/value/entries/43/version", "optional": true, "rule": { "is": "one_of", @@ -44102,888 +73827,321 @@ } }, { - "at": "/value/body_base64", - "optional": false, + "at": "/value/entries/43/is_current_version", + "optional": true, "rule": { - "is": "equal", - "value": "MQ==" + "is": "one_of", + "values": [ + null, + false + ] } }, { - "at": "/value/metadata", + "at": "/value/entries/43/directory", "optional": false, "rule": { "is": "equal", - "value": { - "name": "value", - "second": "2" - } + "value": true } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/get-metadata-ignores-unknown-headers", - "profile": "azure-hns", - "lane": "core", - "purpose": "Surface user metadata; unknown headers must not become metadata.", - "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/get-blob" - ], - "call": { - "key": "object", - "op": "get" - }, - "exchanges": [ - { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-type": "application/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-etag\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-meta-author": "Ada", - "x-ms-request-id": "fixture-request-id", - "x-ms-request-server-encrypted": "true", - "x-ms-server-encrypted": "true", - "x-ms-version": "2023-11-03", - "x-unrelated": "not metadata" - }, - "body": { - "encoding": "base64", - "data": "aGVsbG8=" - } - } - } - ] - } - ], - "expect": [ + }, { - "at": "/outcome", + "at": "/value/entries/44/key", "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" } }, { - "at": "/value/body_base64", + "at": "/value/entries/44/size", "optional": false, "rule": { "is": "equal", - "value": "aGVsbG8=" + "value": 0 } }, { - "at": "/value/metadata", + "at": "/value/entries/44/etag", "optional": false, "rule": { "is": "equal", - "value": { - "author": "Ada" - } + "value": "fixture-1389b2ea70e1" } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/get-missing", - "profile": "azure-hns", - "lane": "core", - "purpose": "get missing", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "key": "object-tests/read/absent.txt", - "op": "get" - }, - "exchanges": [ + }, { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/read/absent.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 404, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - }, - "x-ms-error-code": "BlobNotFound" - }, - "body": { - "encoding": "utf8", - "data": "BlobNotFoundFixture error" - } - } - } - ] - } - ], - "expect": [ + "at": "/value/entries/44/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, { - "at": "/outcome", - "optional": false, + "at": "/value/entries/44/version", + "optional": true, "rule": { - "is": "equal", - "value": "error" + "is": "one_of", + "values": [ + null, + "" + ] } }, { - "at": "/status", - "optional": false, + "at": "/value/entries/44/is_current_version", + "optional": true, "rule": { - "is": "equal", - "value": 404 + "is": "one_of", + "values": [ + null, + false + ] } }, { - "at": "/code", + "at": "/value/entries/44/directory", "optional": false, "rule": { "is": "equal", - "value": "BlobNotFound" + "value": true } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/get-missing-code-in-body", - "profile": "azure-hns", - "lane": "core", - "purpose": "get missing, with the error code only in the XML body", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp", - "https://learn.microsoft.com/en-us/rest/api/storageservices/common-rest-api-error-codes", - "https://learn.microsoft.com/en-us/rest/api/storageservices/blob-service-error-codes" - ], - "origin": "constructed", - "call": { - "key": "object-tests/read/absent.txt", - "op": "get" - }, - "exchanges": [ - { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/read/absent.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 404, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - } - }, - "body": { - "encoding": "utf8", - "data": "BlobNotFoundFixture error" - } - } - } - ] - } - ], - "expect": [ + }, { - "at": "/outcome", + "at": "/value/entries/45/key", "optional": false, "rule": { "is": "equal", - "value": "error" + "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" } }, { - "at": "/status", + "at": "/value/entries/45/size", "optional": false, "rule": { "is": "equal", - "value": 404 + "value": 0 } }, { - "at": "/code", + "at": "/value/entries/45/etag", "optional": false, "rule": { "is": "equal", - "value": "BlobNotFound" + "value": "fixture-11c5ee820f55" } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/get-not-modified", - "profile": "azure-hns", - "lane": "core", - "purpose": "get not modified", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "if_none_match": "\"fixture-5295cdfd25ff\"", - "key": "object-tests/read/object.txt", - "op": "get" - }, - "exchanges": [ + }, { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/read/object.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/headers/if-none-match", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-5295cdfd25ff\"" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 304, - "headers": { - "date": { - "from": "now" - }, - "x-ms-error-code": "ConditionNotMet" - }, - "body": { - "encoding": "base64", - "data": "" - } - } - } - ] - } - ], - "expect": [ + "at": "/value/entries/45/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, { - "at": "/outcome", - "optional": false, + "at": "/value/entries/45/version", + "optional": true, "rule": { - "is": "equal", - "value": "error" + "is": "one_of", + "values": [ + null, + "" + ] } }, { - "at": "/status", - "optional": false, + "at": "/value/entries/45/is_current_version", + "optional": true, "rule": { - "is": "equal", - "value": 304 + "is": "one_of", + "values": [ + null, + false + ] } }, { - "at": "/code", + "at": "/value/entries/45/directory", "optional": false, "rule": { "is": "equal", - "value": "ConditionNotMet" + "value": true } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/get-precondition-failed", - "profile": "azure-hns", - "lane": "core", - "purpose": "get precondition failed", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "if_match": "\"fixture-088e5dc109cf\"", - "key": "object-tests/read/object.txt", - "op": "get" - }, - "exchanges": [ - { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/read/object.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/headers/if-match", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-088e5dc109cf\"" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 412, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - }, - "x-ms-error-code": "ConditionNotMet" - }, - "body": { - "encoding": "utf8", - "data": "ConditionNotMetFixture error" - } - } - } - ] - } - ], - "expect": [ + }, { - "at": "/outcome", + "at": "/value/entries/46/key", "optional": false, "rule": { "is": "equal", - "value": "error" + "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" } }, { - "at": "/status", + "at": "/value/entries/46/size", "optional": false, "rule": { "is": "equal", - "value": 412 + "value": 0 } }, { - "at": "/code", + "at": "/value/entries/46/etag", "optional": false, "rule": { "is": "equal", - "value": "ConditionNotMet" + "value": "fixture-ba489a3d8cb9" } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/get-previous-version-of-deleted-object", - "profile": "azure-hns", - "lane": "core", - "purpose": "get previous version of deleted object", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "key": "object-tests/versions-mtypy4jp/deleted.txt", - "op": "get", - "version": "none-1" - }, - "exchanges": [ + }, { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/versions-mtypy4jp/deleted.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/query/versionid", - "optional": false, - "rule": { - "is": "equal", - "value": "none-1" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 400, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - } - }, - "body": { - "encoding": "utf8", - "data": "InvalidQueryParameterValueFixture error" - } - } - } - ] - } - ], - "expect": [ + "at": "/value/entries/46/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, { - "at": "/outcome", - "optional": false, + "at": "/value/entries/46/version", + "optional": true, "rule": { - "is": "equal", - "value": "error" + "is": "one_of", + "values": [ + null, + "" + ] } }, { - "at": "/status", - "optional": false, + "at": "/value/entries/46/is_current_version", + "optional": true, "rule": { - "is": "equal", - "value": 400 + "is": "one_of", + "values": [ + null, + false + ] } }, { - "at": "/code", + "at": "/value/entries/46/directory", "optional": false, "rule": { "is": "equal", - "value": "InvalidQueryParameterValue" + "value": true } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/get-previous-version", - "profile": "azure-hns", - "lane": "core", - "purpose": "get previous version", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "key": "object-tests/versions-mtypy4jp/object.txt", - "op": "get", - "version": "none-1" - }, - "exchanges": [ - { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/versions-mtypy4jp/object.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/query/versionid", - "optional": false, - "rule": { - "is": "equal", - "value": "none-1" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 400, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - } - }, - "body": { - "encoding": "utf8", - "data": "InvalidQueryParameterValueFixture error" - } - } - } - ] - } - ], - "expect": [ + }, { - "at": "/outcome", + "at": "/value/entries/47/key", "optional": false, "rule": { "is": "equal", - "value": "error" + "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" } }, { - "at": "/status", + "at": "/value/entries/47/size", "optional": false, "rule": { "is": "equal", - "value": 400 + "value": 0 } }, { - "at": "/code", + "at": "/value/entries/47/etag", "optional": false, "rule": { "is": "equal", - "value": "InvalidQueryParameterValue" + "value": "fixture-548645ff94c6" } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/get-range-inverted", - "profile": "azure-hns", - "lane": "core", - "purpose": "get range inverted", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "key": "object-tests/read/object.txt", - "op": "get", - "range": { - "end": 2, - "start": 6 - } - }, - "exchanges": [ + }, { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/read/object.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/headers/range", - "optional": false, - "rule": { - "is": "equal", - "value": "bytes=6-1" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-md5": "H1VC0PNTmj+yaCRN4U931g==", - "content-type": "application/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-5295cdfd25ff\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true" - }, - "body": { - "encoding": "base64", - "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" - } - } - }, - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/read/object.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/headers/x-ms-range", - "optional": false, - "rule": { - "is": "equal", - "value": "bytes=6-1" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-md5": "H1VC0PNTmj+yaCRN4U931g==", - "content-type": "application/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-5295cdfd25ff\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true" - }, - "body": { - "encoding": "base64", - "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" - } - } - } - ] - } - ], - "expect": [ + "at": "/value/entries/47/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/47/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/47/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, { - "at": "/outcome", + "at": "/value/entries/47/directory", "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": true } }, { - "at": "/value/etag", + "at": "/value/entries/48/key", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-5295cdfd25ff\"" + "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" } }, { - "at": "/value/size", + "at": "/value/entries/48/size", "optional": false, "rule": { "is": "equal", - "value": 30 + "value": 0 } }, { - "at": "/value/content_type", + "at": "/value/entries/48/etag", "optional": false, "rule": { "is": "equal", - "value": "application/octet-stream" + "value": "fixture-b21f6737ba6c" } }, { - "at": "/value/content_md5_base64", - "optional": false, + "at": "/value/entries/48/snapshot", + "optional": true, "rule": { - "is": "equal", - "value": "H1VC0PNTmj+yaCRN4U931g==" + "is": "one_of", + "values": [ + null, + "" + ] } }, { - "at": "/value/version", + "at": "/value/entries/48/version", "optional": true, "rule": { "is": "one_of", @@ -44994,372 +74152,180 @@ } }, { - "at": "/value/body_base64", + "at": "/value/entries/48/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/48/directory", "optional": false, "rule": { "is": "equal", - "value": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + "value": true } - } - ], - "refusal": [ + }, { - "at": "/outcome", + "at": "/value/entries/49/key", "optional": false, "rule": { "is": "equal", - "value": "refused" + "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" } }, { - "at": "/kind", + "at": "/value/entries/49/size", "optional": false, "rule": { - "is": "matches", - "pattern": ".+" + "is": "equal", + "value": 0 } }, { - "at": "/parameter", + "at": "/value/entries/49/etag", "optional": false, "rule": { "is": "equal", - "value": "range" + "value": "fixture-23eb881b6618" } - } - ], - "decline_permitted": true - }, - { - "id": "operations/azure-hns/get-range-not-satisfiable", - "profile": "azure-hns", - "lane": "core", - "purpose": "get range not satisfiable", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "key": "object-tests/read/object.txt", - "op": "get", - "range": { - "start": 40 - } - }, - "exchanges": [ + }, { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/read/object.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/headers/range", - "optional": false, - "rule": { - "is": "equal", - "value": "bytes=40-" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 416, - "headers": { - "content-range": "bytes */30", - "content-type": "application/xml", - "date": { - "from": "now" - }, - "x-ms-error-code": "InvalidRange" - }, - "body": { - "encoding": "utf8", - "data": "InvalidRangeFixture error" - } - } - }, - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/read/object.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/headers/x-ms-range", - "optional": false, - "rule": { - "is": "equal", - "value": "bytes=40-" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 416, - "headers": { - "content-range": "bytes */30", - "content-type": "application/xml", - "date": { - "from": "now" - }, - "x-ms-error-code": "InvalidRange" - }, - "body": { - "encoding": "utf8", - "data": "InvalidRangeFixture error" - } - } - } - ] - } - ], - "expect": [ + "at": "/value/entries/49/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, { - "at": "/outcome", + "at": "/value/entries/49/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/49/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/49/directory", "optional": false, "rule": { "is": "equal", - "value": "error" + "value": true } }, { - "at": "/status", + "at": "/value/entries/50/key", "optional": false, "rule": { "is": "equal", - "value": 416 + "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" } }, { - "at": "/code", + "at": "/value/entries/50/size", "optional": false, "rule": { "is": "equal", - "value": "InvalidRange" + "value": 0 } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/get-range-past-the-end", - "profile": "azure-hns", - "lane": "core", - "purpose": "get range past the end", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "key": "object-tests/read/object.txt", - "op": "get", - "range": { - "end": 64, - "start": 28 - } - }, - "exchanges": [ + }, { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/read/object.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/headers/range", - "optional": false, - "rule": { - "is": "equal", - "value": "bytes=28-63" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 206, - "headers": { - "content-range": "bytes 28-29/30", - "content-type": "application/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-5295cdfd25ff\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true" - }, - "body": { - "encoding": "base64", - "data": "Y3Q=" - } - } - }, - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/read/object.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/headers/x-ms-range", - "optional": false, - "rule": { - "is": "equal", - "value": "bytes=28-63" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 206, - "headers": { - "content-range": "bytes 28-29/30", - "content-type": "application/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-5295cdfd25ff\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true" - }, - "body": { - "encoding": "base64", - "data": "Y3Q=" - } - } - } - ] - } - ], - "expect": [ + "at": "/value/entries/50/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-02c3be7f3363" + } + }, { - "at": "/outcome", + "at": "/value/entries/50/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/50/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/50/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/50/directory", "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": true } }, { - "at": "/value/etag", + "at": "/value/entries/51/key", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-5295cdfd25ff\"" + "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" } }, { - "at": "/value/size", + "at": "/value/entries/51/size", "optional": false, "rule": { "is": "equal", - "value": 2 + "value": 0 } }, { - "at": "/value/content_type", + "at": "/value/entries/51/etag", "optional": false, "rule": { "is": "equal", - "value": "application/octet-stream" + "value": "fixture-86bca962bd30" } }, { - "at": "/value/version", + "at": "/value/entries/51/snapshot", "optional": true, "rule": { "is": "one_of", @@ -45370,191 +74336,61 @@ } }, { - "at": "/value/body_base64", - "optional": false, + "at": "/value/entries/51/version", + "optional": true, "rule": { - "is": "equal", - "value": "Y3Q=" + "is": "one_of", + "values": [ + null, + "" + ] } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/get-range-single-byte", - "profile": "azure-hns", - "lane": "core", - "purpose": "get range single byte", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "key": "object-tests/read/object.txt", - "op": "get", - "range": { - "end": 1, - "start": 0 - } - }, - "exchanges": [ + }, { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/read/object.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/headers/range", - "optional": false, - "rule": { - "is": "equal", - "value": "bytes=0-0" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 206, - "headers": { - "content-range": "bytes 0-0/30", - "content-type": "application/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-5295cdfd25ff\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true" - }, - "body": { - "encoding": "base64", - "data": "MA==" - } - } - }, - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/read/object.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/headers/x-ms-range", - "optional": false, - "rule": { - "is": "equal", - "value": "bytes=0-0" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 206, - "headers": { - "content-range": "bytes 0-0/30", - "content-type": "application/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-5295cdfd25ff\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true" - }, - "body": { - "encoding": "base64", - "data": "MA==" - } - } - } - ] - } - ], - "expect": [ + "at": "/value/entries/51/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, { - "at": "/outcome", + "at": "/value/entries/51/directory", "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": true } }, { - "at": "/value/etag", + "at": "/value/entries/52/key", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-5295cdfd25ff\"" + "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" } }, { - "at": "/value/size", + "at": "/value/entries/52/size", "optional": false, "rule": { "is": "equal", - "value": 1 + "value": 0 } }, { - "at": "/value/content_type", + "at": "/value/entries/52/etag", "optional": false, "rule": { "is": "equal", - "value": "application/octet-stream" + "value": "fixture-1696791242e8" } }, { - "at": "/value/version", + "at": "/value/entries/52/snapshot", "optional": true, "rule": { "is": "one_of", @@ -45565,191 +74401,61 @@ } }, { - "at": "/value/body_base64", - "optional": false, + "at": "/value/entries/52/version", + "optional": true, "rule": { - "is": "equal", - "value": "MA==" + "is": "one_of", + "values": [ + null, + "" + ] } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/get-range", - "profile": "azure-hns", - "lane": "core", - "purpose": "get range", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "key": "object-tests/read/object.txt", - "op": "get", - "range": { - "end": 6, - "start": 2 - } - }, - "exchanges": [ + }, { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/read/object.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/headers/range", - "optional": false, - "rule": { - "is": "equal", - "value": "bytes=2-5" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 206, - "headers": { - "content-range": "bytes 2-5/30", - "content-type": "application/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-5295cdfd25ff\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true" - }, - "body": { - "encoding": "base64", - "data": "MjM0NQ==" - } - } - }, - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/read/object.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/headers/x-ms-range", - "optional": false, - "rule": { - "is": "equal", - "value": "bytes=2-5" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 206, - "headers": { - "content-range": "bytes 2-5/30", - "content-type": "application/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-5295cdfd25ff\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true" - }, - "body": { - "encoding": "base64", - "data": "MjM0NQ==" - } - } - } - ] - } - ], - "expect": [ + "at": "/value/entries/52/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, { - "at": "/outcome", + "at": "/value/entries/52/directory", "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": true } }, { - "at": "/value/etag", + "at": "/value/entries/53/key", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-5295cdfd25ff\"" + "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" } }, { - "at": "/value/size", + "at": "/value/entries/53/size", "optional": false, "rule": { "is": "equal", - "value": 4 + "value": 0 } }, { - "at": "/value/content_type", + "at": "/value/entries/53/etag", "optional": false, "rule": { "is": "equal", - "value": "application/octet-stream" + "value": "fixture-b40699a1e1db" } }, { - "at": "/value/version", + "at": "/value/entries/53/snapshot", "optional": true, "rule": { "is": "one_of", @@ -45760,284 +74466,126 @@ } }, { - "at": "/value/body_base64", + "at": "/value/entries/53/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/53/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/53/directory", "optional": false, "rule": { "is": "equal", - "value": "MjM0NQ==" + "value": true } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/get-range-open", - "profile": "azure-hns", - "lane": "core", - "purpose": "get range open", - "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/get-blob" - ], - "call": { - "key": "object", - "op": "get", - "range": { - "start": 3 - } - }, - "exchanges": [ + }, { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/headers/range", - "optional": false, - "rule": { - "is": "equal", - "value": "bytes=3-" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 206, - "headers": { - "content-range": "bytes 3-4/5", - "content-type": "application/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-etag\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-request-id": "fixture-request-id", - "x-ms-request-server-encrypted": "true", - "x-ms-server-encrypted": "true", - "x-ms-version": "2023-11-03" - }, - "body": { - "encoding": "base64", - "data": "bG8=" - } - } - }, - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/headers/x-ms-range", - "optional": false, - "rule": { - "is": "equal", - "value": "bytes=3-" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 206, - "headers": { - "content-range": "bytes 3-4/5", - "content-type": "application/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-etag\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-request-id": "fixture-request-id", - "x-ms-request-server-encrypted": "true", - "x-ms-server-encrypted": "true", - "x-ms-version": "2023-11-03" - }, - "body": { - "encoding": "base64", - "data": "bG8=" - } - } - } - ] - } - ], - "expect": [ + "at": "/value/entries/54/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" + } + }, { - "at": "/outcome", + "at": "/value/entries/54/size", + "optional": false, + "rule": { + "is": "equal", + "value": 0 + } + }, + { + "at": "/value/entries/54/etag", "optional": false, "rule": { - "is": "equal", - "value": "ok" + "is": "equal", + "value": "fixture-d3fa18807e94" + } + }, + { + "at": "/value/entries/54/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/54/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] } }, { - "at": "/value/body_base64", - "optional": false, + "at": "/value/entries/54/is_current_version", + "optional": true, "rule": { - "is": "equal", - "value": "bG8=" + "is": "one_of", + "values": [ + null, + false + ] } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/get-reordered", - "profile": "azure-hns", - "lane": "core", - "purpose": "get reordered", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "key": "object-tests/multipart/reordered.bin", - "op": "get" - }, - "exchanges": [ - { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/multipart/reordered.bin" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-type": "application/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-446301cfeaef\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true" - }, - "body": { - "encoding": "base64", - "data": "c2Vjb25kZmlyc3Q=" - } - } - } - ] - } - ], - "expect": [ + }, { - "at": "/outcome", + "at": "/value/entries/54/directory", "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": true } }, { - "at": "/value/etag", + "at": "/value/entries/55/key", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-446301cfeaef\"" + "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" } }, { - "at": "/value/size", + "at": "/value/entries/55/size", "optional": false, "rule": { "is": "equal", - "value": 11 + "value": 0 } }, { - "at": "/value/content_type", + "at": "/value/entries/55/etag", "optional": false, "rule": { "is": "equal", - "value": "application/octet-stream" + "value": "fixture-d55c43fd1f89" } }, { - "at": "/value/version", + "at": "/value/entries/55/snapshot", "optional": true, "rule": { "is": "one_of", @@ -46048,119 +74596,61 @@ } }, { - "at": "/value/body_base64", - "optional": false, + "at": "/value/entries/55/version", + "optional": true, "rule": { - "is": "equal", - "value": "c2Vjb25kZmlyc3Q=" + "is": "one_of", + "values": [ + null, + "" + ] } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/get-replacement", - "profile": "azure-hns", - "lane": "core", - "purpose": "get replacement", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "key": "object-tests/multipart/replaced.bin", - "op": "get" - }, - "exchanges": [ + }, { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/multipart/replaced.bin" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-type": "application/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-9c5e55ff559c\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true" - }, - "body": { - "encoding": "base64", - "data": "RklSU1Q=" - } - } - } - ] - } - ], - "expect": [ + "at": "/value/entries/55/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, { - "at": "/outcome", + "at": "/value/entries/55/directory", "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": true } }, { - "at": "/value/etag", + "at": "/value/entries/56/key", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-9c5e55ff559c\"" + "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" } }, { - "at": "/value/size", + "at": "/value/entries/56/size", "optional": false, "rule": { "is": "equal", - "value": 5 + "value": 0 } }, { - "at": "/value/content_type", + "at": "/value/entries/56/etag", "optional": false, "rule": { "is": "equal", - "value": "application/octet-stream" + "value": "fixture-989ce64e20d6" } }, { - "at": "/value/version", + "at": "/value/entries/56/snapshot", "optional": true, "rule": { "is": "one_of", @@ -46171,219 +74661,139 @@ } }, { - "at": "/value/body_base64", + "at": "/value/entries/56/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/56/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/56/directory", "optional": false, "rule": { "is": "equal", - "value": "RklSU1Q=" + "value": true } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/get-snapshot", - "profile": "azure-hns", - "lane": "core", - "purpose": "get snapshot", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "key": "object-tests/snapshots/object.txt", - "op": "get", - "snapshot": "2024-01-01T00:00:00.1577201Z" - }, - "exchanges": [ - { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/snapshots/object.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/query/snapshot", - "optional": false, - "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.1577201Z" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 404, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - }, - "x-ms-error-code": "BlobNotFound" - }, - "body": { - "encoding": "utf8", - "data": "BlobNotFoundFixture error" - } - } - } - ] - } - ], - "expect": [ + }, { - "at": "/outcome", + "at": "/value/entries/57/key", "optional": false, "rule": { "is": "equal", - "value": "error" + "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" } }, { - "at": "/status", + "at": "/value/entries/57/size", "optional": false, "rule": { "is": "equal", - "value": 404 + "value": 1 } }, { - "at": "/code", + "at": "/value/entries/57/etag", "optional": false, "rule": { "is": "equal", - "value": "BlobNotFound" + "value": "fixture-e6b534521353" } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/get-staged-only", - "profile": "azure-hns", - "lane": "core", - "purpose": "get staged only", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "key": "object-tests/multipart/staged.bin", - "op": "get" - }, - "exchanges": [ + }, { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/multipart/staged.bin" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 404, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - }, - "x-ms-error-code": "BlobNotFound" - }, - "body": { - "encoding": "utf8", - "data": "BlobNotFoundFixture error" - } - } - } - ] - } - ], - "expect": [ + "at": "/value/entries/57/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, { - "at": "/outcome", + "at": "/value/entries/57/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/57/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/57/content_md5_base64", "optional": false, "rule": { "is": "equal", - "value": "error" + "value": "xMpCOKC5I4INzFCab3WEmw==" } }, { - "at": "/status", + "at": "/value/entries", "optional": false, "rule": { - "is": "equal", - "value": 404 + "is": "array_length", + "value": 58 } }, { - "at": "/code", + "at": "/value/prefixes", + "optional": false, + "rule": { + "is": "array_length", + "value": 0 + } + }, + { + "at": "/value/continuation_token", "optional": false, "rule": { "is": "equal", - "value": "BlobNotFound" + "value": "" } } ], "refusal": null }, { - "id": "operations/azure-hns/get-suffix-longer-than-object", + "id": "operations/azure-hns/list-max-keys-zero", "profile": "azure-hns", "lane": "core", - "purpose": "get suffix longer than object", + "purpose": "list max keys zero", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "key": "object-tests/read/object.txt", - "op": "get", - "range": { - "suffix": 100 - } + "op": "list_page", + "page_size": 0, + "prefix": "object-tests/board/" }, "exchanges": [ { @@ -46403,7 +74813,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "/fixture" } }, { @@ -46415,94 +74825,52 @@ } }, { - "at": "/headers/range", - "optional": false, - "rule": { - "is": "equal", - "value": "bytes=-100" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-md5": "H1VC0PNTmj+yaCRN4U931g==", - "content-type": "application/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-5295cdfd25ff\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true" - }, - "body": { - "encoding": "base64", - "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" - } - } - }, - { - "request": [ - { - "at": "/method", + "at": "/query/restype", "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "container" } }, { - "at": "/path", + "at": "/query/comp", "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "list" } }, { - "at": "/body_base64", + "at": "/query/prefix", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "object-tests/board/" } }, { - "at": "/headers/x-ms-range", + "at": "/query/maxresults", "optional": false, "rule": { "is": "equal", - "value": "bytes=-100" + "value": "0" } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 200, + "status": 400, "headers": { - "content-md5": "H1VC0PNTmj+yaCRN4U931g==", - "content-type": "application/octet-stream", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-5295cdfd25ff\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true" + "x-ms-error-code": "OutOfRangeQueryParameterValue" }, "body": { - "encoding": "base64", - "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + "encoding": "utf8", + "data": "OutOfRangeQueryParameterValueFixture error" } } } @@ -46515,58 +74883,23 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-5295cdfd25ff\"" - } - }, - { - "at": "/value/size", - "optional": false, - "rule": { - "is": "equal", - "value": 30 - } - }, - { - "at": "/value/content_type", - "optional": false, - "rule": { - "is": "equal", - "value": "application/octet-stream" + "value": "error" } }, { - "at": "/value/content_md5_base64", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "H1VC0PNTmj+yaCRN4U931g==" - } - }, - { - "at": "/value/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "value": 400 } }, { - "at": "/value/body_base64", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + "value": "OutOfRangeQueryParameterValue" } } ], @@ -46592,26 +74925,41 @@ "optional": false, "rule": { "is": "equal", - "value": "range" + "value": "page_size" + } + }, + { + "at": "/status", + "optional": true, + "rule": { + "is": "equal", + "value": 400 + } + }, + { + "at": "/code", + "optional": true, + "rule": { + "is": "equal", + "value": "OutOfRangeQueryParameterValue" } } - ], - "decline_permitted": true + ] }, { - "id": "operations/azure-hns/get-suffix", + "id": "operations/azure-hns/list-metadata", "profile": "azure-hns", "lane": "core", - "purpose": "get suffix", + "purpose": "list metadata", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "key": "object-tests/read/object.txt", - "op": "get", - "range": { - "suffix": 6 - } + "include": [ + "metadata" + ], + "op": "list_page", + "prefix": "object-tests/metadata-listed/" }, "exchanges": [ { @@ -46631,7 +74979,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "/fixture" } }, { @@ -46643,70 +74991,35 @@ } }, { - "at": "/headers/range", - "optional": false, - "rule": { - "is": "equal", - "value": "bytes=-6" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-md5": "H1VC0PNTmj+yaCRN4U931g==", - "content-type": "application/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-5295cdfd25ff\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true" - }, - "body": { - "encoding": "base64", - "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" - } - } - }, - { - "request": [ - { - "at": "/method", + "at": "/query/restype", "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "container" } }, { - "at": "/path", + "at": "/query/comp", "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "list" } }, { - "at": "/body_base64", + "at": "/query/prefix", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "object-tests/metadata-listed/" } }, { - "at": "/headers/x-ms-range", + "at": "/query/include", "optional": false, "rule": { "is": "equal", - "value": "bytes=-6" + "value": "metadata" } } ], @@ -46715,23 +75028,18 @@ "response": { "status": 200, "headers": { - "content-md5": "H1VC0PNTmj+yaCRN4U931g==", - "content-type": "application/octet-stream", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-5295cdfd25ff\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true" + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" - } + "encoding": "utf8", + "data": "object-tests/metadata-listed/object-tests/metadata-listed/plain.txtMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-a2cc4a9b7156file1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/metadata-listed/shadowed.txtMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-3471a2a78a02file1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletruex" + }, + "framing": "chunked" } } ] @@ -46747,39 +75055,42 @@ } }, { - "at": "/value/etag", + "at": "/value/entries/0/key", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-5295cdfd25ff\"" + "value": "object-tests/metadata-listed/plain.txt" } }, { - "at": "/value/size", + "at": "/value/entries/0/size", "optional": false, "rule": { "is": "equal", - "value": 30 + "value": 1 } }, { - "at": "/value/content_type", + "at": "/value/entries/0/etag", "optional": false, "rule": { "is": "equal", - "value": "application/octet-stream" + "value": "fixture-a2cc4a9b7156" } }, { - "at": "/value/content_md5_base64", - "optional": false, + "at": "/value/entries/0/snapshot", + "optional": true, "rule": { - "is": "equal", - "value": "H1VC0PNTmj+yaCRN4U931g==" + "is": "one_of", + "values": [ + null, + "" + ] } }, { - "at": "/value/version", + "at": "/value/entries/0/version", "optional": true, "rule": { "is": "one_of", @@ -46790,341 +75101,150 @@ } }, { - "at": "/value/body_base64", - "optional": false, + "at": "/value/entries/0/is_current_version", + "optional": true, "rule": { - "is": "equal", - "value": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + "is": "one_of", + "values": [ + null, + false + ] } - } - ], - "refusal": [ + }, { - "at": "/outcome", + "at": "/value/entries/0/content_md5_base64", "optional": false, "rule": { "is": "equal", - "value": "refused" + "value": "xMpCOKC5I4INzFCab3WEmw==" } }, { - "at": "/kind", + "at": "/value/entries/1/key", "optional": false, "rule": { - "is": "matches", - "pattern": ".+" + "is": "equal", + "value": "object-tests/metadata-listed/shadowed.txt" } }, { - "at": "/parameter", + "at": "/value/entries/1/size", "optional": false, "rule": { "is": "equal", - "value": "range" + "value": 1 } - } - ], - "decline_permitted": true - }, - { - "id": "operations/azure-hns/get-unauthenticated", - "profile": "azure-hns", - "lane": "core", - "purpose": "Report the service authorization error for this operation; signature acceptance is tested separately.", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "key": "object-tests/read/object.txt", - "op": "get" - }, - "exchanges": [ - { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/read/object.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 401, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - }, - "x-ms-error-code": "InvalidAuthenticationInfo" - }, - "body": { - "encoding": "utf8", - "data": "InvalidAuthenticationInfoFixture error" - } - } - } - ] - } - ], - "expect": [ + }, { - "at": "/outcome", + "at": "/value/entries/1/etag", "optional": false, "rule": { "is": "equal", - "value": "error" + "value": "fixture-3471a2a78a02" } }, { - "at": "/status", - "optional": false, + "at": "/value/entries/1/snapshot", + "optional": true, "rule": { - "is": "equal", - "value": 401 + "is": "one_of", + "values": [ + null, + "" + ] } }, { - "at": "/code", - "optional": false, + "at": "/value/entries/1/version", + "optional": true, "rule": { - "is": "equal", - "value": "InvalidAuthenticationInfo" + "is": "one_of", + "values": [ + null, + "" + ] } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/get-unknown-snapshot", - "profile": "azure-hns", - "lane": "core", - "purpose": "get unknown snapshot", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "key": "object-tests/snapshots/object.txt", - "op": "get", - "snapshot": "2024-01-01T00:00:00.4364169Z" - }, - "exchanges": [ + }, { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/snapshots/object.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/query/snapshot", - "optional": false, - "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.4364169Z" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 404, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - }, - "x-ms-error-code": "BlobNotFound" - }, - "body": { - "encoding": "utf8", - "data": "BlobNotFoundFixture error" - } - } - } - ] - } - ], - "expect": [ + "at": "/value/entries/1/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, { - "at": "/outcome", + "at": "/value/entries/1/content_md5_base64", "optional": false, "rule": { "is": "equal", - "value": "error" + "value": "xMpCOKC5I4INzFCab3WEmw==" } }, { - "at": "/status", + "at": "/value/entries", "optional": false, "rule": { - "is": "equal", - "value": 404 + "is": "array_length", + "value": 2 } }, { - "at": "/code", + "at": "/value/prefixes", "optional": false, "rule": { - "is": "equal", - "value": "BlobNotFound" + "is": "array_length", + "value": 0 } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/get-unknown-version", - "profile": "azure-hns", - "lane": "core", - "purpose": "get unknown version", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "key": "object-tests/versions-mtypy4jp/object.txt", - "op": "get", - "version": "2024-01-01T00:00:00.4364169Z" - }, - "exchanges": [ - { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/versions-mtypy4jp/object.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/query/versionid", - "optional": false, - "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.4364169Z" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 409, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - }, - "x-ms-error-code": "FeatureNotYetSupportedForHierarchicalNamespaceAccounts" - }, - "body": { - "encoding": "utf8", - "data": "FeatureNotYetSupportedForHierarchicalNamespaceAccountsFixture error" - } - } - } - ] - } - ], - "expect": [ + }, { - "at": "/outcome", + "at": "/value/continuation_token", "optional": false, "rule": { "is": "equal", - "value": "error" + "value": "" } }, { - "at": "/status", + "at": "/value/entries/0/metadata", "optional": false, "rule": { "is": "equal", - "value": 409 + "value": { + "label": "c" + } } }, { - "at": "/code", + "at": "/value/entries/1/metadata", "optional": false, "rule": { "is": "equal", - "value": "FeatureNotYetSupportedForHierarchicalNamespaceAccounts" + "value": { + "Metadata": "x", + "label": "b" + } } } ], "refusal": null }, { - "id": "operations/azure-hns/get-whole", + "id": "operations/azure-hns/list-next-page", "profile": "azure-hns", "lane": "core", - "purpose": "get whole", + "purpose": "list next page", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "key": "object-tests/read/object.txt", - "op": "get" + "continuation_token": "fixture-marker+/17aa95c4a402=", + "op": "list_page", + "page_size": 2, + "prefix": "object-tests/board/" }, "exchanges": [ { @@ -47144,7 +75264,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "/fixture" } }, { @@ -47154,6 +75274,46 @@ "is": "equal", "value": "" } + }, + { + "at": "/query/restype", + "optional": false, + "rule": { + "is": "equal", + "value": "container" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "list" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/" + } + }, + { + "at": "/query/maxresults", + "optional": false, + "rule": { + "is": "equal", + "value": "2" + } + }, + { + "at": "/query/marker", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-marker+/17aa95c4a402=" + } } ], "allow_headers": [], @@ -47161,23 +75321,18 @@ "response": { "status": 200, "headers": { - "content-md5": "H1VC0PNTmj+yaCRN4U931g==", - "content-type": "application/octet-stream", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-5295cdfd25ff\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true" + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" - } + "encoding": "utf8", + "data": "object-tests/board/fixture-marker+/17aa95c4a402=2object-tests/board/nested/c.txtMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-4125625a1056file1application/octet-streamSooI8J03tzeVZJA4QItfMw==BlockBlobHottrueunlockedavailabletrueobject-tests/board/z.txtMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-0d608f7e2d51file2application/octet-streamJe0by0I7C3IA9IX8X/ccjg==BlockBlobHottrueunlockedavailabletrue" + }, + "framing": "chunked" } } ] @@ -47193,39 +75348,96 @@ } }, { - "at": "/value/etag", + "at": "/value/entries/0/key", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-5295cdfd25ff\"" + "value": "object-tests/board/nested/c.txt" } }, { - "at": "/value/size", + "at": "/value/entries/0/size", "optional": false, "rule": { "is": "equal", - "value": 30 + "value": 1 } }, { - "at": "/value/content_type", + "at": "/value/entries/0/etag", "optional": false, "rule": { "is": "equal", - "value": "application/octet-stream" + "value": "fixture-4125625a1056" } }, { - "at": "/value/content_md5_base64", + "at": "/value/entries/0/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/0/content_md5_base64", "optional": false, "rule": { "is": "equal", - "value": "H1VC0PNTmj+yaCRN4U931g==" + "value": "SooI8J03tzeVZJA4QItfMw==" } }, { - "at": "/value/version", + "at": "/value/entries/1/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/z.txt" + } + }, + { + "at": "/value/entries/1/size", + "optional": false, + "rule": { + "is": "equal", + "value": 2 + } + }, + { + "at": "/value/entries/1/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-0d608f7e2d51" + } + }, + { + "at": "/value/entries/1/snapshot", "optional": true, "rule": { "is": "one_of", @@ -47236,119 +75448,74 @@ } }, { - "at": "/value/body_base64", + "at": "/value/entries/1/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/1/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/1/content_md5_base64", "optional": false, "rule": { "is": "equal", - "value": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + "value": "Je0by0I7C3IA9IX8X/ccjg==" } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/get-xml-looking", - "profile": "azure-hns", - "lane": "core", - "purpose": "get xml looking", - "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/get-blob" - ], - "call": { - "key": "object", - "op": "get" - }, - "exchanges": [ + }, { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-type": "application/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-etag\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-request-id": "fixture-request-id", - "x-ms-request-server-encrypted": "true", - "x-ms-server-encrypted": "true", - "x-ms-version": "2023-11-03" - }, - "body": { - "encoding": "base64", - "data": "PEVycm9yPnN0aWxsIG9iamVjdCBieXRlczwvRXJyb3I+" - } - } - } - ] - } - ], - "expect": [ + "at": "/value/entries", + "optional": false, + "rule": { + "is": "array_length", + "value": 2 + } + }, { - "at": "/outcome", + "at": "/value/prefixes", "optional": false, "rule": { - "is": "equal", - "value": "ok" + "is": "array_length", + "value": 0 } }, { - "at": "/value/body_base64", + "at": "/value/continuation_token", "optional": false, "rule": { "is": "equal", - "value": "PEVycm9yPnN0aWxsIG9iamVjdCBieXRlczwvRXJyb3I+" + "value": "" } } ], "refusal": null }, { - "id": "operations/azure-hns/get-noise-tolerance", + "id": "operations/azure-hns/list-pagination", "profile": "azure-hns", "lane": "core", - "purpose": "get noise tolerance", + "purpose": "list pagination", "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/get-blob" + "https://learn.microsoft.com/en-us/rest/api/storageservices/list-blobs" ], - "origin": "constructed", "call": { - "key": "object", - "op": "get" + "op": "list", + "page_size": 1, + "prefix": "" }, "exchanges": [ { @@ -47368,7 +75535,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object" + "value": "/fixture" } }, { @@ -47378,100 +75545,38 @@ "is": "equal", "value": "" } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-type": "application/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"a-different-etag\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-fixture-unknown": "ignored", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-request-id": "another-id", - "x-ms-request-server-encrypted": "true", - "x-ms-server-encrypted": "true", - "x-ms-version": "2023-11-03" }, - "body": { - "encoding": "base64", - "data": "aGVsbG8=" - } - } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "aGVsbG8=" - } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/get-body-cut-short", - "profile": "azure-hns", - "lane": "core", - "purpose": "Report a body that ends before its Content-Length as an error, or resume it, but never return the short body", - "sources": [ - "https://www.rfc-editor.org/rfc/rfc9112#section-8", - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_client.cpp" - ], - "origin": "transient", - "call": { - "key": "object-tests/read/object.txt", - "op": "get" - }, - "exchanges": [ - { - "alternatives": [ - { - "request": [ { - "at": "/method", + "at": "/query/restype", "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "container" } }, { - "at": "/path", + "at": "/query/comp", "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "list" } }, { - "at": "/body_base64", - "optional": false, + "at": "/query/prefix", + "optional": true, "rule": { "is": "equal", "value": "" } + }, + { + "at": "/query/maxresults", + "optional": false, + "rule": { + "is": "equal", + "value": "1" + } } ], "allow_headers": [], @@ -47479,24 +75584,26 @@ "response": { "status": 200, "headers": { - "content-md5": "H1VC0PNTmj+yaCRN4U931g==", - "content-type": "application/octet-stream", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-5295cdfd25ff\"", + "etag": "\"fixture-etag\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", "x-ms-blob-type": "BlockBlob", "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", "x-ms-lease-state": "available", "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true" + "x-ms-request-id": "fixture-request-id", + "x-ms-request-server-encrypted": "true", + "x-ms-server-encrypted": "true", + "x-ms-version": "2023-11-03" }, "body": { "encoding": "base64", - "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + "data": "PEVudW1lcmF0aW9uUmVzdWx0cyBTZXJ2aWNlRW5kcG9pbnQ9Imh0dHA6Ly9maXh0dXJlLyIgQ29udGFpbmVyTmFtZT0iZml4dHVyZSI+PFByZWZpeD48L1ByZWZpeD48QmxvYnM+PEJsb2I+PE5hbWU+Zmlyc3Q8L05hbWU+PFByb3BlcnRpZXM+PExhc3QtTW9kaWZpZWQ+TW9uLCAwMSBKYW4gMjAyNCAwMDowMDowMCBHTVQ8L0xhc3QtTW9kaWZpZWQ+PEV0YWc+ImZpeHR1cmUiPC9FdGFnPjxDb250ZW50LUxlbmd0aD41PC9Db250ZW50LUxlbmd0aD48QmxvYlR5cGU+QmxvY2tCbG9iPC9CbG9iVHlwZT48L1Byb3BlcnRpZXM+PC9CbG9iPjwvQmxvYnM+PE5leHRNYXJrZXI+b3BhcXVlKy89PC9OZXh0TWFya2VyPjwvRW51bWVyYXRpb25SZXN1bHRzPg==" }, - "truncate_body_after": 15 + "framing": "chunked" } } ] @@ -47518,7 +75625,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "/fixture" } }, { @@ -47528,101 +75635,117 @@ "is": "equal", "value": "" } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-md5": "H1VC0PNTmj+yaCRN4U931g==", - "content-type": "application/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-5295cdfd25ff\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true" }, - "body": { - "encoding": "base64", - "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" - } - } - }, - { - "request": [ { - "at": "/method", + "at": "/query/restype", "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "container" } }, { - "at": "/path", + "at": "/query/comp", "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "list" } }, { - "at": "/body_base64", + "at": "/query/marker", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "opaque+/=" } }, { - "at": "/headers/range", - "optional": false, + "at": "/query/prefix", + "optional": true, "rule": { "is": "equal", - "value": "bytes=15-" + "value": "" } }, { - "at": "/headers/if-match", + "at": "/query/maxresults", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-5295cdfd25ff\"" + "value": "1" } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 206, + "status": 200, "headers": { - "content-range": "bytes 15-29/30", - "content-type": "application/octet-stream", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-5295cdfd25ff\"", + "etag": "\"fixture-etag\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", "x-ms-blob-type": "BlockBlob", "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", "x-ms-lease-state": "available", "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true" + "x-ms-request-id": "fixture-request-id", + "x-ms-request-server-encrypted": "true", + "x-ms-server-encrypted": "true", + "x-ms-version": "2023-11-03" }, "body": { "encoding": "base64", - "data": "Y3QtdGVzdHMtb2JqZWN0" - } + "data": "PEVudW1lcmF0aW9uUmVzdWx0cyBTZXJ2aWNlRW5kcG9pbnQ9Imh0dHA6Ly9maXh0dXJlLyIgQ29udGFpbmVyTmFtZT0iZml4dHVyZSI+PFByZWZpeD48L1ByZWZpeD48QmxvYnM+PEJsb2I+PE5hbWU+c2Vjb25kPC9OYW1lPjxQcm9wZXJ0aWVzPjxMYXN0LU1vZGlmaWVkPk1vbiwgMDEgSmFuIDIwMjQgMDA6MDA6MDAgR01UPC9MYXN0LU1vZGlmaWVkPjxFdGFnPiJmaXh0dXJlIjwvRXRhZz48Q29udGVudC1MZW5ndGg+NTwvQ29udGVudC1MZW5ndGg+PEJsb2JUeXBlPkJsb2NrQmxvYjwvQmxvYlR5cGU+PC9Qcm9wZXJ0aWVzPjwvQmxvYj48L0Jsb2JzPjxOZXh0TWFya2VyPjwvTmV4dE1hcmtlcj48L0VudW1lcmF0aW9uUmVzdWx0cz4=" + }, + "framing": "chunked" } - }, + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/keys", + "optional": false, + "rule": { + "is": "equal", + "value": [ + "first", + "second" + ] + } + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/list-order-delimited", + "profile": "azure-hns", + "lane": "core", + "purpose": "list order delimited", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "delimiter": "/", + "op": "list_page", + "prefix": "object-tests/order/" + }, + "exchanges": [ + { + "alternatives": [ { "request": [ { @@ -47638,7 +75761,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "/fixture" } }, { @@ -47650,86 +75773,562 @@ } }, { - "at": "/headers/x-ms-range", + "at": "/query/restype", "optional": false, "rule": { "is": "equal", - "value": "bytes=15-" + "value": "container" } }, { - "at": "/headers/if-match", + "at": "/query/comp", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-5295cdfd25ff\"" + "value": "list" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/order/" + } + }, + { + "at": "/query/delimiter", + "optional": false, + "rule": { + "is": "equal", + "value": "/" } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 206, + "status": 200, "headers": { - "content-range": "bytes 15-29/30", - "content-type": "application/octet-stream", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-5295cdfd25ff\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true" + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "Y3QtdGVzdHMtb2JqZWN0" - } + "encoding": "utf8", + "data": "object-tests/order//object-tests/order/AMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-033751098c10file1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/order/aMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-1450d5552b20file1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/order/a-bMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-179d07a80272file1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/order/a.txtMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-5d99f4a9cbbefile1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/order/a0Mon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-e5b8569421a3file1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/order/bMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-2ccf5ed23a16file1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/order/éMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-cb02153208adfile1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrue" + }, + "framing": "chunked" } } - ], - "optional": true + ] } ], "expect": [ { "at": "/outcome", "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/entries/0/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/order/A" + } + }, + { + "at": "/value/entries/0/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/0/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-033751098c10" + } + }, + { + "at": "/value/entries/0/snapshot", + "optional": true, "rule": { "is": "one_of", "values": [ - "error", - "ok" + null, + "" + ] + } + }, + { + "at": "/value/entries/0/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/0/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "xMpCOKC5I4INzFCab3WEmw==" + } + }, + { + "at": "/value/entries/1/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/order/a" + } + }, + { + "at": "/value/entries/1/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/1/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-1450d5552b20" + } + }, + { + "at": "/value/entries/1/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/1/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/1/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/1/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "xMpCOKC5I4INzFCab3WEmw==" + } + }, + { + "at": "/value/entries/2/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/order/a-b" + } + }, + { + "at": "/value/entries/2/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/2/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-179d07a80272" + } + }, + { + "at": "/value/entries/2/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/2/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/2/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/2/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "xMpCOKC5I4INzFCab3WEmw==" + } + }, + { + "at": "/value/entries/3/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/order/a.txt" + } + }, + { + "at": "/value/entries/3/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/3/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-5d99f4a9cbbe" + } + }, + { + "at": "/value/entries/3/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/3/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/3/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/3/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "xMpCOKC5I4INzFCab3WEmw==" + } + }, + { + "at": "/value/entries/4/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/order/a0" + } + }, + { + "at": "/value/entries/4/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/4/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-e5b8569421a3" + } + }, + { + "at": "/value/entries/4/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/4/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/4/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/4/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "xMpCOKC5I4INzFCab3WEmw==" + } + }, + { + "at": "/value/entries/5/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/order/b" + } + }, + { + "at": "/value/entries/5/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/5/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-2ccf5ed23a16" + } + }, + { + "at": "/value/entries/5/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/5/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/5/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/5/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "xMpCOKC5I4INzFCab3WEmw==" + } + }, + { + "at": "/value/entries/6/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/order/é" + } + }, + { + "at": "/value/entries/6/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/6/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-cb02153208ad" + } + }, + { + "at": "/value/entries/6/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/6/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/6/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false ] } }, { - "at": "/value/body_base64", - "optional": true, + "at": "/value/entries/6/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "xMpCOKC5I4INzFCab3WEmw==" + } + }, + { + "at": "/value/entries", + "optional": false, + "rule": { + "is": "array_length", + "value": 7 + } + }, + { + "at": "/value/prefixes", + "optional": false, + "rule": { + "is": "array_length", + "value": 0 + } + }, + { + "at": "/value/continuation_token", + "optional": false, "rule": { "is": "equal", - "value": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + "value": "" } } ], "refusal": null }, { - "id": "operations/azure-hns/get-server-busy", + "id": "operations/azure-hns/list-order", "profile": "azure-hns", "lane": "core", - "purpose": "Report a 503 ServerBusy answer as an error, after at most 5 retries", + "purpose": "list order", "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/common-rest-api-error-codes", - "https://learn.microsoft.com/en-us/rest/api/storageservices/blob-service-error-codes" + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], - "origin": "transient", "call": { - "key": "object-tests/read/object.txt", - "op": "get" + "op": "list_page", + "prefix": "object-tests/order/" }, "exchanges": [ { @@ -47749,7 +76348,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "/fixture" } }, { @@ -47759,412 +76358,556 @@ "is": "equal", "value": "" } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 503, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - }, - "x-ms-error-code": "ServerBusy" }, - "body": { - "encoding": "utf8", - "data": "ServerBusyThe server is currently unable to receive requests. Please retry your request." - } - } - } - ] - }, - { - "alternatives": [ - { - "request": [ { - "at": "/method", + "at": "/query/restype", "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "container" } }, { - "at": "/path", + "at": "/query/comp", "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "list" } }, { - "at": "/body_base64", + "at": "/query/prefix", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "object-tests/order/" } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 503, + "status": 200, "headers": { "content-type": "application/xml", "date": { "from": "now" }, - "x-ms-error-code": "ServerBusy" + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "utf8", - "data": "ServerBusyThe server is currently unable to receive requests. Please retry your request." - } + "data": "object-tests/order/object-tests/order/AMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-033751098c10file1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/order/aMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-1450d5552b20file1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/order/a-bMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-179d07a80272file1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/order/a.txtMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-5d99f4a9cbbefile1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/order/a0Mon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-e5b8569421a3file1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/order/bMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-2ccf5ed23a16file1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/order/éMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-cb02153208adfile1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrue" + }, + "framing": "chunked" } } - ], - "optional": true + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } }, { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/read/object.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 503, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - }, - "x-ms-error-code": "ServerBusy" - }, - "body": { - "encoding": "utf8", - "data": "ServerBusyThe server is currently unable to receive requests. Please retry your request." - } - } - } - ], - "optional": true + "at": "/value/entries/0/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/order/A" + } }, { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/read/object.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 503, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - }, - "x-ms-error-code": "ServerBusy" - }, - "body": { - "encoding": "utf8", - "data": "ServerBusyThe server is currently unable to receive requests. Please retry your request." - } - } - } - ], - "optional": true + "at": "/value/entries/0/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } }, { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/read/object.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 503, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - }, - "x-ms-error-code": "ServerBusy" - }, - "body": { - "encoding": "utf8", - "data": "ServerBusyThe server is currently unable to receive requests. Please retry your request." - } - } - } - ], - "optional": true + "at": "/value/entries/0/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-033751098c10" + } }, { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/read/object.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 503, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - }, - "x-ms-error-code": "ServerBusy" - }, - "body": { - "encoding": "utf8", - "data": "ServerBusyThe server is currently unable to receive requests. Please retry your request." - } - } - } - ], - "optional": true - } - ], - "expect": [ + "at": "/value/entries/0/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, { - "at": "/outcome", + "at": "/value/entries/0/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/0/content_md5_base64", "optional": false, "rule": { "is": "equal", - "value": "error" + "value": "xMpCOKC5I4INzFCab3WEmw==" } }, { - "at": "/status", + "at": "/value/entries/1/key", "optional": false, "rule": { "is": "equal", - "value": 503 + "value": "object-tests/order/a" } }, { - "at": "/code", + "at": "/value/entries/1/size", "optional": false, "rule": { "is": "equal", - "value": "ServerBusy" + "value": 1 } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/get-if-unmodified-since-past", - "profile": "azure-hns", - "lane": "core", - "purpose": "Refuse a read with 412 when the object changed after If-Unmodified-Since", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "if_unmodified_since": "Sat, 01 Jan 2000 00:00:00 GMT", - "key": "object-tests/read/object.txt", - "op": "get" - }, - "exchanges": [ + }, { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/read/object.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/headers/if-unmodified-since", - "optional": false, - "rule": { - "is": "equal", - "value": "Sat, 01 Jan 2000 00:00:00 GMT" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 412, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - }, - "x-ms-error-code": "ConditionNotMet" - }, - "body": { - "encoding": "utf8", - "data": "ConditionNotMetFixture error" - } - } - } - ] - } - ], - "expect": [ + "at": "/value/entries/1/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-1450d5552b20" + } + }, { - "at": "/outcome", + "at": "/value/entries/1/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/1/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/1/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/1/content_md5_base64", "optional": false, "rule": { "is": "equal", - "value": "error" + "value": "xMpCOKC5I4INzFCab3WEmw==" } }, { - "at": "/status", + "at": "/value/entries/2/key", "optional": false, "rule": { "is": "equal", - "value": 412 + "value": "object-tests/order/a-b" } }, { - "at": "/code", + "at": "/value/entries/2/size", "optional": false, "rule": { "is": "equal", - "value": "ConditionNotMet" + "value": 1 + } + }, + { + "at": "/value/entries/2/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-179d07a80272" + } + }, + { + "at": "/value/entries/2/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/2/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/2/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/2/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "xMpCOKC5I4INzFCab3WEmw==" + } + }, + { + "at": "/value/entries/3/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/order/a.txt" + } + }, + { + "at": "/value/entries/3/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/3/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-5d99f4a9cbbe" + } + }, + { + "at": "/value/entries/3/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/3/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/3/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/3/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "xMpCOKC5I4INzFCab3WEmw==" + } + }, + { + "at": "/value/entries/4/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/order/a0" + } + }, + { + "at": "/value/entries/4/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/4/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-e5b8569421a3" + } + }, + { + "at": "/value/entries/4/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/4/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/4/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/4/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "xMpCOKC5I4INzFCab3WEmw==" + } + }, + { + "at": "/value/entries/5/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/order/b" + } + }, + { + "at": "/value/entries/5/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/5/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-2ccf5ed23a16" + } + }, + { + "at": "/value/entries/5/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/5/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/5/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/5/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "xMpCOKC5I4INzFCab3WEmw==" + } + }, + { + "at": "/value/entries/6/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/order/é" + } + }, + { + "at": "/value/entries/6/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/6/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-cb02153208ad" + } + }, + { + "at": "/value/entries/6/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/6/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/6/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/6/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "xMpCOKC5I4INzFCab3WEmw==" + } + }, + { + "at": "/value/entries", + "optional": false, + "rule": { + "is": "array_length", + "value": 7 + } + }, + { + "at": "/value/prefixes", + "optional": false, + "rule": { + "is": "array_length", + "value": 0 + } + }, + { + "at": "/value/continuation_token", + "optional": false, + "rule": { + "is": "equal", + "value": "" } } ], "refusal": null }, { - "id": "operations/azure-hns/get-if-modified-since-future", + "id": "operations/azure-hns/list-all-order", "profile": "azure-hns", "lane": "core", - "purpose": "Report 304 when If-Modified-Since names a future date, which Azure does not ignore", + "purpose": "list order", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "https://learn.microsoft.com/en-us/rest/api/storageservices/list-blobs" ], "call": { - "if_modified_since": "Fri, 01 Jan 2100 00:00:00 GMT", - "key": "object-tests/read/object.txt", - "op": "get" + "op": "list", + "prefix": "" }, "exchanges": [ { @@ -48184,7 +76927,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "/fixture" } }, { @@ -48196,27 +76939,55 @@ } }, { - "at": "/headers/if-modified-since", + "at": "/query/restype", "optional": false, "rule": { "is": "equal", - "value": "Fri, 01 Jan 2100 00:00:00 GMT" + "value": "container" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "list" + } + }, + { + "at": "/query/prefix", + "optional": true, + "rule": { + "is": "equal", + "value": "" } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 304, + "status": 200, "headers": { + "content-type": "application/xml", "date": { "from": "now" }, - "x-ms-error-code": "ConditionNotMet" + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-type": "BlockBlob", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-state": "available", + "x-ms-lease-status": "unlocked", + "x-ms-request-id": "fixture-request-id", + "x-ms-request-server-encrypted": "true", + "x-ms-server-encrypted": "true", + "x-ms-version": "2023-11-03" }, "body": { - "encoding": "empty" - } + "encoding": "base64", + "data": "PEVudW1lcmF0aW9uUmVzdWx0cyBTZXJ2aWNlRW5kcG9pbnQ9Imh0dHA6Ly9maXh0dXJlLyIgQ29udGFpbmVyTmFtZT0iZml4dHVyZSI+PFByZWZpeD48L1ByZWZpeD48QmxvYnM+PEJsb2I+PE5hbWU+YTwvTmFtZT48UHJvcGVydGllcz48TGFzdC1Nb2RpZmllZD5Nb24sIDAxIEphbiAyMDI0IDAwOjAwOjAwIEdNVDwvTGFzdC1Nb2RpZmllZD48RXRhZz4iZml4dHVyZSI8L0V0YWc+PENvbnRlbnQtTGVuZ3RoPjU8L0NvbnRlbnQtTGVuZ3RoPjxCbG9iVHlwZT5CbG9ja0Jsb2I8L0Jsb2JUeXBlPjwvUHJvcGVydGllcz48L0Jsb2I+PEJsb2I+PE5hbWU+ejwvTmFtZT48UHJvcGVydGllcz48TGFzdC1Nb2RpZmllZD5Nb24sIDAxIEphbiAyMDI0IDAwOjAwOjAwIEdNVDwvTGFzdC1Nb2RpZmllZD48RXRhZz4iZml4dHVyZSI8L0V0YWc+PENvbnRlbnQtTGVuZ3RoPjU8L0NvbnRlbnQtTGVuZ3RoPjxCbG9iVHlwZT5CbG9ja0Jsb2I8L0Jsb2JUeXBlPjwvUHJvcGVydGllcz48L0Jsb2I+PC9CbG9icz48TmV4dE1hcmtlcj48L05leHRNYXJrZXI+PC9FbnVtZXJhdGlvblJlc3VsdHM+" + }, + "framing": "chunked" } } ] @@ -48228,40 +76999,34 @@ "optional": false, "rule": { "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 304 + "value": "ok" } }, { - "at": "/code", + "at": "/value/keys", "optional": false, "rule": { "is": "equal", - "value": "ConditionNotMet" + "value": [ + "a", + "z" + ] } } ], "refusal": null }, { - "id": "operations/azure-hns/get-if-modified-since-past", + "id": "operations/azure-hns/list-page", "profile": "azure-hns", "lane": "core", - "purpose": "Read an object modified since a past date", + "purpose": "list page", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "if_modified_since": "Sat, 01 Jan 2000 00:00:00 GMT", - "key": "object-tests/read/object.txt", - "op": "get" + "op": "list_page", + "prefix": "object-tests/board/" }, "exchanges": [ { @@ -48281,7 +77046,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "/fixture" } }, { @@ -48293,11 +77058,27 @@ } }, { - "at": "/headers/if-modified-since", + "at": "/query/restype", "optional": false, "rule": { "is": "equal", - "value": "Sat, 01 Jan 2000 00:00:00 GMT" + "value": "container" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "list" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/" } } ], @@ -48306,23 +77087,18 @@ "response": { "status": 200, "headers": { - "content-md5": "H1VC0PNTmj+yaCRN4U931g==", - "content-type": "application/octet-stream", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-5295cdfd25ff\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true" + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" - } + "encoding": "utf8", + "data": "object-tests/board/object-tests/board/a.txtMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-e8a4acb31ab1file8application/octet-streamJdVa0oOqQAr0ZMdtcTwHrQ==BlockBlobHottrueunlockedavailabletrueobject-tests/board/nestedMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-bcf8c9e06f70directory0BlockBlobHottrueunlockedavailabletrueobject-tests/board/nested/c.txtMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-4125625a1056file1application/octet-streamSooI8J03tzeVZJA4QItfMw==BlockBlobHottrueunlockedavailabletrueobject-tests/board/z.txtMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-0d608f7e2d51file2application/octet-streamJe0by0I7C3IA9IX8X/ccjg==BlockBlobHottrueunlockedavailabletrue" + }, + "framing": "chunked" } } ] @@ -48338,39 +77114,42 @@ } }, { - "at": "/value/etag", + "at": "/value/entries/0/key", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-5295cdfd25ff\"" + "value": "object-tests/board/a.txt" } }, { - "at": "/value/size", + "at": "/value/entries/0/size", "optional": false, "rule": { "is": "equal", - "value": 30 + "value": 8 } }, { - "at": "/value/content_type", + "at": "/value/entries/0/etag", "optional": false, "rule": { "is": "equal", - "value": "application/octet-stream" + "value": "fixture-e8a4acb31ab1" } }, { - "at": "/value/content_md5_base64", - "optional": false, + "at": "/value/entries/0/snapshot", + "optional": true, "rule": { - "is": "equal", - "value": "H1VC0PNTmj+yaCRN4U931g==" + "is": "one_of", + "values": [ + null, + "" + ] } }, { - "at": "/value/version", + "at": "/value/entries/0/version", "optional": true, "rule": { "is": "one_of", @@ -48381,129 +77160,61 @@ } }, { - "at": "/value/body_base64", - "optional": false, + "at": "/value/entries/0/is_current_version", + "optional": true, "rule": { - "is": "equal", - "value": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + "is": "one_of", + "values": [ + null, + false + ] } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/get-content-encoding-gzip", - "profile": "azure-hns", - "lane": "core", - "purpose": "Return the stored gzip bytes and Content-Encoding: gzip without decoding them", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "key": "object-tests/read/object.txt", - "op": "get" - }, - "exchanges": [ - { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/read/object.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-encoding": "gzip", - "content-md5": "CVsDGvNMZH4SPA4MSLswrA==", - "content-type": "application/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-5295cdfd25ff\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true" - }, - "body": { - "encoding": "base64", - "data": "H4sIAAAAAAACA0vOzy0oSi0uTk1RyM9TKCgtKsgvTuUCAAHVPIcWAAAA" - } - } - } - ] - } - ], - "expect": [ + }, { - "at": "/outcome", + "at": "/value/entries/0/content_md5_base64", "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "JdVa0oOqQAr0ZMdtcTwHrQ==" } }, { - "at": "/value/etag", + "at": "/value/entries/1/key", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-5295cdfd25ff\"" + "value": "object-tests/board/nested" } }, { - "at": "/value/size", + "at": "/value/entries/1/size", "optional": false, "rule": { "is": "equal", - "value": 42 + "value": 0 } }, { - "at": "/value/content_type", + "at": "/value/entries/1/etag", "optional": false, "rule": { "is": "equal", - "value": "application/octet-stream" + "value": "fixture-bcf8c9e06f70" } }, { - "at": "/value/content_md5_base64", - "optional": false, + "at": "/value/entries/1/snapshot", + "optional": true, "rule": { - "is": "equal", - "value": "CVsDGvNMZH4SPA4MSLswrA==" + "is": "one_of", + "values": [ + null, + "" + ] } }, { - "at": "/value/version", + "at": "/value/entries/1/version", "optional": true, "rule": { "is": "one_of", @@ -48514,131 +77225,61 @@ } }, { - "at": "/value/body_base64", - "optional": false, + "at": "/value/entries/1/is_current_version", + "optional": true, "rule": { - "is": "equal", - "value": "H4sIAAAAAAACA0vOzy0oSi0uTk1RyM9TKCgtKsgvTuUCAAHVPIcWAAAA" + "is": "one_of", + "values": [ + null, + false + ] } }, { - "at": "/value/content_encoding", + "at": "/value/entries/1/directory", "optional": false, "rule": { "is": "equal", - "value": "gzip" + "value": true } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/get-content-properties", - "profile": "azure-hns", - "lane": "core", - "purpose": "Return the stored content properties from a GET", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "key": "object-tests/read/object.txt", - "op": "get" - }, - "exchanges": [ - { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/read/object.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "cache-control": "max-age=3600", - "content-disposition": "attachment; filename=\"report.txt\"", - "content-language": "nl-NL", - "content-md5": "H1VC0PNTmj+yaCRN4U931g==", - "content-type": "text/plain; charset=utf-8", - "date": { - "from": "now" - }, - "etag": "\"fixture-5295cdfd25ff\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true" - }, - "body": { - "encoding": "base64", - "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" - } - } - } - ] - } - ], - "expect": [ + }, { - "at": "/outcome", + "at": "/value/entries/2/key", "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "object-tests/board/nested/c.txt" } }, { - "at": "/value/etag", + "at": "/value/entries/2/size", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-5295cdfd25ff\"" + "value": 1 } }, { - "at": "/value/size", + "at": "/value/entries/2/etag", "optional": false, "rule": { "is": "equal", - "value": 30 + "value": "fixture-4125625a1056" } }, { - "at": "/value/content_md5_base64", - "optional": false, + "at": "/value/entries/2/snapshot", + "optional": true, "rule": { - "is": "equal", - "value": "H1VC0PNTmj+yaCRN4U931g==" + "is": "one_of", + "values": [ + null, + "" + ] } }, { - "at": "/value/version", + "at": "/value/entries/2/version", "optional": true, "rule": { "is": "one_of", @@ -48649,182 +77290,127 @@ } }, { - "at": "/value/body_base64", - "optional": false, + "at": "/value/entries/2/is_current_version", + "optional": true, "rule": { - "is": "equal", - "value": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + "is": "one_of", + "values": [ + null, + false + ] } }, { - "at": "/value/content_type", + "at": "/value/entries/2/content_md5_base64", "optional": false, "rule": { "is": "equal", - "value": "text/plain; charset=utf-8" + "value": "SooI8J03tzeVZJA4QItfMw==" } }, { - "at": "/value/content_language", + "at": "/value/entries/3/key", "optional": false, "rule": { "is": "equal", - "value": "nl-NL" + "value": "object-tests/board/z.txt" } }, { - "at": "/value/content_disposition", + "at": "/value/entries/3/size", "optional": false, "rule": { "is": "equal", - "value": "attachment; filename=\"report.txt\"" + "value": 2 } }, { - "at": "/value/cache_control", + "at": "/value/entries/3/etag", "optional": false, "rule": { "is": "equal", - "value": "max-age=3600" + "value": "fixture-0d608f7e2d51" } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/get-with-staged-blocks", - "profile": "azure-hns", - "lane": "core", - "purpose": "get with staged blocks", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "key": "object-tests/multipart/pending.bin", - "op": "get" - }, - "exchanges": [ + }, { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/multipart/pending.bin" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-type": "application/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-ce92c4d48b08\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true" - }, - "body": { - "encoding": "base64", - "data": "Zmlyc3RzZWNvbmQ=" - } - } - } - ] - } - ], - "expect": [ + "at": "/value/entries/3/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, { - "at": "/outcome", - "optional": false, + "at": "/value/entries/3/version", + "optional": true, "rule": { - "is": "equal", - "value": "ok" + "is": "one_of", + "values": [ + null, + "" + ] } }, { - "at": "/value/etag", - "optional": false, + "at": "/value/entries/3/is_current_version", + "optional": true, "rule": { - "is": "equal", - "value": "\"fixture-ce92c4d48b08\"" + "is": "one_of", + "values": [ + null, + false + ] } }, { - "at": "/value/size", + "at": "/value/entries/3/content_md5_base64", "optional": false, "rule": { "is": "equal", - "value": 11 + "value": "Je0by0I7C3IA9IX8X/ccjg==" } }, { - "at": "/value/content_type", + "at": "/value/entries", "optional": false, "rule": { - "is": "equal", - "value": "application/octet-stream" + "is": "array_length", + "value": 4 } }, { - "at": "/value/version", - "optional": true, + "at": "/value/prefixes", + "optional": false, "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "is": "array_length", + "value": 0 } }, { - "at": "/value/body_base64", + "at": "/value/continuation_token", "optional": false, "rule": { "is": "equal", - "value": "Zmlyc3RzZWNvbmQ=" + "value": "" } } ], "refusal": null }, { - "id": "operations/azure-hns/head-committed-declaring-md5", + "id": "operations/azure-hns/list-prefix-without-slash", "profile": "azure-hns", "lane": "core", - "purpose": "head committed declaring md5", + "purpose": "list prefix without slash", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "key": "object-tests/hashes/committed.bin", - "op": "head" + "op": "list_page", + "prefix": "object-tests/boa" }, "exchanges": [ { @@ -48836,7 +77422,7 @@ "optional": false, "rule": { "is": "equal", - "value": "HEAD" + "value": "GET" } }, { @@ -48844,7 +77430,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/hashes/committed.bin" + "value": "/fixture" } }, { @@ -48854,6 +77440,30 @@ "is": "equal", "value": "" } + }, + { + "at": "/query/restype", + "optional": false, + "rule": { + "is": "equal", + "value": "container" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "list" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/boa" + } } ], "allow_headers": [], @@ -48861,24 +77471,18 @@ "response": { "status": 200, "headers": { - "content-length": "13", - "content-md5": "N6YZkbg+Lyfxtskwn8iRCg==", - "content-type": "application/octet-stream", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-9a581bc70e20\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true" + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "" - } + "encoding": "utf8", + "data": "object-tests/boaobject-tests/boardMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-113173402488directory0BlockBlobHottrueunlockedavailabletrueobject-tests/board/a.txtMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-e8a4acb31ab1file8application/octet-streamJdVa0oOqQAr0ZMdtcTwHrQ==BlockBlobHottrueunlockedavailabletrueobject-tests/board/nestedMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-bcf8c9e06f70directory0BlockBlobHottrueunlockedavailabletrueobject-tests/board/nested/c.txtMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-4125625a1056file1application/octet-streamSooI8J03tzeVZJA4QItfMw==BlockBlobHottrueunlockedavailabletrueobject-tests/board/z.txtMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-0d608f7e2d51file2application/octet-streamJe0by0I7C3IA9IX8X/ccjg==BlockBlobHottrueunlockedavailabletrue" + }, + "framing": "chunked" } } ] @@ -48894,39 +77498,42 @@ } }, { - "at": "/value/etag", + "at": "/value/entries/0/key", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-9a581bc70e20\"" + "value": "object-tests/board" } }, { - "at": "/value/size", + "at": "/value/entries/0/size", "optional": false, "rule": { "is": "equal", - "value": 13 + "value": 0 } }, { - "at": "/value/content_type", + "at": "/value/entries/0/etag", "optional": false, "rule": { "is": "equal", - "value": "application/octet-stream" + "value": "fixture-113173402488" } }, { - "at": "/value/content_md5_base64", - "optional": false, + "at": "/value/entries/0/snapshot", + "optional": true, "rule": { - "is": "equal", - "value": "N6YZkbg+Lyfxtskwn8iRCg==" + "is": "one_of", + "values": [ + null, + "" + ] } }, { - "at": "/value/version", + "at": "/value/entries/0/version", "optional": true, "rule": { "is": "one_of", @@ -48935,114 +77542,52 @@ "" ] } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/head-committed", - "profile": "azure-hns", - "lane": "core", - "purpose": "head committed", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "key": "object-tests/multipart/committed.bin", - "op": "head" - }, - "exchanges": [ + }, { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "HEAD" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/multipart/committed.bin" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-length": "11", - "content-type": "application/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-8ec031f3abfa\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true" - }, - "body": { - "encoding": "base64", - "data": "" - } - } - } - ] - } - ], - "expect": [ + "at": "/value/entries/0/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, { - "at": "/outcome", + "at": "/value/entries/0/directory", "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": true } }, { - "at": "/value/etag", + "at": "/value/entries/1/key", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-8ec031f3abfa\"" + "value": "object-tests/board/a.txt" } }, { - "at": "/value/size", + "at": "/value/entries/1/size", "optional": false, "rule": { "is": "equal", - "value": 11 + "value": 8 } }, { - "at": "/value/content_type", + "at": "/value/entries/1/etag", "optional": false, "rule": { "is": "equal", - "value": "application/octet-stream" + "value": "fixture-e8a4acb31ab1" } }, { - "at": "/value/version", + "at": "/value/entries/1/snapshot", "optional": true, "rule": { "is": "one_of", @@ -49051,125 +77596,63 @@ "" ] } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/head-metadata", - "profile": "azure-hns", - "lane": "core", - "purpose": "head metadata", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "key": "object-tests/metadata/object.txt", - "op": "head" - }, - "exchanges": [ + }, { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "HEAD" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/metadata/object.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-length": "1", - "content-md5": "xMpCOKC5I4INzFCab3WEmw==", - "content-type": "application/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-4d04dba3441e\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-meta-name": "value", - "x-ms-meta-second": "2", - "x-ms-server-encrypted": "true" - }, - "body": { - "encoding": "base64", - "data": "" - } - } - } - ] - } - ], - "expect": [ + "at": "/value/entries/1/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, { - "at": "/outcome", - "optional": false, + "at": "/value/entries/1/is_current_version", + "optional": true, "rule": { - "is": "equal", - "value": "ok" + "is": "one_of", + "values": [ + null, + false + ] } }, { - "at": "/value/etag", + "at": "/value/entries/1/content_md5_base64", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-4d04dba3441e\"" + "value": "JdVa0oOqQAr0ZMdtcTwHrQ==" } }, { - "at": "/value/size", + "at": "/value/entries/2/key", "optional": false, "rule": { "is": "equal", - "value": 1 + "value": "object-tests/board/nested" } }, { - "at": "/value/content_type", + "at": "/value/entries/2/size", "optional": false, "rule": { "is": "equal", - "value": "application/octet-stream" + "value": 0 } }, { - "at": "/value/content_md5_base64", + "at": "/value/entries/2/etag", "optional": false, "rule": { "is": "equal", - "value": "xMpCOKC5I4INzFCab3WEmw==" + "value": "fixture-bcf8c9e06f70" } }, { - "at": "/value/version", + "at": "/value/entries/2/snapshot", "optional": true, "rule": { "is": "one_of", @@ -49180,431 +77663,204 @@ } }, { - "at": "/value/metadata", - "optional": false, + "at": "/value/entries/2/version", + "optional": true, "rule": { - "is": "equal", - "value": { - "name": "value", - "second": "2" - } + "is": "one_of", + "values": [ + null, + "" + ] } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/head-missing", - "profile": "azure-hns", - "lane": "core", - "purpose": "head missing", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "key": "object-tests/read/absent.txt", - "op": "head" - }, - "exchanges": [ + }, { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "HEAD" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/read/absent.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 404, - "headers": { - "date": { - "from": "now" - }, - "x-ms-error-code": "BlobNotFound" - }, - "body": { - "encoding": "base64", - "data": "" - } - } - } - ] - } - ], - "expect": [ + "at": "/value/entries/2/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, { - "at": "/outcome", + "at": "/value/entries/2/directory", "optional": false, "rule": { "is": "equal", - "value": "error" + "value": true } }, { - "at": "/status", + "at": "/value/entries/3/key", "optional": false, "rule": { "is": "equal", - "value": 404 + "value": "object-tests/board/nested/c.txt" } }, { - "at": "/code", + "at": "/value/entries/3/size", "optional": false, "rule": { "is": "equal", - "value": "BlobNotFound" + "value": 1 } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/head-previous-version", - "profile": "azure-hns", - "lane": "core", - "purpose": "head previous version", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "key": "object-tests/versions-mtypy4jp/object.txt", - "op": "head", - "version": "none-1" - }, - "exchanges": [ - { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "HEAD" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/versions-mtypy4jp/object.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/query/versionid", - "optional": false, - "rule": { - "is": "equal", - "value": "none-1" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 400, - "headers": { - "date": { - "from": "now" - } - }, - "body": { - "encoding": "base64", - "data": "" - } - } - } - ] - } - ], - "expect": [ + }, { - "at": "/outcome", + "at": "/value/entries/3/etag", "optional": false, "rule": { "is": "equal", - "value": "error" + "value": "fixture-4125625a1056" } }, { - "at": "/status", - "optional": false, + "at": "/value/entries/3/snapshot", + "optional": true, "rule": { - "is": "equal", - "value": 400 + "is": "one_of", + "values": [ + null, + "" + ] } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/head-snapshot", - "profile": "azure-hns", - "lane": "core", - "purpose": "head snapshot", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "key": "object-tests/snapshots/object.txt", - "op": "head", - "snapshot": "2024-01-01T00:00:00.1577201Z" - }, - "exchanges": [ + }, { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "HEAD" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/snapshots/object.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/query/snapshot", - "optional": false, - "rule": { - "is": "equal", - "value": "2024-01-01T00:00:00.1577201Z" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 404, - "headers": { - "date": { - "from": "now" - }, - "x-ms-error-code": "BlobNotFound" - }, - "body": { - "encoding": "base64", - "data": "" - } - } - } - ] - } - ], - "expect": [ + "at": "/value/entries/3/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, { - "at": "/outcome", - "optional": false, + "at": "/value/entries/3/is_current_version", + "optional": true, "rule": { - "is": "equal", - "value": "error" + "is": "one_of", + "values": [ + null, + false + ] } }, { - "at": "/status", + "at": "/value/entries/3/content_md5_base64", "optional": false, "rule": { "is": "equal", - "value": 404 + "value": "SooI8J03tzeVZJA4QItfMw==" } }, { - "at": "/code", + "at": "/value/entries/4/key", "optional": false, "rule": { "is": "equal", - "value": "BlobNotFound" + "value": "object-tests/board/z.txt" } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/head-written-with-crc64", - "profile": "azure-hns", - "lane": "core", - "purpose": "head written with crc64", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "key": "object-tests/hashes/crc64.txt", - "op": "head" - }, - "exchanges": [ - { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "HEAD" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/hashes/crc64.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-length": "13", - "content-md5": "N6YZkbg+Lyfxtskwn8iRCg==", - "content-type": "application/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-bf462a2f52f2\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true" - }, - "body": { - "encoding": "base64", - "data": "" - } - } - } - ] - } - ], - "expect": [ + }, { - "at": "/outcome", + "at": "/value/entries/4/size", "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": 2 } }, { - "at": "/value/etag", + "at": "/value/entries/4/etag", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-bf462a2f52f2\"" + "value": "fixture-0d608f7e2d51" } }, { - "at": "/value/size", + "at": "/value/entries/4/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/4/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/4/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/4/content_md5_base64", "optional": false, "rule": { "is": "equal", - "value": 13 + "value": "Je0by0I7C3IA9IX8X/ccjg==" } }, { - "at": "/value/content_type", + "at": "/value/entries", "optional": false, "rule": { - "is": "equal", - "value": "application/octet-stream" + "is": "array_length", + "value": 5 } }, { - "at": "/value/content_md5_base64", + "at": "/value/prefixes", "optional": false, "rule": { - "is": "equal", - "value": "N6YZkbg+Lyfxtskwn8iRCg==" + "is": "array_length", + "value": 0 } }, { - "at": "/value/version", - "optional": true, + "at": "/value/continuation_token", + "optional": false, "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "is": "equal", + "value": "" } } ], "refusal": null }, { - "id": "operations/azure-hns/head-written-with-md5", + "id": "operations/azure-hns/list-separator-keys-delimited", "profile": "azure-hns", "lane": "core", - "purpose": "head written with md5", + "purpose": "list separator keys delimited", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "key": "object-tests/hashes/md5.txt", - "op": "head" + "delimiter": "/", + "op": "list_page", + "prefix": "object-tests/separators/" }, "exchanges": [ { @@ -49616,7 +77872,7 @@ "optional": false, "rule": { "is": "equal", - "value": "HEAD" + "value": "GET" } }, { @@ -49624,7 +77880,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/hashes/md5.txt" + "value": "/fixture" } }, { @@ -49634,6 +77890,38 @@ "is": "equal", "value": "" } + }, + { + "at": "/query/restype", + "optional": false, + "rule": { + "is": "equal", + "value": "container" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "list" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/separators/" + } + }, + { + "at": "/query/delimiter", + "optional": false, + "rule": { + "is": "equal", + "value": "/" + } } ], "allow_headers": [], @@ -49641,24 +77929,18 @@ "response": { "status": 200, "headers": { - "content-length": "13", - "content-md5": "N6YZkbg+Lyfxtskwn8iRCg==", - "content-type": "application/octet-stream", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-15ae0acd3480\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true" + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "" - } + "encoding": "utf8", + "data": "object-tests/separators//object-tests/separators/..leadingMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-15c8f76b7db4file1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/separators/a.b/Mon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMT0x8DF10FBAD54C650directory0BlockBlobHottrueunlockedavailabletrueobject-tests/separators/dotMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-8a6559c18a1cfile1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/separators/double/Mon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMT0x8DF10FBAD3AE784directory0BlockBlobHottrueunlockedavailabletrueobject-tests/separators/space /Mon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMT0x8DF10FBAD472F18directory0BlockBlobHottrueunlockedavailabletrue" + }, + "framing": "chunked" } } ] @@ -49674,39 +77956,42 @@ } }, { - "at": "/value/etag", + "at": "/value/entries/0/key", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-15ae0acd3480\"" + "value": "object-tests/separators/..leading" } }, { - "at": "/value/size", + "at": "/value/entries/0/size", "optional": false, "rule": { "is": "equal", - "value": 13 + "value": 1 } }, { - "at": "/value/content_type", + "at": "/value/entries/0/etag", "optional": false, "rule": { "is": "equal", - "value": "application/octet-stream" + "value": "fixture-15c8f76b7db4" } }, { - "at": "/value/content_md5_base64", - "optional": false, + "at": "/value/entries/0/snapshot", + "optional": true, "rule": { - "is": "equal", - "value": "N6YZkbg+Lyfxtskwn8iRCg==" + "is": "one_of", + "values": [ + null, + "" + ] } }, { - "at": "/value/version", + "at": "/value/entries/0/version", "optional": true, "rule": { "is": "one_of", @@ -49715,123 +78000,63 @@ "" ] } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/head", - "profile": "azure-hns", - "lane": "core", - "purpose": "head", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "key": "object-tests/read/object.txt", - "op": "head" - }, - "exchanges": [ + }, { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "HEAD" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/read/object.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-length": "30", - "content-md5": "H1VC0PNTmj+yaCRN4U931g==", - "content-type": "application/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-5295cdfd25ff\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true" - }, - "body": { - "encoding": "base64", - "data": "" - } - } - } - ] - } - ], - "expect": [ + "at": "/value/entries/0/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, { - "at": "/outcome", + "at": "/value/entries/0/content_md5_base64", "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "xMpCOKC5I4INzFCab3WEmw==" } }, { - "at": "/value/etag", + "at": "/value/entries/1/key", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-5295cdfd25ff\"" + "value": "object-tests/separators/dot" } }, { - "at": "/value/size", + "at": "/value/entries/1/size", "optional": false, "rule": { "is": "equal", - "value": 30 + "value": 1 } }, { - "at": "/value/content_type", + "at": "/value/entries/1/etag", "optional": false, "rule": { "is": "equal", - "value": "application/octet-stream" + "value": "fixture-8a6559c18a1c" } }, { - "at": "/value/content_md5_base64", - "optional": false, + "at": "/value/entries/1/snapshot", + "optional": true, "rule": { - "is": "equal", - "value": "H1VC0PNTmj+yaCRN4U931g==" + "is": "one_of", + "values": [ + null, + "" + ] } }, { - "at": "/value/version", + "at": "/value/entries/1/version", "optional": true, "rule": { "is": "one_of", @@ -49840,21 +78065,88 @@ "" ] } + }, + { + "at": "/value/entries/1/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/1/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "xMpCOKC5I4INzFCab3WEmw==" + } + }, + { + "at": "/value/entries", + "optional": false, + "rule": { + "is": "array_length", + "value": 2 + } + }, + { + "at": "/value/prefixes/0", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/separators/a.b/" + } + }, + { + "at": "/value/prefixes/1", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/separators/double/" + } + }, + { + "at": "/value/prefixes/2", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/separators/space /" + } + }, + { + "at": "/value/prefixes", + "optional": false, + "rule": { + "is": "array_length", + "value": 3 + } + }, + { + "at": "/value/continuation_token", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } } ], "refusal": null }, { - "id": "operations/azure-hns/head-key-question", + "id": "operations/azure-hns/list-separator-keys", "profile": "azure-hns", "lane": "core", - "purpose": "head, with the key \"question?mark.txt\"", + "purpose": "list separator keys", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "key": "object-tests/keys/question?mark.txt", - "op": "head" + "op": "list_page", + "prefix": "object-tests/separators/" }, "exchanges": [ { @@ -49866,7 +78158,7 @@ "optional": false, "rule": { "is": "equal", - "value": "HEAD" + "value": "GET" } }, { @@ -49874,7 +78166,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/question?mark.txt" + "value": "/fixture" } }, { @@ -49884,6 +78176,30 @@ "is": "equal", "value": "" } + }, + { + "at": "/query/restype", + "optional": false, + "rule": { + "is": "equal", + "value": "container" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "list" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/separators/" + } } ], "allow_headers": [], @@ -49891,24 +78207,18 @@ "response": { "status": 200, "headers": { - "content-length": "30", - "content-md5": "H1VC0PNTmj+yaCRN4U931g==", - "content-type": "application/octet-stream", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-5295cdfd25ff\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true" + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "" - } + "encoding": "utf8", + "data": "object-tests/separators/object-tests/separators/..leadingMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-15c8f76b7db4file1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/separators/a.bMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-1647f69dced7directory0BlockBlobHottrueunlockedavailabletrueobject-tests/separators/a.b/cMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-75bdde0ebaf4file1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/separators/dotMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-8a6559c18a1cfile1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/separators/doubleMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-8e02901b8187directory0BlockBlobHottrueunlockedavailabletrueobject-tests/separators/double/slashMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-dffbfc983f10file1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/separators/space Mon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-978fd2f2d938directory0BlockBlobHottrueunlockedavailabletrueobject-tests/separators/space /xMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-ddc1aad6dee1file1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrue" + }, + "framing": "chunked" } } ] @@ -49924,39 +78234,42 @@ } }, { - "at": "/value/etag", + "at": "/value/entries/0/key", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-5295cdfd25ff\"" + "value": "object-tests/separators/..leading" } }, { - "at": "/value/size", + "at": "/value/entries/0/size", "optional": false, "rule": { "is": "equal", - "value": 30 + "value": 1 } }, { - "at": "/value/content_type", + "at": "/value/entries/0/etag", "optional": false, "rule": { "is": "equal", - "value": "application/octet-stream" + "value": "fixture-15c8f76b7db4" } }, { - "at": "/value/content_md5_base64", - "optional": false, + "at": "/value/entries/0/snapshot", + "optional": true, "rule": { - "is": "equal", - "value": "H1VC0PNTmj+yaCRN4U931g==" + "is": "one_of", + "values": [ + null, + "" + ] } }, { - "at": "/value/version", + "at": "/value/entries/0/version", "optional": true, "rule": { "is": "one_of", @@ -49965,123 +78278,52 @@ "" ] } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/head-key-hash", - "profile": "azure-hns", - "lane": "core", - "purpose": "head, with the key \"hash#tag.txt\"", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "key": "object-tests/keys/hash#tag.txt", - "op": "head" - }, - "exchanges": [ - { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "HEAD" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/keys/hash#tag.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-length": "30", - "content-md5": "H1VC0PNTmj+yaCRN4U931g==", - "content-type": "application/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-5295cdfd25ff\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true" - }, - "body": { - "encoding": "base64", - "data": "" - } - } - } - ] - } - ], - "expect": [ + }, { - "at": "/outcome", - "optional": false, + "at": "/value/entries/0/is_current_version", + "optional": true, "rule": { - "is": "equal", - "value": "ok" + "is": "one_of", + "values": [ + null, + false + ] } }, { - "at": "/value/etag", + "at": "/value/entries/0/content_md5_base64", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-5295cdfd25ff\"" + "value": "xMpCOKC5I4INzFCab3WEmw==" } }, { - "at": "/value/size", + "at": "/value/entries/1/key", "optional": false, "rule": { "is": "equal", - "value": 30 + "value": "object-tests/separators/a.b" } }, { - "at": "/value/content_type", + "at": "/value/entries/1/size", "optional": false, "rule": { "is": "equal", - "value": "application/octet-stream" + "value": 0 } }, { - "at": "/value/content_md5_base64", + "at": "/value/entries/1/etag", "optional": false, "rule": { "is": "equal", - "value": "H1VC0PNTmj+yaCRN4U931g==" + "value": "fixture-1647f69dced7" } }, { - "at": "/value/version", + "at": "/value/entries/1/snapshot", "optional": true, "rule": { "is": "one_of", @@ -50090,123 +78332,63 @@ "" ] } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/head-key-percent", - "profile": "azure-hns", - "lane": "core", - "purpose": "head, with the key \"percent%20.txt\"", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "key": "object-tests/keys/percent%20.txt", - "op": "head" - }, - "exchanges": [ + }, { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "HEAD" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/keys/percent%20.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-length": "30", - "content-md5": "H1VC0PNTmj+yaCRN4U931g==", - "content-type": "application/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-5295cdfd25ff\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true" - }, - "body": { - "encoding": "base64", - "data": "" - } - } - } - ] - } - ], - "expect": [ + "at": "/value/entries/1/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, { - "at": "/outcome", - "optional": false, + "at": "/value/entries/1/is_current_version", + "optional": true, "rule": { - "is": "equal", - "value": "ok" + "is": "one_of", + "values": [ + null, + false + ] } }, { - "at": "/value/etag", + "at": "/value/entries/1/directory", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-5295cdfd25ff\"" + "value": true } }, { - "at": "/value/size", + "at": "/value/entries/2/key", "optional": false, "rule": { "is": "equal", - "value": 30 + "value": "object-tests/separators/a.b/c" } }, { - "at": "/value/content_type", + "at": "/value/entries/2/size", "optional": false, "rule": { "is": "equal", - "value": "application/octet-stream" + "value": 1 } }, { - "at": "/value/content_md5_base64", + "at": "/value/entries/2/etag", "optional": false, "rule": { "is": "equal", - "value": "H1VC0PNTmj+yaCRN4U931g==" + "value": "fixture-75bdde0ebaf4" } }, { - "at": "/value/version", + "at": "/value/entries/2/snapshot", "optional": true, "rule": { "is": "one_of", @@ -50215,123 +78397,63 @@ "" ] } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/head-key-plus", - "profile": "azure-hns", - "lane": "core", - "purpose": "head, with the key \"plus+plus.txt\"", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "key": "object-tests/keys/plus+plus.txt", - "op": "head" - }, - "exchanges": [ + }, { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "HEAD" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/keys/plus+plus.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-length": "30", - "content-md5": "H1VC0PNTmj+yaCRN4U931g==", - "content-type": "application/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-5295cdfd25ff\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true" - }, - "body": { - "encoding": "base64", - "data": "" - } - } - } - ] - } - ], - "expect": [ + "at": "/value/entries/2/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, { - "at": "/outcome", - "optional": false, + "at": "/value/entries/2/is_current_version", + "optional": true, "rule": { - "is": "equal", - "value": "ok" + "is": "one_of", + "values": [ + null, + false + ] } }, { - "at": "/value/etag", + "at": "/value/entries/2/content_md5_base64", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-5295cdfd25ff\"" + "value": "xMpCOKC5I4INzFCab3WEmw==" } }, { - "at": "/value/size", + "at": "/value/entries/3/key", "optional": false, "rule": { "is": "equal", - "value": 30 + "value": "object-tests/separators/dot" } }, { - "at": "/value/content_type", + "at": "/value/entries/3/size", "optional": false, "rule": { "is": "equal", - "value": "application/octet-stream" + "value": 1 } }, { - "at": "/value/content_md5_base64", + "at": "/value/entries/3/etag", "optional": false, "rule": { "is": "equal", - "value": "H1VC0PNTmj+yaCRN4U931g==" + "value": "fixture-8a6559c18a1c" } }, { - "at": "/value/version", + "at": "/value/entries/3/snapshot", "optional": true, "rule": { "is": "one_of", @@ -50340,123 +78462,63 @@ "" ] } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/head-key-space", - "profile": "azure-hns", - "lane": "core", - "purpose": "head, with the key \"space name.txt\"", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "key": "object-tests/keys/space name.txt", - "op": "head" - }, - "exchanges": [ + }, { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "HEAD" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/keys/space name.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-length": "30", - "content-md5": "H1VC0PNTmj+yaCRN4U931g==", - "content-type": "application/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-5295cdfd25ff\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true" - }, - "body": { - "encoding": "base64", - "data": "" - } - } - } - ] - } - ], - "expect": [ + "at": "/value/entries/3/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, { - "at": "/outcome", - "optional": false, + "at": "/value/entries/3/is_current_version", + "optional": true, "rule": { - "is": "equal", - "value": "ok" + "is": "one_of", + "values": [ + null, + false + ] } }, { - "at": "/value/etag", + "at": "/value/entries/3/content_md5_base64", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-5295cdfd25ff\"" + "value": "xMpCOKC5I4INzFCab3WEmw==" } }, { - "at": "/value/size", + "at": "/value/entries/4/key", "optional": false, "rule": { "is": "equal", - "value": 30 + "value": "object-tests/separators/double" } }, { - "at": "/value/content_type", + "at": "/value/entries/4/size", "optional": false, "rule": { "is": "equal", - "value": "application/octet-stream" + "value": 0 } }, { - "at": "/value/content_md5_base64", + "at": "/value/entries/4/etag", "optional": false, "rule": { "is": "equal", - "value": "H1VC0PNTmj+yaCRN4U931g==" + "value": "fixture-8e02901b8187" } }, { - "at": "/value/version", + "at": "/value/entries/4/snapshot", "optional": true, "rule": { "is": "one_of", @@ -50465,123 +78527,63 @@ "" ] } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/head-key-non-ascii", - "profile": "azure-hns", - "lane": "core", - "purpose": "head, with the key \"café/雪.txt\"", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "key": "object-tests/keys/café/雪.txt", - "op": "head" - }, - "exchanges": [ + }, { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "HEAD" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/keys/café/雪.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-length": "30", - "content-md5": "H1VC0PNTmj+yaCRN4U931g==", - "content-type": "application/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-5295cdfd25ff\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true" - }, - "body": { - "encoding": "base64", - "data": "" - } - } - } - ] - } - ], - "expect": [ + "at": "/value/entries/4/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, { - "at": "/outcome", - "optional": false, + "at": "/value/entries/4/is_current_version", + "optional": true, "rule": { - "is": "equal", - "value": "ok" + "is": "one_of", + "values": [ + null, + false + ] } }, { - "at": "/value/etag", + "at": "/value/entries/4/directory", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-5295cdfd25ff\"" + "value": true } }, { - "at": "/value/size", + "at": "/value/entries/5/key", "optional": false, "rule": { "is": "equal", - "value": 30 + "value": "object-tests/separators/double/slash" } }, { - "at": "/value/content_type", + "at": "/value/entries/5/size", "optional": false, "rule": { "is": "equal", - "value": "application/octet-stream" + "value": 1 } }, { - "at": "/value/content_md5_base64", + "at": "/value/entries/5/etag", "optional": false, "rule": { "is": "equal", - "value": "H1VC0PNTmj+yaCRN4U931g==" + "value": "fixture-dffbfc983f10" } }, { - "at": "/value/version", + "at": "/value/entries/5/snapshot", "optional": true, "rule": { "is": "one_of", @@ -50590,123 +78592,63 @@ "" ] } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/head-key-double-slash", - "profile": "azure-hns", - "lane": "core", - "purpose": "head, with the key \"double//slash.txt\"", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "key": "object-tests/keys/double//slash.txt", - "op": "head" - }, - "exchanges": [ + }, { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "HEAD" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/keys/double//slash.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-length": "30", - "content-md5": "H1VC0PNTmj+yaCRN4U931g==", - "content-type": "application/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-5295cdfd25ff\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true" - }, - "body": { - "encoding": "base64", - "data": "" - } - } - } - ] - } - ], - "expect": [ + "at": "/value/entries/5/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, { - "at": "/outcome", - "optional": false, + "at": "/value/entries/5/is_current_version", + "optional": true, "rule": { - "is": "equal", - "value": "ok" + "is": "one_of", + "values": [ + null, + false + ] } }, { - "at": "/value/etag", + "at": "/value/entries/5/content_md5_base64", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-5295cdfd25ff\"" + "value": "xMpCOKC5I4INzFCab3WEmw==" } }, { - "at": "/value/size", + "at": "/value/entries/6/key", "optional": false, "rule": { "is": "equal", - "value": 30 + "value": "object-tests/separators/space " } }, { - "at": "/value/content_type", + "at": "/value/entries/6/size", "optional": false, "rule": { "is": "equal", - "value": "application/octet-stream" + "value": 0 } }, { - "at": "/value/content_md5_base64", + "at": "/value/entries/6/etag", "optional": false, "rule": { "is": "equal", - "value": "H1VC0PNTmj+yaCRN4U931g==" + "value": "fixture-978fd2f2d938" } }, { - "at": "/value/version", + "at": "/value/entries/6/snapshot", "optional": true, "rule": { "is": "one_of", @@ -50715,206 +78657,63 @@ "" ] } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/head-key-trailing-slash", - "profile": "azure-hns", - "lane": "core", - "purpose": "head, with the key \"trailing-slash/\"", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "key": "object-tests/keys/trailing-slash/", - "op": "head" - }, - "exchanges": [ - { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "HEAD" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/keys/trailing-slash/" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 404, - "headers": { - "date": { - "from": "now" - }, - "x-ms-error-code": "BlobNotFound" - }, - "body": { - "encoding": "empty" - } - } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "error" - } }, { - "at": "/status", - "optional": false, + "at": "/value/entries/6/version", + "optional": true, "rule": { - "is": "equal", - "value": 404 + "is": "one_of", + "values": [ + null, + "" + ] } }, { - "at": "/code", - "optional": false, + "at": "/value/entries/6/is_current_version", + "optional": true, "rule": { - "is": "equal", - "value": "BlobNotFound" + "is": "one_of", + "values": [ + null, + false + ] } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/head-content-properties", - "profile": "azure-hns", - "lane": "core", - "purpose": "Return the stored content properties from a HEAD", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "key": "object-tests/read/object.txt", - "op": "head" - }, - "exchanges": [ - { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "HEAD" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/read/object.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "cache-control": "max-age=3600", - "content-disposition": "attachment; filename=\"report.txt\"", - "content-language": "nl-NL", - "content-length": "30", - "content-md5": "H1VC0PNTmj+yaCRN4U931g==", - "content-type": "text/plain; charset=utf-8", - "date": { - "from": "now" - }, - "etag": "\"fixture-5295cdfd25ff\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-server-encrypted": "true" - }, - "body": { - "encoding": "base64", - "data": "" - } - } - } - ] - } - ], - "expect": [ + }, { - "at": "/outcome", + "at": "/value/entries/6/directory", "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": true } }, { - "at": "/value/etag", + "at": "/value/entries/7/key", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-5295cdfd25ff\"" + "value": "object-tests/separators/space /x" } }, { - "at": "/value/size", + "at": "/value/entries/7/size", "optional": false, "rule": { "is": "equal", - "value": 30 + "value": 1 } }, { - "at": "/value/content_md5_base64", + "at": "/value/entries/7/etag", "optional": false, "rule": { "is": "equal", - "value": "H1VC0PNTmj+yaCRN4U931g==" + "value": "fixture-ddc1aad6dee1" } }, { - "at": "/value/version", + "at": "/value/entries/7/snapshot", "optional": true, "rule": { "is": "one_of", @@ -50925,148 +78724,76 @@ } }, { - "at": "/value/content_type", - "optional": false, + "at": "/value/entries/7/version", + "optional": true, "rule": { - "is": "equal", - "value": "text/plain; charset=utf-8" + "is": "one_of", + "values": [ + null, + "" + ] } }, { - "at": "/value/content_language", - "optional": false, + "at": "/value/entries/7/is_current_version", + "optional": true, "rule": { - "is": "equal", - "value": "nl-NL" + "is": "one_of", + "values": [ + null, + false + ] } }, { - "at": "/value/content_disposition", + "at": "/value/entries/7/content_md5_base64", "optional": false, "rule": { "is": "equal", - "value": "attachment; filename=\"report.txt\"" + "value": "xMpCOKC5I4INzFCab3WEmw==" } }, { - "at": "/value/cache_control", - "optional": false, - "rule": { - "is": "equal", - "value": "max-age=3600" - } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/head-if-unmodified-since-past", - "profile": "azure-hns", - "lane": "core", - "purpose": "Refuse a HEAD with 412 when the object changed after If-Unmodified-Since", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "if_unmodified_since": "Sat, 01 Jan 2000 00:00:00 GMT", - "key": "object-tests/read/object.txt", - "op": "head" - }, - "exchanges": [ - { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "HEAD" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/read/object.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/headers/if-unmodified-since", - "optional": false, - "rule": { - "is": "equal", - "value": "Sat, 01 Jan 2000 00:00:00 GMT" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 412, - "headers": { - "date": { - "from": "now" - }, - "x-ms-error-code": "ConditionNotMet" - }, - "body": { - "encoding": "empty" - } - } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", + "at": "/value/entries", "optional": false, "rule": { - "is": "equal", - "value": "error" + "is": "array_length", + "value": 8 } }, { - "at": "/status", + "at": "/value/prefixes", "optional": false, "rule": { - "is": "equal", - "value": 412 + "is": "array_length", + "value": 0 } }, { - "at": "/code", + "at": "/value/continuation_token", "optional": false, "rule": { "is": "equal", - "value": "ConditionNotMet" + "value": "" } } ], "refusal": null }, { - "id": "operations/azure-hns/list-after-delete-with-versions", + "id": "operations/azure-hns/list-snapshots-after-delete", "profile": "azure-hns", "lane": "core", - "purpose": "list after delete with versions", + "purpose": "list snapshots after delete", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { + "include": [ + "snapshots" + ], "op": "list_page", - "prefix": "object-tests/versions-mtypy4jp/deleted.txt" + "prefix": "object-tests/snapshots-all/" }, "exchanges": [ { @@ -51118,7 +78845,15 @@ "optional": false, "rule": { "is": "equal", - "value": "object-tests/versions-mtypy4jp/deleted.txt" + "value": "object-tests/snapshots-all/" + } + }, + { + "at": "/query/include", + "optional": false, + "rule": { + "is": "equal", + "value": "snapshots" } } ], @@ -51136,7 +78871,7 @@ }, "body": { "encoding": "utf8", - "data": "object-tests/versions-mtypy4jp/deleted.txt" + "data": "object-tests/snapshots-all/" }, "framing": "chunked" } @@ -51181,17 +78916,19 @@ "refusal": null }, { - "id": "operations/azure-hns/list-bad-marker", + "id": "operations/azure-hns/list-snapshots-after-snapshots-deleted", "profile": "azure-hns", "lane": "core", - "purpose": "list bad marker", + "purpose": "list snapshots after snapshots deleted", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "continuation_token": "fixture-marker+/1d52c72a655f=", + "include": [ + "snapshots" + ], "op": "list_page", - "prefix": "object-tests/board/" + "prefix": "object-tests/snapshots-only/" }, "exchanges": [ { @@ -51243,33 +78980,35 @@ "optional": false, "rule": { "is": "equal", - "value": "object-tests/board/" + "value": "object-tests/snapshots-only/" } }, { - "at": "/query/marker", + "at": "/query/include", "optional": false, "rule": { "is": "equal", - "value": "fixture-marker+/1d52c72a655f=" + "value": "snapshots" } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 400, + "status": 200, "headers": { "content-type": "application/xml", "date": { "from": "now" }, - "x-ms-error-code": "InvalidQueryParameterValue" + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "utf8", - "data": "InvalidQueryParameterValueFixture error" - } + "data": "object-tests/snapshots-only/object-tests/snapshots-only/object.txtMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-5d8eb33996d7file4application/octet-streamTYtghPPRZ7dsrGaiKpG+Ag==BlockBlobHottrueunlockedavailabletrue" + }, + "framing": "chunked" } } ] @@ -51281,43 +79020,116 @@ "optional": false, "rule": { "is": "equal", - "value": "error" + "value": "ok" } }, { - "at": "/status", + "at": "/value/entries/0/key", "optional": false, "rule": { "is": "equal", - "value": 400 + "value": "object-tests/snapshots-only/object.txt" } }, { - "at": "/code", + "at": "/value/entries/0/size", "optional": false, "rule": { "is": "equal", - "value": "InvalidQueryParameterValue" + "value": 4 + } + }, + { + "at": "/value/entries/0/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-5d8eb33996d7" + } + }, + { + "at": "/value/entries/0/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/0/content_md5_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "TYtghPPRZ7dsrGaiKpG+Ag==" + } + }, + { + "at": "/value/entries", + "optional": false, + "rule": { + "is": "array_length", + "value": 1 + } + }, + { + "at": "/value/prefixes", + "optional": false, + "rule": { + "is": "array_length", + "value": 0 + } + }, + { + "at": "/value/continuation_token", + "optional": false, + "rule": { + "is": "equal", + "value": "" } } ], "refusal": null }, { - "id": "operations/azure-hns/list-bad-marker-code-in-body", + "id": "operations/azure-hns/list-snapshots-and-versions", "profile": "azure-hns", "lane": "core", - "purpose": "list bad marker, with the error code only in the XML body", + "purpose": "list snapshots and versions", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp", - "https://learn.microsoft.com/en-us/rest/api/storageservices/common-rest-api-error-codes", - "https://learn.microsoft.com/en-us/rest/api/storageservices/blob-service-error-codes" + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], - "origin": "constructed", "call": { - "continuation_token": "fixture-marker+/1d52c72a655f=", + "include": [ + "snapshots", + "versions" + ], "op": "list_page", - "prefix": "object-tests/board/" + "prefix": "object-tests/snapshots/" }, "exchanges": [ { @@ -51369,32 +79181,35 @@ "optional": false, "rule": { "is": "equal", - "value": "object-tests/board/" + "value": "object-tests/snapshots/" } }, { - "at": "/query/marker", + "at": "/query/include", "optional": false, "rule": { "is": "equal", - "value": "fixture-marker+/1d52c72a655f=" + "value": "snapshots,versions" } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 400, + "status": 200, "headers": { "content-type": "application/xml", "date": { "from": "now" - } + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "utf8", - "data": "InvalidQueryParameterValueFixture error" - } + "data": "object-tests/snapshots/object-tests/snapshots/object.txtMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-2666f63dbf0bfile3application/octet-streamuKn3Fdu2T9XFbneDxoIKYQ==BlockBlobHottrueunlockedavailabletrue" + }, + "framing": "chunked" } } ] @@ -51406,154 +79221,115 @@ "optional": false, "rule": { "is": "equal", - "value": "error" + "value": "ok" } }, { - "at": "/status", + "at": "/value/entries/0/key", "optional": false, "rule": { "is": "equal", - "value": 400 + "value": "object-tests/snapshots/object.txt" } }, { - "at": "/code", + "at": "/value/entries/0/size", "optional": false, "rule": { "is": "equal", - "value": "InvalidQueryParameterValue" + "value": 3 } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/list-container-missing", - "profile": "azure-hns", - "lane": "core", - "purpose": "list container missing", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "op": "list_page", - "prefix": "" - }, - "exchanges": [ - { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/query/restype", - "optional": false, - "rule": { - "is": "equal", - "value": "container" - } - }, - { - "at": "/query/comp", - "optional": false, - "rule": { - "is": "equal", - "value": "list" - } - }, - { - "at": "/query/prefix", - "optional": true, - "rule": { - "is": "equal", - "value": "" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 404, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - }, - "x-ms-error-code": "ContainerNotFound" - }, - "body": { - "encoding": "utf8", - "data": "ContainerNotFoundFixture error" - } - } - } - ] - } - ], - "expect": [ + }, { - "at": "/outcome", + "at": "/value/entries/0/etag", "optional": false, "rule": { "is": "equal", - "value": "error" + "value": "fixture-2666f63dbf0b" } }, { - "at": "/status", + "at": "/value/entries/0/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/0/content_md5_base64", "optional": false, "rule": { "is": "equal", - "value": 404 + "value": "uKn3Fdu2T9XFbneDxoIKYQ==" } }, { - "at": "/code", + "at": "/value/entries", + "optional": false, + "rule": { + "is": "array_length", + "value": 1 + } + }, + { + "at": "/value/prefixes", + "optional": false, + "rule": { + "is": "array_length", + "value": 0 + } + }, + { + "at": "/value/continuation_token", "optional": false, "rule": { "is": "equal", - "value": "ContainerNotFound" + "value": "" } } ], "refusal": null }, { - "id": "operations/azure-hns/list-delimited", + "id": "operations/azure-hns/list-snapshots", "profile": "azure-hns", "lane": "core", - "purpose": "list delimited", + "purpose": "list snapshots", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "delimiter": "/", + "include": [ + "snapshots" + ], "op": "list_page", - "prefix": "object-tests/board/" + "prefix": "object-tests/snapshots/" }, "exchanges": [ { @@ -51605,15 +79381,15 @@ "optional": false, "rule": { "is": "equal", - "value": "object-tests/board/" + "value": "object-tests/snapshots/" } }, { - "at": "/query/delimiter", + "at": "/query/include", "optional": false, "rule": { "is": "equal", - "value": "/" + "value": "snapshots" } } ], @@ -51631,7 +79407,7 @@ }, "body": { "encoding": "utf8", - "data": "object-tests/board//object-tests/board/a.txtMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-e8a4acb31ab1file8application/octet-streamJdVa0oOqQAr0ZMdtcTwHrQ==BlockBlobHottrueunlockedavailabletrueobject-tests/board/nested/Mon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMT0x8DF10FBAC3E874Cdirectory0BlockBlobHottrueunlockedavailabletrueobject-tests/board/z.txtMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-0d608f7e2d51file2application/octet-streamJe0by0I7C3IA9IX8X/ccjg==BlockBlobHottrueunlockedavailabletrue" + "data": "object-tests/snapshots/object-tests/snapshots/object.txtMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-2666f63dbf0bfile3application/octet-streamuKn3Fdu2T9XFbneDxoIKYQ==BlockBlobHottrueunlockedavailabletrue" }, "framing": "chunked" } @@ -51653,7 +79429,7 @@ "optional": false, "rule": { "is": "equal", - "value": "object-tests/board/a.txt" + "value": "object-tests/snapshots/object.txt" } }, { @@ -51661,7 +79437,7 @@ "optional": false, "rule": { "is": "equal", - "value": 8 + "value": 3 } }, { @@ -51669,7 +79445,7 @@ "optional": false, "rule": { "is": "equal", - "value": "fixture-e8a4acb31ab1" + "value": "fixture-2666f63dbf0b" } }, { @@ -51710,72 +79486,131 @@ "optional": false, "rule": { "is": "equal", - "value": "JdVa0oOqQAr0ZMdtcTwHrQ==" + "value": "uKn3Fdu2T9XFbneDxoIKYQ==" } }, { - "at": "/value/entries/1/key", + "at": "/value/entries", "optional": false, "rule": { - "is": "equal", - "value": "object-tests/board/z.txt" + "is": "array_length", + "value": 1 } }, { - "at": "/value/entries/1/size", + "at": "/value/prefixes", "optional": false, "rule": { - "is": "equal", - "value": 2 + "is": "array_length", + "value": 0 } }, { - "at": "/value/entries/1/etag", + "at": "/value/continuation_token", "optional": false, "rule": { "is": "equal", - "value": "fixture-0d608f7e2d51" - } - }, - { - "at": "/value/entries/1/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/1/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "value": "" } - }, + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/list-staged-only", + "profile": "azure-hns", + "lane": "core", + "purpose": "list staged only", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "op": "list_page", + "prefix": "object-tests/multipart/staged.bin" + }, + "exchanges": [ { - "at": "/value/entries/1/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/restype", + "optional": false, + "rule": { + "is": "equal", + "value": "container" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "list" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/multipart/staged.bin" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "utf8", + "data": "object-tests/multipart/staged.bin" + }, + "framing": "chunked" + } + } + ] + } + ], + "expect": [ { - "at": "/value/entries/1/content_md5_base64", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "Je0by0I7C3IA9IX8X/ccjg==" + "value": "ok" } }, { @@ -51783,15 +79618,7 @@ "optional": false, "rule": { "is": "array_length", - "value": 2 - } - }, - { - "at": "/value/prefixes/0", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/board/nested/" + "value": 0 } }, { @@ -51799,7 +79626,7 @@ "optional": false, "rule": { "is": "array_length", - "value": 1 + "value": 0 } }, { @@ -51814,17 +79641,16 @@ "refusal": null }, { - "id": "operations/azure-hns/list-other-delimiter", + "id": "operations/azure-hns/list-unauthenticated", "profile": "azure-hns", "lane": "core", - "purpose": "Report the 400 DelimiterIsInvalidForHNS that an HNS account answers to any delimiter but /", + "purpose": "Report the service authorization error for this operation; signature acceptance is tested separately.", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "delimiter": "-", "op": "list_page", - "prefix": "object-tests/dashes/" + "prefix": "object-tests/" }, "exchanges": [ { @@ -51876,32 +79702,24 @@ "optional": false, "rule": { "is": "equal", - "value": "object-tests/dashes/" - } - }, - { - "at": "/query/delimiter", - "optional": false, - "rule": { - "is": "equal", - "value": "-" + "value": "object-tests/" } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 400, + "status": 401, "headers": { "content-type": "application/xml", "date": { "from": "now" }, - "x-ms-error-code": "DelimiterIsInvalidForHNS" + "x-ms-error-code": "InvalidAuthenticationInfo" }, "body": { "encoding": "utf8", - "data": "DelimiterIsInvalidForHNSThe only delimiter supported for hierarchical namespace accounts is '/'." + "data": "InvalidAuthenticationInfoFixture error" } } } @@ -51922,7 +79740,7 @@ "optional": false, "rule": { "is": "equal", - "value": 400 + "value": 401 } }, { @@ -51930,64 +79748,26 @@ "optional": false, "rule": { "is": "equal", - "value": "DelimiterIsInvalidForHNS" + "value": "InvalidAuthenticationInfo" } } ], - "refusal": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "refused" - } - }, - { - "at": "/kind", - "optional": false, - "rule": { - "is": "matches", - "pattern": ".+" - } - }, - { - "at": "/parameter", - "optional": false, - "rule": { - "is": "equal", - "value": "delimiter" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 400 - } - }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "equal", - "value": "DelimiterIsInvalidForHNS" - } - } - ] + "refusal": null }, { - "id": "operations/azure-hns/list-empty", + "id": "operations/azure-hns/list-versions-of-deleted-object", "profile": "azure-hns", "lane": "core", - "purpose": "list empty", + "purpose": "list versions of deleted object", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { + "include": [ + "versions" + ], "op": "list_page", - "prefix": "object-tests/nothing/" + "prefix": "object-tests/versions-mtypy4jp/deleted.txt" }, "exchanges": [ { @@ -52039,7 +79819,15 @@ "optional": false, "rule": { "is": "equal", - "value": "object-tests/nothing/" + "value": "object-tests/versions-mtypy4jp/deleted.txt" + } + }, + { + "at": "/query/include", + "optional": false, + "rule": { + "is": "equal", + "value": "versions" } } ], @@ -52057,7 +79845,7 @@ }, "body": { "encoding": "utf8", - "data": "object-tests/nothing/" + "data": "object-tests/versions-mtypy4jp/deleted.txt" }, "framing": "chunked" } @@ -52102,16 +79890,19 @@ "refusal": null }, { - "id": "operations/azure-hns/list-all-empty", + "id": "operations/azure-hns/list-versions", "profile": "azure-hns", "lane": "core", - "purpose": "list empty", + "purpose": "list versions", "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/list-blobs" + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "op": "list", - "prefix": "" + "include": [ + "versions" + ], + "op": "list_page", + "prefix": "object-tests/versions-mtypy4jp/" }, "exchanges": [ { @@ -52160,10 +79951,18 @@ }, { "at": "/query/prefix", - "optional": true, + "optional": false, "rule": { "is": "equal", - "value": "" + "value": "object-tests/versions-mtypy4jp/" + } + }, + { + "at": "/query/include", + "optional": false, + "rule": { + "is": "equal", + "value": "versions" } } ], @@ -52176,20 +79975,12 @@ "date": { "from": "now" }, - "etag": "\"fixture-etag\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-request-id": "fixture-request-id", - "x-ms-request-server-encrypted": "true", - "x-ms-server-encrypted": "true", - "x-ms-version": "2023-11-03" + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "PEVudW1lcmF0aW9uUmVzdWx0cyBTZXJ2aWNlRW5kcG9pbnQ9Imh0dHA6Ly9maXh0dXJlLyIgQ29udGFpbmVyTmFtZT0iZml4dHVyZSI+PFByZWZpeD48L1ByZWZpeD48QmxvYnM+PC9CbG9icz48TmV4dE1hcmtlcj48L05leHRNYXJrZXI+PC9FbnVtZXJhdGlvblJlc3VsdHM+" + "encoding": "utf8", + "data": "object-tests/versions-mtypy4jp/object-tests/versions-mtypy4jp/object.txtMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-bd163fcc78d6file2application/octet-streamGyZ2GcSBLMRu4oF0eITKUA==BlockBlobHottrueunlockedavailabletrue" }, "framing": "chunked" } @@ -52199,35 +79990,116 @@ ], "expect": [ { - "at": "/outcome", + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/entries/0/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/versions-mtypy4jp/object.txt" + } + }, + { + "at": "/value/entries/0/size", + "optional": false, + "rule": { + "is": "equal", + "value": 2 + } + }, + { + "at": "/value/entries/0/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-bd163fcc78d6" + } + }, + { + "at": "/value/entries/0/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/0/content_md5_base64", "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "GyZ2GcSBLMRu4oF0eITKUA==" } }, { - "at": "/value/keys", + "at": "/value/entries", + "optional": false, + "rule": { + "is": "array_length", + "value": 1 + } + }, + { + "at": "/value/prefixes", + "optional": false, + "rule": { + "is": "array_length", + "value": 0 + } + }, + { + "at": "/value/continuation_token", "optional": false, "rule": { "is": "equal", - "value": [] + "value": "" } } ], "refusal": null }, { - "id": "operations/azure-hns/list-encoded-names", + "id": "operations/azure-hns/list-written-with-hashes", "profile": "azure-hns", "lane": "core", - "purpose": "list encoded names", + "purpose": "list written with hashes", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { "op": "list_page", - "prefix": "object-tests/names/" + "prefix": "object-tests/hashes/" }, "exchanges": [ { @@ -52279,7 +80151,7 @@ "optional": false, "rule": { "is": "equal", - "value": "object-tests/names/" + "value": "object-tests/hashes/" } } ], @@ -52297,7 +80169,7 @@ }, "body": { "encoding": "utf8", - "data": "object-tests/names/object-tests%2Fnames%2F100%25-%EF%BF%BE-name.txtMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-78b47742a630file1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/names/a&b.txtMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-f951d7d7ec22file1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/names/backMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-e64e63e9a87bdirectory0BlockBlobHottrueunlockedavailabletrueobject-tests/names/back/slash.txtMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-e9c0e2dbcfe1file1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/names/café.txtMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-7d8cf0126958file1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/names/hash#tag.txtMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-abf3c382e0bafile1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/names/percent%20.txtMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-7ded7554e543file1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/names/plus+plus.txtMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-235b28f1c86ffile1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/names/q?mark.txtMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-cb57b84f4392file1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrue" + "data": "object-tests/hashes/object-tests/hashes/committed.binMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-1e5253c0f65afile13application/octet-streamN6YZkbg+Lyfxtskwn8iRCg==BlockBlobHottrueunlockedavailabletrueobject-tests/hashes/crc64.txtMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-1a8d1824b282file13application/octet-stream9XBvAwWoR9o=N6YZkbg+Lyfxtskwn8iRCg==BlockBlobHottrueunlockedavailabletrueobject-tests/hashes/md5.txtMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-3b064c67c0acfile13application/octet-streamN6YZkbg+Lyfxtskwn8iRCg==BlockBlobHottrueunlockedavailabletrue" }, "framing": "chunked" } @@ -52319,7 +80191,7 @@ "optional": false, "rule": { "is": "equal", - "value": "object-tests/names/100%-￾-name.txt" + "value": "object-tests/hashes/committed.bin" } }, { @@ -52327,7 +80199,7 @@ "optional": false, "rule": { "is": "equal", - "value": 1 + "value": 13 } }, { @@ -52335,7 +80207,7 @@ "optional": false, "rule": { "is": "equal", - "value": "fixture-78b47742a630" + "value": "fixture-1e5253c0f65a" } }, { @@ -52376,7 +80248,7 @@ "optional": false, "rule": { "is": "equal", - "value": "xMpCOKC5I4INzFCab3WEmw==" + "value": "N6YZkbg+Lyfxtskwn8iRCg==" } }, { @@ -52384,7 +80256,7 @@ "optional": false, "rule": { "is": "equal", - "value": "object-tests/names/a&b.txt" + "value": "object-tests/hashes/crc64.txt" } }, { @@ -52392,7 +80264,7 @@ "optional": false, "rule": { "is": "equal", - "value": 1 + "value": 13 } }, { @@ -52400,7 +80272,7 @@ "optional": false, "rule": { "is": "equal", - "value": "fixture-f951d7d7ec22" + "value": "fixture-1a8d1824b282" } }, { @@ -52441,7 +80313,15 @@ "optional": false, "rule": { "is": "equal", - "value": "xMpCOKC5I4INzFCab3WEmw==" + "value": "N6YZkbg+Lyfxtskwn8iRCg==" + } + }, + { + "at": "/value/entries/1/content_crc64_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "9XBvAwWoR9o=" } }, { @@ -52449,7 +80329,7 @@ "optional": false, "rule": { "is": "equal", - "value": "object-tests/names/back" + "value": "object-tests/hashes/md5.txt" } }, { @@ -52457,7 +80337,7 @@ "optional": false, "rule": { "is": "equal", - "value": 0 + "value": 13 } }, { @@ -52465,7 +80345,7 @@ "optional": false, "rule": { "is": "equal", - "value": "fixture-e64e63e9a87b" + "value": "fixture-3b064c67c0ac" } }, { @@ -52502,180 +80382,357 @@ } }, { - "at": "/value/entries/2/directory", + "at": "/value/entries/2/content_md5_base64", "optional": false, "rule": { "is": "equal", - "value": true + "value": "N6YZkbg+Lyfxtskwn8iRCg==" } }, { - "at": "/value/entries/3/key", + "at": "/value/entries", "optional": false, "rule": { - "is": "equal", - "value": "object-tests/names/back/slash.txt" + "is": "array_length", + "value": 3 } }, { - "at": "/value/entries/3/size", + "at": "/value/prefixes", "optional": false, "rule": { - "is": "equal", - "value": 1 + "is": "array_length", + "value": 0 } }, { - "at": "/value/entries/3/etag", + "at": "/value/continuation_token", "optional": false, "rule": { "is": "equal", - "value": "fixture-e9c0e2dbcfe1" - } - }, - { - "at": "/value/entries/3/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/3/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "value": "" } - }, + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/put-container-missing", + "profile": "azure-hns", + "lane": "core", + "purpose": "put container missing. A client reports it as container_not_found: the bucket or container is absent, not the object", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "body_base64": "bm90aGluZyBpcyBzdG9yZWQ=", + "key": "object.txt", + "op": "put" + }, + "exchanges": [ { - "at": "/value/entries/3/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "bm90aGluZyBpcyBzdG9yZWQ=" + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "BlockBlob" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 404, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "ContainerNotFound" + }, + "body": { + "encoding": "utf8", + "data": "ContainerNotFoundFixture error" + } + } + } + ] + } + ], + "expect": [ { - "at": "/value/entries/3/content_md5_base64", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "xMpCOKC5I4INzFCab3WEmw==" + "value": "error" } }, { - "at": "/value/entries/4/key", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "object-tests/names/café.txt" + "value": 404 } }, { - "at": "/value/entries/4/size", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": 1 + "value": "ContainerNotFound" } }, { - "at": "/value/entries/4/etag", + "at": "/kind", "optional": false, "rule": { "is": "equal", - "value": "fixture-7d8cf0126958" - } - }, - { - "at": "/value/entries/4/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/4/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "value": "container_not_found" } + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/put-crc64-mismatch", + "profile": "azure-hns", + "lane": "core", + "purpose": "put crc64 mismatch", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "body_base64": "ZGVjbGFyZWQtYm9keQ==", + "checksum": { + "algorithm": "azure_crc64", + "value_base64": "khqMBK+EUSA=" }, + "key": "object-tests/hashes/crc64-mismatch.txt", + "op": "put" + }, + "exchanges": [ { - "at": "/value/entries/4/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/hashes/crc64-mismatch.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "ZGVjbGFyZWQtYm9keQ==" + } + }, + { + "at": "/headers/x-ms-content-crc64", + "optional": false, + "rule": { + "is": "equal", + "value": "khqMBK+EUSA=" + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "BlockBlob" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 400, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "Crc64Mismatch" + }, + "body": { + "encoding": "utf8", + "data": "Crc64MismatchFixture error" + } + } + } + ] + } + ], + "expect": [ { - "at": "/value/entries/4/content_md5_base64", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "xMpCOKC5I4INzFCab3WEmw==" + "value": "error" } }, { - "at": "/value/entries/5/key", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "object-tests/names/hash#tag.txt" + "value": 400 } }, { - "at": "/value/entries/5/size", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": 1 + "value": "Crc64Mismatch" } - }, + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/put-created-empty", + "profile": "azure-hns", + "lane": "core", + "purpose": "put created empty", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "body_base64": "", + "key": "object-tests/write/empty.bin", + "op": "put" + }, + "exchanges": [ { - "at": "/value/entries/5/etag", + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/write/empty.bin" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "BlockBlob" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 201, + "headers": { + "content-md5": "1B2M2Y8AsgTpgAmY7PhCfg==", + "date": { + "from": "now" + }, + "etag": "\"fixture-9373f0410116\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-request-server-encrypted": "true" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "fixture-abf3c382e0ba" + "value": "ok" } }, { - "at": "/value/entries/5/snapshot", - "optional": true, + "at": "/value/etag", + "optional": false, "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "is": "equal", + "value": "\"fixture-9373f0410116\"" } }, { - "at": "/value/entries/5/version", + "at": "/value/version", "optional": true, "rule": { "is": "one_of", @@ -52684,63 +80741,105 @@ "" ] } - }, - { - "at": "/value/entries/5/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/5/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "xMpCOKC5I4INzFCab3WEmw==" - } - }, + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/put-created", + "profile": "azure-hns", + "lane": "core", + "purpose": "put created", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "body_base64": "MDEyMzQ1Njc4OQ==", + "key": "object-tests/write/object.txt", + "op": "put" + }, + "exchanges": [ { - "at": "/value/entries/6/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/names/percent%20.txt" - } - }, + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/write/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MDEyMzQ1Njc4OQ==" + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "BlockBlob" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 201, + "headers": { + "content-md5": "eB5eJF1ptWaXm4bijSPyxw==", + "date": { + "from": "now" + }, + "etag": "\"fixture-bf139483d631\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-request-server-encrypted": "true" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ { - "at": "/value/entries/6/size", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": 1 + "value": "ok" } }, { - "at": "/value/entries/6/etag", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": "fixture-7ded7554e543" - } - }, - { - "at": "/value/entries/6/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "value": "\"fixture-bf139483d631\"" } }, { - "at": "/value/entries/6/version", + "at": "/value/version", "optional": true, "rule": { "is": "one_of", @@ -52749,63 +80848,105 @@ "" ] } - }, - { - "at": "/value/entries/6/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/6/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "xMpCOKC5I4INzFCab3WEmw==" - } - }, + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/put-created-key-question", + "profile": "azure-hns", + "lane": "core", + "purpose": "put created, with the key \"question?mark.txt\"", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "body_base64": "MDEyMzQ1Njc4OQ==", + "key": "object-tests/keys/question?mark.txt", + "op": "put" + }, + "exchanges": [ { - "at": "/value/entries/7/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/names/plus+plus.txt" - } - }, + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/keys/question?mark.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MDEyMzQ1Njc4OQ==" + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "BlockBlob" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 201, + "headers": { + "content-md5": "eB5eJF1ptWaXm4bijSPyxw==", + "date": { + "from": "now" + }, + "etag": "\"fixture-bf139483d631\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-request-server-encrypted": "true" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ { - "at": "/value/entries/7/size", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": 1 + "value": "ok" } }, { - "at": "/value/entries/7/etag", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": "fixture-235b28f1c86f" - } - }, - { - "at": "/value/entries/7/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "value": "\"fixture-bf139483d631\"" } }, { - "at": "/value/entries/7/version", + "at": "/value/version", "optional": true, "rule": { "is": "one_of", @@ -52814,63 +80955,212 @@ "" ] } - }, + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/put-created-key-hash", + "profile": "azure-hns", + "lane": "core", + "purpose": "put created, with the key \"hash#tag.txt\"", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "body_base64": "MDEyMzQ1Njc4OQ==", + "key": "object-tests/keys/hash#tag.txt", + "op": "put" + }, + "exchanges": [ { - "at": "/value/entries/7/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/keys/hash#tag.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MDEyMzQ1Njc4OQ==" + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "BlockBlob" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 201, + "headers": { + "content-md5": "eB5eJF1ptWaXm4bijSPyxw==", + "date": { + "from": "now" + }, + "etag": "\"fixture-bf139483d631\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-request-server-encrypted": "true" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ { - "at": "/value/entries/7/content_md5_base64", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "xMpCOKC5I4INzFCab3WEmw==" + "value": "ok" } }, { - "at": "/value/entries/8/key", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": "object-tests/names/q?mark.txt" + "value": "\"fixture-bf139483d631\"" } }, { - "at": "/value/entries/8/size", - "optional": false, + "at": "/value/version", + "optional": true, "rule": { - "is": "equal", - "value": 1 + "is": "one_of", + "values": [ + null, + "" + ] } - }, + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/put-created-key-percent", + "profile": "azure-hns", + "lane": "core", + "purpose": "put created, with the key \"percent%20.txt\"", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "body_base64": "MDEyMzQ1Njc4OQ==", + "key": "object-tests/keys/percent%20.txt", + "op": "put" + }, + "exchanges": [ { - "at": "/value/entries/8/etag", + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/keys/percent%20.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MDEyMzQ1Njc4OQ==" + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "BlockBlob" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 201, + "headers": { + "content-md5": "eB5eJF1ptWaXm4bijSPyxw==", + "date": { + "from": "now" + }, + "etag": "\"fixture-bf139483d631\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-request-server-encrypted": "true" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "fixture-cb57b84f4392" + "value": "ok" } }, { - "at": "/value/entries/8/snapshot", - "optional": true, + "at": "/value/etag", + "optional": false, "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "is": "equal", + "value": "\"fixture-bf139483d631\"" } }, { - "at": "/value/entries/8/version", + "at": "/value/version", "optional": true, "rule": { "is": "one_of", @@ -52879,64 +81169,129 @@ "" ] } - }, + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/put-created-key-plus", + "profile": "azure-hns", + "lane": "core", + "purpose": "put created, with the key \"plus+plus.txt\"", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "body_base64": "MDEyMzQ1Njc4OQ==", + "key": "object-tests/keys/plus+plus.txt", + "op": "put" + }, + "exchanges": [ { - "at": "/value/entries/8/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/keys/plus+plus.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MDEyMzQ1Njc4OQ==" + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "BlockBlob" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 201, + "headers": { + "content-md5": "eB5eJF1ptWaXm4bijSPyxw==", + "date": { + "from": "now" + }, + "etag": "\"fixture-bf139483d631\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-request-server-encrypted": "true" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ { - "at": "/value/entries/8/content_md5_base64", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "xMpCOKC5I4INzFCab3WEmw==" - } - }, - { - "at": "/value/entries", - "optional": false, - "rule": { - "is": "array_length", - "value": 9 + "value": "ok" } }, { - "at": "/value/prefixes", + "at": "/value/etag", "optional": false, "rule": { - "is": "array_length", - "value": 0 + "is": "equal", + "value": "\"fixture-bf139483d631\"" } }, - { - "at": "/value/continuation_token", - "optional": false, + { + "at": "/value/version", + "optional": true, "rule": { - "is": "equal", - "value": "" + "is": "one_of", + "values": [ + null, + "" + ] } } ], "refusal": null }, { - "id": "operations/azure-hns/list-xml-escaped", + "id": "operations/azure-hns/put-created-key-space", "profile": "azure-hns", "lane": "core", - "purpose": "list xml escaped", + "purpose": "put created, with the key \"space name.txt\"", "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/list-blobs" + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "op": "list", - "prefix": "" + "body_base64": "MDEyMzQ1Njc4OQ==", + "key": "object-tests/keys/space name.txt", + "op": "put" }, "exchanges": [ { @@ -52948,7 +81303,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -52956,7 +81311,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/keys/space name.txt" } }, { @@ -52964,59 +81319,38 @@ "optional": false, "rule": { "is": "equal", - "value": "" - } - }, - { - "at": "/query/restype", - "optional": false, - "rule": { - "is": "equal", - "value": "container" + "value": "MDEyMzQ1Njc4OQ==" } }, { - "at": "/query/comp", + "at": "/headers/x-ms-blob-type", "optional": false, "rule": { "is": "equal", - "value": "list" - } - }, - { - "at": "/query/prefix", - "optional": true, - "rule": { - "is": "equal", - "value": "" + "value": "BlockBlob" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 200, + "status": 201, "headers": { - "content-type": "application/xml", + "content-md5": "eB5eJF1ptWaXm4bijSPyxw==", "date": { "from": "now" }, - "etag": "\"fixture-etag\"", + "etag": "\"fixture-bf139483d631\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-request-id": "fixture-request-id", - "x-ms-request-server-encrypted": "true", - "x-ms-server-encrypted": "true", - "x-ms-version": "2023-11-03" + "x-ms-request-server-encrypted": "true" }, "body": { "encoding": "base64", - "data": "PEVudW1lcmF0aW9uUmVzdWx0cyBTZXJ2aWNlRW5kcG9pbnQ9Imh0dHA6Ly9maXh0dXJlLyIgQ29udGFpbmVyTmFtZT0iZml4dHVyZSI+PFByZWZpeD48L1ByZWZpeD48QmxvYnM+PEJsb2I+PE5hbWU+YSZhbXA7YjwvTmFtZT48UHJvcGVydGllcz48TGFzdC1Nb2RpZmllZD5Nb24sIDAxIEphbiAyMDI0IDAwOjAwOjAwIEdNVDwvTGFzdC1Nb2RpZmllZD48RXRhZz4iZml4dHVyZSI8L0V0YWc+PENvbnRlbnQtTGVuZ3RoPjU8L0NvbnRlbnQtTGVuZ3RoPjxCbG9iVHlwZT5CbG9ja0Jsb2I8L0Jsb2JUeXBlPjwvUHJvcGVydGllcz48L0Jsb2I+PEJsb2I+PE5hbWU+YyZsdDtkPC9OYW1lPjxQcm9wZXJ0aWVzPjxMYXN0LU1vZGlmaWVkPk1vbiwgMDEgSmFuIDIwMjQgMDA6MDA6MDAgR01UPC9MYXN0LU1vZGlmaWVkPjxFdGFnPiJmaXh0dXJlIjwvRXRhZz48Q29udGVudC1MZW5ndGg+NTwvQ29udGVudC1MZW5ndGg+PEJsb2JUeXBlPkJsb2NrQmxvYjwvQmxvYlR5cGU+PC9Qcm9wZXJ0aWVzPjwvQmxvYj48L0Jsb2JzPjxOZXh0TWFya2VyPjwvTmV4dE1hcmtlcj48L0VudW1lcmF0aW9uUmVzdWx0cz4=" - }, - "framing": "chunked" + "data": "" + } } } ] @@ -53032,13 +81366,21 @@ } }, { - "at": "/value/keys", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": [ - "a&b", - "cobject-tests/board/2object-tests/board/a.txtMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-e8a4acb31ab1file8application/octet-streamJdVa0oOqQAr0ZMdtcTwHrQ==BlockBlobHottrueunlockedavailabletrueobject-tests/board/nestedMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-bcf8c9e06f70directory0BlockBlobHottrueunlockedavailabletruefixture-marker+/17aa95c4a402=" - }, - "framing": "chunked" + "encoding": "base64", + "data": "" + } } } ] @@ -53152,107 +81473,15 @@ } }, { - "at": "/value/entries/0/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/board/a.txt" - } - }, - { - "at": "/value/entries/0/size", - "optional": false, - "rule": { - "is": "equal", - "value": 8 - } - }, - { - "at": "/value/entries/0/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-e8a4acb31ab1" - } - }, - { - "at": "/value/entries/0/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/0/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/0/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/0/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "JdVa0oOqQAr0ZMdtcTwHrQ==" - } - }, - { - "at": "/value/entries/1/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/board/nested" - } - }, - { - "at": "/value/entries/1/size", - "optional": false, - "rule": { - "is": "equal", - "value": 0 - } - }, - { - "at": "/value/entries/1/etag", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": "fixture-bcf8c9e06f70" - } - }, - { - "at": "/value/entries/1/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "value": "\"fixture-bf139483d631\"" } }, { - "at": "/value/entries/1/version", + "at": "/value/version", "optional": true, "rule": { "is": "one_of", @@ -53261,65 +81490,22 @@ "" ] } - }, - { - "at": "/value/entries/1/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/1/directory", - "optional": false, - "rule": { - "is": "equal", - "value": true - } - }, - { - "at": "/value/entries", - "optional": false, - "rule": { - "is": "array_length", - "value": 2 - } - }, - { - "at": "/value/prefixes", - "optional": false, - "rule": { - "is": "array_length", - "value": 0 - } - }, - { - "at": "/value/continuation_token", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-marker+/17aa95c4a402=" - } } ], "refusal": null }, { - "id": "operations/azure-hns/list-page-size-one", + "id": "operations/azure-hns/put-created-key-double-slash", "profile": "azure-hns", "lane": "core", - "purpose": "A page of zero entries is out of range, but a page of one is not. Send a page size of 1 and report the one entry and the continuation token.", + "purpose": "put created, with the key \"double//slash.txt\"", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "op": "list_page", - "page_size": 1, - "prefix": "object-tests/board/" + "body_base64": "MDEyMzQ1Njc4OQ==", + "key": "object-tests/keys/double//slash.txt", + "op": "put" }, "exchanges": [ { @@ -53331,7 +81517,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -53339,7 +81525,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/keys/double//slash.txt" } }, { @@ -53347,59 +81533,38 @@ "optional": false, "rule": { "is": "equal", - "value": "" - } - }, - { - "at": "/query/restype", - "optional": false, - "rule": { - "is": "equal", - "value": "container" - } - }, - { - "at": "/query/comp", - "optional": false, - "rule": { - "is": "equal", - "value": "list" - } - }, - { - "at": "/query/prefix", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/board/" + "value": "MDEyMzQ1Njc4OQ==" } }, { - "at": "/query/maxresults", + "at": "/headers/x-ms-blob-type", "optional": false, "rule": { "is": "equal", - "value": "1" + "value": "BlockBlob" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 200, + "status": 201, "headers": { - "content-type": "application/xml", + "content-md5": "eB5eJF1ptWaXm4bijSPyxw==", "date": { "from": "now" }, + "etag": "\"fixture-bf139483d631\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-request-server-encrypted": "true" }, "body": { - "encoding": "utf8", - "data": "object-tests/board/1object-tests/board/a.txtMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-e8a4acb31ab1file8application/octet-streamJdVa0oOqQAr0ZMdtcTwHrQ==BlockBlobHottrueunlockedavailabletruefixture-marker+/17aa95c4a402=" - }, - "framing": "chunked" + "encoding": "base64", + "data": "" + } } } ] @@ -53415,42 +81580,15 @@ } }, { - "at": "/value/entries/0/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/board/a.txt" - } - }, - { - "at": "/value/entries/0/size", - "optional": false, - "rule": { - "is": "equal", - "value": 8 - } - }, - { - "at": "/value/entries/0/etag", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": "fixture-e8a4acb31ab1" - } - }, - { - "at": "/value/entries/0/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "value": "\"fixture-bf139483d631\"" } }, { - "at": "/value/entries/0/version", + "at": "/value/version", "optional": true, "rule": { "is": "one_of", @@ -53459,67 +81597,22 @@ "" ] } - }, - { - "at": "/value/entries/0/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/0/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "JdVa0oOqQAr0ZMdtcTwHrQ==" - } - }, - { - "at": "/value/entries", - "optional": false, - "rule": { - "is": "array_length", - "value": 1 - } - }, - { - "at": "/value/prefixes", - "optional": false, - "rule": { - "is": "array_length", - "value": 0 - } - }, - { - "at": "/value/continuation_token", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-marker+/17aa95c4a402=" - } } ], "refusal": null }, { - "id": "operations/azure-hns/list-operation-timed-out", + "id": "operations/azure-hns/put-created-key-trailing-slash", "profile": "azure-hns", "lane": "core", - "purpose": "Report a 500 OperationTimedOut answer as an error, after at most 5 retries", + "purpose": "put created, with the key \"trailing-slash/\"", "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/common-rest-api-error-codes", - "https://learn.microsoft.com/en-us/rest/api/storageservices/blob-service-error-codes" + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], - "origin": "transient", "call": { - "op": "list_page", - "page_size": 2, - "prefix": "object-tests/board/" + "body_base64": "MDEyMzQ1Njc4OQ==", + "key": "object-tests/keys/trailing-slash/", + "op": "put" }, "exchanges": [ { @@ -53531,7 +81624,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -53539,7 +81632,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/keys/trailing-slash/" } }, { @@ -53547,61 +81640,181 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "MDEyMzQ1Njc4OQ==" } }, { - "at": "/query/restype", + "at": "/headers/x-ms-blob-type", "optional": false, "rule": { "is": "equal", - "value": "container" + "value": "BlockBlob" } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 400, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "InvalidUri" }, + "body": { + "encoding": "utf8", + "data": "InvalidUriFixture error" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 400 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "InvalidUri" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/copy-missing-source", + "profile": "azure-hns", + "lane": "core", + "purpose": "Refuse a copy whose source does not exist", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/copy-blob" + ], + "call": { + "key": "object-tests/copy/target.txt", + "op": "copy", + "source_key": "object-tests/copy/absent.txt" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ { - "at": "/query/comp", + "at": "/method", "optional": false, "rule": { "is": "equal", - "value": "list" + "value": "PUT" } }, { - "at": "/query/prefix", + "at": "/path", "optional": false, "rule": { "is": "equal", - "value": "object-tests/board/" + "value": "/fixture/object-tests/copy/target.txt" } }, { - "at": "/query/maxresults", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "2" + "value": "" + } + }, + { + "at": "/headers/x-ms-copy-source", + "optional": false, + "rule": { + "is": "matches", + "pattern": "https?://[^/]+/fixture/object-tests/copy/absent\\.txt" } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 500, + "status": 404, "headers": { "content-type": "application/xml", "date": { "from": "now" }, - "x-ms-error-code": "OperationTimedOut" + "x-ms-error-code": "BlobNotFound" }, "body": { "encoding": "utf8", - "data": "OperationTimedOutThe operation could not be completed within the permitted time." + "data": "BlobNotFoundFixture error" } } } ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 404 + } }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "BlobNotFound" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/copy", + "profile": "azure-hns", + "lane": "core", + "purpose": "Copy an object to another key in the same container", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/copy-blob" + ], + "call": { + "key": "object-tests/copy/target.txt", + "op": "copy", + "source_key": "object-tests/copy/source.txt" + }, + "exchanges": [ { "alternatives": [ { @@ -53611,7 +81824,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -53619,7 +81832,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/copy/target.txt" } }, { @@ -53631,58 +81844,72 @@ } }, { - "at": "/query/restype", - "optional": false, - "rule": { - "is": "equal", - "value": "container" - } - }, - { - "at": "/query/comp", - "optional": false, - "rule": { - "is": "equal", - "value": "list" - } - }, - { - "at": "/query/prefix", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/board/" - } - }, - { - "at": "/query/maxresults", + "at": "/headers/x-ms-copy-source", "optional": false, "rule": { - "is": "equal", - "value": "2" + "is": "matches", + "pattern": "https?://[^/]+/fixture/object-tests/copy/source\\.txt" } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 500, + "status": 202, "headers": { - "content-type": "application/xml", "date": { "from": "now" }, - "x-ms-error-code": "OperationTimedOut" + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-copy-id": "fixture-copy-id", + "x-ms-copy-status": "success" }, "body": { - "encoding": "utf8", - "data": "OperationTimedOutThe operation could not be completed within the permitted time." + "encoding": "empty" } } } - ], - "optional": true + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/copy_status", + "optional": false, + "rule": { + "is": "equal", + "value": "success" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/copy-replace-metadata", + "profile": "azure-hns", + "lane": "core", + "purpose": "Copy a blob with new metadata, which replaces all of the source's. A copy that names no metadata keeps the source's", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/copy-blob" + ], + "call": { + "key": "object-tests/copy/target.txt", + "metadata": { + "colour": "blue" }, + "op": "copy", + "source_key": "object-tests/copy/source.txt" + }, + "exchanges": [ { "alternatives": [ { @@ -53692,7 +81919,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -53700,7 +81927,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/copy/target.txt" } }, { @@ -53712,58 +81939,78 @@ } }, { - "at": "/query/restype", - "optional": false, - "rule": { - "is": "equal", - "value": "container" - } - }, - { - "at": "/query/comp", - "optional": false, - "rule": { - "is": "equal", - "value": "list" - } - }, - { - "at": "/query/prefix", + "at": "/headers/x-ms-copy-source", "optional": false, "rule": { - "is": "equal", - "value": "object-tests/board/" + "is": "matches", + "pattern": "https?://[^/]+/fixture/object-tests/copy/source\\.txt" } }, { - "at": "/query/maxresults", + "at": "/headers/x-ms-meta-colour", "optional": false, "rule": { "is": "equal", - "value": "2" + "value": "blue" } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 500, + "status": 202, "headers": { - "content-type": "application/xml", "date": { "from": "now" }, - "x-ms-error-code": "OperationTimedOut" + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-copy-id": "fixture-copy-id", + "x-ms-copy-status": "success" }, "body": { - "encoding": "utf8", - "data": "OperationTimedOutThe operation could not be completed within the permitted time." + "encoding": "empty" } } } - ], - "optional": true + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } }, + { + "at": "/value/copy_status", + "optional": false, + "rule": { + "is": "equal", + "value": "success" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/copy-source-if-match", + "profile": "azure-hns", + "lane": "core", + "purpose": "Copy a blob only if the source still has this ETag, named in x-ms-source-if-match", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/copy-blob" + ], + "call": { + "key": "object-tests/copy/target.txt", + "op": "copy", + "source_if_match": "\"fixture-etag\"", + "source_key": "object-tests/copy/source.txt" + }, + "exchanges": [ { "alternatives": [ { @@ -53773,7 +82020,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -53781,7 +82028,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/copy/target.txt" } }, { @@ -53793,58 +82040,78 @@ } }, { - "at": "/query/restype", - "optional": false, - "rule": { - "is": "equal", - "value": "container" - } - }, - { - "at": "/query/comp", - "optional": false, - "rule": { - "is": "equal", - "value": "list" - } - }, - { - "at": "/query/prefix", + "at": "/headers/x-ms-copy-source", "optional": false, "rule": { - "is": "equal", - "value": "object-tests/board/" + "is": "matches", + "pattern": "https?://[^/]+/fixture/object-tests/copy/source\\.txt" } }, { - "at": "/query/maxresults", + "at": "/headers/x-ms-source-if-match", "optional": false, "rule": { "is": "equal", - "value": "2" + "value": "\"fixture-etag\"" } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 500, + "status": 202, "headers": { - "content-type": "application/xml", "date": { "from": "now" }, - "x-ms-error-code": "OperationTimedOut" + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-copy-id": "fixture-copy-id", + "x-ms-copy-status": "success" }, "body": { - "encoding": "utf8", - "data": "OperationTimedOutThe operation could not be completed within the permitted time." + "encoding": "empty" } } } - ], - "optional": true + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } }, + { + "at": "/value/copy_status", + "optional": false, + "rule": { + "is": "equal", + "value": "success" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/copy-source-if-match-failed", + "profile": "azure-hns", + "lane": "core", + "purpose": "Report a copy whose source does not have the ETag in x-ms-source-if-match as a failed condition, 412 SourceConditionNotMet", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/copy-blob" + ], + "call": { + "key": "object-tests/copy/target.txt", + "op": "copy", + "source_if_match": "\"fixture-0123456789ab\"", + "source_key": "object-tests/copy/source.txt" + }, + "exchanges": [ { "alternatives": [ { @@ -53854,7 +82121,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -53862,7 +82129,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/copy/target.txt" } }, { @@ -53874,58 +82141,85 @@ } }, { - "at": "/query/restype", - "optional": false, - "rule": { - "is": "equal", - "value": "container" - } - }, - { - "at": "/query/comp", - "optional": false, - "rule": { - "is": "equal", - "value": "list" - } - }, - { - "at": "/query/prefix", + "at": "/headers/x-ms-copy-source", "optional": false, "rule": { - "is": "equal", - "value": "object-tests/board/" + "is": "matches", + "pattern": "https?://[^/]+/fixture/object-tests/copy/source\\.txt" } }, { - "at": "/query/maxresults", + "at": "/headers/x-ms-source-if-match", "optional": false, "rule": { "is": "equal", - "value": "2" + "value": "\"fixture-0123456789ab\"" } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 500, + "status": 412, "headers": { "content-type": "application/xml", "date": { "from": "now" }, - "x-ms-error-code": "OperationTimedOut" + "x-ms-error-code": "SourceConditionNotMet" }, "body": { "encoding": "utf8", - "data": "OperationTimedOutThe operation could not be completed within the permitted time." + "data": "SourceConditionNotMetFixture error" } } } - ], - "optional": true + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 412 + } }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "SourceConditionNotMet" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/copy-source-if-unmodified-since-failed", + "profile": "azure-hns", + "lane": "core", + "purpose": "Report a copy whose source changed after the time in x-ms-source-if-unmodified-since as a failed condition, 412 SourceConditionNotMet", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/copy-blob" + ], + "call": { + "key": "object-tests/copy/target.txt", + "op": "copy", + "source_if_unmodified_since": "Mon, 01 Jan 2024 00:00:00 GMT", + "source_key": "object-tests/copy/source.txt" + }, + "exchanges": [ { "alternatives": [ { @@ -53935,7 +82229,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -53943,7 +82237,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/copy/target.txt" } }, { @@ -53955,57 +82249,40 @@ } }, { - "at": "/query/restype", - "optional": false, - "rule": { - "is": "equal", - "value": "container" - } - }, - { - "at": "/query/comp", - "optional": false, - "rule": { - "is": "equal", - "value": "list" - } - }, - { - "at": "/query/prefix", + "at": "/headers/x-ms-copy-source", "optional": false, "rule": { - "is": "equal", - "value": "object-tests/board/" + "is": "matches", + "pattern": "https?://[^/]+/fixture/object-tests/copy/source\\.txt" } }, { - "at": "/query/maxresults", + "at": "/headers/x-ms-source-if-unmodified-since", "optional": false, "rule": { "is": "equal", - "value": "2" + "value": "Mon, 01 Jan 2024 00:00:00 GMT" } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 500, + "status": 412, "headers": { "content-type": "application/xml", "date": { "from": "now" }, - "x-ms-error-code": "OperationTimedOut" + "x-ms-error-code": "SourceConditionNotMet" }, "body": { "encoding": "utf8", - "data": "OperationTimedOutThe operation could not be completed within the permitted time." + "data": "SourceConditionNotMetFixture error" } } } - ], - "optional": true + ] } ], "expect": [ @@ -54022,7 +82299,7 @@ "optional": false, "rule": { "is": "equal", - "value": 500 + "value": 412 } }, { @@ -54030,24 +82307,25 @@ "optional": false, "rule": { "is": "equal", - "value": "OperationTimedOut" + "value": "SourceConditionNotMet" } } ], "refusal": null }, { - "id": "operations/azure-hns/list-key-equal-to-prefix-delimited", + "id": "operations/azure-hns/copy-if-none-match-exists", "profile": "azure-hns", "lane": "core", - "purpose": "list key equal to prefix delimited", + "purpose": "Report a copy with If-None-Match: * onto a blob that exists as a failed condition on the destination", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "https://learn.microsoft.com/en-us/rest/api/storageservices/copy-blob" ], "call": { - "delimiter": "/", - "op": "list_page", - "prefix": "object-tests/exact" + "if_none_match": "*", + "key": "object-tests/copy/target.txt", + "op": "copy", + "source_key": "object-tests/copy/source.txt" }, "exchanges": [ { @@ -54059,7 +82337,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -54067,7 +82345,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/copy/target.txt" } }, { @@ -54079,55 +82357,138 @@ } }, { - "at": "/query/restype", + "at": "/headers/x-ms-copy-source", + "optional": false, + "rule": { + "is": "matches", + "pattern": "https?://[^/]+/fixture/object-tests/copy/source\\.txt" + } + }, + { + "at": "/headers/if-none-match", + "optional": false, + "rule": { + "is": "equal", + "value": "*" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 409, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "BlobAlreadyExists" + }, + "body": { + "encoding": "utf8", + "data": "BlobAlreadyExistsFixture error" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 409 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "BlobAlreadyExists" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/copy-across-containers", + "profile": "azure-hns", + "lane": "core", + "purpose": "Copy a blob from another container of the same account, which x-ms-copy-source names in its URL", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/copy-blob" + ], + "call": { + "key": "object-tests/copy/target.txt", + "op": "copy", + "source_container": "source", + "source_key": "object-tests/copy/source.txt" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", "optional": false, "rule": { "is": "equal", - "value": "container" + "value": "PUT" } }, { - "at": "/query/comp", + "at": "/path", "optional": false, "rule": { "is": "equal", - "value": "list" + "value": "/fixture/object-tests/copy/target.txt" } }, { - "at": "/query/prefix", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "object-tests/exact" + "value": "" } }, { - "at": "/query/delimiter", + "at": "/headers/x-ms-copy-source", "optional": false, "rule": { - "is": "equal", - "value": "/" + "is": "matches", + "pattern": "https?://[^/]+/source/object-tests/copy/source\\.txt" } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 200, + "status": 202, "headers": { - "content-type": "application/xml", "date": { "from": "now" }, + "etag": "\"fixture-etag\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + "x-ms-copy-id": "fixture-copy-id", + "x-ms-copy-status": "success" }, "body": { - "encoding": "utf8", - "data": "object-tests/exact/object-tests/exactMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-fef6be204aeafile1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrue" - }, - "framing": "chunked" + "encoding": "empty" + } } } ] @@ -54143,108 +82504,29 @@ } }, { - "at": "/value/entries/0/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/exact" - } - }, - { - "at": "/value/entries/0/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/0/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-fef6be204aea" - } - }, - { - "at": "/value/entries/0/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/0/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/0/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/0/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "xMpCOKC5I4INzFCab3WEmw==" - } - }, - { - "at": "/value/entries", - "optional": false, - "rule": { - "is": "array_length", - "value": 1 - } - }, - { - "at": "/value/prefixes", - "optional": false, - "rule": { - "is": "array_length", - "value": 0 - } - }, - { - "at": "/value/continuation_token", + "at": "/value/copy_status", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "success" } } ], "refusal": null }, { - "id": "operations/azure-hns/list-key-equal-to-prefix", + "id": "operations/azure-hns/copy-tier", "profile": "azure-hns", "lane": "core", - "purpose": "list key equal to prefix", + "purpose": "Copy a blob into another access tier, named in x-ms-access-tier", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "https://learn.microsoft.com/en-us/rest/api/storageservices/copy-blob" ], "call": { - "op": "list_page", - "prefix": "object-tests/exact" + "key": "object-tests/copy/target.txt", + "op": "copy", + "source_key": "object-tests/copy/source.txt", + "tier": "Cool" }, "exchanges": [ { @@ -54256,7 +82538,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -54264,7 +82546,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/copy/target.txt" } }, { @@ -54276,47 +82558,38 @@ } }, { - "at": "/query/restype", - "optional": false, - "rule": { - "is": "equal", - "value": "container" - } - }, - { - "at": "/query/comp", + "at": "/headers/x-ms-copy-source", "optional": false, "rule": { - "is": "equal", - "value": "list" + "is": "matches", + "pattern": "https?://[^/]+/fixture/object-tests/copy/source\\.txt" } }, { - "at": "/query/prefix", + "at": "/headers/x-ms-access-tier", "optional": false, "rule": { "is": "equal", - "value": "object-tests/exact" + "value": "Cool" } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 200, + "status": 202, "headers": { - "content-type": "application/xml", "date": { "from": "now" }, + "etag": "\"fixture-etag\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + "x-ms-copy-id": "fixture-copy-id", + "x-ms-copy-status": "success" }, "body": { - "encoding": "utf8", - "data": "object-tests/exactobject-tests/exactMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-fef6be204aeafile1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrue" - }, - "framing": "chunked" + "encoding": "empty" + } } } ] @@ -54332,108 +82605,28 @@ } }, { - "at": "/value/entries/0/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/exact" - } - }, - { - "at": "/value/entries/0/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/0/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-fef6be204aea" - } - }, - { - "at": "/value/entries/0/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/0/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/0/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/0/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "xMpCOKC5I4INzFCab3WEmw==" - } - }, - { - "at": "/value/entries", - "optional": false, - "rule": { - "is": "array_length", - "value": 1 - } - }, - { - "at": "/value/prefixes", - "optional": false, - "rule": { - "is": "array_length", - "value": 0 - } - }, - { - "at": "/value/continuation_token", + "at": "/value/copy_status", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "success" } } ], "refusal": null }, { - "id": "operations/azure-hns/list-many-segments", + "id": "operations/azure-hns/copy-source-key-encoded", "profile": "azure-hns", "lane": "core", - "purpose": "list many segments", + "purpose": "Copy from a key with a space, +, %, é, ? and #. The x-ms-copy-source URL percent-encodes every byte of the key outside letters, digits, -._~ and /", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "https://learn.microsoft.com/en-us/rest/api/storageservices/copy-blob" ], "call": { - "op": "list_page", - "prefix": "object-tests/s/" + "key": "object-tests/copy/target.txt", + "op": "copy", + "source_key": "object-tests/copy/a b+c%é?#.txt" }, "exchanges": [ { @@ -54445,7 +82638,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -54453,7 +82646,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/copy/target.txt" } }, { @@ -54465,1983 +82658,3426 @@ } }, { - "at": "/query/restype", - "optional": false, - "rule": { - "is": "equal", - "value": "container" - } - }, - { - "at": "/query/comp", - "optional": false, - "rule": { - "is": "equal", - "value": "list" - } - }, - { - "at": "/query/prefix", + "at": "/headers/x-ms-copy-source", "optional": false, "rule": { - "is": "equal", - "value": "object-tests/s/" + "is": "matches", + "pattern": "https?://[^/]+/fixture/object-tests/copy/a%20b%2[Bb]c%25%[Cc]3%[Aa]9%3[Ff]%23\\.txt" } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 200, + "status": 202, "headers": { - "content-type": "application/xml", "date": { "from": "now" }, + "etag": "\"fixture-etag\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + "x-ms-copy-id": "fixture-copy-id", + "x-ms-copy-status": "success" }, "body": { - "encoding": "utf8", - "data": "object-tests/s/object-tests/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-a1b39dcffaf3directory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-8159be643ac0directory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-80c8a1f73c94directory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-7b0fdb4b59dddirectory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-4f1babf5f716directory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-5f419d87193edirectory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-c32f2de5b421directory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-51d97c94b354directory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-581e4ea356a1directory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-5eb2172133aedirectory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-d32c38634d37directory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-3bdc7f728acbdirectory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-8a1c17d8d892directory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-53277b21dbd0directory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-18b5ffb0f548directory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-2250c2114935directory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-8ce858fcdc2bdirectory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-d8660a5bc252directory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-4ec0409f150bdirectory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-aede66c75766directory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-3316748edb9bdirectory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-f7f3bc0b3f92directory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-6a1f4f7934bfdirectory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-87c3fdda2bdadirectory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-4d2fcc081fd8directory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-8956db6ae017directory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-7f1f55a3463bdirectory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-44dd81206643directory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-952096734190directory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-db4655ce498cdirectory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-b2a6d305ae63directory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-23d914b576fbdirectory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-0fe87110b578directory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-55cf88c7a2e2directory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-6815a7113351directory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-70df51065efedirectory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-0e76caa6ea5fdirectory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-97f6d7ad109ddirectory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-b7df38492c3edirectory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-ac2f2336ab74directory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-c2a19efa033cdirectory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-b9e90b553fffdirectory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-0d7c0a17f740directory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-e1d35759d4acdirectory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-1389b2ea70e1directory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-11c5ee820f55directory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-ba489a3d8cb9directory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-548645ff94c6directory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-b21f6737ba6cdirectory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-23eb881b6618directory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-02c3be7f3363directory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-86bca962bd30directory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-1696791242e8directory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-b40699a1e1dbdirectory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-d3fa18807e94directory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-d55c43fd1f89directory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-989ce64e20d6directory0BlockBlobHottrueunlockedavailabletrueobject-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/sMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-e6b534521353file1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrue" - }, - "framing": "chunked" + "encoding": "empty" + } } } ] } ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/entries/0/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/s/s" - } - }, - { - "at": "/value/entries/0/size", - "optional": false, - "rule": { - "is": "equal", - "value": 0 - } - }, - { - "at": "/value/entries/0/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-a1b39dcffaf3" - } - }, - { - "at": "/value/entries/0/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/0/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/0/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/0/directory", - "optional": false, - "rule": { - "is": "equal", - "value": true - } - }, - { - "at": "/value/entries/1/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/s/s/s" - } - }, - { - "at": "/value/entries/1/size", - "optional": false, - "rule": { - "is": "equal", - "value": 0 - } - }, - { - "at": "/value/entries/1/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-8159be643ac0" - } - }, - { - "at": "/value/entries/1/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/1/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/1/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/1/directory", - "optional": false, - "rule": { - "is": "equal", - "value": true - } - }, - { - "at": "/value/entries/2/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/s/s/s/s" - } - }, - { - "at": "/value/entries/2/size", - "optional": false, - "rule": { - "is": "equal", - "value": 0 - } - }, - { - "at": "/value/entries/2/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-80c8a1f73c94" - } - }, - { - "at": "/value/entries/2/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/2/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/2/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/2/directory", - "optional": false, - "rule": { - "is": "equal", - "value": true - } - }, - { - "at": "/value/entries/3/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/s/s/s/s/s" - } - }, - { - "at": "/value/entries/3/size", - "optional": false, - "rule": { - "is": "equal", - "value": 0 - } - }, - { - "at": "/value/entries/3/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-7b0fdb4b59dd" - } - }, - { - "at": "/value/entries/3/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/3/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/3/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/3/directory", - "optional": false, - "rule": { - "is": "equal", - "value": true - } - }, - { - "at": "/value/entries/4/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/s/s/s/s/s/s" - } - }, - { - "at": "/value/entries/4/size", - "optional": false, - "rule": { - "is": "equal", - "value": 0 - } - }, - { - "at": "/value/entries/4/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-4f1babf5f716" - } - }, - { - "at": "/value/entries/4/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/4/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/4/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/4/directory", - "optional": false, - "rule": { - "is": "equal", - "value": true - } - }, - { - "at": "/value/entries/5/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/s/s/s/s/s/s/s" - } - }, - { - "at": "/value/entries/5/size", - "optional": false, - "rule": { - "is": "equal", - "value": 0 - } - }, - { - "at": "/value/entries/5/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-5f419d87193e" - } - }, - { - "at": "/value/entries/5/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/5/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/5/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/5/directory", - "optional": false, - "rule": { - "is": "equal", - "value": true - } - }, - { - "at": "/value/entries/6/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/s/s/s/s/s/s/s/s" - } - }, - { - "at": "/value/entries/6/size", - "optional": false, - "rule": { - "is": "equal", - "value": 0 - } - }, - { - "at": "/value/entries/6/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-c32f2de5b421" - } - }, - { - "at": "/value/entries/6/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/6/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/6/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/6/directory", - "optional": false, - "rule": { - "is": "equal", - "value": true - } - }, - { - "at": "/value/entries/7/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/s/s/s/s/s/s/s/s/s" - } - }, - { - "at": "/value/entries/7/size", - "optional": false, - "rule": { - "is": "equal", - "value": 0 - } - }, - { - "at": "/value/entries/7/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-51d97c94b354" - } - }, - { - "at": "/value/entries/7/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/7/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/7/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/7/directory", - "optional": false, - "rule": { - "is": "equal", - "value": true - } - }, - { - "at": "/value/entries/8/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/s/s/s/s/s/s/s/s/s/s" - } - }, - { - "at": "/value/entries/8/size", - "optional": false, - "rule": { - "is": "equal", - "value": 0 - } - }, - { - "at": "/value/entries/8/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-581e4ea356a1" - } - }, - { - "at": "/value/entries/8/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/8/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/8/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/8/directory", - "optional": false, - "rule": { - "is": "equal", - "value": true - } - }, - { - "at": "/value/entries/9/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s" - } - }, - { - "at": "/value/entries/9/size", - "optional": false, - "rule": { - "is": "equal", - "value": 0 - } - }, - { - "at": "/value/entries/9/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-5eb2172133ae" - } - }, - { - "at": "/value/entries/9/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/9/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/9/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/9/directory", - "optional": false, - "rule": { - "is": "equal", - "value": true - } - }, - { - "at": "/value/entries/10/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s" - } - }, - { - "at": "/value/entries/10/size", - "optional": false, - "rule": { - "is": "equal", - "value": 0 - } - }, - { - "at": "/value/entries/10/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-d32c38634d37" - } - }, - { - "at": "/value/entries/10/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/10/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/10/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/10/directory", - "optional": false, - "rule": { - "is": "equal", - "value": true - } - }, + "expect": [ { - "at": "/value/entries/11/key", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s" + "value": "ok" } }, { - "at": "/value/entries/11/size", + "at": "/value/copy_status", "optional": false, "rule": { "is": "equal", - "value": 0 + "value": "success" } - }, + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/copy-sync", + "profile": "azure-hns", + "lane": "core", + "purpose": "Copy a blob with Copy Blob From URL, x-ms-requires-sync: true, which answers once the copy is done. The source must be readable by URL: by a SAS, or by a bearer token in x-ms-copy-source-authorization", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/copy-blob-from-url" + ], + "call": { + "key": "object-tests/copy/target.txt", + "op": "copy", + "source_key": "object-tests/copy/source.txt", + "sync": true + }, + "exchanges": [ { - "at": "/value/entries/11/etag", + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/copy/target.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/x-ms-copy-source", + "optional": false, + "rule": { + "is": "matches", + "pattern": "https?://[^/]+/fixture/object-tests/copy/source\\.txt" + } + }, + { + "at": "/headers/x-ms-requires-sync", + "optional": false, + "rule": { + "is": "equal", + "value": "true" + } + } + ], + "allow_headers": [ + "x-ms-copy-source-authorization" + ], + "allow_query": [], + "response": { + "status": 202, + "headers": { + "date": { + "from": "now" + }, + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-copy-id": "fixture-copy-id", + "x-ms-copy-status": "success" + }, + "body": { + "encoding": "empty" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "fixture-3bdc7f728acb" - } - }, - { - "at": "/value/entries/11/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/11/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/11/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] + "value": "ok" } }, { - "at": "/value/entries/11/directory", + "at": "/value/copy_status", "optional": false, "rule": { "is": "equal", - "value": true + "value": "success" } - }, + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/copy-pending", + "profile": "azure-hns", + "lane": "core", + "purpose": "Report a copy that Azure answers as pending with its copy ID, so that a caller can follow it with a HEAD or abort it", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/copy-blob" + ], + "origin": "transient", + "derived_from": "operations/azure-hns/copy", + "call": { + "key": "object-tests/copy/target.txt", + "op": "copy", + "source_key": "object-tests/copy/source.txt" + }, + "exchanges": [ { - "at": "/value/entries/12/key", + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/copy/target.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/x-ms-copy-source", + "optional": false, + "rule": { + "is": "matches", + "pattern": "https?://[^/]+/fixture/object-tests/copy/source\\.txt" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 202, + "headers": { + "date": { + "from": "now" + }, + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-copy-id": "fixture-copy-id", + "x-ms-copy-status": "pending" + }, + "body": { + "encoding": "empty" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s" + "value": "ok" } }, { - "at": "/value/entries/12/size", + "at": "/value/copy_status", "optional": false, "rule": { "is": "equal", - "value": 0 + "value": "pending" } }, { - "at": "/value/entries/12/etag", + "at": "/value/copy_id", "optional": false, "rule": { "is": "equal", - "value": "fixture-8a1c17d8d892" - } - }, - { - "at": "/value/entries/12/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/12/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "value": "fixture-copy-id" } - }, + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/put-from-url", + "profile": "azure-hns", + "lane": "core", + "purpose": "Write a block blob from the bytes at a URL with Put Blob From URL: a PUT with x-ms-blob-type: BlockBlob, x-ms-copy-source and no body, which answers once it is written", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/put-blob-from-url" + ], + "call": { + "key": "object-tests/copy/target.txt", + "op": "azure.put_from_url", + "source_key": "object-tests/copy/source.txt" + }, + "exchanges": [ { - "at": "/value/entries/12/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/copy/target.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/x-ms-copy-source", + "optional": false, + "rule": { + "is": "matches", + "pattern": "https?://[^/]+/fixture/object-tests/copy/source\\.txt" + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "BlockBlob" + } + } + ], + "allow_headers": [ + "x-ms-copy-source-authorization", + "x-ms-copy-source-blob-properties" + ], + "allow_query": [], + "response": { + "status": 201, + "headers": { + "date": { + "from": "now" + }, + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-request-server-encrypted": "true" + }, + "body": { + "encoding": "empty" + } + } + } + ] + } + ], + "expect": [ { - "at": "/value/entries/12/directory", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": true + "value": "ok" } }, { - "at": "/value/entries/13/key", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" + "value": "\"fixture-etag\"" } - }, + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/abort-copy", + "profile": "azure-hns", + "lane": "core", + "purpose": "Abort a pending copy by its copy ID, with x-ms-copy-action: abort", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/abort-copy-blob" + ], + "origin": "transient", + "derived_from": "operations/azure-hns/abort-copy-finished", + "call": { + "copy_id": "fixture-copy-id", + "key": "object-tests/copy/target.txt", + "op": "azure.abort_copy" + }, + "exchanges": [ { - "at": "/value/entries/13/size", - "optional": false, - "rule": { - "is": "equal", - "value": 0 - } - }, + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/copy/target.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "copy" + } + }, + { + "at": "/query/copyid", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-copy-id" + } + }, + { + "at": "/headers/x-ms-copy-action", + "optional": false, + "rule": { + "is": "equal", + "value": "abort" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 204, + "headers": { + "date": { + "from": "now" + } + }, + "body": { + "encoding": "empty" + } + } + } + ] + } + ], + "expect": [ { - "at": "/value/entries/13/etag", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "fixture-53277b21dbd0" - } - }, - { - "at": "/value/entries/13/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/13/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "value": "ok" } - }, + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/abort-copy-finished", + "profile": "azure-hns", + "lane": "core", + "purpose": "Report an abort of a copy that has finished as an error, 409 NoPendingCopyOperation", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/abort-copy-blob" + ], + "call": { + "copy_id": "fixture-copy-id", + "key": "object-tests/copy/target.txt", + "op": "azure.abort_copy" + }, + "exchanges": [ { - "at": "/value/entries/13/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/copy/target.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "copy" + } + }, + { + "at": "/query/copyid", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-copy-id" + } + }, + { + "at": "/headers/x-ms-copy-action", + "optional": false, + "rule": { + "is": "equal", + "value": "abort" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 409, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "NoPendingCopyOperation" + }, + "body": { + "encoding": "utf8", + "data": "NoPendingCopyOperationFixture error" + } + } + } + ] + } + ], + "expect": [ { - "at": "/value/entries/13/directory", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": true + "value": "error" } }, { - "at": "/value/entries/14/key", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" + "value": 409 } }, { - "at": "/value/entries/14/size", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": 0 + "value": "NoPendingCopyOperation" } - }, + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/get-page-ranges", + "profile": "azure-hns", + "lane": "core", + "purpose": "List the written ranges of a page blob, which an HNS account does not support", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/get-page-ranges" + ], + "call": { + "key": "object-tests/pages/object.vhd", + "op": "azure.get_page_ranges" + }, + "exchanges": [ { - "at": "/value/entries/14/etag", + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/pages/object.vhd" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "pagelist" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 409, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "FeatureNotYetSupportedForHierarchicalNamespaceAccounts" + }, + "body": { + "encoding": "utf8", + "data": "FeatureNotYetSupportedForHierarchicalNamespaceAccountsFixture error" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "fixture-18b5ffb0f548" - } - }, - { - "at": "/value/entries/14/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/14/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/14/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] + "value": "error" } }, { - "at": "/value/entries/14/directory", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": true + "value": 409 } }, { - "at": "/value/entries/15/key", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" + "value": "FeatureNotYetSupportedForHierarchicalNamespaceAccounts" } - }, + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/upload-pages-unaligned", + "profile": "azure-hns", + "lane": "core", + "purpose": "Refuse a page write that does not start on a 512-byte boundary, which an HNS account does not support", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/put-page" + ], + "call": { + "body_base64": "cHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHA=", + "key": "object-tests/pages/object.vhd", + "offset": 1, + "op": "azure.upload_pages" + }, + "exchanges": [ { - "at": "/value/entries/15/size", + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/pages/object.vhd" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "cHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHA=" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "page" + } + }, + { + "at": "/headers/x-ms-page-write", + "optional": false, + "rule": { + "is": "equal", + "value": "update" + } + }, + { + "at": "/headers/x-ms-range", + "optional": false, + "rule": { + "is": "equal", + "value": "bytes=1-512" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 400, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "InvalidHeaderValue" + }, + "body": { + "encoding": "utf8", + "data": "InvalidHeaderValueFixture error" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": 0 + "value": "error" } }, { - "at": "/value/entries/15/etag", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "fixture-2250c2114935" - } - }, - { - "at": "/value/entries/15/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/15/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/15/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] + "value": 400 } }, { - "at": "/value/entries/15/directory", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": true + "value": "InvalidHeaderValue" } - }, + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/upload-pages", + "profile": "azure-hns", + "lane": "core", + "purpose": "Write the first page of a page blob, which an HNS account does not support", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/put-page" + ], + "call": { + "body_base64": "cHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHA=", + "key": "object-tests/pages/object.vhd", + "offset": 0, + "op": "azure.upload_pages" + }, + "exchanges": [ { - "at": "/value/entries/16/key", + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/pages/object.vhd" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "cHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHA=" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "page" + } + }, + { + "at": "/headers/x-ms-page-write", + "optional": false, + "rule": { + "is": "equal", + "value": "update" + } + }, + { + "at": "/headers/x-ms-range", + "optional": false, + "rule": { + "is": "equal", + "value": "bytes=0-511" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 409, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "FeatureNotYetSupportedForHierarchicalNamespaceAccounts" + }, + "body": { + "encoding": "utf8", + "data": "FeatureNotYetSupportedForHierarchicalNamespaceAccountsFixture error" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" + "value": "error" } }, { - "at": "/value/entries/16/size", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": 0 + "value": 409 } }, { - "at": "/value/entries/16/etag", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": "fixture-8ce858fcdc2b" - } - }, - { - "at": "/value/entries/16/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/16/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "value": "FeatureNotYetSupportedForHierarchicalNamespaceAccounts" } - }, + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/create-page", + "profile": "azure-hns", + "lane": "core", + "purpose": "Create a page blob of 1,024 bytes, which an HNS account does not support", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/put-blob" + ], + "call": { + "key": "object-tests/pages/object.vhd", + "op": "azure.create_page", + "size": 1024 + }, + "exchanges": [ { - "at": "/value/entries/16/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/pages/object.vhd" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "PageBlob" + } + }, + { + "at": "/headers/x-ms-blob-content-length", + "optional": false, + "rule": { + "is": "equal", + "value": "1024" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 409, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "FeatureNotYetSupportedForHierarchicalNamespaceAccounts" + }, + "body": { + "encoding": "utf8", + "data": "FeatureNotYetSupportedForHierarchicalNamespaceAccountsFixture error" + } + } + } + ] + } + ], + "expect": [ { - "at": "/value/entries/16/directory", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": true + "value": "error" } }, { - "at": "/value/entries/17/key", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" + "value": 409 } }, { - "at": "/value/entries/17/size", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": 0 + "value": "FeatureNotYetSupportedForHierarchicalNamespaceAccounts" } - }, + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/append-block-to-block-blob", + "profile": "azure-hns", + "lane": "core", + "purpose": "Refuse an append to a block blob", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/append-block" + ], + "call": { + "body_base64": "c2Vjb25k", + "key": "object-tests/append/object.log", + "op": "azure.append_block" + }, + "exchanges": [ { - "at": "/value/entries/17/etag", + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/append/object.log" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "c2Vjb25k" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "appendblock" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 409, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "InvalidBlobType" + }, + "body": { + "encoding": "utf8", + "data": "InvalidBlobTypeFixture error" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "fixture-d8660a5bc252" + "value": "error" } }, { - "at": "/value/entries/17/snapshot", - "optional": true, + "at": "/status", + "optional": false, "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "is": "equal", + "value": 409 } }, { - "at": "/value/entries/17/version", - "optional": true, + "at": "/code", + "optional": false, "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "is": "equal", + "value": "InvalidBlobType" } - }, + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/append-block-at-wrong-position", + "profile": "azure-hns", + "lane": "core", + "purpose": "Refuse an append whose position condition does not match the blob length", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/append-block" + ], + "call": { + "append_position": 0, + "body_base64": "c2Vjb25k", + "key": "object-tests/append/object.log", + "op": "azure.append_block" + }, + "exchanges": [ { - "at": "/value/entries/17/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/append/object.log" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "c2Vjb25k" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "appendblock" + } + }, + { + "at": "/headers/x-ms-blob-condition-appendpos", + "optional": false, + "rule": { + "is": "equal", + "value": "0" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 412, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "AppendPositionConditionNotMet" + }, + "body": { + "encoding": "utf8", + "data": "AppendPositionConditionNotMetFixture error" + } + } + } + ] + } + ], + "expect": [ { - "at": "/value/entries/17/directory", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": true + "value": "error" } }, { - "at": "/value/entries/18/key", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" + "value": 412 } }, { - "at": "/value/entries/18/size", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": 0 + "value": "AppendPositionConditionNotMet" } - }, + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/append-block", + "profile": "azure-hns", + "lane": "core", + "purpose": "Append a block to an append blob and report its offset", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/append-block" + ], + "call": { + "body_base64": "c2Vjb25k", + "key": "object-tests/append/object.log", + "op": "azure.append_block" + }, + "exchanges": [ { - "at": "/value/entries/18/etag", + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/append/object.log" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "c2Vjb25k" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "appendblock" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 201, + "headers": { + "date": { + "from": "now" + }, + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-blob-append-offset": "5", + "x-ms-blob-committed-block-count": "2", + "x-ms-request-server-encrypted": "true" + }, + "body": { + "encoding": "empty" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "fixture-4ec0409f150b" + "value": "ok" } }, { - "at": "/value/entries/18/snapshot", - "optional": true, + "at": "/value/append_offset", + "optional": false, "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "is": "equal", + "value": 5 } }, { - "at": "/value/entries/18/version", - "optional": true, + "at": "/value/committed_block_count", + "optional": false, "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "is": "equal", + "value": 2 } - }, + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/create-append", + "profile": "azure-hns", + "lane": "core", + "purpose": "Create an empty append blob", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/put-blob" + ], + "call": { + "key": "object-tests/append/object.log", + "op": "azure.create_append" + }, + "exchanges": [ { - "at": "/value/entries/18/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/append/object.log" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "AppendBlob" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 201, + "headers": { + "date": { + "from": "now" + }, + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-request-server-encrypted": "true" + }, + "body": { + "encoding": "empty" + } + } + } + ] + } + ], + "expect": [ { - "at": "/value/entries/18/directory", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": true + "value": "ok" } - }, + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/put-leased-if-match-without-lease-id", + "profile": "azure-hns", + "lane": "core", + "purpose": "Refuse a write to a leased object whose If-Match holds but that names no lease ID", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/lease-blob" + ], + "call": { + "body_base64": "c2Vjb25k", + "if_match": "\"fixture-etag\"", + "key": "object-tests/leases/object.txt", + "op": "put" + }, + "exchanges": [ { - "at": "/value/entries/19/key", + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/leases/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "c2Vjb25k" + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "BlockBlob" + } + }, + { + "at": "/headers/if-match", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-etag\"" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 412, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "LeaseIdMissing" + }, + "body": { + "encoding": "utf8", + "data": "LeaseIdMissingFixture error" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" + "value": "error" } }, { - "at": "/value/entries/19/size", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": 0 + "value": 412 } }, { - "at": "/value/entries/19/etag", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": "fixture-aede66c75766" - } - }, - { - "at": "/value/entries/19/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/19/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "value": "LeaseIdMissing" } - }, + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/put-leased-with-lease-id", + "profile": "azure-hns", + "lane": "core", + "purpose": "Write to a leased object with its lease ID", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/lease-blob" + ], + "call": { + "body_base64": "c2Vjb25k", + "key": "object-tests/leases/object.txt", + "lease_id": "11111111-2222-3333-4444-555555555555", + "op": "put" + }, + "exchanges": [ { - "at": "/value/entries/19/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/leases/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "c2Vjb25k" + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "BlockBlob" + } + }, + { + "at": "/headers/x-ms-lease-id", + "optional": false, + "rule": { + "is": "equal", + "value": "11111111-2222-3333-4444-555555555555" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 201, + "headers": { + "date": { + "from": "now" + }, + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-request-server-encrypted": "true" + }, + "body": { + "encoding": "empty" + } + } + } + ] + } + ], + "expect": [ { - "at": "/value/entries/19/directory", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": true + "value": "ok" } - }, + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/put-leased-without-lease-id", + "profile": "azure-hns", + "lane": "core", + "purpose": "Refuse a write to a leased object that names no lease ID", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/lease-blob" + ], + "call": { + "body_base64": "c2Vjb25k", + "key": "object-tests/leases/object.txt", + "op": "put" + }, + "exchanges": [ { - "at": "/value/entries/20/key", + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/leases/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "c2Vjb25k" + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "BlockBlob" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 412, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "LeaseIdMissing" + }, + "body": { + "encoding": "utf8", + "data": "LeaseIdMissingFixture error" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" + "value": "error" } }, { - "at": "/value/entries/20/size", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": 0 + "value": 412 } }, { - "at": "/value/entries/20/etag", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": "fixture-3316748edb9b" + "value": "LeaseIdMissing" } - }, + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/lease-break", + "profile": "azure-hns", + "lane": "core", + "purpose": "Break a lease at once", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/lease-blob" + ], + "call": { + "action": "break", + "break_period": 0, + "key": "object-tests/leases/object.txt", + "op": "azure.lease" + }, + "exchanges": [ { - "at": "/value/entries/20/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/leases/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "lease" + } + }, + { + "at": "/headers/x-ms-lease-action", + "optional": false, + "rule": { + "is": "equal", + "value": "break" + } + }, + { + "at": "/headers/x-ms-lease-break-period", + "optional": false, + "rule": { + "is": "equal", + "value": "0" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 202, + "headers": { + "date": { + "from": "now" + }, + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-time": "0" + }, + "body": { + "encoding": "empty" + } + } + } + ] + } + ], + "expect": [ { - "at": "/value/entries/20/version", - "optional": true, + "at": "/outcome", + "optional": false, "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "is": "equal", + "value": "ok" } - }, + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/lease-release", + "profile": "azure-hns", + "lane": "core", + "purpose": "Release a lease", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/lease-blob" + ], + "call": { + "action": "release", + "key": "object-tests/leases/object.txt", + "lease_id": "11111111-2222-3333-4444-555555555555", + "op": "azure.lease" + }, + "exchanges": [ { - "at": "/value/entries/20/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/leases/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "lease" + } + }, + { + "at": "/headers/x-ms-lease-action", + "optional": false, + "rule": { + "is": "equal", + "value": "release" + } + }, + { + "at": "/headers/x-ms-lease-id", + "optional": false, + "rule": { + "is": "equal", + "value": "11111111-2222-3333-4444-555555555555" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "date": { + "from": "now" + }, + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "empty" + } + } + } + ] + } + ], + "expect": [ { - "at": "/value/entries/20/directory", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": true + "value": "ok" } - }, + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/lease-acquire-leased", + "profile": "azure-hns", + "lane": "core", + "purpose": "Refuse a second lease while another lease holds the object", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/lease-blob" + ], + "call": { + "action": "acquire", + "duration": 15, + "key": "object-tests/leases/object.txt", + "op": "azure.lease", + "proposed_lease_id": "66666666-7777-8888-9999-000000000000" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/leases/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "lease" + } + }, + { + "at": "/headers/x-ms-lease-action", + "optional": false, + "rule": { + "is": "equal", + "value": "acquire" + } + }, + { + "at": "/headers/x-ms-lease-duration", + "optional": false, + "rule": { + "is": "equal", + "value": "15" + } + }, + { + "at": "/headers/x-ms-proposed-lease-id", + "optional": false, + "rule": { + "is": "equal", + "value": "66666666-7777-8888-9999-000000000000" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 409, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "LeaseAlreadyPresent" + }, + "body": { + "encoding": "utf8", + "data": "LeaseAlreadyPresentFixture error" + } + } + } + ] + } + ], + "expect": [ { - "at": "/value/entries/21/key", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" + "value": "error" } }, { - "at": "/value/entries/21/size", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": 0 + "value": 409 } }, { - "at": "/value/entries/21/etag", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": "fixture-f7f3bc0b3f92" - } - }, - { - "at": "/value/entries/21/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/21/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "value": "LeaseAlreadyPresent" } - }, + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/lease-acquire", + "profile": "azure-hns", + "lane": "core", + "purpose": "Acquire a lease on an object with a proposed lease ID", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/lease-blob" + ], + "call": { + "action": "acquire", + "duration": 15, + "key": "object-tests/leases/object.txt", + "op": "azure.lease", + "proposed_lease_id": "11111111-2222-3333-4444-555555555555" + }, + "exchanges": [ { - "at": "/value/entries/21/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/leases/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "lease" + } + }, + { + "at": "/headers/x-ms-lease-action", + "optional": false, + "rule": { + "is": "equal", + "value": "acquire" + } + }, + { + "at": "/headers/x-ms-lease-duration", + "optional": false, + "rule": { + "is": "equal", + "value": "15" + } + }, + { + "at": "/headers/x-ms-proposed-lease-id", + "optional": false, + "rule": { + "is": "equal", + "value": "11111111-2222-3333-4444-555555555555" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 201, + "headers": { + "date": { + "from": "now" + }, + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-lease-id": "11111111-2222-3333-4444-555555555555" + }, + "body": { + "encoding": "empty" + } + } + } + ] + } + ], + "expect": [ { - "at": "/value/entries/21/directory", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": true + "value": "ok" } }, { - "at": "/value/entries/22/key", + "at": "/value/lease_id", "optional": false, "rule": { "is": "equal", - "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" + "value": "11111111-2222-3333-4444-555555555555" } - }, + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/put-with-tags", + "profile": "azure-hns", + "lane": "core", + "purpose": "Write an object with tags, which an HNS account does not support", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/put-blob" + ], + "call": { + "body_base64": "Zmlyc3Q=", + "key": "object-tests/tags/object.txt", + "op": "put", + "tags": { + "project": "object-tests" + } + }, + "exchanges": [ { - "at": "/value/entries/22/size", - "optional": false, - "rule": { - "is": "equal", - "value": 0 - } - }, + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/tags/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "Zmlyc3Q=" + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "BlockBlob" + } + }, + { + "at": "/headers/x-ms-tags", + "optional": false, + "rule": { + "is": "equal", + "value": "project=object-tests" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 409, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "FeatureNotYetSupportedForHierarchicalNamespaceAccounts" + }, + "body": { + "encoding": "utf8", + "data": "FeatureNotYetSupportedForHierarchicalNamespaceAccountsFixture error" + } + } + } + ] + } + ], + "expect": [ { - "at": "/value/entries/22/etag", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "fixture-6a1f4f7934bf" - } - }, - { - "at": "/value/entries/22/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/22/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/22/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] + "value": "error" } }, { - "at": "/value/entries/22/directory", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": true + "value": 409 } }, { - "at": "/value/entries/23/key", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" + "value": "FeatureNotYetSupportedForHierarchicalNamespaceAccounts" } - }, + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/get-tags", + "profile": "azure-hns", + "lane": "core", + "purpose": "Read the tags of an object, which an HNS account does not support", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/get-blob-tags" + ], + "call": { + "key": "object-tests/tags/object.txt", + "op": "azure.get_tags" + }, + "exchanges": [ { - "at": "/value/entries/23/size", - "optional": false, - "rule": { - "is": "equal", - "value": 0 - } - }, + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/tags/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "tags" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 400, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "InvalidQueryParameterValue" + }, + "body": { + "encoding": "utf8", + "data": "InvalidQueryParameterValueFixture error" + } + } + } + ] + } + ], + "expect": [ { - "at": "/value/entries/23/etag", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "fixture-87c3fdda2bda" - } - }, - { - "at": "/value/entries/23/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/23/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/23/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] + "value": "error" } }, { - "at": "/value/entries/23/directory", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": true + "value": 400 } }, { - "at": "/value/entries/24/key", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" + "value": "InvalidQueryParameterValue" } - }, + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/set-tags", + "profile": "azure-hns", + "lane": "core", + "purpose": "Replace the tags of an object, which an HNS account does not support", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/set-blob-tags" + ], + "call": { + "key": "object-tests/tags/object.txt", + "op": "azure.set_tags", + "tags": { + "project": "object-tests" + } + }, + "exchanges": [ { - "at": "/value/entries/24/size", - "optional": false, - "rule": { - "is": "equal", - "value": 0 - } - }, + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/tags/object.txt" + } + }, + { + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "projectobject-tests" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "tags" + } + }, + { + "at": "/headers/content-type", + "optional": false, + "rule": { + "is": "one_of", + "values": [ + "application/xml", + "application/xml; charset=UTF-8" + ] + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 400, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "BlobApiNotYetSupportedForHierarchicalNamespaceAccounts" + }, + "body": { + "encoding": "utf8", + "data": "BlobApiNotYetSupportedForHierarchicalNamespaceAccountsFixture error" + } + } + } + ] + } + ], + "expect": [ { - "at": "/value/entries/24/etag", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "fixture-4d2fcc081fd8" - } - }, - { - "at": "/value/entries/24/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/24/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/24/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] + "value": "error" } }, { - "at": "/value/entries/24/directory", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": true + "value": 400 } }, { - "at": "/value/entries/25/key", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" + "value": "BlobApiNotYetSupportedForHierarchicalNamespaceAccounts" } - }, + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/put-with-tier", + "profile": "azure-hns", + "lane": "core", + "purpose": "Write an object straight into the Cool access tier", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/put-blob" + ], + "call": { + "body_base64": "Zmlyc3Q=", + "key": "object-tests/tiers/object.txt", + "op": "put", + "tier": "Cool" + }, + "exchanges": [ { - "at": "/value/entries/25/size", - "optional": false, - "rule": { - "is": "equal", - "value": 0 - } - }, + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/tiers/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "Zmlyc3Q=" + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "BlockBlob" + } + }, + { + "at": "/headers/x-ms-access-tier", + "optional": false, + "rule": { + "is": "equal", + "value": "Cool" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 201, + "headers": { + "date": { + "from": "now" + }, + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-request-server-encrypted": "true" + }, + "body": { + "encoding": "empty" + } + } + } + ] + } + ], + "expect": [ { - "at": "/value/entries/25/etag", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "fixture-8956db6ae017" - } - }, - { - "at": "/value/entries/25/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/25/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/25/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] + "value": "ok" } - }, + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/set-tier-unknown", + "profile": "azure-hns", + "lane": "core", + "purpose": "Refuse an access tier the service does not have", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/set-blob-tier" + ], + "call": { + "key": "object-tests/tiers/object.txt", + "op": "azure.set_tier", + "tier": "Warm" + }, + "exchanges": [ { - "at": "/value/entries/25/directory", - "optional": false, - "rule": { - "is": "equal", - "value": true - } - }, + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/tiers/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "tier" + } + }, + { + "at": "/headers/x-ms-access-tier", + "optional": false, + "rule": { + "is": "equal", + "value": "Warm" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 400, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "InvalidHeaderValue" + }, + "body": { + "encoding": "utf8", + "data": "InvalidHeaderValueFixture error" + } + } + } + ] + } + ], + "expect": [ { - "at": "/value/entries/26/key", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" + "value": "error" } }, { - "at": "/value/entries/26/size", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": 0 + "value": 400 } }, { - "at": "/value/entries/26/etag", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": "fixture-7f1f55a3463b" - } - }, - { - "at": "/value/entries/26/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/26/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "value": "InvalidHeaderValue" } - }, + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/set-tier-cool", + "profile": "azure-hns", + "lane": "core", + "purpose": "Move an object to the Cool access tier", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/set-blob-tier" + ], + "call": { + "key": "object-tests/tiers/object.txt", + "op": "azure.set_tier", + "tier": "Cool" + }, + "exchanges": [ { - "at": "/value/entries/26/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/tiers/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "tier" + } + }, + { + "at": "/headers/x-ms-access-tier", + "optional": false, + "rule": { + "is": "equal", + "value": "Cool" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "date": { + "from": "now" + } + }, + "body": { + "encoding": "empty" + } + } + } + ] + } + ], + "expect": [ { - "at": "/value/entries/26/directory", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": true + "value": "ok" } - }, + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/put-internal-error", + "profile": "azure-hns", + "lane": "core", + "purpose": "Report a 500 InternalError answer as an error, after at most 5 retries", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/common-rest-api-error-codes", + "https://learn.microsoft.com/en-us/rest/api/storageservices/blob-service-error-codes" + ], + "origin": "transient", + "call": { + "body_base64": "MDEyMzQ1Njc4OQ==", + "key": "object-tests/write/object.txt", + "op": "put" + }, + "exchanges": [ { - "at": "/value/entries/27/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" - } + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/write/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MDEyMzQ1Njc4OQ==" + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "BlockBlob" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 500, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "InternalError" + }, + "body": { + "encoding": "utf8", + "data": "InternalErrorThe server encountered an internal error. Please retry the request." + } + } + } + ] }, { - "at": "/value/entries/27/size", - "optional": false, - "rule": { - "is": "equal", - "value": 0 - } + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/write/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MDEyMzQ1Njc4OQ==" + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "BlockBlob" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 500, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "InternalError" + }, + "body": { + "encoding": "utf8", + "data": "InternalErrorThe server encountered an internal error. Please retry the request." + } + } + } + ], + "optional": true }, { - "at": "/value/entries/27/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-44dd81206643" - } + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/write/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MDEyMzQ1Njc4OQ==" + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "BlockBlob" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 500, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "InternalError" + }, + "body": { + "encoding": "utf8", + "data": "InternalErrorThe server encountered an internal error. Please retry the request." + } + } + } + ], + "optional": true }, { - "at": "/value/entries/27/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/write/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MDEyMzQ1Njc4OQ==" + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "BlockBlob" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 500, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "InternalError" + }, + "body": { + "encoding": "utf8", + "data": "InternalErrorThe server encountered an internal error. Please retry the request." + } + } + } + ], + "optional": true }, { - "at": "/value/entries/27/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/write/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MDEyMzQ1Njc4OQ==" + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "BlockBlob" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 500, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "InternalError" + }, + "body": { + "encoding": "utf8", + "data": "InternalErrorThe server encountered an internal error. Please retry the request." + } + } + } + ], + "optional": true }, { - "at": "/value/entries/27/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/write/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MDEyMzQ1Njc4OQ==" + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "BlockBlob" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 500, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "InternalError" + }, + "body": { + "encoding": "utf8", + "data": "InternalErrorThe server encountered an internal error. Please retry the request." + } + } + } + ], + "optional": true + } + ], + "expect": [ { - "at": "/value/entries/27/directory", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": true + "value": "error" } }, { - "at": "/value/entries/28/key", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" + "value": 500 } }, { - "at": "/value/entries/28/size", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": 0 + "value": "InternalError" } - }, + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/put-if-unmodified-since-past", + "profile": "azure-hns", + "lane": "core", + "purpose": "Refuse a write with 412 when the object changed after If-Unmodified-Since", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "body_base64": "MDEyMzQ1Njc4OQ==", + "if_unmodified_since": "Sat, 01 Jan 2000 00:00:00 GMT", + "key": "object-tests/write/object.txt", + "op": "put" + }, + "exchanges": [ { - "at": "/value/entries/28/etag", + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/write/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MDEyMzQ1Njc4OQ==" + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "BlockBlob" + } + }, + { + "at": "/headers/if-unmodified-since", + "optional": false, + "rule": { + "is": "equal", + "value": "Sat, 01 Jan 2000 00:00:00 GMT" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 412, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "ConditionNotMet" + }, + "body": { + "encoding": "utf8", + "data": "ConditionNotMetFixture error" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "fixture-952096734190" - } - }, - { - "at": "/value/entries/28/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/28/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/28/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] + "value": "error" } }, { - "at": "/value/entries/28/directory", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": true + "value": 412 } }, { - "at": "/value/entries/29/key", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" + "value": "ConditionNotMet" } - }, + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/put-content-encoding-gzip", + "profile": "azure-hns", + "lane": "core", + "purpose": "Store Content-Encoding: gzip with a write, and the gzip bytes unchanged", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "body_base64": "H4sIAAAAAAACA0vOzy0oSi0uTk1RyM9TKCgtKsgvTuUCAAHVPIcWAAAA", + "content_encoding": "gzip", + "key": "object-tests/write/object.txt", + "op": "put" + }, + "exchanges": [ { - "at": "/value/entries/29/size", + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/write/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "H4sIAAAAAAACA0vOzy0oSi0uTk1RyM9TKCgtKsgvTuUCAAHVPIcWAAAA" + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "BlockBlob" + } + }, + { + "at": "/headers/x-ms-blob-content-encoding", + "optional": false, + "rule": { + "is": "equal", + "value": "gzip" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 201, + "headers": { + "content-md5": "CVsDGvNMZH4SPA4MSLswrA==", + "date": { + "from": "now" + }, + "etag": "\"fixture-bf139483d631\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-request-server-encrypted": "true" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + }, + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/write/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "H4sIAAAAAAACA0vOzy0oSi0uTk1RyM9TKCgtKsgvTuUCAAHVPIcWAAAA" + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "BlockBlob" + } + }, + { + "at": "/headers/content-encoding", + "optional": false, + "rule": { + "is": "equal", + "value": "gzip" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 201, + "headers": { + "content-md5": "CVsDGvNMZH4SPA4MSLswrA==", + "date": { + "from": "now" + }, + "etag": "\"fixture-bf139483d631\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-request-server-encrypted": "true" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": 0 + "value": "ok" } }, { - "at": "/value/entries/29/etag", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": "fixture-db4655ce498c" - } - }, - { - "at": "/value/entries/29/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "value": "\"fixture-bf139483d631\"" } }, { - "at": "/value/entries/29/version", + "at": "/value/version", "optional": true, "rule": { "is": "one_of", @@ -56450,63 +86086,230 @@ "" ] } - }, - { - "at": "/value/entries/29/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/29/directory", - "optional": false, - "rule": { - "is": "equal", - "value": true - } - }, + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/put-content-properties", + "profile": "azure-hns", + "lane": "core", + "purpose": "Store Content-Type, Content-Language, Content-Disposition and Cache-Control with a write", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "body_base64": "MDEyMzQ1Njc4OQ==", + "cache_control": "max-age=3600", + "content_disposition": "attachment; filename=\"report.txt\"", + "content_language": "nl-NL", + "content_type": "text/plain; charset=utf-8", + "key": "object-tests/write/object.txt", + "op": "put" + }, + "exchanges": [ { - "at": "/value/entries/30/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" - } - }, + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/write/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MDEyMzQ1Njc4OQ==" + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "BlockBlob" + } + }, + { + "at": "/headers/x-ms-blob-content-type", + "optional": false, + "rule": { + "is": "equal", + "value": "text/plain; charset=utf-8" + } + }, + { + "at": "/headers/x-ms-blob-content-language", + "optional": false, + "rule": { + "is": "equal", + "value": "nl-NL" + } + }, + { + "at": "/headers/x-ms-blob-content-disposition", + "optional": false, + "rule": { + "is": "equal", + "value": "attachment; filename=\"report.txt\"" + } + }, + { + "at": "/headers/x-ms-blob-cache-control", + "optional": false, + "rule": { + "is": "equal", + "value": "max-age=3600" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 201, + "headers": { + "content-md5": "eB5eJF1ptWaXm4bijSPyxw==", + "date": { + "from": "now" + }, + "etag": "\"fixture-bf139483d631\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-request-server-encrypted": "true" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + }, + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/write/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MDEyMzQ1Njc4OQ==" + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "BlockBlob" + } + }, + { + "at": "/headers/content-type", + "optional": false, + "rule": { + "is": "equal", + "value": "text/plain; charset=utf-8" + } + }, + { + "at": "/headers/content-language", + "optional": false, + "rule": { + "is": "equal", + "value": "nl-NL" + } + }, + { + "at": "/headers/x-ms-blob-content-disposition", + "optional": false, + "rule": { + "is": "equal", + "value": "attachment; filename=\"report.txt\"" + } + }, + { + "at": "/headers/cache-control", + "optional": false, + "rule": { + "is": "equal", + "value": "max-age=3600" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 201, + "headers": { + "content-md5": "eB5eJF1ptWaXm4bijSPyxw==", + "date": { + "from": "now" + }, + "etag": "\"fixture-bf139483d631\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-request-server-encrypted": "true" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ { - "at": "/value/entries/30/size", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": 0 + "value": "ok" } }, { - "at": "/value/entries/30/etag", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": "fixture-b2a6d305ae63" - } - }, - { - "at": "/value/entries/30/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "value": "\"fixture-bf139483d631\"" } }, { - "at": "/value/entries/30/version", + "at": "/value/version", "optional": true, "rule": { "is": "one_of", @@ -56515,63 +86318,114 @@ "" ] } - }, - { - "at": "/value/entries/30/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/30/directory", - "optional": false, - "rule": { - "is": "equal", - "value": true - } - }, - { - "at": "/value/entries/31/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" - } - }, + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/put-content-type-non-ascii", + "profile": "azure-hns", + "lane": "core", + "purpose": "Write a Content-Type with a parameter outside ASCII, or refuse it. An HNS account takes the UTF-8 bytes but returns é as the byte e9, so they do not read back, and no encoding of a Content-Type parameter is one every reader decodes", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "body_base64": "MDEyMzQ1Njc4OQ==", + "content_type": "text/plain; name=\"été.txt\"", + "key": "object-tests/write/object.txt", + "op": "put" + }, + "exchanges": [ { - "at": "/value/entries/31/size", - "optional": false, - "rule": { - "is": "equal", - "value": 0 - } - }, + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/write/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MDEyMzQ1Njc4OQ==" + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "BlockBlob" + } + }, + { + "at": "/headers/x-ms-blob-content-type", + "optional": false, + "rule": { + "is": "equal", + "value": "text/plain; name=\"été.txt\"" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 201, + "headers": { + "content-md5": "eB5eJF1ptWaXm4bijSPyxw==", + "date": { + "from": "now" + }, + "etag": "\"fixture-bf139483d631\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-request-server-encrypted": "true" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ { - "at": "/value/entries/31/etag", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "fixture-23d914b576fb" + "value": "ok" } }, { - "at": "/value/entries/31/snapshot", - "optional": true, + "at": "/value/etag", + "optional": false, "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "is": "equal", + "value": "\"fixture-bf139483d631\"" } }, { - "at": "/value/entries/31/version", + "at": "/value/version", "optional": true, "rule": { "is": "one_of", @@ -56580,63 +86434,139 @@ "" ] } - }, - { - "at": "/value/entries/31/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, + } + ], + "refusal": [ { - "at": "/value/entries/31/directory", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": true + "value": "refused" } }, { - "at": "/value/entries/32/key", + "at": "/kind", "optional": false, "rule": { - "is": "equal", - "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" + "is": "matches", + "pattern": ".+" } }, { - "at": "/value/entries/32/size", + "at": "/parameter", "optional": false, "rule": { "is": "equal", - "value": 0 + "value": "content_type" } - }, + } + ] + }, + { + "id": "operations/azure-hns/put-content-disposition-non-ascii", + "profile": "azure-hns", + "lane": "core", + "purpose": "Write a Content-Disposition whose filename is outside ASCII. Azure refuses a disposition byte outside ASCII with 400 InvalidMetadata, so send an RFC 6266 filename*, which any reader decodes, or refuse the value", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "body_base64": "MDEyMzQ1Njc4OQ==", + "content_disposition": "attachment; filename=\"été.txt\"", + "key": "object-tests/write/object.txt", + "op": "put" + }, + "exchanges": [ { - "at": "/value/entries/32/etag", + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/write/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MDEyMzQ1Njc4OQ==" + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "BlockBlob" + } + }, + { + "at": "/headers/x-ms-blob-content-disposition", + "optional": false, + "rule": { + "is": "equal", + "value": "attachment; filename*=UTF-8''%C3%A9t%C3%A9.txt" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 201, + "headers": { + "content-md5": "eB5eJF1ptWaXm4bijSPyxw==", + "date": { + "from": "now" + }, + "etag": "\"fixture-bf139483d631\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-request-server-encrypted": "true" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "fixture-0fe87110b578" + "value": "ok" } }, { - "at": "/value/entries/32/snapshot", - "optional": true, + "at": "/value/etag", + "optional": false, "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "is": "equal", + "value": "\"fixture-bf139483d631\"" } }, { - "at": "/value/entries/32/version", + "at": "/value/version", "optional": true, "rule": { "is": "one_of", @@ -56645,128 +86575,220 @@ "" ] } - }, - { - "at": "/value/entries/32/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/32/directory", - "optional": false, - "rule": { - "is": "equal", - "value": true - } - }, + } + ], + "refusal": [ { - "at": "/value/entries/33/key", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" + "value": "refused" } }, { - "at": "/value/entries/33/size", + "at": "/kind", "optional": false, "rule": { - "is": "equal", - "value": 0 + "is": "matches", + "pattern": ".+" } }, { - "at": "/value/entries/33/etag", + "at": "/parameter", "optional": false, "rule": { "is": "equal", - "value": "fixture-55cf88c7a2e2" - } - }, - { - "at": "/value/entries/33/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "value": "content_disposition" } }, { - "at": "/value/entries/33/version", + "at": "/status", "optional": true, "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "is": "equal", + "value": 400 } }, { - "at": "/value/entries/33/is_current_version", + "at": "/code", "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/33/directory", - "optional": false, "rule": { "is": "equal", - "value": true + "value": "InvalidMetadata" } - }, + } + ] + }, + { + "id": "operations/azure-hns/put-content-type-edge-spaces", + "profile": "azure-hns", + "lane": "core", + "purpose": "Write a content type with spaces at either end, which HTTP drops, so the service stores it trimmed. A client may refuse it", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "body_base64": "MDEyMzQ1Njc4OQ==", + "content_type": " text/plain ", + "key": "object-tests/write/object.txt", + "op": "put" + }, + "exchanges": [ { - "at": "/value/entries/34/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" - } - }, + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/write/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MDEyMzQ1Njc4OQ==" + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "BlockBlob" + } + }, + { + "at": "/headers/x-ms-blob-content-type", + "optional": false, + "rule": { + "is": "equal", + "value": "text/plain" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 201, + "headers": { + "content-md5": "eB5eJF1ptWaXm4bijSPyxw==", + "date": { + "from": "now" + }, + "etag": "\"fixture-bf139483d631\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-request-server-encrypted": "true" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + }, + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/write/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MDEyMzQ1Njc4OQ==" + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "BlockBlob" + } + }, + { + "at": "/headers/content-type", + "optional": false, + "rule": { + "is": "equal", + "value": "text/plain" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 201, + "headers": { + "content-md5": "eB5eJF1ptWaXm4bijSPyxw==", + "date": { + "from": "now" + }, + "etag": "\"fixture-bf139483d631\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-request-server-encrypted": "true" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ { - "at": "/value/entries/34/size", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": 0 + "value": "ok" } }, { - "at": "/value/entries/34/etag", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": "fixture-6815a7113351" - } - }, - { - "at": "/value/entries/34/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "value": "\"fixture-bf139483d631\"" } }, { - "at": "/value/entries/34/version", + "at": "/value/version", "optional": true, "rule": { "is": "one_of", @@ -56775,63 +86797,130 @@ "" ] } - }, - { - "at": "/value/entries/34/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, + } + ], + "refusal": [ { - "at": "/value/entries/34/directory", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": true + "value": "refused" } }, { - "at": "/value/entries/35/key", + "at": "/kind", "optional": false, "rule": { - "is": "equal", - "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" + "is": "matches", + "pattern": ".+" } }, { - "at": "/value/entries/35/size", + "at": "/parameter", "optional": false, "rule": { "is": "equal", - "value": 0 + "value": "content_type" } - }, + } + ] + }, + { + "id": "operations/azure-hns/put-first-version", + "profile": "azure-hns", + "lane": "core", + "purpose": "put first version", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "body_base64": "djE=", + "key": "object-tests/versions-mtypy4jp/object.txt", + "op": "put" + }, + "exchanges": [ { - "at": "/value/entries/35/etag", + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/versions-mtypy4jp/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "djE=" + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "BlockBlob" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 201, + "headers": { + "content-md5": "ZlTHNMyrj0QP8IJetEPcfw==", + "date": { + "from": "now" + }, + "etag": "\"fixture-36af044f7dd6\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-request-server-encrypted": "true" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "fixture-70df51065efe" + "value": "ok" } }, { - "at": "/value/entries/35/snapshot", - "optional": true, + "at": "/value/etag", + "optional": false, "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "is": "equal", + "value": "\"fixture-36af044f7dd6\"" } }, { - "at": "/value/entries/35/version", + "at": "/value/version", "optional": true, "rule": { "is": "one_of", @@ -56840,63 +86929,114 @@ "" ] } - }, - { - "at": "/value/entries/35/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/35/directory", - "optional": false, - "rule": { - "is": "equal", - "value": true - } - }, + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/put-if-match-current", + "profile": "azure-hns", + "lane": "core", + "purpose": "put if match current", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "body_base64": "cmVwbGFjZWQ=", + "if_match": "\"fixture-bf139483d631\"", + "key": "object-tests/write/object.txt", + "op": "put" + }, + "exchanges": [ { - "at": "/value/entries/36/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" - } - }, + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/write/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "cmVwbGFjZWQ=" + } + }, + { + "at": "/headers/if-match", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-bf139483d631\"" + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "BlockBlob" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 201, + "headers": { + "content-md5": "kbskg1kEP+mEFuJZyb3xDQ==", + "date": { + "from": "now" + }, + "etag": "\"fixture-12045b9dfdc3\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-request-server-encrypted": "true" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ { - "at": "/value/entries/36/size", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": 0 + "value": "ok" } }, { - "at": "/value/entries/36/etag", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": "fixture-0e76caa6ea5f" - } - }, - { - "at": "/value/entries/36/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "value": "\"fixture-12045b9dfdc3\"" } }, { - "at": "/value/entries/36/version", + "at": "/value/version", "optional": true, "rule": { "is": "one_of", @@ -56905,63 +87045,114 @@ "" ] } - }, - { - "at": "/value/entries/36/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/36/directory", - "optional": false, - "rule": { - "is": "equal", - "value": true - } - }, + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/put-if-none-match-missing", + "profile": "azure-hns", + "lane": "core", + "purpose": "put if none match missing", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "body_base64": "ZnJlc2g=", + "if_none_match": "*", + "key": "object-tests/write/fresh.txt", + "op": "put" + }, + "exchanges": [ { - "at": "/value/entries/37/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" - } - }, + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/write/fresh.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "ZnJlc2g=" + } + }, + { + "at": "/headers/if-none-match", + "optional": false, + "rule": { + "is": "equal", + "value": "*" + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "BlockBlob" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 201, + "headers": { + "content-md5": "dgEIWMg2LXMC71+UNqpmOQ==", + "date": { + "from": "now" + }, + "etag": "\"fixture-5be249955d3d\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-request-server-encrypted": "true" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ { - "at": "/value/entries/37/size", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": 0 + "value": "ok" } }, { - "at": "/value/entries/37/etag", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": "fixture-97f6d7ad109d" - } - }, - { - "at": "/value/entries/37/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "value": "\"fixture-5be249955d3d\"" } }, { - "at": "/value/entries/37/version", + "at": "/value/version", "optional": true, "rule": { "is": "one_of", @@ -56970,63 +87161,105 @@ "" ] } - }, - { - "at": "/value/entries/37/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/37/directory", - "optional": false, - "rule": { - "is": "equal", - "value": true - } - }, + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/put-key-1024", + "profile": "azure-hns", + "lane": "core", + "purpose": "put key 1024", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "body_base64": "MQ==", + "key": "object-tests/long/kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", + "op": "put" + }, + "exchanges": [ { - "at": "/value/entries/38/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" - } - }, + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/long/kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MQ==" + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "BlockBlob" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 201, + "headers": { + "content-md5": "xMpCOKC5I4INzFCab3WEmw==", + "date": { + "from": "now" + }, + "etag": "\"fixture-f5596350d7a5\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-request-server-encrypted": "true" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ { - "at": "/value/entries/38/size", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": 0 + "value": "ok" } }, { - "at": "/value/entries/38/etag", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": "fixture-b7df38492c3e" - } - }, - { - "at": "/value/entries/38/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "value": "\"fixture-f5596350d7a5\"" } }, { - "at": "/value/entries/38/version", + "at": "/value/version", "optional": true, "rule": { "is": "one_of", @@ -57035,63 +87268,105 @@ "" ] } - }, - { - "at": "/value/entries/38/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/38/directory", - "optional": false, - "rule": { - "is": "equal", - "value": true - } - }, + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/put-key-1025", + "profile": "azure-hns", + "lane": "core", + "purpose": "put key 1025", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "body_base64": "MQ==", + "key": "object-tests/long/kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", + "op": "put" + }, + "exchanges": [ { - "at": "/value/entries/39/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" - } - }, + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/long/kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MQ==" + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "BlockBlob" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 201, + "headers": { + "content-md5": "xMpCOKC5I4INzFCab3WEmw==", + "date": { + "from": "now" + }, + "etag": "\"fixture-16d1c2f31d98\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-request-server-encrypted": "true" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ { - "at": "/value/entries/39/size", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": 0 + "value": "ok" } }, { - "at": "/value/entries/39/etag", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": "fixture-ac2f2336ab74" - } - }, - { - "at": "/value/entries/39/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "value": "\"fixture-16d1c2f31d98\"" } }, { - "at": "/value/entries/39/version", + "at": "/value/version", "optional": true, "rule": { "is": "one_of", @@ -57100,128 +87375,440 @@ "" ] } - }, + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/put-key-under-object", + "profile": "azure-hns", + "lane": "core", + "purpose": "put key under object", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "body_base64": "MQ==", + "key": "object-tests/order/a/b", + "op": "put" + }, + "exchanges": [ { - "at": "/value/entries/39/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/order/a/b" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MQ==" + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "BlockBlob" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 404, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "BlobNotFound" + }, + "body": { + "encoding": "utf8", + "data": "BlobNotFoundFixture error" + } + } + } + ] + } + ], + "expect": [ { - "at": "/value/entries/39/directory", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": true + "value": "error" } }, { - "at": "/value/entries/40/key", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" + "value": 404 } }, { - "at": "/value/entries/40/size", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": 0 + "value": "BlobNotFound" } - }, + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/put-lost-the-race-to-create", + "profile": "azure-hns", + "lane": "core", + "purpose": "put lost the race to create", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "body_base64": "YW5vdGhlciBvYmplY3Q=", + "if_none_match": "*", + "key": "object-tests/write/object.txt", + "op": "put" + }, + "exchanges": [ { - "at": "/value/entries/40/etag", + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/write/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "YW5vdGhlciBvYmplY3Q=" + } + }, + { + "at": "/headers/if-none-match", + "optional": false, + "rule": { + "is": "equal", + "value": "*" + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "BlockBlob" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 409, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "BlobAlreadyExists" + }, + "body": { + "encoding": "utf8", + "data": "BlobAlreadyExistsFixture error" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "fixture-c2a19efa033c" + "value": "error" } }, { - "at": "/value/entries/40/snapshot", - "optional": true, + "at": "/status", + "optional": false, "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "is": "equal", + "value": 409 } }, { - "at": "/value/entries/40/version", - "optional": true, + "at": "/code", + "optional": false, "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "is": "equal", + "value": "BlobAlreadyExists" } + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/put-md5-mismatch", + "profile": "azure-hns", + "lane": "core", + "purpose": "put md5 mismatch", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "body_base64": "ZGVjbGFyZWQtYm9keQ==", + "checksum": { + "algorithm": "md5", + "value_base64": "eV8yArF8trw9S3cdjGyerw==" }, + "key": "object-tests/hashes/md5-mismatch.txt", + "op": "put" + }, + "exchanges": [ { - "at": "/value/entries/40/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/hashes/md5-mismatch.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "ZGVjbGFyZWQtYm9keQ==" + } + }, + { + "at": "/headers/content-md5", + "optional": false, + "rule": { + "is": "equal", + "value": "eV8yArF8trw9S3cdjGyerw==" + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "BlockBlob" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 400, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "Md5Mismatch" + }, + "body": { + "encoding": "utf8", + "data": "Md5MismatchFixture error" + } + } + } + ] + } + ], + "expect": [ { - "at": "/value/entries/40/directory", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": true + "value": "error" } }, { - "at": "/value/entries/41/key", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" + "value": 400 } }, { - "at": "/value/entries/41/size", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": 0 + "value": "Md5Mismatch" } + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/put-metadata-empty-value", + "profile": "azure-hns", + "lane": "core", + "purpose": "put metadata empty value", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "body_base64": "MQ==", + "key": "object-tests/metadata/empty-value.txt", + "metadata": { + "empty": "" }, + "op": "put" + }, + "exchanges": [ { - "at": "/value/entries/41/etag", + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/metadata/empty-value.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MQ==" + } + }, + { + "at": "/headers/x-ms-meta-empty", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "BlockBlob" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 201, + "headers": { + "content-md5": "xMpCOKC5I4INzFCab3WEmw==", + "date": { + "from": "now" + }, + "etag": "\"fixture-18852ad86043\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-request-server-encrypted": "true" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "fixture-b9e90b553fff" + "value": "ok" } }, { - "at": "/value/entries/41/snapshot", - "optional": true, + "at": "/value/etag", + "optional": false, "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "is": "equal", + "value": "\"fixture-18852ad86043\"" } }, { - "at": "/value/entries/41/version", + "at": "/value/version", "optional": true, "rule": { "is": "one_of", @@ -57230,117 +87817,258 @@ "" ] } + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/put-metadata-invalid-name", + "profile": "azure-hns", + "lane": "core", + "purpose": "put metadata invalid name", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "body_base64": "MQ==", + "key": "object-tests/metadata/invalid-name.txt", + "metadata": { + "not-valid": "1" }, + "op": "put" + }, + "exchanges": [ { - "at": "/value/entries/41/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/metadata/invalid-name.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MQ==" + } + }, + { + "at": "/headers/x-ms-meta-not-valid", + "optional": false, + "rule": { + "is": "equal", + "value": "1" + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "BlockBlob" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 400, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "InvalidMetadata" + }, + "body": { + "encoding": "utf8", + "data": "InvalidMetadataFixture error" + } + } + } + ] + } + ], + "expect": [ { - "at": "/value/entries/41/directory", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": true + "value": "error" } }, { - "at": "/value/entries/42/key", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" + "value": 400 } }, { - "at": "/value/entries/42/size", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": 0 + "value": "InvalidMetadata" } - }, + } + ], + "refusal": [ { - "at": "/value/entries/42/etag", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "fixture-0d7c0a17f740" + "value": "refused" } }, { - "at": "/value/entries/42/snapshot", - "optional": true, + "at": "/kind", + "optional": false, "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "is": "matches", + "pattern": ".+" } }, { - "at": "/value/entries/42/version", - "optional": true, + "at": "/parameter", + "optional": false, "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "is": "equal", + "value": "metadata" } }, { - "at": "/value/entries/42/is_current_version", + "at": "/status", "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/42/directory", - "optional": false, "rule": { "is": "equal", - "value": true + "value": 400 } }, { - "at": "/value/entries/43/key", - "optional": false, + "at": "/code", + "optional": true, "rule": { "is": "equal", - "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" + "value": "InvalidMetadata" } - }, + } + ] + }, + { + "id": "operations/azure-hns/put-metadata-replaced", + "profile": "azure-hns", + "lane": "core", + "purpose": "put metadata replaced", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "body_base64": "Mg==", + "key": "object-tests/metadata/replaced.txt", + "op": "put" + }, + "exchanges": [ { - "at": "/value/entries/43/size", + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/metadata/replaced.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "Mg==" + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "BlockBlob" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 201, + "headers": { + "content-md5": "yB5yjZ1ML2NvBn+JzBSGLA==", + "date": { + "from": "now" + }, + "etag": "\"fixture-c24dabf9e117\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-request-server-encrypted": "true" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": 0 + "value": "ok" } }, { - "at": "/value/entries/43/etag", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": "fixture-e1d35759d4ac" + "value": "\"fixture-c24dabf9e117\"" } }, { - "at": "/value/entries/43/snapshot", + "at": "/value/version", "optional": true, "rule": { "is": "one_of", @@ -57349,63 +88077,350 @@ "" ] } + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/put-metadata", + "profile": "azure-hns", + "lane": "core", + "purpose": "put metadata", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "body_base64": "MQ==", + "key": "object-tests/metadata/object.txt", + "metadata": { + "name": "value", + "second": "2" }, + "op": "put" + }, + "exchanges": [ { - "at": "/value/entries/43/version", - "optional": true, + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/metadata/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MQ==" + } + }, + { + "at": "/headers/x-ms-meta-name", + "optional": false, + "rule": { + "is": "equal", + "value": "value" + } + }, + { + "at": "/headers/x-ms-meta-second", + "optional": false, + "rule": { + "is": "equal", + "value": "2" + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "BlockBlob" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 201, + "headers": { + "content-md5": "xMpCOKC5I4INzFCab3WEmw==", + "date": { + "from": "now" + }, + "etag": "\"fixture-4d04dba3441e\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-request-server-encrypted": "true" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "is": "equal", + "value": "ok" } }, { - "at": "/value/entries/43/is_current_version", + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-4d04dba3441e\"" + } + }, + { + "at": "/value/version", "optional": true, "rule": { "is": "one_of", "values": [ null, - false + "" ] } + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/put-metadata-identifier-name", + "profile": "azure-hns", + "lane": "core", + "purpose": "An Azure metadata name must be a C# identifier, which may start with an underscore and hold digits. Send _a1; only a name that is no identifier may be refused.", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "body_base64": "MQ==", + "key": "object-tests/metadata/identifier-name.txt", + "metadata": { + "_a1": "1" }, + "op": "put" + }, + "exchanges": [ { - "at": "/value/entries/43/directory", + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/metadata/identifier-name.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MQ==" + } + }, + { + "at": "/headers/x-ms-meta-_a1", + "optional": false, + "rule": { + "is": "equal", + "value": "1" + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "BlockBlob" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 201, + "headers": { + "content-md5": "xMpCOKC5I4INzFCab3WEmw==", + "date": { + "from": "now" + }, + "etag": "\"fixture-4d04dba3441e\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-request-server-encrypted": "true" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": true + "value": "ok" } }, { - "at": "/value/entries/44/key", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" + "value": "\"fixture-4d04dba3441e\"" } }, { - "at": "/value/entries/44/size", + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/put-over-snapshotted", + "profile": "azure-hns", + "lane": "core", + "purpose": "put over snapshotted", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "body_base64": "dHdv", + "key": "object-tests/snapshots/object.txt", + "op": "put" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/snapshots/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "dHdv" + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "BlockBlob" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 201, + "headers": { + "content-md5": "uKn3Fdu2T9XFbneDxoIKYQ==", + "date": { + "from": "now" + }, + "etag": "\"fixture-810306ce8bc4\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-request-server-encrypted": "true" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": 0 + "value": "ok" } }, { - "at": "/value/entries/44/etag", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": "fixture-1389b2ea70e1" + "value": "\"fixture-810306ce8bc4\"" } }, { - "at": "/value/entries/44/snapshot", + "at": "/value/version", "optional": true, "rule": { "is": "one_of", @@ -57414,139 +88429,535 @@ "" ] } + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/put-overwrite", + "profile": "azure-hns", + "lane": "core", + "purpose": "put overwrite", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "body_base64": "b3ZlcndyaXR0ZW4=", + "key": "object-tests/write/object.txt", + "op": "put" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/write/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "b3ZlcndyaXR0ZW4=" + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "BlockBlob" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 201, + "headers": { + "content-md5": "UJ/0v/8wp3EDqsNAaOpGxw==", + "date": { + "from": "now" + }, + "etag": "\"fixture-3da2f422ef3c\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-request-server-encrypted": "true" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } }, { - "at": "/value/entries/44/version", - "optional": true, + "at": "/value/etag", + "optional": false, "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "is": "equal", + "value": "\"fixture-3da2f422ef3c\"" } }, { - "at": "/value/entries/44/is_current_version", + "at": "/value/version", "optional": true, "rule": { "is": "one_of", "values": [ null, - false + "" ] } - }, + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/put-precondition-failed", + "profile": "azure-hns", + "lane": "core", + "purpose": "put precondition failed", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "body_base64": "YW5vdGhlciBvYmplY3Q=", + "if_match": "\"fixture-088e5dc109cf\"", + "key": "object-tests/write/object.txt", + "op": "put" + }, + "exchanges": [ { - "at": "/value/entries/44/directory", + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/write/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "YW5vdGhlciBvYmplY3Q=" + } + }, + { + "at": "/headers/if-match", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-088e5dc109cf\"" + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "BlockBlob" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 412, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "ConditionNotMet" + }, + "body": { + "encoding": "utf8", + "data": "ConditionNotMetFixture error" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": true + "value": "error" } }, { - "at": "/value/entries/45/key", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" + "value": 412 } }, { - "at": "/value/entries/45/size", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": 0 + "value": "ConditionNotMet" } - }, + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/put-precondition-failed-code-in-body", + "profile": "azure-hns", + "lane": "core", + "purpose": "put precondition failed, with the error code only in the XML body", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp", + "https://learn.microsoft.com/en-us/rest/api/storageservices/common-rest-api-error-codes", + "https://learn.microsoft.com/en-us/rest/api/storageservices/blob-service-error-codes" + ], + "origin": "constructed", + "call": { + "body_base64": "YW5vdGhlciBvYmplY3Q=", + "if_match": "\"fixture-088e5dc109cf\"", + "key": "object-tests/write/object.txt", + "op": "put" + }, + "exchanges": [ { - "at": "/value/entries/45/etag", + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/write/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "YW5vdGhlciBvYmplY3Q=" + } + }, + { + "at": "/headers/if-match", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-088e5dc109cf\"" + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "BlockBlob" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 412, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + } + }, + "body": { + "encoding": "utf8", + "data": "ConditionNotMetFixture error" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "fixture-11c5ee820f55" + "value": "error" } }, { - "at": "/value/entries/45/snapshot", - "optional": true, + "at": "/status", + "optional": false, "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "is": "equal", + "value": 412 } }, { - "at": "/value/entries/45/version", - "optional": true, + "at": "/code", + "optional": false, "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "is": "equal", + "value": "ConditionNotMet" } - }, + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/put-refused", + "profile": "azure-hns", + "lane": "core", + "purpose": "Report the service authorization error for this operation; signature acceptance is tested separately.", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "body_base64": "bm90aGluZyBpcyBzdG9yZWQ=", + "key": "object.txt", + "op": "put" + }, + "exchanges": [ { - "at": "/value/entries/45/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "bm90aGluZyBpcyBzdG9yZWQ=" + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "BlockBlob" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 404, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "ContainerNotFound" + }, + "body": { + "encoding": "utf8", + "data": "ContainerNotFoundFixture error" + } + } + } + ] + } + ], + "expect": [ { - "at": "/value/entries/45/directory", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": true + "value": "error" } }, { - "at": "/value/entries/46/key", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" + "value": 404 } }, { - "at": "/value/entries/46/size", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": 0 + "value": "ContainerNotFound" } - }, + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/put-second-version", + "profile": "azure-hns", + "lane": "core", + "purpose": "put second version", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "body_base64": "djI=", + "key": "object-tests/versions-mtypy4jp/object.txt", + "op": "put" + }, + "exchanges": [ { - "at": "/value/entries/46/etag", + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/versions-mtypy4jp/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "djI=" + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "BlockBlob" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 201, + "headers": { + "content-md5": "GyZ2GcSBLMRu4oF0eITKUA==", + "date": { + "from": "now" + }, + "etag": "\"fixture-ecff54f15562\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-request-server-encrypted": "true" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "fixture-ba489a3d8cb9" + "value": "ok" } }, { - "at": "/value/entries/46/snapshot", - "optional": true, + "at": "/value/etag", + "optional": false, "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "is": "equal", + "value": "\"fixture-ecff54f15562\"" } }, { - "at": "/value/entries/46/version", + "at": "/value/version", "optional": true, "rule": { "is": "one_of", @@ -57555,63 +88966,218 @@ "" ] } - }, + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/put-unauthenticated", + "profile": "azure-hns", + "lane": "core", + "purpose": "Report the service authorization error for this operation; signature acceptance is tested separately.", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "body_base64": "bm90aGluZyBpcyBzdG9yZWQ=", + "key": "object-tests/write/object.txt", + "op": "put" + }, + "exchanges": [ { - "at": "/value/entries/46/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/write/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "bm90aGluZyBpcyBzdG9yZWQ=" + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "BlockBlob" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 401, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "InvalidAuthenticationInfo" + }, + "body": { + "encoding": "utf8", + "data": "InvalidAuthenticationInfoFixture error" + } + } + } + ] + } + ], + "expect": [ { - "at": "/value/entries/46/directory", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": true + "value": "error" } }, { - "at": "/value/entries/47/key", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" + "value": 401 } }, { - "at": "/value/entries/47/size", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": 0 + "value": "InvalidAuthenticationInfo" } + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/put-with-crc64", + "profile": "azure-hns", + "lane": "core", + "purpose": "put with crc64", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "body_base64": "ZGVjbGFyZWQtYm9keQ==", + "checksum": { + "algorithm": "azure_crc64", + "value_base64": "9XBvAwWoR9o=" }, + "key": "object-tests/hashes/crc64.txt", + "op": "put" + }, + "exchanges": [ { - "at": "/value/entries/47/etag", + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/hashes/crc64.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "ZGVjbGFyZWQtYm9keQ==" + } + }, + { + "at": "/headers/x-ms-content-crc64", + "optional": false, + "rule": { + "is": "equal", + "value": "9XBvAwWoR9o=" + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "BlockBlob" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 201, + "headers": { + "content-md5": "N6YZkbg+Lyfxtskwn8iRCg==", + "date": { + "from": "now" + }, + "etag": "\"fixture-bf462a2f52f2\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-request-server-encrypted": "true" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "fixture-548645ff94c6" + "value": "ok" } }, { - "at": "/value/entries/47/snapshot", - "optional": true, + "at": "/value/etag", + "optional": false, "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "is": "equal", + "value": "\"fixture-bf462a2f52f2\"" } }, { - "at": "/value/entries/47/version", + "at": "/value/version", "optional": true, "rule": { "is": "one_of", @@ -57620,52 +89186,117 @@ "" ] } + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/put-with-md5", + "profile": "azure-hns", + "lane": "core", + "purpose": "put with md5", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "body_base64": "ZGVjbGFyZWQtYm9keQ==", + "checksum": { + "algorithm": "md5", + "value_base64": "N6YZkbg+Lyfxtskwn8iRCg==" }, + "key": "object-tests/hashes/md5.txt", + "op": "put" + }, + "exchanges": [ { - "at": "/value/entries/47/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/47/directory", - "optional": false, - "rule": { - "is": "equal", - "value": true - } - }, - { - "at": "/value/entries/48/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" - } - }, + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/hashes/md5.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "ZGVjbGFyZWQtYm9keQ==" + } + }, + { + "at": "/headers/content-md5", + "optional": false, + "rule": { + "is": "equal", + "value": "N6YZkbg+Lyfxtskwn8iRCg==" + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "BlockBlob" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 201, + "headers": { + "content-md5": "N6YZkbg+Lyfxtskwn8iRCg==", + "date": { + "from": "now" + }, + "etag": "\"fixture-15ae0acd3480\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-request-server-encrypted": "true" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ { - "at": "/value/entries/48/size", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": 0 + "value": "ok" } }, { - "at": "/value/entries/48/etag", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": "fixture-b21f6737ba6c" + "value": "\"fixture-15ae0acd3480\"" } }, { - "at": "/value/entries/48/snapshot", + "at": "/value/version", "optional": true, "rule": { "is": "one_of", @@ -57674,63 +89305,314 @@ "" ] } - }, + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/snapshot", + "profile": "azure-hns", + "lane": "core", + "purpose": "snapshot", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "key": "object-tests/snapshots/object.txt", + "op": "azure.snapshot" + }, + "exchanges": [ { - "at": "/value/entries/48/version", - "optional": true, + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/snapshots/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "snapshot" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 409, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "FeatureNotYetSupportedForHierarchicalNamespaceAccounts" + }, + "body": { + "encoding": "utf8", + "data": "FeatureNotYetSupportedForHierarchicalNamespaceAccountsFixture error" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "is": "equal", + "value": "error" } }, { - "at": "/value/entries/48/is_current_version", - "optional": true, + "at": "/status", + "optional": false, "rule": { - "is": "one_of", - "values": [ - null, - false - ] + "is": "equal", + "value": 409 } }, { - "at": "/value/entries/48/directory", + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "FeatureNotYetSupportedForHierarchicalNamespaceAccounts" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/stage-empty", + "profile": "azure-hns", + "lane": "core", + "purpose": "stage empty", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "block_id_base64": "MDAwMDAz", + "body_base64": "", + "key": "object-tests/multipart/staged.bin", + "op": "azure.stage_block" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/multipart/staged.bin" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "block" + } + }, + { + "at": "/query/blockid", + "optional": false, + "rule": { + "is": "equal", + "value": "MDAwMDAz" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 400, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "InvalidHeaderValue" + }, + "body": { + "encoding": "utf8", + "data": "InvalidHeaderValueFixture error" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": true + "value": "error" } }, { - "at": "/value/entries/49/key", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" + "value": 400 } }, { - "at": "/value/entries/49/size", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": 0 + "value": "InvalidHeaderValue" } - }, + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/stage-escaped-id", + "profile": "azure-hns", + "lane": "core", + "purpose": "stage escaped id", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "block_id_base64": "+/8=", + "body_base64": "b25l", + "key": "object-tests/multipart/escaped.bin", + "op": "azure.stage_block" + }, + "exchanges": [ { - "at": "/value/entries/49/etag", + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/multipart/escaped.bin" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "b25l" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "block" + } + }, + { + "at": "/query/blockid", + "optional": false, + "rule": { + "is": "equal", + "value": "+/8=" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 201, + "headers": { + "date": { + "from": "now" + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-request-server-encrypted": "true" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "fixture-23eb881b6618" + "value": "ok" } }, { - "at": "/value/entries/49/snapshot", + "at": "/value/etag", "optional": true, "rule": { "is": "one_of", @@ -57739,193 +89621,587 @@ "" ] } - }, + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/stage-id-too-long", + "profile": "azure-hns", + "lane": "core", + "purpose": "stage id too long", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "block_id_base64": "eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHg=", + "body_base64": "dGhpcmQ=", + "key": "object-tests/multipart/staged.bin", + "op": "azure.stage_block" + }, + "exchanges": [ { - "at": "/value/entries/49/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/multipart/staged.bin" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "dGhpcmQ=" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "block" + } + }, + { + "at": "/query/blockid", + "optional": false, + "rule": { + "is": "equal", + "value": "eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHg=" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 400, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "OutOfRangeInput" + }, + "body": { + "encoding": "utf8", + "data": "OutOfRangeInputBlock ID exceeds 64 decoded bytes." + } + } + } + ] + } + ], + "expect": [ { - "at": "/value/entries/49/is_current_version", - "optional": true, + "at": "/outcome", + "optional": false, "rule": { - "is": "one_of", - "values": [ - null, - false - ] + "is": "equal", + "value": "error" } }, { - "at": "/value/entries/49/directory", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": true + "value": 400 } }, { - "at": "/value/entries/50/key", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" + "value": "OutOfRangeInput" } - }, + } + ], + "refusal": [ { - "at": "/value/entries/50/size", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": 0 + "value": "refused" } }, { - "at": "/value/entries/50/etag", + "at": "/kind", "optional": false, "rule": { - "is": "equal", - "value": "fixture-02c3be7f3363" + "is": "matches", + "pattern": ".+" } }, { - "at": "/value/entries/50/snapshot", - "optional": true, + "at": "/parameter", + "optional": false, "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "is": "equal", + "value": "block_id_base64" } }, { - "at": "/value/entries/50/version", + "at": "/status", "optional": true, "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "is": "equal", + "value": 400 } }, { - "at": "/value/entries/50/is_current_version", + "at": "/code", "optional": true, "rule": { - "is": "one_of", - "values": [ - null, - false - ] + "is": "equal", + "value": "OutOfRangeInput" } - }, + } + ] + }, + { + "id": "operations/azure-hns/stage-mixed-length-id", + "profile": "azure-hns", + "lane": "core", + "purpose": "stage mixed length id", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "block_id_base64": "YS1tdWNoLWxvbmdlci1ibG9jay1pZGVudGlmaWVy", + "body_base64": "dGhpcmQ=", + "key": "object-tests/multipart/staged.bin", + "op": "azure.stage_block" + }, + "exchanges": [ { - "at": "/value/entries/50/directory", + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/multipart/staged.bin" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "dGhpcmQ=" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "block" + } + }, + { + "at": "/query/blockid", + "optional": false, + "rule": { + "is": "equal", + "value": "YS1tdWNoLWxvbmdlci1ibG9jay1pZGVudGlmaWVy" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 400, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "InvalidBlobOrBlock" + }, + "body": { + "encoding": "utf8", + "data": "InvalidBlobOrBlockFixture error" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": true + "value": "error" } }, { - "at": "/value/entries/51/key", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" + "value": 400 } }, { - "at": "/value/entries/51/size", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": 0 + "value": "InvalidBlobOrBlock" } - }, + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/stage-mixed-length-id-code-in-body", + "profile": "azure-hns", + "lane": "core", + "purpose": "stage mixed length id, with the error code only in the XML body", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp", + "https://learn.microsoft.com/en-us/rest/api/storageservices/common-rest-api-error-codes", + "https://learn.microsoft.com/en-us/rest/api/storageservices/blob-service-error-codes" + ], + "origin": "constructed", + "call": { + "block_id_base64": "YS1tdWNoLWxvbmdlci1ibG9jay1pZGVudGlmaWVy", + "body_base64": "dGhpcmQ=", + "key": "object-tests/multipart/staged.bin", + "op": "azure.stage_block" + }, + "exchanges": [ { - "at": "/value/entries/51/etag", + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/multipart/staged.bin" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "dGhpcmQ=" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "block" + } + }, + { + "at": "/query/blockid", + "optional": false, + "rule": { + "is": "equal", + "value": "YS1tdWNoLWxvbmdlci1ibG9jay1pZGVudGlmaWVy" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 400, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + } + }, + "body": { + "encoding": "utf8", + "data": "InvalidBlobOrBlockFixture error" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "fixture-86bca962bd30" + "value": "error" } }, { - "at": "/value/entries/51/snapshot", - "optional": true, + "at": "/status", + "optional": false, "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "is": "equal", + "value": 400 } }, { - "at": "/value/entries/51/version", - "optional": true, + "at": "/code", + "optional": false, "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "is": "equal", + "value": "InvalidBlobOrBlock" } - }, + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/stage-unauthenticated", + "profile": "azure-hns", + "lane": "core", + "purpose": "Report the service authorization error for this operation; signature acceptance is tested separately.", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "block_id_base64": "MDAwMDAx", + "body_base64": "Zmlyc3Q=", + "key": "object-tests/multipart/staged.bin", + "op": "azure.stage_block" + }, + "exchanges": [ { - "at": "/value/entries/51/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/multipart/staged.bin" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "Zmlyc3Q=" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "block" + } + }, + { + "at": "/query/blockid", + "optional": false, + "rule": { + "is": "equal", + "value": "MDAwMDAx" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 401, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "InvalidAuthenticationInfo" + }, + "body": { + "encoding": "utf8", + "data": "InvalidAuthenticationInfoFixture error" + } + } + } + ] + } + ], + "expect": [ { - "at": "/value/entries/51/directory", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": true + "value": "error" } }, { - "at": "/value/entries/52/key", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" + "value": 401 } }, { - "at": "/value/entries/52/size", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": 0 + "value": "InvalidAuthenticationInfo" } - }, + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/stage", + "profile": "azure-hns", + "lane": "core", + "purpose": "stage", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "block_id_base64": "MDAwMDAy", + "body_base64": "c2Vjb25k", + "key": "object-tests/multipart/staged.bin", + "op": "azure.stage_block" + }, + "exchanges": [ { - "at": "/value/entries/52/etag", + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/multipart/staged.bin" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "c2Vjb25k" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "block" + } + }, + { + "at": "/query/blockid", + "optional": false, + "rule": { + "is": "equal", + "value": "MDAwMDAy" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 201, + "headers": { + "date": { + "from": "now" + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-request-server-encrypted": "true" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "fixture-1696791242e8" + "value": "ok" } }, { - "at": "/value/entries/52/snapshot", + "at": "/value/etag", "optional": true, "rule": { "is": "one_of", @@ -57934,74 +90210,316 @@ "" ] } - }, + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/stage-id-64-bytes", + "profile": "azure-hns", + "lane": "core", + "purpose": "A block ID decodes to at most 64 bytes, and Azure stages a block whose ID decodes to exactly 64. Send it; only a longer ID may be refused.", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "block_id_base64": "eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eA==", + "body_base64": "c2Vjb25k", + "key": "object-tests/multipart/staged.bin", + "op": "azure.stage_block" + }, + "exchanges": [ { - "at": "/value/entries/52/version", - "optional": true, + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/multipart/staged.bin" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "c2Vjb25k" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "block" + } + }, + { + "at": "/query/blockid", + "optional": false, + "rule": { + "is": "equal", + "value": "eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eA==" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 201, + "headers": { + "date": { + "from": "now" + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-request-server-encrypted": "true" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "is": "equal", + "value": "ok" } }, { - "at": "/value/entries/52/is_current_version", + "at": "/value/etag", "optional": true, "rule": { "is": "one_of", "values": [ null, - false + "" ] } - }, + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/stage-key-question", + "profile": "azure-hns", + "lane": "core", + "purpose": "stage, with the key \"question?mark.txt\"", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "block_id_base64": "MDAwMDAy", + "body_base64": "c2Vjb25k", + "key": "object-tests/keys/question?mark.txt", + "op": "azure.stage_block" + }, + "exchanges": [ { - "at": "/value/entries/52/directory", - "optional": false, - "rule": { - "is": "equal", - "value": true - } - }, + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/keys/question?mark.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "c2Vjb25k" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "block" + } + }, + { + "at": "/query/blockid", + "optional": false, + "rule": { + "is": "equal", + "value": "MDAwMDAy" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 201, + "headers": { + "date": { + "from": "now" + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-request-server-encrypted": "true" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ { - "at": "/value/entries/53/key", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" + "value": "ok" } }, { - "at": "/value/entries/53/size", - "optional": false, + "at": "/value/etag", + "optional": true, "rule": { - "is": "equal", - "value": 0 + "is": "one_of", + "values": [ + null, + "" + ] } - }, + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/stage-key-hash", + "profile": "azure-hns", + "lane": "core", + "purpose": "stage, with the key \"hash#tag.txt\"", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "block_id_base64": "MDAwMDAy", + "body_base64": "c2Vjb25k", + "key": "object-tests/keys/hash#tag.txt", + "op": "azure.stage_block" + }, + "exchanges": [ { - "at": "/value/entries/53/etag", + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/keys/hash#tag.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "c2Vjb25k" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "block" + } + }, + { + "at": "/query/blockid", + "optional": false, + "rule": { + "is": "equal", + "value": "MDAwMDAy" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 201, + "headers": { + "date": { + "from": "now" + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-request-server-encrypted": "true" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "fixture-b40699a1e1db" - } - }, - { - "at": "/value/entries/53/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "value": "ok" } }, { - "at": "/value/entries/53/version", + "at": "/value/etag", "optional": true, "rule": { "is": "one_of", @@ -58010,52 +90528,104 @@ "" ] } - }, - { - "at": "/value/entries/53/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/53/directory", - "optional": false, - "rule": { - "is": "equal", - "value": true - } - }, - { - "at": "/value/entries/54/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" - } - }, + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/stage-key-percent", + "profile": "azure-hns", + "lane": "core", + "purpose": "stage, with the key \"percent%20.txt\"", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "block_id_base64": "MDAwMDAy", + "body_base64": "c2Vjb25k", + "key": "object-tests/keys/percent%20.txt", + "op": "azure.stage_block" + }, + "exchanges": [ { - "at": "/value/entries/54/size", - "optional": false, - "rule": { - "is": "equal", - "value": 0 - } - }, + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/keys/percent%20.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "c2Vjb25k" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "block" + } + }, + { + "at": "/query/blockid", + "optional": false, + "rule": { + "is": "equal", + "value": "MDAwMDAy" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 201, + "headers": { + "date": { + "from": "now" + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-request-server-encrypted": "true" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ { - "at": "/value/entries/54/etag", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "fixture-d3fa18807e94" + "value": "ok" } }, { - "at": "/value/entries/54/snapshot", + "at": "/value/etag", "optional": true, "rule": { "is": "one_of", @@ -58064,63 +90634,210 @@ "" ] } - }, + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/stage-key-plus", + "profile": "azure-hns", + "lane": "core", + "purpose": "stage, with the key \"plus+plus.txt\"", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "block_id_base64": "MDAwMDAy", + "body_base64": "c2Vjb25k", + "key": "object-tests/keys/plus+plus.txt", + "op": "azure.stage_block" + }, + "exchanges": [ { - "at": "/value/entries/54/version", - "optional": true, + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/keys/plus+plus.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "c2Vjb25k" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "block" + } + }, + { + "at": "/query/blockid", + "optional": false, + "rule": { + "is": "equal", + "value": "MDAwMDAy" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 201, + "headers": { + "date": { + "from": "now" + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-request-server-encrypted": "true" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "is": "equal", + "value": "ok" } }, { - "at": "/value/entries/54/is_current_version", + "at": "/value/etag", "optional": true, "rule": { "is": "one_of", "values": [ null, - false + "" ] } - }, - { - "at": "/value/entries/54/directory", - "optional": false, - "rule": { - "is": "equal", - "value": true - } - }, - { - "at": "/value/entries/55/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" - } - }, + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/stage-key-space", + "profile": "azure-hns", + "lane": "core", + "purpose": "stage, with the key \"space name.txt\"", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "block_id_base64": "MDAwMDAy", + "body_base64": "c2Vjb25k", + "key": "object-tests/keys/space name.txt", + "op": "azure.stage_block" + }, + "exchanges": [ { - "at": "/value/entries/55/size", - "optional": false, - "rule": { - "is": "equal", - "value": 0 - } - }, + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/keys/space name.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "c2Vjb25k" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "block" + } + }, + { + "at": "/query/blockid", + "optional": false, + "rule": { + "is": "equal", + "value": "MDAwMDAy" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 201, + "headers": { + "date": { + "from": "now" + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-request-server-encrypted": "true" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ { - "at": "/value/entries/55/etag", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "fixture-d55c43fd1f89" + "value": "ok" } }, { - "at": "/value/entries/55/snapshot", + "at": "/value/etag", "optional": true, "rule": { "is": "one_of", @@ -58129,74 +90846,210 @@ "" ] } - }, + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/stage-key-non-ascii", + "profile": "azure-hns", + "lane": "core", + "purpose": "stage, with the key \"café/雪.txt\"", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "block_id_base64": "MDAwMDAy", + "body_base64": "c2Vjb25k", + "key": "object-tests/keys/café/雪.txt", + "op": "azure.stage_block" + }, + "exchanges": [ { - "at": "/value/entries/55/version", - "optional": true, + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/keys/café/雪.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "c2Vjb25k" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "block" + } + }, + { + "at": "/query/blockid", + "optional": false, + "rule": { + "is": "equal", + "value": "MDAwMDAy" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 201, + "headers": { + "date": { + "from": "now" + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-request-server-encrypted": "true" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "is": "equal", + "value": "ok" } }, { - "at": "/value/entries/55/is_current_version", + "at": "/value/etag", "optional": true, "rule": { "is": "one_of", "values": [ null, - false + "" ] } - }, - { - "at": "/value/entries/55/directory", - "optional": false, - "rule": { - "is": "equal", - "value": true - } - }, - { - "at": "/value/entries/56/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" - } - }, + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/stage-key-double-slash", + "profile": "azure-hns", + "lane": "core", + "purpose": "stage, with the key \"double//slash.txt\"", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "block_id_base64": "MDAwMDAy", + "body_base64": "c2Vjb25k", + "key": "object-tests/keys/double//slash.txt", + "op": "azure.stage_block" + }, + "exchanges": [ { - "at": "/value/entries/56/size", - "optional": false, - "rule": { - "is": "equal", - "value": 0 - } - }, + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/keys/double//slash.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "c2Vjb25k" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "block" + } + }, + { + "at": "/query/blockid", + "optional": false, + "rule": { + "is": "equal", + "value": "MDAwMDAy" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 201, + "headers": { + "date": { + "from": "now" + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-request-server-encrypted": "true" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ { - "at": "/value/entries/56/etag", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "fixture-989ce64e20d6" - } - }, - { - "at": "/value/entries/56/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "value": "ok" } }, { - "at": "/value/entries/56/version", + "at": "/value/etag", "optional": true, "rule": { "is": "one_of", @@ -58205,63 +91058,235 @@ "" ] } - }, + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/stage-key-trailing-slash", + "profile": "azure-hns", + "lane": "core", + "purpose": "stage, with the key \"trailing-slash/\"", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "block_id_base64": "MDAwMDAy", + "body_base64": "c2Vjb25k", + "key": "object-tests/keys/trailing-slash/", + "op": "azure.stage_block" + }, + "exchanges": [ { - "at": "/value/entries/56/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/keys/trailing-slash/" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "c2Vjb25k" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "block" + } + }, + { + "at": "/query/blockid", + "optional": false, + "rule": { + "is": "equal", + "value": "MDAwMDAy" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 400, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "InvalidUri" + }, + "body": { + "encoding": "utf8", + "data": "InvalidUriFixture error" + } + } + } + ] + } + ], + "expect": [ { - "at": "/value/entries/56/directory", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": true + "value": "error" } }, { - "at": "/value/entries/57/key", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "object-tests/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s/s" + "value": 400 } }, { - "at": "/value/entries/57/size", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": 1 + "value": "InvalidUri" } - }, + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/stage-from-url", + "profile": "azure-hns", + "lane": "core", + "purpose": "Stage a block from bytes 0 to 2 at a URL with Put Block From URL, the range named in x-ms-source-range with an inclusive end, as bytes=0-2", + "sources": [ + "https://learn.microsoft.com/en-us/rest/api/storageservices/put-block-from-url" + ], + "call": { + "block_id_base64": "MDAwMDAy", + "key": "object-tests/multipart/staged.bin", + "op": "azure.stage_block_from_url", + "source_key": "object-tests/copy/source.txt", + "source_range": { + "end": 3, + "start": 0 + } + }, + "exchanges": [ { - "at": "/value/entries/57/etag", + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/multipart/staged.bin" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "block" + } + }, + { + "at": "/query/blockid", + "optional": false, + "rule": { + "is": "equal", + "value": "MDAwMDAy" + } + }, + { + "at": "/headers/x-ms-copy-source", + "optional": false, + "rule": { + "is": "matches", + "pattern": "https?://[^/]+/fixture/object-tests/copy/source\\.txt" + } + }, + { + "at": "/headers/x-ms-source-range", + "optional": false, + "rule": { + "is": "equal", + "value": "bytes=0-2" + } + } + ], + "allow_headers": [ + "content-type", + "x-ms-copy-source-authorization" + ], + "allow_query": [], + "response": { + "status": 201, + "headers": { + "date": { + "from": "now" + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-request-server-encrypted": "true" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "fixture-e6b534521353" - } - }, - { - "at": "/value/entries/57/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "value": "ok" } }, { - "at": "/value/entries/57/version", + "at": "/value/etag", "optional": true, "rule": { "is": "one_of", @@ -58270,65 +91295,22 @@ "" ] } - }, - { - "at": "/value/entries/57/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/57/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "xMpCOKC5I4INzFCab3WEmw==" - } - }, - { - "at": "/value/entries", - "optional": false, - "rule": { - "is": "array_length", - "value": 58 - } - }, - { - "at": "/value/prefixes", - "optional": false, - "rule": { - "is": "array_length", - "value": 0 - } - }, - { - "at": "/value/continuation_token", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } } ], "refusal": null }, { - "id": "operations/azure-hns/list-max-keys-zero", + "id": "operations/azure-hns/staged-absent", "profile": "azure-hns", "lane": "core", - "purpose": "list max keys zero", + "purpose": "staged absent", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "op": "list_page", - "page_size": 0, - "prefix": "object-tests/board/" + "key": "object-tests/multipart/absent.bin", + "kind": "all", + "op": "azure.list_blocks" }, "exchanges": [ { @@ -58348,7 +91330,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/multipart/absent.bin" } }, { @@ -58359,53 +91341,37 @@ "value": "" } }, - { - "at": "/query/restype", - "optional": false, - "rule": { - "is": "equal", - "value": "container" - } - }, { "at": "/query/comp", "optional": false, "rule": { "is": "equal", - "value": "list" - } - }, - { - "at": "/query/prefix", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/board/" + "value": "blocklist" } }, { - "at": "/query/maxresults", + "at": "/query/blocklisttype", "optional": false, "rule": { "is": "equal", - "value": "0" + "value": "all" } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 400, + "status": 404, "headers": { "content-type": "application/xml", "date": { "from": "now" }, - "x-ms-error-code": "OutOfRangeQueryParameterValue" + "x-ms-error-code": "BlobNotFound" }, "body": { "encoding": "utf8", - "data": "OutOfRangeQueryParameterValueFixture error" + "data": "BlobNotFoundFixture error" } } } @@ -58426,7 +91392,7 @@ "optional": false, "rule": { "is": "equal", - "value": 400 + "value": 404 } }, { @@ -58434,67 +91400,133 @@ "optional": false, "rule": { "is": "equal", - "value": "OutOfRangeQueryParameterValue" + "value": "BlobNotFound" } } ], - "refusal": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "refused" - } - }, + "refusal": null + }, + { + "id": "operations/azure-hns/staged-absent-code-in-body", + "profile": "azure-hns", + "lane": "core", + "purpose": "staged absent, with the error code only in the XML body", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp", + "https://learn.microsoft.com/en-us/rest/api/storageservices/common-rest-api-error-codes", + "https://learn.microsoft.com/en-us/rest/api/storageservices/blob-service-error-codes" + ], + "origin": "constructed", + "call": { + "key": "object-tests/multipart/absent.bin", + "kind": "all", + "op": "azure.list_blocks" + }, + "exchanges": [ { - "at": "/kind", - "optional": false, - "rule": { - "is": "matches", - "pattern": ".+" - } - }, + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/multipart/absent.bin" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "blocklist" + } + }, + { + "at": "/query/blocklisttype", + "optional": false, + "rule": { + "is": "equal", + "value": "all" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 404, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + } + }, + "body": { + "encoding": "utf8", + "data": "BlobNotFoundFixture error" + } + } + } + ] + } + ], + "expect": [ { - "at": "/parameter", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "page_size" + "value": "error" } }, { "at": "/status", - "optional": true, + "optional": false, "rule": { "is": "equal", - "value": 400 + "value": 404 } }, { "at": "/code", - "optional": true, + "optional": false, "rule": { "is": "equal", - "value": "OutOfRangeQueryParameterValue" + "value": "BlobNotFound" } } - ] + ], + "refusal": null }, { - "id": "operations/azure-hns/list-metadata", + "id": "operations/azure-hns/staged-after-commit", "profile": "azure-hns", "lane": "core", - "purpose": "list metadata", + "purpose": "staged after commit", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "include": [ - "metadata" - ], - "op": "list_page", - "prefix": "object-tests/metadata-listed/" + "key": "object-tests/multipart/committed.bin", + "kind": "all", + "op": "azure.list_blocks" }, "exchanges": [ { @@ -58514,7 +91546,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/multipart/committed.bin" } }, { @@ -58525,36 +91557,20 @@ "value": "" } }, - { - "at": "/query/restype", - "optional": false, - "rule": { - "is": "equal", - "value": "container" - } - }, { "at": "/query/comp", "optional": false, "rule": { "is": "equal", - "value": "list" - } - }, - { - "at": "/query/prefix", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/metadata-listed/" + "value": "blocklist" } }, { - "at": "/query/include", + "at": "/query/blocklisttype", "optional": false, "rule": { "is": "equal", - "value": "metadata" + "value": "all" } } ], @@ -58567,12 +91583,13 @@ "date": { "from": "now" }, + "etag": "\"fixture-8ec031f3abfa\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "utf8", - "data": "object-tests/metadata-listed/object-tests/metadata-listed/plain.txtMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-a2cc4a9b7156file1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/metadata-listed/shadowed.txtMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-3471a2a78a02file1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletruex" + "data": "MDAwMDAx5MDAwMDAy6" }, "framing": "chunked" } @@ -58590,137 +91607,39 @@ } }, { - "at": "/value/entries/0/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/metadata-listed/plain.txt" - } - }, - { - "at": "/value/entries/0/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/0/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-a2cc4a9b7156" - } - }, - { - "at": "/value/entries/0/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/0/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/0/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/0/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "xMpCOKC5I4INzFCab3WEmw==" - } - }, - { - "at": "/value/entries/1/key", + "at": "/value/committed/0/id_base64", "optional": false, "rule": { "is": "equal", - "value": "object-tests/metadata-listed/shadowed.txt" + "value": "MDAwMDAx" } }, { - "at": "/value/entries/1/size", + "at": "/value/committed/0/size", "optional": false, "rule": { "is": "equal", - "value": 1 + "value": 5 } }, { - "at": "/value/entries/1/etag", + "at": "/value/committed/1/id_base64", "optional": false, "rule": { "is": "equal", - "value": "fixture-3471a2a78a02" - } - }, - { - "at": "/value/entries/1/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/1/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/1/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] + "value": "MDAwMDAy" } }, { - "at": "/value/entries/1/content_md5_base64", + "at": "/value/committed/1/size", "optional": false, "rule": { "is": "equal", - "value": "xMpCOKC5I4INzFCab3WEmw==" + "value": 6 } }, { - "at": "/value/entries", + "at": "/value/committed", "optional": false, "rule": { "is": "array_length", @@ -58728,58 +91647,28 @@ } }, { - "at": "/value/prefixes", + "at": "/value/uncommitted", "optional": false, "rule": { "is": "array_length", "value": 0 } - }, - { - "at": "/value/continuation_token", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/value/entries/0/metadata", - "optional": false, - "rule": { - "is": "equal", - "value": { - "label": "c" - } - } - }, - { - "at": "/value/entries/1/metadata", - "optional": false, - "rule": { - "is": "equal", - "value": { - "Metadata": "x", - "label": "b" - } - } } ], "refusal": null }, { - "id": "operations/azure-hns/list-next-page", + "id": "operations/azure-hns/staged-after-replacement", "profile": "azure-hns", "lane": "core", - "purpose": "list next page", + "purpose": "staged after replacement", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "continuation_token": "fixture-marker+/17aa95c4a402=", - "op": "list_page", - "page_size": 2, - "prefix": "object-tests/board/" + "key": "object-tests/multipart/replaced.bin", + "kind": "all", + "op": "azure.list_blocks" }, "exchanges": [ { @@ -58799,7 +91688,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/multipart/replaced.bin" } }, { @@ -58810,44 +91699,20 @@ "value": "" } }, - { - "at": "/query/restype", - "optional": false, - "rule": { - "is": "equal", - "value": "container" - } - }, { "at": "/query/comp", "optional": false, "rule": { "is": "equal", - "value": "list" - } - }, - { - "at": "/query/prefix", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/board/" - } - }, - { - "at": "/query/maxresults", - "optional": false, - "rule": { - "is": "equal", - "value": "2" + "value": "blocklist" } }, { - "at": "/query/marker", + "at": "/query/blocklisttype", "optional": false, "rule": { "is": "equal", - "value": "fixture-marker+/17aa95c4a402=" + "value": "all" } } ], @@ -58860,12 +91725,13 @@ "date": { "from": "now" }, + "etag": "\"fixture-9c5e55ff559c\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "utf8", - "data": "object-tests/board/fixture-marker+/17aa95c4a402=2object-tests/board/nested/c.txtMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-4125625a1056file1application/octet-streamSooI8J03tzeVZJA4QItfMw==BlockBlobHottrueunlockedavailabletrueobject-tests/board/z.txtMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-0d608f7e2d51file2application/octet-streamJe0by0I7C3IA9IX8X/ccjg==BlockBlobHottrueunlockedavailabletrue" + "data": "MDAwMDAx5" }, "framing": "chunked" } @@ -58883,174 +91749,52 @@ } }, { - "at": "/value/entries/0/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/board/nested/c.txt" - } - }, - { - "at": "/value/entries/0/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/0/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-4125625a1056" - } - }, - { - "at": "/value/entries/0/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/0/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/0/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/0/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "SooI8J03tzeVZJA4QItfMw==" - } - }, - { - "at": "/value/entries/1/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/board/z.txt" - } - }, - { - "at": "/value/entries/1/size", - "optional": false, - "rule": { - "is": "equal", - "value": 2 - } - }, - { - "at": "/value/entries/1/etag", + "at": "/value/committed/0/id_base64", "optional": false, "rule": { "is": "equal", - "value": "fixture-0d608f7e2d51" - } - }, - { - "at": "/value/entries/1/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/1/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/1/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] + "value": "MDAwMDAx" } }, { - "at": "/value/entries/1/content_md5_base64", + "at": "/value/committed/0/size", "optional": false, "rule": { "is": "equal", - "value": "Je0by0I7C3IA9IX8X/ccjg==" + "value": 5 } }, { - "at": "/value/entries", + "at": "/value/committed", "optional": false, "rule": { "is": "array_length", - "value": 2 + "value": 1 } }, { - "at": "/value/prefixes", + "at": "/value/uncommitted", "optional": false, "rule": { "is": "array_length", "value": 0 } - }, - { - "at": "/value/continuation_token", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } } ], "refusal": null }, { - "id": "operations/azure-hns/list-pagination", + "id": "operations/azure-hns/staged-after-whole-write", "profile": "azure-hns", "lane": "core", - "purpose": "list pagination", + "purpose": "staged after whole write", "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/list-blobs" + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "op": "list", - "page_size": 1, - "prefix": "" + "key": "object-tests/multipart/whole.bin", + "kind": "all", + "op": "azure.list_blocks" }, "exchanges": [ { @@ -59070,7 +91814,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/multipart/whole.bin" } }, { @@ -59081,36 +91825,20 @@ "value": "" } }, - { - "at": "/query/restype", - "optional": false, - "rule": { - "is": "equal", - "value": "container" - } - }, { "at": "/query/comp", "optional": false, "rule": { "is": "equal", - "value": "list" - } - }, - { - "at": "/query/prefix", - "optional": true, - "rule": { - "is": "equal", - "value": "" + "value": "blocklist" } }, { - "at": "/query/maxresults", + "at": "/query/blocklisttype", "optional": false, "rule": { "is": "equal", - "value": "1" + "value": "all" } } ], @@ -59123,26 +91851,62 @@ "date": { "from": "now" }, - "etag": "\"fixture-etag\"", + "etag": "\"fixture-09c6ba50f443\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-request-id": "fixture-request-id", - "x-ms-request-server-encrypted": "true", - "x-ms-server-encrypted": "true", - "x-ms-version": "2023-11-03" + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "PEVudW1lcmF0aW9uUmVzdWx0cyBTZXJ2aWNlRW5kcG9pbnQ9Imh0dHA6Ly9maXh0dXJlLyIgQ29udGFpbmVyTmFtZT0iZml4dHVyZSI+PFByZWZpeD48L1ByZWZpeD48QmxvYnM+PEJsb2I+PE5hbWU+Zmlyc3Q8L05hbWU+PFByb3BlcnRpZXM+PExhc3QtTW9kaWZpZWQ+TW9uLCAwMSBKYW4gMjAyNCAwMDowMDowMCBHTVQ8L0xhc3QtTW9kaWZpZWQ+PEV0YWc+ImZpeHR1cmUiPC9FdGFnPjxDb250ZW50LUxlbmd0aD41PC9Db250ZW50LUxlbmd0aD48QmxvYlR5cGU+QmxvY2tCbG9iPC9CbG9iVHlwZT48L1Byb3BlcnRpZXM+PC9CbG9iPjwvQmxvYnM+PE5leHRNYXJrZXI+b3BhcXVlKy89PC9OZXh0TWFya2VyPjwvRW51bWVyYXRpb25SZXN1bHRzPg==" + "encoding": "utf8", + "data": "" }, "framing": "chunked" } } ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/committed", + "optional": false, + "rule": { + "is": "array_length", + "value": 0 + } }, + { + "at": "/value/uncommitted", + "optional": false, + "rule": { + "is": "array_length", + "value": 0 + } + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/staged-committed-empty", + "profile": "azure-hns", + "lane": "core", + "purpose": "staged committed empty", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "key": "object-tests/multipart/staged.bin", + "kind": "committed", + "op": "azure.list_blocks" + }, + "exchanges": [ { "alternatives": [ { @@ -59160,7 +91924,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/multipart/staged.bin" } }, { @@ -59171,44 +91935,20 @@ "value": "" } }, - { - "at": "/query/restype", - "optional": false, - "rule": { - "is": "equal", - "value": "container" - } - }, { "at": "/query/comp", "optional": false, "rule": { "is": "equal", - "value": "list" - } - }, - { - "at": "/query/marker", - "optional": false, - "rule": { - "is": "equal", - "value": "opaque+/=" - } - }, - { - "at": "/query/prefix", - "optional": true, - "rule": { - "is": "equal", - "value": "" + "value": "blocklist" } }, { - "at": "/query/maxresults", + "at": "/query/blocklisttype", "optional": false, "rule": { "is": "equal", - "value": "1" + "value": "committed" } } ], @@ -59221,20 +91961,12 @@ "date": { "from": "now" }, - "etag": "\"fixture-etag\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-request-id": "fixture-request-id", - "x-ms-request-server-encrypted": "true", - "x-ms-server-encrypted": "true", - "x-ms-version": "2023-11-03" + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "PEVudW1lcmF0aW9uUmVzdWx0cyBTZXJ2aWNlRW5kcG9pbnQ9Imh0dHA6Ly9maXh0dXJlLyIgQ29udGFpbmVyTmFtZT0iZml4dHVyZSI+PFByZWZpeD48L1ByZWZpeD48QmxvYnM+PEJsb2I+PE5hbWU+c2Vjb25kPC9OYW1lPjxQcm9wZXJ0aWVzPjxMYXN0LU1vZGlmaWVkPk1vbiwgMDEgSmFuIDIwMjQgMDA6MDA6MDAgR01UPC9MYXN0LU1vZGlmaWVkPjxFdGFnPiJmaXh0dXJlIjwvRXRhZz48Q29udGVudC1MZW5ndGg+NTwvQ29udGVudC1MZW5ndGg+PEJsb2JUeXBlPkJsb2NrQmxvYjwvQmxvYlR5cGU+PC9Qcm9wZXJ0aWVzPjwvQmxvYj48L0Jsb2JzPjxOZXh0TWFya2VyPjwvTmV4dE1hcmtlcj48L0VudW1lcmF0aW9uUmVzdWx0cz4=" + "encoding": "utf8", + "data": "" }, "framing": "chunked" } @@ -59252,31 +91984,36 @@ } }, { - "at": "/value/keys", + "at": "/value/committed", "optional": false, "rule": { - "is": "equal", - "value": [ - "first", - "second" - ] + "is": "array_length", + "value": 0 + } + }, + { + "at": "/value/uncommitted", + "optional": false, + "rule": { + "is": "array_length", + "value": 0 } } ], "refusal": null }, { - "id": "operations/azure-hns/list-order-delimited", + "id": "operations/azure-hns/staged-committed-nothing", "profile": "azure-hns", "lane": "core", - "purpose": "list order delimited", + "purpose": "staged committed nothing", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "delimiter": "/", - "op": "list_page", - "prefix": "object-tests/order/" + "key": "object-tests/multipart/empty.bin", + "kind": "all", + "op": "azure.list_blocks" }, "exchanges": [ { @@ -59296,7 +92033,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/multipart/empty.bin" } }, { @@ -59307,36 +92044,20 @@ "value": "" } }, - { - "at": "/query/restype", - "optional": false, - "rule": { - "is": "equal", - "value": "container" - } - }, { "at": "/query/comp", "optional": false, "rule": { "is": "equal", - "value": "list" - } - }, - { - "at": "/query/prefix", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/order/" + "value": "blocklist" } }, { - "at": "/query/delimiter", + "at": "/query/blocklisttype", "optional": false, "rule": { "is": "equal", - "value": "/" + "value": "all" } } ], @@ -59349,12 +92070,13 @@ "date": { "from": "now" }, + "etag": "\"fixture-072bed78cc6a\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "utf8", - "data": "object-tests/order//object-tests/order/AMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-033751098c10file1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/order/aMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-1450d5552b20file1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/order/a-bMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-179d07a80272file1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/order/a.txtMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-5d99f4a9cbbefile1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/order/a0Mon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-e5b8569421a3file1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/order/bMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-2ccf5ed23a16file1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/order/éMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-cb02153208adfile1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrue" + "data": "" }, "framing": "chunked" } @@ -59372,498 +92094,161 @@ } }, { - "at": "/value/entries/0/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/order/A" - } - }, - { - "at": "/value/entries/0/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/0/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-033751098c10" - } - }, - { - "at": "/value/entries/0/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/0/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/0/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/0/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "xMpCOKC5I4INzFCab3WEmw==" - } - }, - { - "at": "/value/entries/1/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/order/a" - } - }, - { - "at": "/value/entries/1/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/1/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-1450d5552b20" - } - }, - { - "at": "/value/entries/1/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/1/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/1/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/1/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "xMpCOKC5I4INzFCab3WEmw==" - } - }, - { - "at": "/value/entries/2/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/order/a-b" - } - }, - { - "at": "/value/entries/2/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/2/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-179d07a80272" - } - }, - { - "at": "/value/entries/2/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/2/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/2/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/2/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "xMpCOKC5I4INzFCab3WEmw==" - } - }, - { - "at": "/value/entries/3/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/order/a.txt" - } - }, - { - "at": "/value/entries/3/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/3/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-5d99f4a9cbbe" - } - }, - { - "at": "/value/entries/3/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/3/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/3/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/3/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "xMpCOKC5I4INzFCab3WEmw==" - } - }, - { - "at": "/value/entries/4/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/order/a0" - } - }, - { - "at": "/value/entries/4/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/4/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-e5b8569421a3" - } - }, - { - "at": "/value/entries/4/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/4/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/4/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/4/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "xMpCOKC5I4INzFCab3WEmw==" - } - }, - { - "at": "/value/entries/5/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/order/b" - } - }, - { - "at": "/value/entries/5/size", + "at": "/value/committed", "optional": false, "rule": { - "is": "equal", - "value": 1 + "is": "array_length", + "value": 0 } }, { - "at": "/value/entries/5/etag", + "at": "/value/uncommitted", "optional": false, "rule": { - "is": "equal", - "value": "fixture-2ccf5ed23a16" - } - }, - { - "at": "/value/entries/5/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/5/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/5/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] + "is": "array_length", + "value": 0 } - }, + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/staged-escaped-id", + "profile": "azure-hns", + "lane": "core", + "purpose": "staged escaped id", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "key": "object-tests/multipart/escaped.bin", + "kind": "all", + "op": "azure.list_blocks" + }, + "exchanges": [ { - "at": "/value/entries/5/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "xMpCOKC5I4INzFCab3WEmw==" - } - }, + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/multipart/escaped.bin" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "blocklist" + } + }, + { + "at": "/query/blocklisttype", + "optional": false, + "rule": { + "is": "equal", + "value": "all" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "utf8", + "data": "+/8=3" + }, + "framing": "chunked" + } + } + ] + } + ], + "expect": [ { - "at": "/value/entries/6/key", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "object-tests/order/é" + "value": "ok" } }, { - "at": "/value/entries/6/size", + "at": "/value/committed", "optional": false, "rule": { - "is": "equal", - "value": 1 + "is": "array_length", + "value": 0 } }, { - "at": "/value/entries/6/etag", + "at": "/value/uncommitted/0/id_base64", "optional": false, "rule": { "is": "equal", - "value": "fixture-cb02153208ad" - } - }, - { - "at": "/value/entries/6/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/6/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/6/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] + "value": "+/8=" } }, { - "at": "/value/entries/6/content_md5_base64", + "at": "/value/uncommitted/0/size", "optional": false, "rule": { "is": "equal", - "value": "xMpCOKC5I4INzFCab3WEmw==" - } - }, - { - "at": "/value/entries", - "optional": false, - "rule": { - "is": "array_length", - "value": 7 + "value": 3 } }, { - "at": "/value/prefixes", + "at": "/value/uncommitted", "optional": false, "rule": { "is": "array_length", - "value": 0 - } - }, - { - "at": "/value/continuation_token", - "optional": false, - "rule": { - "is": "equal", - "value": "" + "value": 1 } } ], "refusal": null }, { - "id": "operations/azure-hns/list-order", + "id": "operations/azure-hns/staged-replacement", "profile": "azure-hns", "lane": "core", - "purpose": "list order", + "purpose": "staged replacement", "sources": [ "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" ], "call": { - "op": "list_page", - "prefix": "object-tests/order/" + "key": "object-tests/multipart/pending.bin", + "kind": "all", + "op": "azure.list_blocks" }, "exchanges": [ { @@ -59883,7 +92268,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/multipart/pending.bin" } }, { @@ -59894,28 +92279,20 @@ "value": "" } }, - { - "at": "/query/restype", - "optional": false, - "rule": { - "is": "equal", - "value": "container" - } - }, { "at": "/query/comp", "optional": false, "rule": { "is": "equal", - "value": "list" + "value": "blocklist" } }, { - "at": "/query/prefix", + "at": "/query/blocklisttype", "optional": false, "rule": { "is": "equal", - "value": "object-tests/order/" + "value": "all" } } ], @@ -59928,12 +92305,13 @@ "date": { "from": "now" }, + "etag": "\"fixture-ce92c4d48b08\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "utf8", - "data": "object-tests/order/object-tests/order/AMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-033751098c10file1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/order/aMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-1450d5552b20file1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/order/a-bMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-179d07a80272file1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/order/a.txtMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-5d99f4a9cbbefile1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/order/a0Mon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-e5b8569421a3file1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/order/bMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-2ccf5ed23a16file1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/order/éMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-cb02153208adfile1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrue" + "data": "MDAwMDAx5MDAwMDAy6MDAwMDAx5" }, "framing": "chunked" } @@ -59951,498 +92329,803 @@ } }, { - "at": "/value/entries/0/key", + "at": "/value/committed/0/id_base64", "optional": false, "rule": { "is": "equal", - "value": "object-tests/order/A" + "value": "MDAwMDAx" } }, { - "at": "/value/entries/0/size", + "at": "/value/committed/0/size", "optional": false, "rule": { "is": "equal", - "value": 1 + "value": 5 } }, { - "at": "/value/entries/0/etag", + "at": "/value/committed/1/id_base64", "optional": false, "rule": { "is": "equal", - "value": "fixture-033751098c10" - } - }, - { - "at": "/value/entries/0/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/0/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/0/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] + "value": "MDAwMDAy" } }, { - "at": "/value/entries/0/content_md5_base64", + "at": "/value/committed/1/size", "optional": false, "rule": { "is": "equal", - "value": "xMpCOKC5I4INzFCab3WEmw==" + "value": 6 } }, { - "at": "/value/entries/1/key", + "at": "/value/committed", "optional": false, "rule": { - "is": "equal", - "value": "object-tests/order/a" + "is": "array_length", + "value": 2 } }, { - "at": "/value/entries/1/size", + "at": "/value/uncommitted/0/id_base64", "optional": false, "rule": { "is": "equal", - "value": 1 + "value": "MDAwMDAx" } }, { - "at": "/value/entries/1/etag", + "at": "/value/uncommitted/0/size", "optional": false, "rule": { "is": "equal", - "value": "fixture-1450d5552b20" - } - }, - { - "at": "/value/entries/1/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/1/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/1/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] + "value": 5 } }, { - "at": "/value/entries/1/content_md5_base64", + "at": "/value/uncommitted", "optional": false, "rule": { - "is": "equal", - "value": "xMpCOKC5I4INzFCab3WEmw==" + "is": "array_length", + "value": 1 } - }, + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/staged-uncommitted-only", + "profile": "azure-hns", + "lane": "core", + "purpose": "staged uncommitted only", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "key": "object-tests/multipart/staged.bin", + "kind": "all", + "op": "azure.list_blocks" + }, + "exchanges": [ { - "at": "/value/entries/2/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/order/a-b" - } - }, + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/multipart/staged.bin" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "blocklist" + } + }, + { + "at": "/query/blocklisttype", + "optional": false, + "rule": { + "is": "equal", + "value": "all" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "utf8", + "data": "MDAwMDAx5MDAwMDAy6" + }, + "framing": "chunked" + } + } + ] + } + ], + "expect": [ { - "at": "/value/entries/2/size", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": 1 + "value": "ok" } }, { - "at": "/value/entries/2/etag", + "at": "/value/committed", "optional": false, "rule": { - "is": "equal", - "value": "fixture-179d07a80272" - } - }, - { - "at": "/value/entries/2/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/2/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/2/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] + "is": "array_length", + "value": 0 } }, { - "at": "/value/entries/2/content_md5_base64", + "at": "/value/uncommitted/0/id_base64", "optional": false, "rule": { "is": "equal", - "value": "xMpCOKC5I4INzFCab3WEmw==" + "value": "MDAwMDAx" } }, { - "at": "/value/entries/3/key", + "at": "/value/uncommitted/0/size", "optional": false, "rule": { "is": "equal", - "value": "object-tests/order/a.txt" + "value": 5 } }, { - "at": "/value/entries/3/size", + "at": "/value/uncommitted/1/id_base64", "optional": false, "rule": { "is": "equal", - "value": 1 + "value": "MDAwMDAy" } }, { - "at": "/value/entries/3/etag", + "at": "/value/uncommitted/1/size", "optional": false, "rule": { "is": "equal", - "value": "fixture-5d99f4a9cbbe" - } - }, - { - "at": "/value/entries/3/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "value": 6 } }, { - "at": "/value/entries/3/version", - "optional": true, + "at": "/value/uncommitted", + "optional": false, "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "is": "array_length", + "value": 2 } - }, + } + ], + "refusal": null + }, + { + "id": "operations/azure-hns/staged-uncommitted", + "profile": "azure-hns", + "lane": "core", + "purpose": "staged uncommitted", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "key": "object-tests/multipart/staged.bin", + "kind": "uncommitted", + "op": "azure.list_blocks" + }, + "exchanges": [ { - "at": "/value/entries/3/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/multipart/staged.bin" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/comp", + "optional": false, + "rule": { + "is": "equal", + "value": "blocklist" + } + }, + { + "at": "/query/blocklisttype", + "optional": false, + "rule": { + "is": "equal", + "value": "uncommitted" + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "utf8", + "data": "MDAwMDAx5MDAwMDAy6" + }, + "framing": "chunked" + } + } + ] + } + ], + "expect": [ { - "at": "/value/entries/3/content_md5_base64", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "xMpCOKC5I4INzFCab3WEmw==" + "value": "ok" } }, { - "at": "/value/entries/4/key", + "at": "/value/committed", "optional": false, "rule": { - "is": "equal", - "value": "object-tests/order/a0" + "is": "array_length", + "value": 0 } }, { - "at": "/value/entries/4/size", + "at": "/value/uncommitted/0/id_base64", "optional": false, "rule": { "is": "equal", - "value": 1 + "value": "MDAwMDAx" } }, { - "at": "/value/entries/4/etag", + "at": "/value/uncommitted/0/size", "optional": false, "rule": { "is": "equal", - "value": "fixture-e5b8569421a3" - } - }, - { - "at": "/value/entries/4/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/4/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/4/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] + "value": 5 } }, { - "at": "/value/entries/4/content_md5_base64", + "at": "/value/uncommitted/1/id_base64", "optional": false, "rule": { "is": "equal", - "value": "xMpCOKC5I4INzFCab3WEmw==" + "value": "MDAwMDAy" } }, { - "at": "/value/entries/5/key", + "at": "/value/uncommitted/1/size", "optional": false, "rule": { "is": "equal", - "value": "object-tests/order/b" + "value": 6 } }, { - "at": "/value/entries/5/size", + "at": "/value/uncommitted", "optional": false, "rule": { - "is": "equal", - "value": 1 + "is": "array_length", + "value": 2 } - }, + } + ], + "refusal": null + }, + { + "id": "operations/s3/abort-after-commit", + "profile": "s3", + "lane": "core", + "purpose": "abort after commit", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "key": "object-tests/multipart/object.bin", + "op": "s3.abort_multipart", + "upload_id": "fixture-upload+/276ca18046f9=" + }, + "exchanges": [ { - "at": "/value/entries/5/etag", + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "DELETE" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/multipart/object.bin" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/uploadId", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-upload+/276ca18046f9=" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 204, + "headers": { + "date": { + "from": "now" + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "fixture-2ccf5ed23a16" - } - }, - { - "at": "/value/entries/5/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/5/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "value": "ok" } - }, + } + ], + "refusal": null + }, + { + "id": "operations/s3/abort-unknown-upload", + "profile": "s3", + "lane": "core", + "purpose": "abort unknown upload", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "key": "object-tests/multipart/object.bin", + "op": "s3.abort_multipart", + "upload_id": "fixture-upload+/4d0d5ccc4993=" + }, + "exchanges": [ { - "at": "/value/entries/5/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "DELETE" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/multipart/object.bin" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/uploadId", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-upload+/4d0d5ccc4993=" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 404, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + } + }, + "body": { + "encoding": "utf8", + "data": "\nNoSuchUploadFixture error" + }, + "framing": "chunked" + } + } + ] + } + ], + "expect": [ { - "at": "/value/entries/5/content_md5_base64", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "xMpCOKC5I4INzFCab3WEmw==" + "value": "error" } }, { - "at": "/value/entries/6/key", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "object-tests/order/é" + "value": 404 } }, { - "at": "/value/entries/6/size", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": 1 + "value": "NoSuchUpload" } - }, + } + ], + "refusal": null + }, + { + "id": "operations/s3/abort", + "profile": "s3", + "lane": "core", + "purpose": "abort", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "key": "object-tests/multipart/aborted.bin", + "op": "s3.abort_multipart", + "upload_id": "fixture-upload+/f85cf0cd3a3f=" + }, + "exchanges": [ { - "at": "/value/entries/6/etag", + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "DELETE" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/multipart/aborted.bin" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/uploadId", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-upload+/f85cf0cd3a3f=" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 204, + "headers": { + "date": { + "from": "now" + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "fixture-cb02153208ad" - } - }, - { - "at": "/value/entries/6/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "value": "ok" } - }, - { - "at": "/value/entries/6/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + } + ], + "refusal": null + }, + { + "id": "operations/s3/commit-after-abort", + "profile": "s3", + "lane": "core", + "purpose": "commit after abort", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "key": "object-tests/multipart/aborted.bin", + "op": "s3.complete_multipart", + "parts": [ + { + "etag": "\"fixture-db71b2c0257c\"", + "number": 1 } - }, + ], + "upload_id": "fixture-upload+/f85cf0cd3a3f=" + }, + "exchanges": [ { - "at": "/value/entries/6/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "POST" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/multipart/aborted.bin" + } + }, + { + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "1\"fixture-db71b2c0257c\"" + } + }, + { + "at": "/query/uploadId", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-upload+/f85cf0cd3a3f=" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 404, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + } + }, + "body": { + "encoding": "utf8", + "data": "\nNoSuchUploadFixture error" + }, + "framing": "chunked" + } + }, + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "POST" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/multipart/aborted.bin" + } + }, + { + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "\"fixture-db71b2c0257c\"1" + } + }, + { + "at": "/query/uploadId", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-upload+/f85cf0cd3a3f=" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 404, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + } + }, + "body": { + "encoding": "utf8", + "data": "\nNoSuchUploadFixture error" + }, + "framing": "chunked" + } + } + ] + } + ], + "expect": [ { - "at": "/value/entries/6/content_md5_base64", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "xMpCOKC5I4INzFCab3WEmw==" - } - }, - { - "at": "/value/entries", - "optional": false, - "rule": { - "is": "array_length", - "value": 7 + "value": "error" } }, { - "at": "/value/prefixes", + "at": "/status", "optional": false, "rule": { - "is": "array_length", - "value": 0 + "is": "equal", + "value": 404 } }, { - "at": "/value/continuation_token", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "NoSuchUpload" } } ], "refusal": null }, { - "id": "operations/azure-hns/list-all-order", - "profile": "azure-hns", + "id": "operations/s3/commit-lost-the-race-to-create", + "profile": "s3", "lane": "core", - "purpose": "list order", + "purpose": "commit lost the race to create", "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/list-blobs" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "op": "list", - "prefix": "" + "if_none_match": "*", + "key": "object-tests/multipart/guarded.bin", + "op": "s3.complete_multipart", + "parts": [ + { + "etag": "\"fixture-cd3c4834c1cd\"", + "number": 1 + } + ], + "upload_id": "fixture-upload+/9cd6f716dbf9=" }, "exchanges": [ { @@ -60454,7 +93137,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "POST" } }, { @@ -60462,65 +93145,111 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/multipart/guarded.bin" } }, { - "at": "/body_base64", + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "1\"fixture-cd3c4834c1cd\"" + } + }, + { + "at": "/headers/if-none-match", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "*" } }, { - "at": "/query/restype", + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "container" + "value": "fixture-upload+/9cd6f716dbf9=" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 412, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" } }, + "body": { + "encoding": "utf8", + "data": "\nPreconditionFailedFixture error" + }, + "framing": "chunked" + } + }, + { + "request": [ { - "at": "/query/comp", + "at": "/method", "optional": false, "rule": { "is": "equal", - "value": "list" + "value": "POST" } }, { - "at": "/query/prefix", - "optional": true, + "at": "/path", + "optional": false, "rule": { "is": "equal", - "value": "" + "value": "/fixture/object-tests/multipart/guarded.bin" + } + }, + { + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "\"fixture-cd3c4834c1cd\"1" + } + }, + { + "at": "/headers/if-none-match", + "optional": false, + "rule": { + "is": "equal", + "value": "*" + } + }, + { + "at": "/query/uploadId", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-upload+/9cd6f716dbf9=" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 200, + "status": 412, "headers": { "content-type": "application/xml", "date": { "from": "now" - }, - "etag": "\"fixture-etag\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-type": "BlockBlob", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-state": "available", - "x-ms-lease-status": "unlocked", - "x-ms-request-id": "fixture-request-id", - "x-ms-request-server-encrypted": "true", - "x-ms-server-encrypted": "true", - "x-ms-version": "2023-11-03" + } }, "body": { - "encoding": "base64", - "data": "PEVudW1lcmF0aW9uUmVzdWx0cyBTZXJ2aWNlRW5kcG9pbnQ9Imh0dHA6Ly9maXh0dXJlLyIgQ29udGFpbmVyTmFtZT0iZml4dHVyZSI+PFByZWZpeD48L1ByZWZpeD48QmxvYnM+PEJsb2I+PE5hbWU+YTwvTmFtZT48UHJvcGVydGllcz48TGFzdC1Nb2RpZmllZD5Nb24sIDAxIEphbiAyMDI0IDAwOjAwOjAwIEdNVDwvTGFzdC1Nb2RpZmllZD48RXRhZz4iZml4dHVyZSI8L0V0YWc+PENvbnRlbnQtTGVuZ3RoPjU8L0NvbnRlbnQtTGVuZ3RoPjxCbG9iVHlwZT5CbG9ja0Jsb2I8L0Jsb2JUeXBlPjwvUHJvcGVydGllcz48L0Jsb2I+PEJsb2I+PE5hbWU+ejwvTmFtZT48UHJvcGVydGllcz48TGFzdC1Nb2RpZmllZD5Nb24sIDAxIEphbiAyMDI0IDAwOjAwOjAwIEdNVDwvTGFzdC1Nb2RpZmllZD48RXRhZz4iZml4dHVyZSI8L0V0YWc+PENvbnRlbnQtTGVuZ3RoPjU8L0NvbnRlbnQtTGVuZ3RoPjxCbG9iVHlwZT5CbG9ja0Jsb2I8L0Jsb2JUeXBlPjwvUHJvcGVydGllcz48L0Jsb2I+PC9CbG9icz48TmV4dE1hcmtlcj48L05leHRNYXJrZXI+PC9FbnVtZXJhdGlvblJlc3VsdHM+" + "encoding": "utf8", + "data": "\nPreconditionFailedFixture error" }, "framing": "chunked" } @@ -60534,34 +93263,48 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "error" } }, { - "at": "/value/keys", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": [ - "a", - "z" - ] + "value": 412 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "PreconditionFailed" } } ], "refusal": null }, { - "id": "operations/azure-hns/list-page", - "profile": "azure-hns", + "id": "operations/s3/commit-conditional-conflict", + "profile": "s3", "lane": "core", - "purpose": "list page", + "purpose": "Report a 409 ConditionalRequestConflict to a conditional completion as an error, without sending the completion again: AWS advises a new upload with every part staged again", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], + "origin": "transient", "call": { - "op": "list_page", - "prefix": "object-tests/board/" + "if_none_match": "*", + "key": "object-tests/multipart/guarded.bin", + "op": "s3.complete_multipart", + "parts": [ + { + "etag": "\"fixture-cd3c4834c1cd\"", + "number": 1 + } + ], + "upload_id": "fixture-upload+/9cd6f716dbf9=" }, "exchanges": [ { @@ -60573,7 +93316,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "POST" } }, { @@ -60581,57 +93324,111 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/multipart/guarded.bin" } }, { - "at": "/body_base64", + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "1\"fixture-cd3c4834c1cd\"" + } + }, + { + "at": "/headers/if-none-match", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "*" } }, { - "at": "/query/restype", + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "container" + "value": "fixture-upload+/9cd6f716dbf9=" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 409, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + } + }, + "body": { + "encoding": "utf8", + "data": "\nConditionalRequestConflictA conflicting operation occurred. If using PutObject you can retry the request. If using multipart upload you should initiate another CreateMultipartUpload request and re-upload each part.fixturefixture" + }, + "framing": "chunked" + } + }, + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "POST" } }, { - "at": "/query/comp", + "at": "/path", "optional": false, "rule": { "is": "equal", - "value": "list" + "value": "/fixture/object-tests/multipart/guarded.bin" } }, { - "at": "/query/prefix", + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "\"fixture-cd3c4834c1cd\"1" + } + }, + { + "at": "/headers/if-none-match", "optional": false, "rule": { "is": "equal", - "value": "object-tests/board/" + "value": "*" + } + }, + { + "at": "/query/uploadId", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-upload+/9cd6f716dbf9=" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 200, + "status": 409, "headers": { "content-type": "application/xml", "date": { "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { "encoding": "utf8", - "data": "object-tests/board/object-tests/board/a.txtMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-e8a4acb31ab1file8application/octet-streamJdVa0oOqQAr0ZMdtcTwHrQ==BlockBlobHottrueunlockedavailabletrueobject-tests/board/nestedMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-bcf8c9e06f70directory0BlockBlobHottrueunlockedavailabletrueobject-tests/board/nested/c.txtMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-4125625a1056file1application/octet-streamSooI8J03tzeVZJA4QItfMw==BlockBlobHottrueunlockedavailabletrueobject-tests/board/z.txtMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-0d608f7e2d51file2application/octet-streamJe0by0I7C3IA9IX8X/ccjg==BlockBlobHottrueunlockedavailabletrue" + "data": "\nConditionalRequestConflictA conflicting operation occurred. If using PutObject you can retry the request. If using multipart upload you should initiate another CreateMultipartUpload request and re-upload each part.fixturefixture" }, "framing": "chunked" } @@ -60645,307 +93442,41 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/entries/0/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/board/a.txt" - } - }, - { - "at": "/value/entries/0/size", - "optional": false, - "rule": { - "is": "equal", - "value": 8 - } - }, - { - "at": "/value/entries/0/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-e8a4acb31ab1" - } - }, - { - "at": "/value/entries/0/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/0/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/0/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/0/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "JdVa0oOqQAr0ZMdtcTwHrQ==" - } - }, - { - "at": "/value/entries/1/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/board/nested" - } - }, - { - "at": "/value/entries/1/size", - "optional": false, - "rule": { - "is": "equal", - "value": 0 - } - }, - { - "at": "/value/entries/1/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-bcf8c9e06f70" - } - }, - { - "at": "/value/entries/1/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/1/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/1/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/1/directory", - "optional": false, - "rule": { - "is": "equal", - "value": true - } - }, - { - "at": "/value/entries/2/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/board/nested/c.txt" - } - }, - { - "at": "/value/entries/2/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/2/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-4125625a1056" - } - }, - { - "at": "/value/entries/2/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/2/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/2/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/2/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "SooI8J03tzeVZJA4QItfMw==" - } - }, - { - "at": "/value/entries/3/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/board/z.txt" - } - }, - { - "at": "/value/entries/3/size", - "optional": false, - "rule": { - "is": "equal", - "value": 2 - } - }, - { - "at": "/value/entries/3/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-0d608f7e2d51" - } - }, - { - "at": "/value/entries/3/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/3/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/3/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] + "value": "error" } }, { - "at": "/value/entries/3/content_md5_base64", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "Je0by0I7C3IA9IX8X/ccjg==" - } - }, - { - "at": "/value/entries", - "optional": false, - "rule": { - "is": "array_length", - "value": 4 - } - }, - { - "at": "/value/prefixes", - "optional": false, - "rule": { - "is": "array_length", - "value": 0 + "value": 409 } }, { - "at": "/value/continuation_token", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "ConditionalRequestConflict" } } ], "refusal": null }, { - "id": "operations/azure-hns/list-prefix-without-slash", - "profile": "azure-hns", + "id": "operations/s3/commit-nothing", + "profile": "s3", "lane": "core", - "purpose": "list prefix without slash", + "purpose": "commit nothing", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "op": "list_page", - "prefix": "object-tests/boa" + "key": "object-tests/multipart/guarded.bin", + "op": "s3.complete_multipart", + "parts": [], + "upload_id": "fixture-upload+/9cd6f716dbf9=" }, "exchanges": [ { @@ -60957,7 +93488,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "POST" } }, { @@ -60965,57 +93496,149 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/multipart/guarded.bin" } }, { - "at": "/body_base64", + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "" + } + }, + { + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "fixture-upload+/9cd6f716dbf9=" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 400, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" } }, + "body": { + "encoding": "utf8", + "data": "\nMalformedXMLFixture error" + }, + "framing": "chunked" + } + }, + { + "request": [ { - "at": "/query/restype", + "at": "/method", "optional": false, "rule": { "is": "equal", - "value": "container" + "value": "POST" } }, { - "at": "/query/comp", + "at": "/path", "optional": false, "rule": { "is": "equal", - "value": "list" + "value": "/fixture/object-tests/multipart/guarded.bin" } }, { - "at": "/query/prefix", + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "" + } + }, + { + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "object-tests/boa" + "value": "fixture-upload+/9cd6f716dbf9=" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 200, + "status": 400, "headers": { "content-type": "application/xml", "date": { "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { "encoding": "utf8", - "data": "object-tests/boaobject-tests/boardMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-113173402488directory0BlockBlobHottrueunlockedavailabletrueobject-tests/board/a.txtMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-e8a4acb31ab1file8application/octet-streamJdVa0oOqQAr0ZMdtcTwHrQ==BlockBlobHottrueunlockedavailabletrueobject-tests/board/nestedMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-bcf8c9e06f70directory0BlockBlobHottrueunlockedavailabletrueobject-tests/board/nested/c.txtMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-4125625a1056file1application/octet-streamSooI8J03tzeVZJA4QItfMw==BlockBlobHottrueunlockedavailabletrueobject-tests/board/z.txtMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-0d608f7e2d51file2application/octet-streamJe0by0I7C3IA9IX8X/ccjg==BlockBlobHottrueunlockedavailabletrue" + "data": "\nMalformedXMLFixture error" + }, + "framing": "chunked" + } + }, + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "POST" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/multipart/guarded.bin" + } + }, + { + "at": "/query/uploadId", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-upload+/9cd6f716dbf9=" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 400, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + } + }, + "body": { + "encoding": "utf8", + "data": "\nMalformedXMLFixture error" }, "framing": "chunked" } @@ -61029,373 +93652,303 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/entries/0/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/board" - } - }, - { - "at": "/value/entries/0/size", - "optional": false, - "rule": { - "is": "equal", - "value": 0 - } - }, - { - "at": "/value/entries/0/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-113173402488" - } - }, - { - "at": "/value/entries/0/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/0/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/0/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/0/directory", - "optional": false, - "rule": { - "is": "equal", - "value": true - } - }, - { - "at": "/value/entries/1/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/board/a.txt" + "value": "error" } }, { - "at": "/value/entries/1/size", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": 8 + "value": 400 } }, { - "at": "/value/entries/1/etag", + "at": "/code", "optional": false, - "rule": { - "is": "equal", - "value": "fixture-e8a4acb31ab1" - } - }, - { - "at": "/value/entries/1/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/1/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/1/is_current_version", - "optional": true, "rule": { "is": "one_of", "values": [ - null, - false + "MalformedXML", + "InvalidRequest" ] } - }, - { - "at": "/value/entries/1/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "JdVa0oOqQAr0ZMdtcTwHrQ==" - } - }, + } + ], + "refusal": [ { - "at": "/value/entries/2/key", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "object-tests/board/nested" + "value": "refused" } }, { - "at": "/value/entries/2/size", + "at": "/kind", "optional": false, "rule": { - "is": "equal", - "value": 0 + "is": "matches", + "pattern": ".+" } }, { - "at": "/value/entries/2/etag", + "at": "/parameter", "optional": false, "rule": { "is": "equal", - "value": "fixture-bcf8c9e06f70" - } - }, - { - "at": "/value/entries/2/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/2/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "value": "parts" } }, { - "at": "/value/entries/2/is_current_version", + "at": "/status", "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/2/directory", - "optional": false, - "rule": { - "is": "equal", - "value": true - } - }, - { - "at": "/value/entries/3/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/board/nested/c.txt" - } - }, - { - "at": "/value/entries/3/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/3/etag", - "optional": false, "rule": { "is": "equal", - "value": "fixture-4125625a1056" + "value": 400 } }, { - "at": "/value/entries/3/snapshot", + "at": "/code", "optional": true, "rule": { "is": "one_of", "values": [ - null, - "" + "MalformedXML", + "InvalidRequest" ] } - }, - { - "at": "/value/entries/3/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + } + ] + }, + { + "id": "operations/s3/commit-out-of-order", + "profile": "s3", + "lane": "core", + "purpose": "commit out of order", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "key": "object-tests/multipart/object.bin", + "op": "s3.complete_multipart", + "parts": [ + { + "etag": "\"fixture-32b70ae425ac\"", + "number": 2 + }, + { + "etag": "\"fixture-6d60d5bbaa47\"", + "number": 1 } - }, + ], + "upload_id": "fixture-upload+/276ca18046f9=" + }, + "exchanges": [ { - "at": "/value/entries/3/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "POST" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/multipart/object.bin" + } + }, + { + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "2\"fixture-32b70ae425ac\"1\"fixture-6d60d5bbaa47\"" + } + }, + { + "at": "/query/uploadId", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-upload+/276ca18046f9=" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 400, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + } + }, + "body": { + "encoding": "utf8", + "data": "\nInvalidPartOrderFixture error" + }, + "framing": "chunked" + } + }, + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "POST" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/multipart/object.bin" + } + }, + { + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "\"fixture-32b70ae425ac\"2\"fixture-6d60d5bbaa47\"1" + } + }, + { + "at": "/query/uploadId", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-upload+/276ca18046f9=" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 400, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + } + }, + "body": { + "encoding": "utf8", + "data": "\nInvalidPartOrderFixture error" + }, + "framing": "chunked" + } + } + ] + } + ], + "expect": [ { - "at": "/value/entries/3/content_md5_base64", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "SooI8J03tzeVZJA4QItfMw==" + "value": "error" } }, { - "at": "/value/entries/4/key", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "object-tests/board/z.txt" + "value": 400 } }, { - "at": "/value/entries/4/size", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": 2 + "value": "InvalidPartOrder" } - }, + } + ], + "refusal": [ { - "at": "/value/entries/4/etag", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "fixture-0d608f7e2d51" - } - }, - { - "at": "/value/entries/4/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/4/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/4/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] + "value": "refused" } }, { - "at": "/value/entries/4/content_md5_base64", + "at": "/kind", "optional": false, "rule": { - "is": "equal", - "value": "Je0by0I7C3IA9IX8X/ccjg==" + "is": "matches", + "pattern": ".+" } }, { - "at": "/value/entries", + "at": "/parameter", "optional": false, "rule": { - "is": "array_length", - "value": 5 + "is": "equal", + "value": "parts" } }, { - "at": "/value/prefixes", - "optional": false, + "at": "/status", + "optional": true, "rule": { - "is": "array_length", - "value": 0 + "is": "equal", + "value": 400 } }, { - "at": "/value/continuation_token", - "optional": false, + "at": "/code", + "optional": true, "rule": { "is": "equal", - "value": "" + "value": "InvalidPartOrder" } } - ], - "refusal": null + ] }, { - "id": "operations/azure-hns/list-separator-keys-delimited", - "profile": "azure-hns", + "id": "operations/s3/commit-part-too-small", + "profile": "s3", "lane": "core", - "purpose": "list separator keys delimited", + "purpose": "commit part too small", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "delimiter": "/", - "op": "list_page", - "prefix": "object-tests/separators/" + "key": "object-tests/multipart/small.bin", + "op": "s3.complete_multipart", + "parts": [ + { + "etag": "\"fixture-7bce379c0d8f\"", + "number": 1 + }, + { + "etag": "\"fixture-32b70ae425ac\"", + "number": 2 + } + ], + "upload_id": "fixture-upload+/cd2fdba21d3f=" }, "exchanges": [ { @@ -61407,7 +93960,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "POST" } }, { @@ -61415,65 +93968,95 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/multipart/small.bin" } }, { - "at": "/body_base64", + "at": "/body_text", "optional": false, "rule": { - "is": "equal", - "value": "" + "is": "xml", + "value": "1\"fixture-7bce379c0d8f\"2\"fixture-32b70ae425ac\"" } }, { - "at": "/query/restype", + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "container" + "value": "fixture-upload+/cd2fdba21d3f=" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 400, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" } }, + "body": { + "encoding": "utf8", + "data": "\nEntityTooSmallFixture error" + }, + "framing": "chunked" + } + }, + { + "request": [ { - "at": "/query/comp", + "at": "/method", "optional": false, "rule": { "is": "equal", - "value": "list" + "value": "POST" } }, { - "at": "/query/prefix", + "at": "/path", "optional": false, "rule": { "is": "equal", - "value": "object-tests/separators/" + "value": "/fixture/object-tests/multipart/small.bin" } }, { - "at": "/query/delimiter", + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "\"fixture-7bce379c0d8f\"1\"fixture-32b70ae425ac\"2" + } + }, + { + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "/" + "value": "fixture-upload+/cd2fdba21d3f=" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 200, + "status": 400, "headers": { "content-type": "application/xml", "date": { "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { "encoding": "utf8", - "data": "object-tests/separators//object-tests/separators/..leadingMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-15c8f76b7db4file1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/separators/a.b/Mon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMT0x8DF10FBAD54C650directory0BlockBlobHottrueunlockedavailabletrueobject-tests/separators/dotMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-8a6559c18a1cfile1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/separators/double/Mon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMT0x8DF10FBAD3AE784directory0BlockBlobHottrueunlockedavailabletrueobject-tests/separators/space /Mon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMT0x8DF10FBAD472F18directory0BlockBlobHottrueunlockedavailabletrue" + "data": "\nEntityTooSmallFixture error" }, "framing": "chunked" } @@ -61487,201 +94070,47 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/entries/0/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/separators/..leading" - } - }, - { - "at": "/value/entries/0/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/0/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-15c8f76b7db4" - } - }, - { - "at": "/value/entries/0/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/0/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/0/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/0/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "xMpCOKC5I4INzFCab3WEmw==" - } - }, - { - "at": "/value/entries/1/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/separators/dot" - } - }, - { - "at": "/value/entries/1/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/1/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-8a6559c18a1c" - } - }, - { - "at": "/value/entries/1/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/1/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/1/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/1/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "xMpCOKC5I4INzFCab3WEmw==" - } - }, - { - "at": "/value/entries", - "optional": false, - "rule": { - "is": "array_length", - "value": 2 - } - }, - { - "at": "/value/prefixes/0", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/separators/a.b/" - } - }, - { - "at": "/value/prefixes/1", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/separators/double/" + "value": "error" } }, { - "at": "/value/prefixes/2", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "object-tests/separators/space /" - } - }, - { - "at": "/value/prefixes", - "optional": false, - "rule": { - "is": "array_length", - "value": 3 + "value": 400 } }, { - "at": "/value/continuation_token", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "EntityTooSmall" } } ], "refusal": null }, { - "id": "operations/azure-hns/list-separator-keys", - "profile": "azure-hns", + "id": "operations/s3/commit-precondition-failed", + "profile": "s3", "lane": "core", - "purpose": "list separator keys", + "purpose": "commit precondition failed", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "op": "list_page", - "prefix": "object-tests/separators/" + "if_match": "\"fixture-db71b2c0257c\"", + "key": "object-tests/multipart/guarded.bin", + "op": "s3.complete_multipart", + "parts": [ + { + "etag": "\"fixture-cd3c4834c1cd\"", + "number": 1 + } + ], + "upload_id": "fixture-upload+/9cd6f716dbf9=" }, "exchanges": [ { @@ -61693,7 +94122,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "POST" } }, { @@ -61701,57 +94130,111 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/multipart/guarded.bin" } }, { - "at": "/body_base64", + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "1\"fixture-cd3c4834c1cd\"" + } + }, + { + "at": "/headers/if-match", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "\"fixture-db71b2c0257c\"" } }, { - "at": "/query/restype", + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "container" + "value": "fixture-upload+/9cd6f716dbf9=" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 412, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" } }, + "body": { + "encoding": "utf8", + "data": "\nPreconditionFailedFixture error" + }, + "framing": "chunked" + } + }, + { + "request": [ { - "at": "/query/comp", + "at": "/method", "optional": false, "rule": { "is": "equal", - "value": "list" + "value": "POST" } }, { - "at": "/query/prefix", + "at": "/path", "optional": false, "rule": { "is": "equal", - "value": "object-tests/separators/" + "value": "/fixture/object-tests/multipart/guarded.bin" + } + }, + { + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "\"fixture-cd3c4834c1cd\"1" + } + }, + { + "at": "/headers/if-match", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-db71b2c0257c\"" + } + }, + { + "at": "/query/uploadId", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-upload+/9cd6f716dbf9=" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 200, + "status": 412, "headers": { "content-type": "application/xml", "date": { "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { "encoding": "utf8", - "data": "object-tests/separators/object-tests/separators/..leadingMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-15c8f76b7db4file1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/separators/a.bMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-1647f69dced7directory0BlockBlobHottrueunlockedavailabletrueobject-tests/separators/a.b/cMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-75bdde0ebaf4file1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/separators/dotMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-8a6559c18a1cfile1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/separators/doubleMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-8e02901b8187directory0BlockBlobHottrueunlockedavailabletrueobject-tests/separators/double/slashMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-dffbfc983f10file1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrueobject-tests/separators/space Mon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-978fd2f2d938directory0BlockBlobHottrueunlockedavailabletrueobject-tests/separators/space /xMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-ddc1aad6dee1file1application/octet-streamxMpCOKC5I4INzFCab3WEmw==BlockBlobHottrueunlockedavailabletrue" + "data": "\nPreconditionFailedFixture error" }, "framing": "chunked" } @@ -61765,490 +94248,182 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/entries/0/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/separators/..leading" - } - }, - { - "at": "/value/entries/0/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/0/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-15c8f76b7db4" - } - }, - { - "at": "/value/entries/0/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/0/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/0/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/0/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "xMpCOKC5I4INzFCab3WEmw==" - } - }, - { - "at": "/value/entries/1/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/separators/a.b" - } - }, - { - "at": "/value/entries/1/size", - "optional": false, - "rule": { - "is": "equal", - "value": 0 - } - }, - { - "at": "/value/entries/1/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-1647f69dced7" - } - }, - { - "at": "/value/entries/1/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/1/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/1/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/1/directory", - "optional": false, - "rule": { - "is": "equal", - "value": true - } - }, - { - "at": "/value/entries/2/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/separators/a.b/c" - } - }, - { - "at": "/value/entries/2/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/2/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-75bdde0ebaf4" - } - }, - { - "at": "/value/entries/2/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/2/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/2/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/2/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "xMpCOKC5I4INzFCab3WEmw==" - } - }, - { - "at": "/value/entries/3/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/separators/dot" - } - }, - { - "at": "/value/entries/3/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/3/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-8a6559c18a1c" - } - }, - { - "at": "/value/entries/3/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/3/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/3/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/3/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "xMpCOKC5I4INzFCab3WEmw==" - } - }, - { - "at": "/value/entries/4/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/separators/double" - } - }, - { - "at": "/value/entries/4/size", - "optional": false, - "rule": { - "is": "equal", - "value": 0 - } - }, - { - "at": "/value/entries/4/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-8e02901b8187" - } - }, - { - "at": "/value/entries/4/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/4/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/4/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/4/directory", - "optional": false, - "rule": { - "is": "equal", - "value": true - } - }, - { - "at": "/value/entries/5/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/separators/double/slash" - } - }, - { - "at": "/value/entries/5/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/5/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-dffbfc983f10" - } - }, - { - "at": "/value/entries/5/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/5/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/5/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/5/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "xMpCOKC5I4INzFCab3WEmw==" - } - }, - { - "at": "/value/entries/6/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/separators/space " + "value": "error" } }, { - "at": "/value/entries/6/size", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": 0 + "value": 412 } }, { - "at": "/value/entries/6/etag", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": "fixture-978fd2f2d938" - } - }, - { - "at": "/value/entries/6/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/6/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/6/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] + "value": "PreconditionFailed" } - }, - { - "at": "/value/entries/6/directory", - "optional": false, - "rule": { - "is": "equal", - "value": true + } + ], + "refusal": null + }, + { + "id": "operations/s3/commit-single-small-part", + "profile": "s3", + "lane": "core", + "purpose": "commit single small part", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "key": "object-tests/multipart/single.bin", + "op": "s3.complete_multipart", + "parts": [ + { + "etag": "\"fixture-3841a4d594c0\"", + "number": 1 } - }, + ], + "upload_id": "fixture-upload+/2b2c71a6ce04=" + }, + "exchanges": [ { - "at": "/value/entries/7/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/separators/space /x" - } - }, + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "POST" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/multipart/single.bin" + } + }, + { + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "1\"fixture-3841a4d594c0\"" + } + }, + { + "at": "/query/uploadId", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-upload+/2b2c71a6ce04=" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "utf8", + "data": "\nhttps://fixture.invalid/fixture/object-tests/multipart/single.binfixtureobject-tests/multipart/single.bin"fixture-69ebdafc497f"rzsmsrcRLcM=FULL_OBJECT" + }, + "framing": "chunked" + } + }, + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "POST" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/multipart/single.bin" + } + }, + { + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "\"fixture-3841a4d594c0\"1" + } + }, + { + "at": "/query/uploadId", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-upload+/2b2c71a6ce04=" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "utf8", + "data": "\nhttps://fixture.invalid/fixture/object-tests/multipart/single.binfixtureobject-tests/multipart/single.bin"fixture-69ebdafc497f"rzsmsrcRLcM=FULL_OBJECT" + }, + "framing": "chunked" + } + } + ] + } + ], + "expect": [ { - "at": "/value/entries/7/size", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": 1 + "value": "ok" } }, { - "at": "/value/entries/7/etag", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": "fixture-ddc1aad6dee1" + "value": "\"fixture-69ebdafc497f\"" } }, { - "at": "/value/entries/7/snapshot", + "at": "/value/version", "optional": true, "rule": { "is": "one_of", @@ -62257,78 +94432,207 @@ "" ] } - }, - { - "at": "/value/entries/7/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + } + ], + "refusal": null + }, + { + "id": "operations/s3/commit-object-size-mismatch", + "profile": "s3", + "lane": "core", + "purpose": "Report S3's refusal of a completion whose parts do not add up to the object size stated in x-amz-mp-object-size", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "key": "object-tests/multipart/commit-object-size-mismatch.bin", + "object_size": 4, + "op": "s3.complete_multipart", + "parts": [ + { + "etag": "\"fixture-3841a4d594c0\"", + "number": 1 } - }, + ], + "upload_id": "fixture-upload+/2b2c71a6ce04=" + }, + "exchanges": [ { - "at": "/value/entries/7/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "POST" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/multipart/commit-object-size-mismatch.bin" + } + }, + { + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "1\"fixture-3841a4d594c0\"" + } + }, + { + "at": "/query/uploadId", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-upload+/2b2c71a6ce04=" + } + }, + { + "at": "/headers/x-amz-mp-object-size", + "optional": false, + "rule": { + "is": "equal", + "value": "4" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 400, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + } + }, + "body": { + "encoding": "utf8", + "data": "\nInvalidRequestThe provided x-amz-mp-object-size header value 4 does not match what was computed: 3fixturefixture" + }, + "framing": "chunked" + } + }, + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "POST" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/multipart/commit-object-size-mismatch.bin" + } + }, + { + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "\"fixture-3841a4d594c0\"1" + } + }, + { + "at": "/query/uploadId", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-upload+/2b2c71a6ce04=" + } + }, + { + "at": "/headers/x-amz-mp-object-size", + "optional": false, + "rule": { + "is": "equal", + "value": "4" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 400, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + } + }, + "body": { + "encoding": "utf8", + "data": "\nInvalidRequestThe provided x-amz-mp-object-size header value 4 does not match what was computed: 3fixturefixture" + }, + "framing": "chunked" + } + } + ] + } + ], + "expect": [ { - "at": "/value/entries/7/content_md5_base64", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "xMpCOKC5I4INzFCab3WEmw==" - } - }, - { - "at": "/value/entries", - "optional": false, - "rule": { - "is": "array_length", - "value": 8 + "value": "error" } }, { - "at": "/value/prefixes", + "at": "/status", "optional": false, "rule": { - "is": "array_length", - "value": 0 + "is": "equal", + "value": 400 } }, { - "at": "/value/continuation_token", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "InvalidRequest" } } ], "refusal": null }, { - "id": "operations/azure-hns/list-snapshots-after-delete", - "profile": "azure-hns", + "id": "operations/s3/commit-object-size", + "profile": "s3", "lane": "core", - "purpose": "list snapshots after delete", + "purpose": "Send the object size the caller expects in x-amz-mp-object-size; a completion whose parts add up to it succeeds", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "include": [ - "snapshots" + "key": "object-tests/multipart/commit-object-size.bin", + "object_size": 3, + "op": "s3.complete_multipart", + "parts": [ + { + "etag": "\"fixture-3841a4d594c0\"", + "number": 1 + } ], - "op": "list_page", - "prefix": "object-tests/snapshots-all/" + "upload_id": "fixture-upload+/2b2c71a6ce04=" }, "exchanges": [ { @@ -62340,7 +94644,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "POST" } }, { @@ -62348,51 +94652,100 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/multipart/commit-object-size.bin" } }, { - "at": "/body_base64", + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "1\"fixture-3841a4d594c0\"" + } + }, + { + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "fixture-upload+/2b2c71a6ce04=" } }, { - "at": "/query/restype", + "at": "/headers/x-amz-mp-object-size", "optional": false, "rule": { "is": "equal", - "value": "container" + "value": "3" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "utf8", + "data": "\nhttps://fixture.invalid/fixture/object-tests/multipart/commit-object-size.binfixtureobject-tests/multipart/commit-object-size.bin"fixture-69ebdafc497f"rzsmsrcRLcM=FULL_OBJECT" + }, + "framing": "chunked" + } + }, + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "POST" } }, { - "at": "/query/comp", + "at": "/path", "optional": false, "rule": { "is": "equal", - "value": "list" + "value": "/fixture/object-tests/multipart/commit-object-size.bin" } }, { - "at": "/query/prefix", + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "\"fixture-3841a4d594c0\"1" + } + }, + { + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "object-tests/snapshots-all/" + "value": "fixture-upload+/2b2c71a6ce04=" } }, { - "at": "/query/include", + "at": "/headers/x-amz-mp-object-size", "optional": false, "rule": { "is": "equal", - "value": "snapshots" + "value": "3" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { "status": 200, @@ -62401,12 +94754,11 @@ "date": { "from": "now" }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "utf8", - "data": "object-tests/snapshots-all/" + "data": "\nhttps://fixture.invalid/fixture/object-tests/multipart/commit-object-size.binfixtureobject-tests/multipart/commit-object-size.bin"fixture-69ebdafc497f"rzsmsrcRLcM=FULL_OBJECT" }, "framing": "chunked" } @@ -62424,46 +94776,45 @@ } }, { - "at": "/value/entries", - "optional": false, - "rule": { - "is": "array_length", - "value": 0 - } - }, - { - "at": "/value/prefixes", + "at": "/value/etag", "optional": false, "rule": { - "is": "array_length", - "value": 0 + "is": "equal", + "value": "\"fixture-69ebdafc497f\"" } }, { - "at": "/value/continuation_token", - "optional": false, + "at": "/value/version", + "optional": true, "rule": { - "is": "equal", - "value": "" + "is": "one_of", + "values": [ + null, + "" + ] } } ], "refusal": null }, { - "id": "operations/azure-hns/list-snapshots-after-snapshots-deleted", - "profile": "azure-hns", + "id": "operations/s3/commit-one-empty-part", + "profile": "s3", "lane": "core", - "purpose": "list snapshots after snapshots deleted", + "purpose": "Complete an upload of one empty part, which writes an empty object; a client that refuses a completion of no parts writes an empty object this way", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "include": [ - "snapshots" + "key": "object-tests/multipart/empty.bin", + "op": "s3.complete_multipart", + "parts": [ + { + "etag": "\"fixture-3841a4d594c0\"", + "number": 1 + } ], - "op": "list_page", - "prefix": "object-tests/snapshots-only/" + "upload_id": "fixture-upload+/2b2c71a6ce04=" }, "exchanges": [ { @@ -62475,7 +94826,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "POST" } }, { @@ -62483,51 +94834,84 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/multipart/empty.bin" } }, { - "at": "/body_base64", + "at": "/body_text", "optional": false, "rule": { - "is": "equal", - "value": "" + "is": "xml", + "value": "1\"fixture-3841a4d594c0\"" } }, { - "at": "/query/restype", + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "container" + "value": "fixture-upload+/2b2c71a6ce04=" } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "utf8", + "data": "\nhttps://fixture.invalid/fixture/object-tests/multipart/empty.binfixtureobject-tests/multipart/empty.bin"fixture-69ebdafc497f"rzsmsrcRLcM=FULL_OBJECT" }, + "framing": "chunked" + } + }, + { + "request": [ { - "at": "/query/comp", + "at": "/method", "optional": false, "rule": { "is": "equal", - "value": "list" + "value": "POST" } }, { - "at": "/query/prefix", + "at": "/path", "optional": false, "rule": { "is": "equal", - "value": "object-tests/snapshots-only/" + "value": "/fixture/object-tests/multipart/empty.bin" } }, { - "at": "/query/include", + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "\"fixture-3841a4d594c0\"1" + } + }, + { + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "snapshots" + "value": "fixture-upload+/2b2c71a6ce04=" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { "status": 200, @@ -62536,12 +94920,11 @@ "date": { "from": "now" }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "utf8", - "data": "object-tests/snapshots-only/object-tests/snapshots-only/object.txtMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-5d8eb33996d7file4application/octet-streamTYtghPPRZ7dsrGaiKpG+Ag==BlockBlobHottrueunlockedavailabletrue" + "data": "\nhttps://fixture.invalid/fixture/object-tests/multipart/empty.binfixtureobject-tests/multipart/empty.bin"fixture-69ebdafc497f"rzsmsrcRLcM=FULL_OBJECT" }, "framing": "chunked" } @@ -62559,42 +94942,15 @@ } }, { - "at": "/value/entries/0/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/snapshots-only/object.txt" - } - }, - { - "at": "/value/entries/0/size", - "optional": false, - "rule": { - "is": "equal", - "value": 4 - } - }, - { - "at": "/value/entries/0/etag", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": "fixture-5d8eb33996d7" - } - }, - { - "at": "/value/entries/0/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "value": "\"fixture-69ebdafc497f\"" } }, { - "at": "/value/entries/0/version", + "at": "/value/version", "optional": true, "rule": { "is": "one_of", @@ -62603,68 +94959,28 @@ "" ] } - }, - { - "at": "/value/entries/0/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/0/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "TYtghPPRZ7dsrGaiKpG+Ag==" - } - }, - { - "at": "/value/entries", - "optional": false, - "rule": { - "is": "array_length", - "value": 1 - } - }, - { - "at": "/value/prefixes", - "optional": false, - "rule": { - "is": "array_length", - "value": 0 - } - }, - { - "at": "/value/continuation_token", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } } ], "refusal": null }, { - "id": "operations/azure-hns/list-snapshots-and-versions", - "profile": "azure-hns", + "id": "operations/s3/commit-subset", + "profile": "s3", "lane": "core", - "purpose": "list snapshots and versions", + "purpose": "commit subset", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "include": [ - "snapshots", - "versions" + "key": "object-tests/multipart/replaced.bin", + "op": "s3.complete_multipart", + "parts": [ + { + "etag": "\"fixture-5945c592bad7\"", + "number": 1 + } ], - "op": "list_page", - "prefix": "object-tests/snapshots/" + "upload_id": "fixture-upload+/6ba3c5e480a2=" }, "exchanges": [ { @@ -62676,7 +94992,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "POST" } }, { @@ -62684,51 +95000,84 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/multipart/replaced.bin" } }, { - "at": "/body_base64", + "at": "/body_text", "optional": false, "rule": { - "is": "equal", - "value": "" + "is": "xml", + "value": "1\"fixture-5945c592bad7\"" } }, { - "at": "/query/restype", + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "container" + "value": "fixture-upload+/6ba3c5e480a2=" } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "utf8", + "data": "\nhttps://fixture.invalid/fixture/object-tests/multipart/replaced.binfixtureobject-tests/multipart/replaced.bin"fixture-8631a8b6edf7"DZyVHeSVZ7c=FULL_OBJECT" }, + "framing": "chunked" + } + }, + { + "request": [ { - "at": "/query/comp", + "at": "/method", "optional": false, "rule": { "is": "equal", - "value": "list" + "value": "POST" } }, { - "at": "/query/prefix", + "at": "/path", "optional": false, "rule": { "is": "equal", - "value": "object-tests/snapshots/" + "value": "/fixture/object-tests/multipart/replaced.bin" } }, { - "at": "/query/include", + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "\"fixture-5945c592bad7\"1" + } + }, + { + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "snapshots,versions" + "value": "fixture-upload+/6ba3c5e480a2=" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { "status": 200, @@ -62737,12 +95086,11 @@ "date": { "from": "now" }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "utf8", - "data": "object-tests/snapshots/object-tests/snapshots/object.txtMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-2666f63dbf0bfile3application/octet-streamuKn3Fdu2T9XFbneDxoIKYQ==BlockBlobHottrueunlockedavailabletrue" + "data": "\nhttps://fixture.invalid/fixture/object-tests/multipart/replaced.binfixtureobject-tests/multipart/replaced.bin"fixture-8631a8b6edf7"DZyVHeSVZ7c=FULL_OBJECT" }, "framing": "chunked" } @@ -62760,31 +95108,15 @@ } }, { - "at": "/value/entries/0/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/snapshots/object.txt" - } - }, - { - "at": "/value/entries/0/size", - "optional": false, - "rule": { - "is": "equal", - "value": 3 - } - }, - { - "at": "/value/entries/0/etag", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": "fixture-2666f63dbf0b" + "value": "\"fixture-8631a8b6edf7\"" } }, { - "at": "/value/entries/0/snapshot", + "at": "/value/version", "optional": true, "rule": { "is": "one_of", @@ -62793,78 +95125,362 @@ "" ] } - }, + } + ], + "refusal": null + }, + { + "id": "operations/s3/commit-unstaged-part", + "profile": "s3", + "lane": "core", + "purpose": "commit unstaged part", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "key": "object-tests/multipart/object.bin", + "op": "s3.complete_multipart", + "parts": [ + { + "etag": "\"fixture-6d60d5bbaa47\"", + "number": 1 + }, + { + "etag": "\"fixture-db71b2c0257c\"", + "number": 3 + } + ], + "upload_id": "fixture-upload+/276ca18046f9=" + }, + "exchanges": [ { - "at": "/value/entries/0/version", - "optional": true, + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "POST" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/multipart/object.bin" + } + }, + { + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "1\"fixture-6d60d5bbaa47\"3\"fixture-db71b2c0257c\"" + } + }, + { + "at": "/query/uploadId", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-upload+/276ca18046f9=" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 400, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + } + }, + "body": { + "encoding": "utf8", + "data": "\nInvalidPartFixture error" + }, + "framing": "chunked" + } + }, + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "POST" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/multipart/object.bin" + } + }, + { + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "\"fixture-6d60d5bbaa47\"1\"fixture-db71b2c0257c\"3" + } + }, + { + "at": "/query/uploadId", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-upload+/276ca18046f9=" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 400, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + } + }, + "body": { + "encoding": "utf8", + "data": "\nInvalidPartFixture error" + }, + "framing": "chunked" + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "is": "equal", + "value": "error" } }, { - "at": "/value/entries/0/is_current_version", - "optional": true, + "at": "/status", + "optional": false, "rule": { - "is": "one_of", - "values": [ - null, - false - ] + "is": "equal", + "value": 400 } }, { - "at": "/value/entries/0/content_md5_base64", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": "uKn3Fdu2T9XFbneDxoIKYQ==" + "value": "InvalidPart" } - }, + } + ], + "refusal": null + }, + { + "id": "operations/s3/commit-wrong-etag", + "profile": "s3", + "lane": "core", + "purpose": "commit wrong etag", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "key": "object-tests/multipart/object.bin", + "op": "s3.complete_multipart", + "parts": [ + { + "etag": "\"fixture-db71b2c0257c\"", + "number": 1 + }, + { + "etag": "\"fixture-32b70ae425ac\"", + "number": 2 + } + ], + "upload_id": "fixture-upload+/276ca18046f9=" + }, + "exchanges": [ { - "at": "/value/entries", + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "POST" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/multipart/object.bin" + } + }, + { + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "1\"fixture-db71b2c0257c\"2\"fixture-32b70ae425ac\"" + } + }, + { + "at": "/query/uploadId", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-upload+/276ca18046f9=" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 400, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + } + }, + "body": { + "encoding": "utf8", + "data": "\nInvalidPartFixture error" + }, + "framing": "chunked" + } + }, + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "POST" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/multipart/object.bin" + } + }, + { + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "\"fixture-db71b2c0257c\"1\"fixture-32b70ae425ac\"2" + } + }, + { + "at": "/query/uploadId", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-upload+/276ca18046f9=" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 400, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + } + }, + "body": { + "encoding": "utf8", + "data": "\nInvalidPartFixture error" + }, + "framing": "chunked" + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", "optional": false, "rule": { - "is": "array_length", - "value": 1 + "is": "equal", + "value": "error" } }, { - "at": "/value/prefixes", + "at": "/status", "optional": false, "rule": { - "is": "array_length", - "value": 0 + "is": "equal", + "value": 400 } }, { - "at": "/value/continuation_token", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "InvalidPart" } } ], "refusal": null }, { - "id": "operations/azure-hns/list-snapshots", - "profile": "azure-hns", + "id": "operations/s3/commit", + "profile": "s3", "lane": "core", - "purpose": "list snapshots", + "purpose": "commit", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "include": [ - "snapshots" + "key": "object-tests/multipart/object.bin", + "op": "s3.complete_multipart", + "parts": [ + { + "etag": "\"fixture-6d60d5bbaa47\"", + "number": 1 + }, + { + "etag": "\"fixture-32b70ae425ac\"", + "number": 2 + } ], - "op": "list_page", - "prefix": "object-tests/snapshots/" + "upload_id": "fixture-upload+/276ca18046f9=" }, "exchanges": [ { @@ -62876,7 +95492,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "POST" } }, { @@ -62884,51 +95500,84 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/multipart/object.bin" } }, { - "at": "/body_base64", + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "1\"fixture-6d60d5bbaa47\"2\"fixture-32b70ae425ac\"" + } + }, + { + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "fixture-upload+/276ca18046f9=" } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "utf8", + "data": "\nhttps://fixture.invalid/fixture/object-tests/multipart/object.binfixtureobject-tests/multipart/object.bin"fixture-ae1b6d1d32ce"E0gM19kR9Fk=FULL_OBJECT" }, + "framing": "chunked" + } + }, + { + "request": [ { - "at": "/query/restype", + "at": "/method", "optional": false, "rule": { "is": "equal", - "value": "container" + "value": "POST" } }, { - "at": "/query/comp", + "at": "/path", "optional": false, "rule": { "is": "equal", - "value": "list" + "value": "/fixture/object-tests/multipart/object.bin" } }, { - "at": "/query/prefix", + "at": "/body_text", "optional": false, "rule": { - "is": "equal", - "value": "object-tests/snapshots/" + "is": "xml", + "value": "\"fixture-6d60d5bbaa47\"1\"fixture-32b70ae425ac\"2" } }, { - "at": "/query/include", + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "snapshots" + "value": "fixture-upload+/276ca18046f9=" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { "status": 200, @@ -62937,12 +95586,11 @@ "date": { "from": "now" }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "utf8", - "data": "object-tests/snapshots/object-tests/snapshots/object.txtMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-2666f63dbf0bfile3application/octet-streamuKn3Fdu2T9XFbneDxoIKYQ==BlockBlobHottrueunlockedavailabletrue" + "data": "\nhttps://fixture.invalid/fixture/object-tests/multipart/object.binfixtureobject-tests/multipart/object.bin"fixture-ae1b6d1d32ce"E0gM19kR9Fk=FULL_OBJECT" }, "framing": "chunked" } @@ -62960,42 +95608,15 @@ } }, { - "at": "/value/entries/0/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/snapshots/object.txt" - } - }, - { - "at": "/value/entries/0/size", - "optional": false, - "rule": { - "is": "equal", - "value": 3 - } - }, - { - "at": "/value/entries/0/etag", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": "fixture-2666f63dbf0b" - } - }, - { - "at": "/value/entries/0/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "value": "\"fixture-ae1b6d1d32ce\"" } }, { - "at": "/value/entries/0/version", + "at": "/value/version", "optional": true, "rule": { "is": "one_of", @@ -63004,64 +95625,36 @@ "" ] } - }, - { - "at": "/value/entries/0/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/0/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "uKn3Fdu2T9XFbneDxoIKYQ==" - } - }, - { - "at": "/value/entries", - "optional": false, - "rule": { - "is": "array_length", - "value": 1 - } - }, - { - "at": "/value/prefixes", - "optional": false, - "rule": { - "is": "array_length", - "value": 0 - } - }, - { - "at": "/value/continuation_token", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } } ], "refusal": null }, { - "id": "operations/azure-hns/list-staged-only", - "profile": "azure-hns", + "id": "operations/s3/commit-200-internal-error", + "profile": "s3", "lane": "core", - "purpose": "list staged only", + "purpose": "Report a completion answered 200 with an InternalError in the body as an error, never as a success. A client may retry up to 5 times first, and need not retry", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "https://repost.aws/knowledge-center/s3-resolve-200-internalerror", + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html", + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html" ], + "origin": "transient", + "derived_from": "operations/s3/commit", "call": { - "op": "list_page", - "prefix": "object-tests/multipart/staged.bin" + "key": "object-tests/multipart/object.bin", + "op": "s3.complete_multipart", + "parts": [ + { + "etag": "\"fixture-6d60d5bbaa47\"", + "number": 1 + }, + { + "etag": "\"fixture-32b70ae425ac\"", + "number": 2 + } + ], + "upload_id": "fixture-upload+/276ca18046f9=" }, "exchanges": [ { @@ -63073,7 +95666,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "POST" } }, { @@ -63081,43 +95674,83 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/multipart/object.bin" } }, { - "at": "/body_base64", + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "1\"fixture-6d60d5bbaa47\"2\"fixture-32b70ae425ac\"" + } + }, + { + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "fixture-upload+/276ca18046f9=" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" } }, + "body": { + "encoding": "utf8", + "data": "\nInternalErrorWe encountered an internal error. Please try again.fixturefixture" + }, + "framing": "chunked" + } + }, + { + "request": [ { - "at": "/query/restype", + "at": "/method", "optional": false, "rule": { "is": "equal", - "value": "container" + "value": "POST" } }, { - "at": "/query/comp", + "at": "/path", "optional": false, "rule": { "is": "equal", - "value": "list" + "value": "/fixture/object-tests/multipart/object.bin" } }, { - "at": "/query/prefix", + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "\"fixture-6d60d5bbaa47\"1\"fixture-32b70ae425ac\"2" + } + }, + { + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "object-tests/multipart/staged.bin" + "value": "fixture-upload+/276ca18046f9=" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { "status": 200, @@ -63125,69 +95758,17 @@ "content-type": "application/xml", "date": { "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { "encoding": "utf8", - "data": "object-tests/multipart/staged.bin" + "data": "\nInternalErrorWe encountered an internal error. Please try again.fixturefixture" }, "framing": "chunked" } } ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/entries", - "optional": false, - "rule": { - "is": "array_length", - "value": 0 - } - }, - { - "at": "/value/prefixes", - "optional": false, - "rule": { - "is": "array_length", - "value": 0 - } }, - { - "at": "/value/continuation_token", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/list-unauthenticated", - "profile": "azure-hns", - "lane": "core", - "purpose": "Report the service authorization error for this operation; signature acceptance is tested separately.", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "op": "list_page", - "prefix": "object-tests/" - }, - "exchanges": [ { "alternatives": [ { @@ -63197,7 +95778,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "POST" } }, { @@ -63205,106 +95786,102 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/multipart/object.bin" } }, { - "at": "/body_base64", + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "1\"fixture-6d60d5bbaa47\"2\"fixture-32b70ae425ac\"" + } + }, + { + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "fixture-upload+/276ca18046f9=" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" } }, + "body": { + "encoding": "utf8", + "data": "\nInternalErrorWe encountered an internal error. Please try again.fixturefixture" + }, + "framing": "chunked" + } + }, + { + "request": [ { - "at": "/query/restype", + "at": "/method", "optional": false, "rule": { "is": "equal", - "value": "container" + "value": "POST" } }, { - "at": "/query/comp", + "at": "/path", "optional": false, "rule": { "is": "equal", - "value": "list" + "value": "/fixture/object-tests/multipart/object.bin" } }, { - "at": "/query/prefix", + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "\"fixture-6d60d5bbaa47\"1\"fixture-32b70ae425ac\"2" + } + }, + { + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "object-tests/" + "value": "fixture-upload+/276ca18046f9=" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 401, + "status": 200, "headers": { "content-type": "application/xml", "date": { "from": "now" - }, - "x-ms-error-code": "InvalidAuthenticationInfo" + } }, "body": { "encoding": "utf8", - "data": "InvalidAuthenticationInfoFixture error" - } + "data": "\nInternalErrorWe encountered an internal error. Please try again.fixturefixture" + }, + "framing": "chunked" } } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 401 - } + ], + "optional": true }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "equal", - "value": "InvalidAuthenticationInfo" - } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/list-versions-of-deleted-object", - "profile": "azure-hns", - "lane": "core", - "purpose": "list versions of deleted object", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "include": [ - "versions" - ], - "op": "list_page", - "prefix": "object-tests/versions-mtypy4jp/deleted.txt" - }, - "exchanges": [ { "alternatives": [ { @@ -63314,7 +95891,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "POST" } }, { @@ -63322,51 +95899,83 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/multipart/object.bin" } }, { - "at": "/body_base64", + "at": "/body_text", "optional": false, "rule": { - "is": "equal", - "value": "" + "is": "xml", + "value": "1\"fixture-6d60d5bbaa47\"2\"fixture-32b70ae425ac\"" } }, { - "at": "/query/restype", + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "container" + "value": "fixture-upload+/276ca18046f9=" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" } }, + "body": { + "encoding": "utf8", + "data": "\nInternalErrorWe encountered an internal error. Please try again.fixturefixture" + }, + "framing": "chunked" + } + }, + { + "request": [ { - "at": "/query/comp", + "at": "/method", "optional": false, "rule": { "is": "equal", - "value": "list" + "value": "POST" } }, { - "at": "/query/prefix", + "at": "/path", "optional": false, "rule": { "is": "equal", - "value": "object-tests/versions-mtypy4jp/deleted.txt" + "value": "/fixture/object-tests/multipart/object.bin" } }, { - "at": "/query/include", + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "\"fixture-6d60d5bbaa47\"1\"fixture-32b70ae425ac\"2" + } + }, + { + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "versions" + "value": "fixture-upload+/276ca18046f9=" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { "status": 200, @@ -63374,72 +95983,18 @@ "content-type": "application/xml", "date": { "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { "encoding": "utf8", - "data": "object-tests/versions-mtypy4jp/deleted.txt" + "data": "\nInternalErrorWe encountered an internal error. Please try again.fixturefixture" }, "framing": "chunked" } } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/entries", - "optional": false, - "rule": { - "is": "array_length", - "value": 0 - } - }, - { - "at": "/value/prefixes", - "optional": false, - "rule": { - "is": "array_length", - "value": 0 - } + ], + "optional": true }, - { - "at": "/value/continuation_token", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/list-versions", - "profile": "azure-hns", - "lane": "core", - "purpose": "list versions", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "include": [ - "versions" - ], - "op": "list_page", - "prefix": "object-tests/versions-mtypy4jp/" - }, - "exchanges": [ { "alternatives": [ { @@ -63449,7 +96004,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "POST" } }, { @@ -63457,51 +96012,83 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/multipart/object.bin" } }, { - "at": "/body_base64", + "at": "/body_text", "optional": false, "rule": { - "is": "equal", - "value": "" + "is": "xml", + "value": "1\"fixture-6d60d5bbaa47\"2\"fixture-32b70ae425ac\"" } }, { - "at": "/query/restype", + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "container" + "value": "fixture-upload+/276ca18046f9=" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" } }, + "body": { + "encoding": "utf8", + "data": "\nInternalErrorWe encountered an internal error. Please try again.fixturefixture" + }, + "framing": "chunked" + } + }, + { + "request": [ { - "at": "/query/comp", + "at": "/method", "optional": false, "rule": { "is": "equal", - "value": "list" + "value": "POST" } }, { - "at": "/query/prefix", + "at": "/path", "optional": false, "rule": { "is": "equal", - "value": "object-tests/versions-mtypy4jp/" + "value": "/fixture/object-tests/multipart/object.bin" } }, { - "at": "/query/include", + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "\"fixture-6d60d5bbaa47\"1\"fixture-32b70ae425ac\"2" + } + }, + { + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "versions" + "value": "fixture-upload+/276ca18046f9=" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { "status": 200, @@ -63509,134 +96096,18 @@ "content-type": "application/xml", "date": { "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { "encoding": "utf8", - "data": "object-tests/versions-mtypy4jp/object-tests/versions-mtypy4jp/object.txtMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-bd163fcc78d6file2application/octet-streamGyZ2GcSBLMRu4oF0eITKUA==BlockBlobHottrueunlockedavailabletrue" + "data": "\nInternalErrorWe encountered an internal error. Please try again.fixturefixture" }, "framing": "chunked" } } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/entries/0/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/versions-mtypy4jp/object.txt" - } - }, - { - "at": "/value/entries/0/size", - "optional": false, - "rule": { - "is": "equal", - "value": 2 - } - }, - { - "at": "/value/entries/0/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-bd163fcc78d6" - } - }, - { - "at": "/value/entries/0/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/0/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/0/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/0/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "GyZ2GcSBLMRu4oF0eITKUA==" - } - }, - { - "at": "/value/entries", - "optional": false, - "rule": { - "is": "array_length", - "value": 1 - } - }, - { - "at": "/value/prefixes", - "optional": false, - "rule": { - "is": "array_length", - "value": 0 - } + ], + "optional": true }, - { - "at": "/value/continuation_token", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/list-written-with-hashes", - "profile": "azure-hns", - "lane": "core", - "purpose": "list written with hashes", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "op": "list_page", - "prefix": "object-tests/hashes/" - }, - "exchanges": [ { "alternatives": [ { @@ -63646,7 +96117,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "POST" } }, { @@ -63654,43 +96125,83 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/multipart/object.bin" } }, { - "at": "/body_base64", + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "1\"fixture-6d60d5bbaa47\"2\"fixture-32b70ae425ac\"" + } + }, + { + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "fixture-upload+/276ca18046f9=" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" } }, + "body": { + "encoding": "utf8", + "data": "\nInternalErrorWe encountered an internal error. Please try again.fixturefixture" + }, + "framing": "chunked" + } + }, + { + "request": [ { - "at": "/query/restype", + "at": "/method", "optional": false, "rule": { "is": "equal", - "value": "container" + "value": "POST" } }, { - "at": "/query/comp", + "at": "/path", "optional": false, "rule": { "is": "equal", - "value": "list" + "value": "/fixture/object-tests/multipart/object.bin" } }, { - "at": "/query/prefix", + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "\"fixture-6d60d5bbaa47\"1\"fixture-32b70ae425ac\"2" + } + }, + { + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "object-tests/hashes/" + "value": "fixture-upload+/276ca18046f9=" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { "status": 200, @@ -63698,271 +96209,171 @@ "content-type": "application/xml", "date": { "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { "encoding": "utf8", - "data": "object-tests/hashes/object-tests/hashes/committed.binMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-1e5253c0f65afile13application/octet-streamN6YZkbg+Lyfxtskwn8iRCg==BlockBlobHottrueunlockedavailabletrueobject-tests/hashes/crc64.txtMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-1a8d1824b282file13application/octet-stream9XBvAwWoR9o=N6YZkbg+Lyfxtskwn8iRCg==BlockBlobHottrueunlockedavailabletrueobject-tests/hashes/md5.txtMon, 01 Jan 2024 00:00:00 GMTMon, 01 Jan 2024 00:00:00 GMTfixture-3b064c67c0acfile13application/octet-streamN6YZkbg+Lyfxtskwn8iRCg==BlockBlobHottrueunlockedavailabletrue" + "data": "\nInternalErrorWe encountered an internal error. Please try again.fixturefixture" }, "framing": "chunked" } } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/entries/0/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/hashes/committed.bin" - } - }, - { - "at": "/value/entries/0/size", - "optional": false, - "rule": { - "is": "equal", - "value": 13 - } - }, - { - "at": "/value/entries/0/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-1e5253c0f65a" - } - }, - { - "at": "/value/entries/0/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/0/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/0/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/0/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "N6YZkbg+Lyfxtskwn8iRCg==" - } - }, - { - "at": "/value/entries/1/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/hashes/crc64.txt" - } - }, - { - "at": "/value/entries/1/size", - "optional": false, - "rule": { - "is": "equal", - "value": 13 - } - }, - { - "at": "/value/entries/1/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-1a8d1824b282" - } - }, - { - "at": "/value/entries/1/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/1/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/1/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/1/content_md5_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "N6YZkbg+Lyfxtskwn8iRCg==" - } - }, - { - "at": "/value/entries/1/content_crc64_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "9XBvAwWoR9o=" - } - }, - { - "at": "/value/entries/2/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/hashes/md5.txt" - } - }, - { - "at": "/value/entries/2/size", - "optional": false, - "rule": { - "is": "equal", - "value": 13 - } - }, - { - "at": "/value/entries/2/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-3b064c67c0ac" - } - }, - { - "at": "/value/entries/2/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/2/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } + ], + "optional": true }, { - "at": "/value/entries/2/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "POST" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/multipart/object.bin" + } + }, + { + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "1\"fixture-6d60d5bbaa47\"2\"fixture-32b70ae425ac\"" + } + }, + { + "at": "/query/uploadId", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-upload+/276ca18046f9=" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + } + }, + "body": { + "encoding": "utf8", + "data": "\nInternalErrorWe encountered an internal error. Please try again.fixturefixture" + }, + "framing": "chunked" + } + }, + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "POST" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/multipart/object.bin" + } + }, + { + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "\"fixture-6d60d5bbaa47\"1\"fixture-32b70ae425ac\"2" + } + }, + { + "at": "/query/uploadId", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-upload+/276ca18046f9=" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + } + }, + "body": { + "encoding": "utf8", + "data": "\nInternalErrorWe encountered an internal error. Please try again.fixturefixture" + }, + "framing": "chunked" + } + } + ], + "optional": true + } + ], + "expect": [ { - "at": "/value/entries/2/content_md5_base64", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "N6YZkbg+Lyfxtskwn8iRCg==" - } - }, - { - "at": "/value/entries", - "optional": false, - "rule": { - "is": "array_length", - "value": 3 - } - }, - { - "at": "/value/prefixes", - "optional": false, - "rule": { - "is": "array_length", - "value": 0 + "value": "error" } }, { - "at": "/value/continuation_token", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "InternalError" } } ], "refusal": null }, { - "id": "operations/azure-hns/put-container-missing", - "profile": "azure-hns", + "id": "operations/s3/complete-multipart-200-error", + "profile": "s3", "lane": "core", - "purpose": "put container missing", + "purpose": "complete multipart 200 error", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html" ], + "origin": "transient", "call": { - "body_base64": "bm90aGluZyBpcyBzdG9yZWQ=", - "key": "object.txt", - "op": "put" + "key": "object", + "op": "s3.complete_multipart", + "parts": [ + { + "etag": "\"part\"", + "number": 1 + } + ], + "upload_id": "upload+/=" }, "exchanges": [ { @@ -63974,7 +96385,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "POST" } }, { @@ -63982,23 +96393,23 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object.txt" + "value": "/fixture/object" } }, { - "at": "/body_base64", + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "bm90aGluZyBpcyBzdG9yZWQ=" + "value": "upload+/=" } }, { - "at": "/headers/x-ms-blob-type", + "at": "/body_text", "optional": false, "rule": { - "is": "equal", - "value": "BlockBlob" + "is": "xml", + "value": "1\"part\"" } } ], @@ -64007,18 +96418,78 @@ ], "allow_query": [], "response": { - "status": 404, + "status": 200, "headers": { "content-type": "application/xml", "date": { "from": "now" }, - "x-ms-error-code": "ContainerNotFound" + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-amz-request-id": "fixture-request-id" }, "body": { - "encoding": "utf8", - "data": "ContainerNotFoundFixture error" + "encoding": "base64", + "data": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPEVycm9yPjxDb2RlPkludmFsaWRQYXJ0PC9Db2RlPjxNZXNzYWdlPmZpeHR1cmUgZXJyb3I8L01lc3NhZ2U+PC9FcnJvcj4=" + }, + "framing": "chunked" + } + }, + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "POST" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object" + } + }, + { + "at": "/query/uploadId", + "optional": false, + "rule": { + "is": "equal", + "value": "upload+/=" + } + }, + { + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "\"part\"1" + } } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-amz-request-id": "fixture-request-id" + }, + "body": { + "encoding": "base64", + "data": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPEVycm9yPjxDb2RlPkludmFsaWRQYXJ0PC9Db2RlPjxNZXNzYWdlPmZpeHR1cmUgZXJyb3I8L01lc3NhZ2U+PC9FcnJvcj4=" + }, + "framing": "chunked" } } ] @@ -64033,41 +96504,39 @@ "value": "error" } }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 404 - } - }, { "at": "/code", "optional": false, "rule": { "is": "equal", - "value": "ContainerNotFound" + "value": "InvalidPart" } } ], "refusal": null }, { - "id": "operations/azure-hns/put-crc64-mismatch", - "profile": "azure-hns", + "id": "operations/s3/commit-key-question", + "profile": "s3", "lane": "core", - "purpose": "put crc64 mismatch", + "purpose": "commit, with the key \"question?mark.txt\"", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "body_base64": "ZGVjbGFyZWQtYm9keQ==", - "checksum": { - "algorithm": "azure_crc64", - "value_base64": "khqMBK+EUSA=" - }, - "key": "object-tests/hashes/crc64-mismatch.txt", - "op": "put" + "key": "object-tests/keys/question?mark.txt", + "op": "s3.complete_multipart", + "parts": [ + { + "etag": "\"fixture-6d60d5bbaa47\"", + "number": 1 + }, + { + "etag": "\"fixture-32b70ae425ac\"", + "number": 2 + } + ], + "upload_id": "fixture-upload+/276ca18046f9=" }, "exchanges": [ { @@ -64079,7 +96548,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "POST" } }, { @@ -64087,31 +96556,78 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/hashes/crc64-mismatch.txt" + "value": "/fixture/object-tests/keys/question?mark.txt" } }, { - "at": "/body_base64", + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "1\"fixture-6d60d5bbaa47\"2\"fixture-32b70ae425ac\"" + } + }, + { + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "ZGVjbGFyZWQtYm9keQ==" + "value": "fixture-upload+/276ca18046f9=" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "utf8", + "data": "\nhttps://fixture.invalid/fixture/object-tests/keys/question?mark.txtfixtureobject-tests/keys/question?mark.txt"fixture-ae1b6d1d32ce"E0gM19kR9Fk=FULL_OBJECT" + }, + "framing": "chunked" + } + }, + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "POST" } }, { - "at": "/headers/x-ms-content-crc64", + "at": "/path", "optional": false, "rule": { "is": "equal", - "value": "khqMBK+EUSA=" + "value": "/fixture/object-tests/keys/question?mark.txt" } }, { - "at": "/headers/x-ms-blob-type", + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "\"fixture-6d60d5bbaa47\"1\"fixture-32b70ae425ac\"2" + } + }, + { + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "BlockBlob" + "value": "fixture-upload+/276ca18046f9=" } } ], @@ -64120,18 +96636,19 @@ ], "allow_query": [], "response": { - "status": 400, + "status": 200, "headers": { "content-type": "application/xml", "date": { "from": "now" }, - "x-ms-error-code": "Crc64Mismatch" + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "utf8", - "data": "Crc64MismatchFixture error" - } + "data": "\nhttps://fixture.invalid/fixture/object-tests/keys/question?mark.txtfixtureobject-tests/keys/question?mark.txt"fixture-ae1b6d1d32ce"E0gM19kR9Fk=FULL_OBJECT" + }, + "framing": "chunked" } } ] @@ -64143,40 +96660,53 @@ "optional": false, "rule": { "is": "equal", - "value": "error" + "value": "ok" } }, { - "at": "/status", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": 400 + "value": "\"fixture-ae1b6d1d32ce\"" } }, { - "at": "/code", - "optional": false, + "at": "/value/version", + "optional": true, "rule": { - "is": "equal", - "value": "Crc64Mismatch" + "is": "one_of", + "values": [ + null, + "" + ] } } ], "refusal": null }, { - "id": "operations/azure-hns/put-created-empty", - "profile": "azure-hns", + "id": "operations/s3/commit-key-hash", + "profile": "s3", "lane": "core", - "purpose": "put created empty", + "purpose": "commit, with the key \"hash#tag.txt\"", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "body_base64": "", - "key": "object-tests/write/empty.bin", - "op": "put" + "key": "object-tests/keys/hash#tag.txt", + "op": "s3.complete_multipart", + "parts": [ + { + "etag": "\"fixture-6d60d5bbaa47\"", + "number": 1 + }, + { + "etag": "\"fixture-32b70ae425ac\"", + "number": 2 + } + ], + "upload_id": "fixture-upload+/276ca18046f9=" }, "exchanges": [ { @@ -64188,7 +96718,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "POST" } }, { @@ -64196,23 +96726,23 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/write/empty.bin" + "value": "/fixture/object-tests/keys/hash#tag.txt" } }, { - "at": "/body_base64", + "at": "/body_text", "optional": false, "rule": { - "is": "equal", - "value": "" + "is": "xml", + "value": "1\"fixture-6d60d5bbaa47\"2\"fixture-32b70ae425ac\"" } }, { - "at": "/headers/x-ms-blob-type", + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "BlockBlob" + "value": "fixture-upload+/276ca18046f9=" } } ], @@ -64221,21 +96751,74 @@ ], "allow_query": [], "response": { - "status": 201, + "status": 200, "headers": { - "content-md5": "1B2M2Y8AsgTpgAmY7PhCfg==", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-9373f0410116\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true" + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "" + "encoding": "utf8", + "data": "\nhttps://fixture.invalid/fixture/object-tests/keys/hash#tag.txtfixtureobject-tests/keys/hash#tag.txt"fixture-ae1b6d1d32ce"E0gM19kR9Fk=FULL_OBJECT" + }, + "framing": "chunked" + } + }, + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "POST" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/keys/hash#tag.txt" + } + }, + { + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "\"fixture-6d60d5bbaa47\"1\"fixture-32b70ae425ac\"2" + } + }, + { + "at": "/query/uploadId", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-upload+/276ca18046f9=" + } } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "utf8", + "data": "\nhttps://fixture.invalid/fixture/object-tests/keys/hash#tag.txtfixtureobject-tests/keys/hash#tag.txt"fixture-ae1b6d1d32ce"E0gM19kR9Fk=FULL_OBJECT" + }, + "framing": "chunked" } } ] @@ -64255,7 +96838,7 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-9373f0410116\"" + "value": "\"fixture-ae1b6d1d32ce\"" } }, { @@ -64273,17 +96856,27 @@ "refusal": null }, { - "id": "operations/azure-hns/put-created", - "profile": "azure-hns", + "id": "operations/s3/commit-key-percent", + "profile": "s3", "lane": "core", - "purpose": "put created", + "purpose": "commit, with the key \"percent%20.txt\"", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "body_base64": "MDEyMzQ1Njc4OQ==", - "key": "object-tests/write/object.txt", - "op": "put" + "key": "object-tests/keys/percent%20.txt", + "op": "s3.complete_multipart", + "parts": [ + { + "etag": "\"fixture-6d60d5bbaa47\"", + "number": 1 + }, + { + "etag": "\"fixture-32b70ae425ac\"", + "number": 2 + } + ], + "upload_id": "fixture-upload+/276ca18046f9=" }, "exchanges": [ { @@ -64295,7 +96888,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "POST" } }, { @@ -64303,23 +96896,23 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/write/object.txt" + "value": "/fixture/object-tests/keys/percent%20.txt" } }, { - "at": "/body_base64", + "at": "/body_text", "optional": false, "rule": { - "is": "equal", - "value": "MDEyMzQ1Njc4OQ==" + "is": "xml", + "value": "1\"fixture-6d60d5bbaa47\"2\"fixture-32b70ae425ac\"" } }, { - "at": "/headers/x-ms-blob-type", + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "BlockBlob" + "value": "fixture-upload+/276ca18046f9=" } } ], @@ -64328,21 +96921,74 @@ ], "allow_query": [], "response": { - "status": 201, + "status": 200, "headers": { - "content-md5": "eB5eJF1ptWaXm4bijSPyxw==", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-bf139483d631\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true" + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "" + "encoding": "utf8", + "data": "\nhttps://fixture.invalid/fixture/object-tests/keys/percent%20.txtfixtureobject-tests/keys/percent%20.txt"fixture-ae1b6d1d32ce"E0gM19kR9Fk=FULL_OBJECT" + }, + "framing": "chunked" + } + }, + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "POST" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/keys/percent%20.txt" + } + }, + { + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "\"fixture-6d60d5bbaa47\"1\"fixture-32b70ae425ac\"2" + } + }, + { + "at": "/query/uploadId", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-upload+/276ca18046f9=" + } } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "utf8", + "data": "\nhttps://fixture.invalid/fixture/object-tests/keys/percent%20.txtfixtureobject-tests/keys/percent%20.txt"fixture-ae1b6d1d32ce"E0gM19kR9Fk=FULL_OBJECT" + }, + "framing": "chunked" } } ] @@ -64362,7 +97008,7 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-bf139483d631\"" + "value": "\"fixture-ae1b6d1d32ce\"" } }, { @@ -64380,17 +97026,27 @@ "refusal": null }, { - "id": "operations/azure-hns/put-created-key-question", - "profile": "azure-hns", + "id": "operations/s3/commit-key-plus", + "profile": "s3", "lane": "core", - "purpose": "put created, with the key \"question?mark.txt\"", + "purpose": "commit, with the key \"plus+plus.txt\"", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "body_base64": "MDEyMzQ1Njc4OQ==", - "key": "object-tests/keys/question?mark.txt", - "op": "put" + "key": "object-tests/keys/plus+plus.txt", + "op": "s3.complete_multipart", + "parts": [ + { + "etag": "\"fixture-6d60d5bbaa47\"", + "number": 1 + }, + { + "etag": "\"fixture-32b70ae425ac\"", + "number": 2 + } + ], + "upload_id": "fixture-upload+/276ca18046f9=" }, "exchanges": [ { @@ -64402,7 +97058,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "POST" } }, { @@ -64410,23 +97066,23 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/question?mark.txt" + "value": "/fixture/object-tests/keys/plus+plus.txt" } }, { - "at": "/body_base64", + "at": "/body_text", "optional": false, "rule": { - "is": "equal", - "value": "MDEyMzQ1Njc4OQ==" + "is": "xml", + "value": "1\"fixture-6d60d5bbaa47\"2\"fixture-32b70ae425ac\"" } }, { - "at": "/headers/x-ms-blob-type", + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "BlockBlob" + "value": "fixture-upload+/276ca18046f9=" } } ], @@ -64435,21 +97091,74 @@ ], "allow_query": [], "response": { - "status": 201, + "status": 200, "headers": { - "content-md5": "eB5eJF1ptWaXm4bijSPyxw==", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-bf139483d631\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true" + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "" + "encoding": "utf8", + "data": "\nhttps://fixture.invalid/fixture/object-tests/keys/plus+plus.txtfixtureobject-tests/keys/plus+plus.txt"fixture-ae1b6d1d32ce"E0gM19kR9Fk=FULL_OBJECT" + }, + "framing": "chunked" + } + }, + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "POST" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/keys/plus+plus.txt" + } + }, + { + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "\"fixture-6d60d5bbaa47\"1\"fixture-32b70ae425ac\"2" + } + }, + { + "at": "/query/uploadId", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-upload+/276ca18046f9=" + } } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "utf8", + "data": "\nhttps://fixture.invalid/fixture/object-tests/keys/plus+plus.txtfixtureobject-tests/keys/plus+plus.txt"fixture-ae1b6d1d32ce"E0gM19kR9Fk=FULL_OBJECT" + }, + "framing": "chunked" } } ] @@ -64469,7 +97178,7 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-bf139483d631\"" + "value": "\"fixture-ae1b6d1d32ce\"" } }, { @@ -64487,17 +97196,27 @@ "refusal": null }, { - "id": "operations/azure-hns/put-created-key-hash", - "profile": "azure-hns", + "id": "operations/s3/commit-key-space", + "profile": "s3", "lane": "core", - "purpose": "put created, with the key \"hash#tag.txt\"", + "purpose": "commit, with the key \"space name.txt\"", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "body_base64": "MDEyMzQ1Njc4OQ==", - "key": "object-tests/keys/hash#tag.txt", - "op": "put" + "key": "object-tests/keys/space name.txt", + "op": "s3.complete_multipart", + "parts": [ + { + "etag": "\"fixture-6d60d5bbaa47\"", + "number": 1 + }, + { + "etag": "\"fixture-32b70ae425ac\"", + "number": 2 + } + ], + "upload_id": "fixture-upload+/276ca18046f9=" }, "exchanges": [ { @@ -64509,7 +97228,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "POST" } }, { @@ -64517,23 +97236,23 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/hash#tag.txt" + "value": "/fixture/object-tests/keys/space name.txt" } }, { - "at": "/body_base64", + "at": "/body_text", "optional": false, "rule": { - "is": "equal", - "value": "MDEyMzQ1Njc4OQ==" + "is": "xml", + "value": "1\"fixture-6d60d5bbaa47\"2\"fixture-32b70ae425ac\"" } }, { - "at": "/headers/x-ms-blob-type", + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "BlockBlob" + "value": "fixture-upload+/276ca18046f9=" } } ], @@ -64542,21 +97261,74 @@ ], "allow_query": [], "response": { - "status": 201, + "status": 200, "headers": { - "content-md5": "eB5eJF1ptWaXm4bijSPyxw==", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-bf139483d631\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true" + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "" + "encoding": "utf8", + "data": "\nhttps://fixture.invalid/fixture/object-tests/keys/space name.txtfixtureobject-tests/keys/space name.txt"fixture-ae1b6d1d32ce"E0gM19kR9Fk=FULL_OBJECT" + }, + "framing": "chunked" + } + }, + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "POST" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/keys/space name.txt" + } + }, + { + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "\"fixture-6d60d5bbaa47\"1\"fixture-32b70ae425ac\"2" + } + }, + { + "at": "/query/uploadId", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-upload+/276ca18046f9=" + } } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "utf8", + "data": "\nhttps://fixture.invalid/fixture/object-tests/keys/space name.txtfixtureobject-tests/keys/space name.txt"fixture-ae1b6d1d32ce"E0gM19kR9Fk=FULL_OBJECT" + }, + "framing": "chunked" } } ] @@ -64576,7 +97348,7 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-bf139483d631\"" + "value": "\"fixture-ae1b6d1d32ce\"" } }, { @@ -64594,17 +97366,27 @@ "refusal": null }, { - "id": "operations/azure-hns/put-created-key-percent", - "profile": "azure-hns", + "id": "operations/s3/commit-key-non-ascii", + "profile": "s3", "lane": "core", - "purpose": "put created, with the key \"percent%20.txt\"", + "purpose": "commit, with the key \"café/雪.txt\"", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "body_base64": "MDEyMzQ1Njc4OQ==", - "key": "object-tests/keys/percent%20.txt", - "op": "put" + "key": "object-tests/keys/café/雪.txt", + "op": "s3.complete_multipart", + "parts": [ + { + "etag": "\"fixture-6d60d5bbaa47\"", + "number": 1 + }, + { + "etag": "\"fixture-32b70ae425ac\"", + "number": 2 + } + ], + "upload_id": "fixture-upload+/276ca18046f9=" }, "exchanges": [ { @@ -64616,7 +97398,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "POST" } }, { @@ -64624,23 +97406,23 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/percent%20.txt" + "value": "/fixture/object-tests/keys/café/雪.txt" } }, { - "at": "/body_base64", + "at": "/body_text", "optional": false, "rule": { - "is": "equal", - "value": "MDEyMzQ1Njc4OQ==" + "is": "xml", + "value": "1\"fixture-6d60d5bbaa47\"2\"fixture-32b70ae425ac\"" } }, { - "at": "/headers/x-ms-blob-type", + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "BlockBlob" + "value": "fixture-upload+/276ca18046f9=" } } ], @@ -64649,21 +97431,74 @@ ], "allow_query": [], "response": { - "status": 201, + "status": 200, "headers": { - "content-md5": "eB5eJF1ptWaXm4bijSPyxw==", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-bf139483d631\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true" + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "" + "encoding": "utf8", + "data": "\nhttps://fixture.invalid/fixture/object-tests/keys/café/雪.txtfixtureobject-tests/keys/café/雪.txt"fixture-ae1b6d1d32ce"E0gM19kR9Fk=FULL_OBJECT" + }, + "framing": "chunked" + } + }, + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "POST" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/keys/café/雪.txt" + } + }, + { + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "\"fixture-6d60d5bbaa47\"1\"fixture-32b70ae425ac\"2" + } + }, + { + "at": "/query/uploadId", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-upload+/276ca18046f9=" + } } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "utf8", + "data": "\nhttps://fixture.invalid/fixture/object-tests/keys/café/雪.txtfixtureobject-tests/keys/café/雪.txt"fixture-ae1b6d1d32ce"E0gM19kR9Fk=FULL_OBJECT" + }, + "framing": "chunked" } } ] @@ -64683,7 +97518,7 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-bf139483d631\"" + "value": "\"fixture-ae1b6d1d32ce\"" } }, { @@ -64701,17 +97536,27 @@ "refusal": null }, { - "id": "operations/azure-hns/put-created-key-plus", - "profile": "azure-hns", + "id": "operations/s3/commit-key-double-slash", + "profile": "s3", "lane": "core", - "purpose": "put created, with the key \"plus+plus.txt\"", + "purpose": "commit, with the key \"double//slash.txt\"", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "body_base64": "MDEyMzQ1Njc4OQ==", - "key": "object-tests/keys/plus+plus.txt", - "op": "put" + "key": "object-tests/keys/double//slash.txt", + "op": "s3.complete_multipart", + "parts": [ + { + "etag": "\"fixture-6d60d5bbaa47\"", + "number": 1 + }, + { + "etag": "\"fixture-32b70ae425ac\"", + "number": 2 + } + ], + "upload_id": "fixture-upload+/276ca18046f9=" }, "exchanges": [ { @@ -64723,7 +97568,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "POST" } }, { @@ -64731,23 +97576,23 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/plus+plus.txt" + "value": "/fixture/object-tests/keys/double//slash.txt" } }, { - "at": "/body_base64", + "at": "/body_text", "optional": false, "rule": { - "is": "equal", - "value": "MDEyMzQ1Njc4OQ==" + "is": "xml", + "value": "1\"fixture-6d60d5bbaa47\"2\"fixture-32b70ae425ac\"" } }, { - "at": "/headers/x-ms-blob-type", + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "BlockBlob" + "value": "fixture-upload+/276ca18046f9=" } } ], @@ -64756,21 +97601,74 @@ ], "allow_query": [], "response": { - "status": 201, + "status": 200, "headers": { - "content-md5": "eB5eJF1ptWaXm4bijSPyxw==", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-bf139483d631\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true" + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "" + "encoding": "utf8", + "data": "\nhttps://fixture.invalid/fixture/object-tests/keys/double//slash.txtfixtureobject-tests/keys/double//slash.txt"fixture-ae1b6d1d32ce"E0gM19kR9Fk=FULL_OBJECT" + }, + "framing": "chunked" + } + }, + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "POST" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/keys/double//slash.txt" + } + }, + { + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "\"fixture-6d60d5bbaa47\"1\"fixture-32b70ae425ac\"2" + } + }, + { + "at": "/query/uploadId", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-upload+/276ca18046f9=" + } } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "utf8", + "data": "\nhttps://fixture.invalid/fixture/object-tests/keys/double//slash.txtfixtureobject-tests/keys/double//slash.txt"fixture-ae1b6d1d32ce"E0gM19kR9Fk=FULL_OBJECT" + }, + "framing": "chunked" } } ] @@ -64790,7 +97688,7 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-bf139483d631\"" + "value": "\"fixture-ae1b6d1d32ce\"" } }, { @@ -64808,17 +97706,27 @@ "refusal": null }, { - "id": "operations/azure-hns/put-created-key-space", - "profile": "azure-hns", + "id": "operations/s3/commit-key-trailing-slash", + "profile": "s3", "lane": "core", - "purpose": "put created, with the key \"space name.txt\"", + "purpose": "commit, with the key \"trailing-slash/\"", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "body_base64": "MDEyMzQ1Njc4OQ==", - "key": "object-tests/keys/space name.txt", - "op": "put" + "key": "object-tests/keys/trailing-slash/", + "op": "s3.complete_multipart", + "parts": [ + { + "etag": "\"fixture-6d60d5bbaa47\"", + "number": 1 + }, + { + "etag": "\"fixture-32b70ae425ac\"", + "number": 2 + } + ], + "upload_id": "fixture-upload+/276ca18046f9=" }, "exchanges": [ { @@ -64830,7 +97738,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "POST" } }, { @@ -64838,23 +97746,78 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/space name.txt" + "value": "/fixture/object-tests/keys/trailing-slash/" } }, { - "at": "/body_base64", + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "1\"fixture-6d60d5bbaa47\"2\"fixture-32b70ae425ac\"" + } + }, + { + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "MDEyMzQ1Njc4OQ==" + "value": "fixture-upload+/276ca18046f9=" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "utf8", + "data": "\nhttps://fixture.invalid/fixture/object-tests/keys/trailing-slash/fixtureobject-tests/keys/trailing-slash/"fixture-ae1b6d1d32ce"E0gM19kR9Fk=FULL_OBJECT" + }, + "framing": "chunked" + } + }, + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "POST" } }, { - "at": "/headers/x-ms-blob-type", + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/keys/trailing-slash/" + } + }, + { + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "\"fixture-6d60d5bbaa47\"1\"fixture-32b70ae425ac\"2" + } + }, + { + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "BlockBlob" + "value": "fixture-upload+/276ca18046f9=" } } ], @@ -64863,21 +97826,19 @@ ], "allow_query": [], "response": { - "status": 201, + "status": 200, "headers": { - "content-md5": "eB5eJF1ptWaXm4bijSPyxw==", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-bf139483d631\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true" + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "" - } + "encoding": "utf8", + "data": "\nhttps://fixture.invalid/fixture/object-tests/keys/trailing-slash/fixtureobject-tests/keys/trailing-slash/"fixture-ae1b6d1d32ce"E0gM19kR9Fk=FULL_OBJECT" + }, + "framing": "chunked" } } ] @@ -64897,7 +97858,7 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-bf139483d631\"" + "value": "\"fixture-ae1b6d1d32ce\"" } }, { @@ -64915,17 +97876,16 @@ "refusal": null }, { - "id": "operations/azure-hns/put-created-key-non-ascii", - "profile": "azure-hns", + "id": "operations/s3/delete-accepted", + "profile": "s3", "lane": "core", - "purpose": "put created, with the key \"café/雪.txt\"", + "purpose": "delete accepted", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "body_base64": "MDEyMzQ1Njc4OQ==", - "key": "object-tests/keys/café/雪.txt", - "op": "put" + "key": "object-tests/remove/present.txt", + "op": "delete" }, "exchanges": [ { @@ -64937,7 +97897,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "DELETE" } }, { @@ -64945,7 +97905,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/café/雪.txt" + "value": "/fixture/object-tests/remove/present.txt" } }, { @@ -64953,15 +97913,7 @@ "optional": false, "rule": { "is": "equal", - "value": "MDEyMzQ1Njc4OQ==" - } - }, - { - "at": "/headers/x-ms-blob-type", - "optional": false, - "rule": { - "is": "equal", - "value": "BlockBlob" + "value": "" } } ], @@ -64970,16 +97922,12 @@ ], "allow_query": [], "response": { - "status": 201, + "status": 204, "headers": { - "content-md5": "eB5eJF1ptWaXm4bijSPyxw==", "date": { "from": "now" }, - "etag": "\"fixture-bf139483d631\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true" + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "base64", @@ -64998,41 +97946,21 @@ "is": "equal", "value": "ok" } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-bf139483d631\"" - } - }, - { - "at": "/value/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } } ], "refusal": null }, { - "id": "operations/azure-hns/put-created-key-double-slash", - "profile": "azure-hns", + "id": "operations/s3/delete-accepted-key-question", + "profile": "s3", "lane": "core", - "purpose": "put created, with the key \"double//slash.txt\"", + "purpose": "delete accepted, with the key \"question?mark.txt\"", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "body_base64": "MDEyMzQ1Njc4OQ==", - "key": "object-tests/keys/double//slash.txt", - "op": "put" + "key": "object-tests/keys/question?mark.txt", + "op": "delete" }, "exchanges": [ { @@ -65044,7 +97972,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "DELETE" } }, { @@ -65052,7 +97980,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/double//slash.txt" + "value": "/fixture/object-tests/keys/question?mark.txt" } }, { @@ -65060,15 +97988,7 @@ "optional": false, "rule": { "is": "equal", - "value": "MDEyMzQ1Njc4OQ==" - } - }, - { - "at": "/headers/x-ms-blob-type", - "optional": false, - "rule": { - "is": "equal", - "value": "BlockBlob" + "value": "" } } ], @@ -65077,16 +97997,12 @@ ], "allow_query": [], "response": { - "status": 201, + "status": 204, "headers": { - "content-md5": "eB5eJF1ptWaXm4bijSPyxw==", "date": { "from": "now" }, - "etag": "\"fixture-bf139483d631\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true" + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "base64", @@ -65105,41 +98021,21 @@ "is": "equal", "value": "ok" } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-bf139483d631\"" - } - }, - { - "at": "/value/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } } ], "refusal": null }, { - "id": "operations/azure-hns/put-created-key-trailing-slash", - "profile": "azure-hns", + "id": "operations/s3/delete-accepted-key-hash", + "profile": "s3", "lane": "core", - "purpose": "put created, with the key \"trailing-slash/\"", + "purpose": "delete accepted, with the key \"hash#tag.txt\"", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "body_base64": "MDEyMzQ1Njc4OQ==", - "key": "object-tests/keys/trailing-slash/", - "op": "put" + "key": "object-tests/keys/hash#tag.txt", + "op": "delete" }, "exchanges": [ { @@ -65151,7 +98047,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "DELETE" } }, { @@ -65159,7 +98055,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/trailing-slash/" + "value": "/fixture/object-tests/keys/hash#tag.txt" } }, { @@ -65167,15 +98063,7 @@ "optional": false, "rule": { "is": "equal", - "value": "MDEyMzQ1Njc4OQ==" - } - }, - { - "at": "/headers/x-ms-blob-type", - "optional": false, - "rule": { - "is": "equal", - "value": "BlockBlob" + "value": "" } } ], @@ -65184,17 +98072,16 @@ ], "allow_query": [], "response": { - "status": 400, + "status": 204, "headers": { - "content-type": "application/xml", "date": { "from": "now" }, - "x-ms-error-code": "InvalidUri" + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "InvalidUriFixture error" + "encoding": "base64", + "data": "" } } } @@ -65207,40 +98094,23 @@ "optional": false, "rule": { "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 400 - } - }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "equal", - "value": "InvalidUri" + "value": "ok" } } ], "refusal": null }, { - "id": "operations/azure-hns/copy-missing-source", - "profile": "azure-hns", + "id": "operations/s3/delete-accepted-key-percent", + "profile": "s3", "lane": "core", - "purpose": "Refuse a copy whose source does not exist", + "purpose": "delete accepted, with the key \"percent%20.txt\"", "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/copy-blob" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/copy/target.txt", - "op": "copy", - "source_key": "object-tests/copy/absent.txt" + "key": "object-tests/keys/percent%20.txt", + "op": "delete" }, "exchanges": [ { @@ -65252,7 +98122,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "DELETE" } }, { @@ -65260,7 +98130,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/copy/target.txt" + "value": "/fixture/object-tests/keys/percent%20.txt" } }, { @@ -65270,30 +98140,23 @@ "is": "equal", "value": "" } - }, - { - "at": "/headers/x-ms-copy-source", - "optional": false, - "rule": { - "is": "matches", - "pattern": "https?://[^/]+/fixture/object-tests/copy/absent\\.txt" - } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 404, + "status": 204, "headers": { - "content-type": "application/xml", "date": { "from": "now" }, - "x-ms-error-code": "BlobNotFound" + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "BlobNotFoundFixture error" + "encoding": "base64", + "data": "" } } } @@ -65306,40 +98169,23 @@ "optional": false, "rule": { "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 404 - } - }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "equal", - "value": "BlobNotFound" + "value": "ok" } } ], "refusal": null }, { - "id": "operations/azure-hns/copy", - "profile": "azure-hns", + "id": "operations/s3/delete-accepted-key-plus", + "profile": "s3", "lane": "core", - "purpose": "Copy an object to another key in the same container", + "purpose": "delete accepted, with the key \"plus+plus.txt\"", "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/copy-blob" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/copy/target.txt", - "op": "copy", - "source_key": "object-tests/copy/source.txt" + "key": "object-tests/keys/plus+plus.txt", + "op": "delete" }, "exchanges": [ { @@ -65351,7 +98197,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "DELETE" } }, { @@ -65359,7 +98205,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/copy/target.txt" + "value": "/fixture/object-tests/keys/plus+plus.txt" } }, { @@ -65369,31 +98215,23 @@ "is": "equal", "value": "" } - }, - { - "at": "/headers/x-ms-copy-source", - "optional": false, - "rule": { - "is": "matches", - "pattern": "https?://[^/]+/fixture/object-tests/copy/source\\.txt" - } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 202, + "status": 204, "headers": { "date": { "from": "now" }, - "etag": "\"fixture-etag\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-copy-id": "fixture-copy-id", - "x-ms-copy-status": "success" + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "empty" + "encoding": "base64", + "data": "" } } } @@ -65408,29 +98246,21 @@ "is": "equal", "value": "ok" } - }, - { - "at": "/value/copy_status", - "optional": false, - "rule": { - "is": "equal", - "value": "success" - } } ], "refusal": null }, { - "id": "operations/azure-hns/get-page-ranges", - "profile": "azure-hns", + "id": "operations/s3/delete-accepted-key-space", + "profile": "s3", "lane": "core", - "purpose": "List the written ranges of a page blob, which an HNS account does not support", + "purpose": "delete accepted, with the key \"space name.txt\"", "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/get-page-ranges" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/pages/object.vhd", - "op": "azure.get_page_ranges" + "key": "object-tests/keys/space name.txt", + "op": "delete" }, "exchanges": [ { @@ -65442,7 +98272,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "DELETE" } }, { @@ -65450,7 +98280,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/pages/object.vhd" + "value": "/fixture/object-tests/keys/space name.txt" } }, { @@ -65460,30 +98290,23 @@ "is": "equal", "value": "" } - }, - { - "at": "/query/comp", - "optional": false, - "rule": { - "is": "equal", - "value": "pagelist" - } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 409, + "status": 204, "headers": { - "content-type": "application/xml", "date": { "from": "now" }, - "x-ms-error-code": "FeatureNotYetSupportedForHierarchicalNamespaceAccounts" + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "FeatureNotYetSupportedForHierarchicalNamespaceAccountsFixture error" + "encoding": "base64", + "data": "" } } } @@ -65496,41 +98319,23 @@ "optional": false, "rule": { "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 409 - } - }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "equal", - "value": "FeatureNotYetSupportedForHierarchicalNamespaceAccounts" + "value": "ok" } } ], "refusal": null }, { - "id": "operations/azure-hns/upload-pages-unaligned", - "profile": "azure-hns", + "id": "operations/s3/delete-accepted-key-non-ascii", + "profile": "s3", "lane": "core", - "purpose": "Refuse a page write that does not start on a 512-byte boundary, which an HNS account does not support", + "purpose": "delete accepted, with the key \"café/雪.txt\"", "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/put-page" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "body_base64": "cHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHA=", - "key": "object-tests/pages/object.vhd", - "offset": 1, - "op": "azure.upload_pages" + "key": "object-tests/keys/café/雪.txt", + "op": "delete" }, "exchanges": [ { @@ -65542,7 +98347,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "DELETE" } }, { @@ -65550,7 +98355,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/pages/object.vhd" + "value": "/fixture/object-tests/keys/café/雪.txt" } }, { @@ -65558,48 +98363,25 @@ "optional": false, "rule": { "is": "equal", - "value": "cHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHA=" - } - }, - { - "at": "/query/comp", - "optional": false, - "rule": { - "is": "equal", - "value": "page" - } - }, - { - "at": "/headers/x-ms-page-write", - "optional": false, - "rule": { - "is": "equal", - "value": "update" - } - }, - { - "at": "/headers/x-ms-range", - "optional": false, - "rule": { - "is": "equal", - "value": "bytes=1-512" + "value": "" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 400, + "status": 204, "headers": { - "content-type": "application/xml", "date": { "from": "now" }, - "x-ms-error-code": "InvalidHeaderValue" + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "InvalidHeaderValueFixture error" + "encoding": "base64", + "data": "" } } } @@ -65612,41 +98394,23 @@ "optional": false, "rule": { "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 400 - } - }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "equal", - "value": "InvalidHeaderValue" + "value": "ok" } } ], "refusal": null }, { - "id": "operations/azure-hns/upload-pages", - "profile": "azure-hns", + "id": "operations/s3/delete-accepted-key-double-slash", + "profile": "s3", "lane": "core", - "purpose": "Write the first page of a page blob, which an HNS account does not support", + "purpose": "delete accepted, with the key \"double//slash.txt\"", "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/put-page" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "body_base64": "cHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHA=", - "key": "object-tests/pages/object.vhd", - "offset": 0, - "op": "azure.upload_pages" + "key": "object-tests/keys/double//slash.txt", + "op": "delete" }, "exchanges": [ { @@ -65658,7 +98422,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "DELETE" } }, { @@ -65666,7 +98430,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/pages/object.vhd" + "value": "/fixture/object-tests/keys/double//slash.txt" } }, { @@ -65674,48 +98438,25 @@ "optional": false, "rule": { "is": "equal", - "value": "cHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHA=" - } - }, - { - "at": "/query/comp", - "optional": false, - "rule": { - "is": "equal", - "value": "page" - } - }, - { - "at": "/headers/x-ms-page-write", - "optional": false, - "rule": { - "is": "equal", - "value": "update" - } - }, - { - "at": "/headers/x-ms-range", - "optional": false, - "rule": { - "is": "equal", - "value": "bytes=0-511" + "value": "" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 409, + "status": 204, "headers": { - "content-type": "application/xml", "date": { "from": "now" }, - "x-ms-error-code": "FeatureNotYetSupportedForHierarchicalNamespaceAccounts" + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "FeatureNotYetSupportedForHierarchicalNamespaceAccountsFixture error" + "encoding": "base64", + "data": "" } } } @@ -65728,40 +98469,23 @@ "optional": false, "rule": { "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 409 - } - }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "equal", - "value": "FeatureNotYetSupportedForHierarchicalNamespaceAccounts" + "value": "ok" } } ], "refusal": null }, { - "id": "operations/azure-hns/create-page", - "profile": "azure-hns", + "id": "operations/s3/delete-accepted-key-trailing-slash", + "profile": "s3", "lane": "core", - "purpose": "Create a page blob of 1,024 bytes, which an HNS account does not support", + "purpose": "delete accepted, with the key \"trailing-slash/\"", "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/put-blob" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/pages/object.vhd", - "op": "azure.create_page", - "size": 1024 + "key": "object-tests/keys/trailing-slash/", + "op": "delete" }, "exchanges": [ { @@ -65773,7 +98497,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "DELETE" } }, { @@ -65781,7 +98505,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/pages/object.vhd" + "value": "/fixture/object-tests/keys/trailing-slash/" } }, { @@ -65791,38 +98515,23 @@ "is": "equal", "value": "" } - }, - { - "at": "/headers/x-ms-blob-type", - "optional": false, - "rule": { - "is": "equal", - "value": "PageBlob" - } - }, - { - "at": "/headers/x-ms-blob-content-length", - "optional": false, - "rule": { - "is": "equal", - "value": "1024" - } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 409, + "status": 204, "headers": { - "content-type": "application/xml", "date": { "from": "now" }, - "x-ms-error-code": "FeatureNotYetSupportedForHierarchicalNamespaceAccounts" + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "FeatureNotYetSupportedForHierarchicalNamespaceAccountsFixture error" + "encoding": "base64", + "data": "" } } } @@ -65835,40 +98544,27 @@ "optional": false, "rule": { "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 409 - } - }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "equal", - "value": "FeatureNotYetSupportedForHierarchicalNamespaceAccounts" + "value": "ok" } } ], "refusal": null }, { - "id": "operations/azure-hns/append-block-to-block-blob", - "profile": "azure-hns", + "id": "operations/s3/delete-many", + "profile": "s3", "lane": "core", - "purpose": "Refuse an append to a block blob", + "purpose": "Delete several objects in one request and report each result", "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/append-block" + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjects.html" ], "call": { - "body_base64": "c2Vjb25k", - "key": "object-tests/append/object.log", - "op": "azure.append_block" + "keys": [ + "object-tests/batch/a.txt", + "object-tests/batch/b.txt", + "object-tests/batch/absent.txt" + ], + "op": "delete_many" }, "exchanges": [ { @@ -65880,7 +98576,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "POST" } }, { @@ -65888,41 +98584,60 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/append/object.log" + "value": "/fixture" } }, { - "at": "/body_base64", + "at": "/body_text", "optional": false, "rule": { - "is": "equal", - "value": "c2Vjb25k" + "is": "xml", + "value": "object-tests/batch/a.txtobject-tests/batch/b.txtobject-tests/batch/absent.txt" } }, { - "at": "/query/comp", + "at": "/query/delete", "optional": false, "rule": { "is": "equal", - "value": "appendblock" + "value": "" + } + }, + { + "at": "/headers/x-amz-checksum-crc64nvme", + "optional": false, + "rule": { + "is": "matches", + "pattern": "[A-Za-z0-9+/]{11}=" + } + }, + { + "at": "", + "optional": false, + "rule": { + "is": "body_checksum", + "header": "x-amz-checksum-crc64nvme", + "algorithm": "crc64nvme" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 409, + "status": 200, "headers": { "content-type": "application/xml", "date": { "from": "now" - }, - "x-ms-error-code": "InvalidBlobType" + } }, "body": { "encoding": "utf8", - "data": "InvalidBlobTypeFixture error" - } + "data": "\nobject-tests/batch/a.txtobject-tests/batch/b.txtobject-tests/batch/absent.txt" + }, + "framing": "chunked" } } ] @@ -65934,41 +98649,49 @@ "optional": false, "rule": { "is": "equal", - "value": "error" + "value": "ok" } }, { - "at": "/status", + "at": "/value/deleted", "optional": false, "rule": { "is": "equal", - "value": 409 + "value": [ + "object-tests/batch/a.txt", + "object-tests/batch/b.txt", + "object-tests/batch/absent.txt" + ] } }, { - "at": "/code", + "at": "/value/errors", "optional": false, "rule": { "is": "equal", - "value": "InvalidBlobType" + "value": [] } } ], "refusal": null }, { - "id": "operations/azure-hns/append-block-at-wrong-position", - "profile": "azure-hns", + "id": "operations/s3/delete-many-errors", + "profile": "s3", "lane": "core", - "purpose": "Refuse an append whose position condition does not match the blob length", + "purpose": "Report each key that S3 lists as an Error in a DeleteObjects answer, here AccessDenied, as that key's error, and the others as deleted", "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/append-block" + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjects.html" ], + "origin": "transient", + "derived_from": "operations/s3/delete-many", "call": { - "append_position": 0, - "body_base64": "c2Vjb25k", - "key": "object-tests/append/object.log", - "op": "azure.append_block" + "keys": [ + "object-tests/batch/a.txt", + "object-tests/batch/b.txt", + "object-tests/batch/absent.txt" + ], + "op": "delete_many" }, "exchanges": [ { @@ -65980,7 +98703,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "POST" } }, { @@ -65988,49 +98711,60 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/append/object.log" + "value": "/fixture" } }, { - "at": "/body_base64", + "at": "/body_text", "optional": false, "rule": { - "is": "equal", - "value": "c2Vjb25k" + "is": "xml", + "value": "object-tests/batch/a.txtobject-tests/batch/b.txtobject-tests/batch/absent.txt" } }, { - "at": "/query/comp", + "at": "/query/delete", "optional": false, "rule": { "is": "equal", - "value": "appendblock" + "value": "" } }, { - "at": "/headers/x-ms-blob-condition-appendpos", + "at": "/headers/x-amz-checksum-crc64nvme", "optional": false, "rule": { - "is": "equal", - "value": "0" + "is": "matches", + "pattern": "[A-Za-z0-9+/]{11}=" + } + }, + { + "at": "", + "optional": false, + "rule": { + "is": "body_checksum", + "header": "x-amz-checksum-crc64nvme", + "algorithm": "crc64nvme" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 412, + "status": 200, "headers": { "content-type": "application/xml", "date": { "from": "now" - }, - "x-ms-error-code": "AppendPositionConditionNotMet" + } }, "body": { "encoding": "utf8", - "data": "AppendPositionConditionNotMetFixture error" - } + "data": "\nobject-tests/batch/a.txtobject-tests/batch/b.txtobject-tests/batch/absent.txtAccessDeniedFixture error" + }, + "framing": "chunked" } } ] @@ -66042,40 +98776,1048 @@ "optional": false, "rule": { "is": "equal", - "value": "error" + "value": "ok" } }, { - "at": "/status", + "at": "/value/deleted", "optional": false, "rule": { "is": "equal", - "value": 412 + "value": [ + "object-tests/batch/a.txt", + "object-tests/batch/b.txt" + ] } }, { - "at": "/code", + "at": "/value/errors", "optional": false, "rule": { "is": "equal", - "value": "AppendPositionConditionNotMet" + "value": [ + { + "code": "AccessDenied", + "key": "object-tests/batch/absent.txt" + } + ] } } ], "refusal": null }, { - "id": "operations/azure-hns/append-block", - "profile": "azure-hns", + "id": "operations/s3/delete-many-1000", + "profile": "s3", "lane": "core", - "purpose": "Append a block to an append blob and report its offset", + "purpose": "Delete 1,000 keys in one DeleteObjects request, the most S3 takes", "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/append-block" + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjects.html" ], "call": { - "body_base64": "c2Vjb25k", - "key": "object-tests/append/object.log", - "op": "azure.append_block" + "keys": [ + "object-tests/batch/many-0000.txt", + "object-tests/batch/many-0001.txt", + "object-tests/batch/many-0002.txt", + "object-tests/batch/many-0003.txt", + "object-tests/batch/many-0004.txt", + "object-tests/batch/many-0005.txt", + "object-tests/batch/many-0006.txt", + "object-tests/batch/many-0007.txt", + "object-tests/batch/many-0008.txt", + "object-tests/batch/many-0009.txt", + "object-tests/batch/many-0010.txt", + "object-tests/batch/many-0011.txt", + "object-tests/batch/many-0012.txt", + "object-tests/batch/many-0013.txt", + "object-tests/batch/many-0014.txt", + "object-tests/batch/many-0015.txt", + "object-tests/batch/many-0016.txt", + "object-tests/batch/many-0017.txt", + "object-tests/batch/many-0018.txt", + "object-tests/batch/many-0019.txt", + "object-tests/batch/many-0020.txt", + "object-tests/batch/many-0021.txt", + "object-tests/batch/many-0022.txt", + "object-tests/batch/many-0023.txt", + "object-tests/batch/many-0024.txt", + "object-tests/batch/many-0025.txt", + "object-tests/batch/many-0026.txt", + "object-tests/batch/many-0027.txt", + "object-tests/batch/many-0028.txt", + "object-tests/batch/many-0029.txt", + "object-tests/batch/many-0030.txt", + "object-tests/batch/many-0031.txt", + "object-tests/batch/many-0032.txt", + "object-tests/batch/many-0033.txt", + "object-tests/batch/many-0034.txt", + "object-tests/batch/many-0035.txt", + "object-tests/batch/many-0036.txt", + "object-tests/batch/many-0037.txt", + "object-tests/batch/many-0038.txt", + "object-tests/batch/many-0039.txt", + "object-tests/batch/many-0040.txt", + "object-tests/batch/many-0041.txt", + "object-tests/batch/many-0042.txt", + "object-tests/batch/many-0043.txt", + "object-tests/batch/many-0044.txt", + "object-tests/batch/many-0045.txt", + "object-tests/batch/many-0046.txt", + "object-tests/batch/many-0047.txt", + "object-tests/batch/many-0048.txt", + "object-tests/batch/many-0049.txt", + "object-tests/batch/many-0050.txt", + "object-tests/batch/many-0051.txt", + "object-tests/batch/many-0052.txt", + "object-tests/batch/many-0053.txt", + "object-tests/batch/many-0054.txt", + "object-tests/batch/many-0055.txt", + "object-tests/batch/many-0056.txt", + "object-tests/batch/many-0057.txt", + "object-tests/batch/many-0058.txt", + "object-tests/batch/many-0059.txt", + "object-tests/batch/many-0060.txt", + "object-tests/batch/many-0061.txt", + "object-tests/batch/many-0062.txt", + "object-tests/batch/many-0063.txt", + "object-tests/batch/many-0064.txt", + "object-tests/batch/many-0065.txt", + "object-tests/batch/many-0066.txt", + "object-tests/batch/many-0067.txt", + "object-tests/batch/many-0068.txt", + "object-tests/batch/many-0069.txt", + "object-tests/batch/many-0070.txt", + "object-tests/batch/many-0071.txt", + "object-tests/batch/many-0072.txt", + "object-tests/batch/many-0073.txt", + "object-tests/batch/many-0074.txt", + "object-tests/batch/many-0075.txt", + "object-tests/batch/many-0076.txt", + "object-tests/batch/many-0077.txt", + "object-tests/batch/many-0078.txt", + "object-tests/batch/many-0079.txt", + "object-tests/batch/many-0080.txt", + "object-tests/batch/many-0081.txt", + "object-tests/batch/many-0082.txt", + "object-tests/batch/many-0083.txt", + "object-tests/batch/many-0084.txt", + "object-tests/batch/many-0085.txt", + "object-tests/batch/many-0086.txt", + "object-tests/batch/many-0087.txt", + "object-tests/batch/many-0088.txt", + "object-tests/batch/many-0089.txt", + "object-tests/batch/many-0090.txt", + "object-tests/batch/many-0091.txt", + "object-tests/batch/many-0092.txt", + "object-tests/batch/many-0093.txt", + "object-tests/batch/many-0094.txt", + "object-tests/batch/many-0095.txt", + "object-tests/batch/many-0096.txt", + "object-tests/batch/many-0097.txt", + "object-tests/batch/many-0098.txt", + "object-tests/batch/many-0099.txt", + "object-tests/batch/many-0100.txt", + "object-tests/batch/many-0101.txt", + "object-tests/batch/many-0102.txt", + "object-tests/batch/many-0103.txt", + "object-tests/batch/many-0104.txt", + "object-tests/batch/many-0105.txt", + "object-tests/batch/many-0106.txt", + "object-tests/batch/many-0107.txt", + "object-tests/batch/many-0108.txt", + "object-tests/batch/many-0109.txt", + "object-tests/batch/many-0110.txt", + "object-tests/batch/many-0111.txt", + "object-tests/batch/many-0112.txt", + "object-tests/batch/many-0113.txt", + "object-tests/batch/many-0114.txt", + "object-tests/batch/many-0115.txt", + "object-tests/batch/many-0116.txt", + "object-tests/batch/many-0117.txt", + "object-tests/batch/many-0118.txt", + "object-tests/batch/many-0119.txt", + "object-tests/batch/many-0120.txt", + "object-tests/batch/many-0121.txt", + "object-tests/batch/many-0122.txt", + "object-tests/batch/many-0123.txt", + "object-tests/batch/many-0124.txt", + "object-tests/batch/many-0125.txt", + "object-tests/batch/many-0126.txt", + "object-tests/batch/many-0127.txt", + "object-tests/batch/many-0128.txt", + "object-tests/batch/many-0129.txt", + "object-tests/batch/many-0130.txt", + "object-tests/batch/many-0131.txt", + "object-tests/batch/many-0132.txt", + "object-tests/batch/many-0133.txt", + "object-tests/batch/many-0134.txt", + "object-tests/batch/many-0135.txt", + "object-tests/batch/many-0136.txt", + "object-tests/batch/many-0137.txt", + "object-tests/batch/many-0138.txt", + "object-tests/batch/many-0139.txt", + "object-tests/batch/many-0140.txt", + "object-tests/batch/many-0141.txt", + "object-tests/batch/many-0142.txt", + "object-tests/batch/many-0143.txt", + "object-tests/batch/many-0144.txt", + "object-tests/batch/many-0145.txt", + "object-tests/batch/many-0146.txt", + "object-tests/batch/many-0147.txt", + "object-tests/batch/many-0148.txt", + "object-tests/batch/many-0149.txt", + "object-tests/batch/many-0150.txt", + "object-tests/batch/many-0151.txt", + "object-tests/batch/many-0152.txt", + "object-tests/batch/many-0153.txt", + "object-tests/batch/many-0154.txt", + "object-tests/batch/many-0155.txt", + "object-tests/batch/many-0156.txt", + "object-tests/batch/many-0157.txt", + "object-tests/batch/many-0158.txt", + "object-tests/batch/many-0159.txt", + "object-tests/batch/many-0160.txt", + "object-tests/batch/many-0161.txt", + "object-tests/batch/many-0162.txt", + "object-tests/batch/many-0163.txt", + "object-tests/batch/many-0164.txt", + "object-tests/batch/many-0165.txt", + "object-tests/batch/many-0166.txt", + "object-tests/batch/many-0167.txt", + "object-tests/batch/many-0168.txt", + "object-tests/batch/many-0169.txt", + "object-tests/batch/many-0170.txt", + "object-tests/batch/many-0171.txt", + "object-tests/batch/many-0172.txt", + "object-tests/batch/many-0173.txt", + "object-tests/batch/many-0174.txt", + "object-tests/batch/many-0175.txt", + "object-tests/batch/many-0176.txt", + "object-tests/batch/many-0177.txt", + "object-tests/batch/many-0178.txt", + "object-tests/batch/many-0179.txt", + "object-tests/batch/many-0180.txt", + "object-tests/batch/many-0181.txt", + "object-tests/batch/many-0182.txt", + "object-tests/batch/many-0183.txt", + "object-tests/batch/many-0184.txt", + "object-tests/batch/many-0185.txt", + "object-tests/batch/many-0186.txt", + "object-tests/batch/many-0187.txt", + "object-tests/batch/many-0188.txt", + "object-tests/batch/many-0189.txt", + "object-tests/batch/many-0190.txt", + "object-tests/batch/many-0191.txt", + "object-tests/batch/many-0192.txt", + "object-tests/batch/many-0193.txt", + "object-tests/batch/many-0194.txt", + "object-tests/batch/many-0195.txt", + "object-tests/batch/many-0196.txt", + "object-tests/batch/many-0197.txt", + "object-tests/batch/many-0198.txt", + "object-tests/batch/many-0199.txt", + "object-tests/batch/many-0200.txt", + "object-tests/batch/many-0201.txt", + "object-tests/batch/many-0202.txt", + "object-tests/batch/many-0203.txt", + "object-tests/batch/many-0204.txt", + "object-tests/batch/many-0205.txt", + "object-tests/batch/many-0206.txt", + "object-tests/batch/many-0207.txt", + "object-tests/batch/many-0208.txt", + "object-tests/batch/many-0209.txt", + "object-tests/batch/many-0210.txt", + "object-tests/batch/many-0211.txt", + "object-tests/batch/many-0212.txt", + "object-tests/batch/many-0213.txt", + "object-tests/batch/many-0214.txt", + "object-tests/batch/many-0215.txt", + "object-tests/batch/many-0216.txt", + "object-tests/batch/many-0217.txt", + "object-tests/batch/many-0218.txt", + "object-tests/batch/many-0219.txt", + "object-tests/batch/many-0220.txt", + "object-tests/batch/many-0221.txt", + "object-tests/batch/many-0222.txt", + "object-tests/batch/many-0223.txt", + "object-tests/batch/many-0224.txt", + "object-tests/batch/many-0225.txt", + "object-tests/batch/many-0226.txt", + "object-tests/batch/many-0227.txt", + "object-tests/batch/many-0228.txt", + "object-tests/batch/many-0229.txt", + "object-tests/batch/many-0230.txt", + "object-tests/batch/many-0231.txt", + "object-tests/batch/many-0232.txt", + "object-tests/batch/many-0233.txt", + "object-tests/batch/many-0234.txt", + "object-tests/batch/many-0235.txt", + "object-tests/batch/many-0236.txt", + "object-tests/batch/many-0237.txt", + "object-tests/batch/many-0238.txt", + "object-tests/batch/many-0239.txt", + "object-tests/batch/many-0240.txt", + "object-tests/batch/many-0241.txt", + "object-tests/batch/many-0242.txt", + "object-tests/batch/many-0243.txt", + "object-tests/batch/many-0244.txt", + "object-tests/batch/many-0245.txt", + "object-tests/batch/many-0246.txt", + "object-tests/batch/many-0247.txt", + "object-tests/batch/many-0248.txt", + "object-tests/batch/many-0249.txt", + "object-tests/batch/many-0250.txt", + "object-tests/batch/many-0251.txt", + "object-tests/batch/many-0252.txt", + "object-tests/batch/many-0253.txt", + "object-tests/batch/many-0254.txt", + "object-tests/batch/many-0255.txt", + "object-tests/batch/many-0256.txt", + "object-tests/batch/many-0257.txt", + "object-tests/batch/many-0258.txt", + "object-tests/batch/many-0259.txt", + "object-tests/batch/many-0260.txt", + "object-tests/batch/many-0261.txt", + "object-tests/batch/many-0262.txt", + "object-tests/batch/many-0263.txt", + "object-tests/batch/many-0264.txt", + "object-tests/batch/many-0265.txt", + "object-tests/batch/many-0266.txt", + "object-tests/batch/many-0267.txt", + "object-tests/batch/many-0268.txt", + "object-tests/batch/many-0269.txt", + "object-tests/batch/many-0270.txt", + "object-tests/batch/many-0271.txt", + "object-tests/batch/many-0272.txt", + "object-tests/batch/many-0273.txt", + "object-tests/batch/many-0274.txt", + "object-tests/batch/many-0275.txt", + "object-tests/batch/many-0276.txt", + "object-tests/batch/many-0277.txt", + "object-tests/batch/many-0278.txt", + "object-tests/batch/many-0279.txt", + "object-tests/batch/many-0280.txt", + "object-tests/batch/many-0281.txt", + "object-tests/batch/many-0282.txt", + "object-tests/batch/many-0283.txt", + "object-tests/batch/many-0284.txt", + "object-tests/batch/many-0285.txt", + "object-tests/batch/many-0286.txt", + "object-tests/batch/many-0287.txt", + "object-tests/batch/many-0288.txt", + "object-tests/batch/many-0289.txt", + "object-tests/batch/many-0290.txt", + "object-tests/batch/many-0291.txt", + "object-tests/batch/many-0292.txt", + "object-tests/batch/many-0293.txt", + "object-tests/batch/many-0294.txt", + "object-tests/batch/many-0295.txt", + "object-tests/batch/many-0296.txt", + "object-tests/batch/many-0297.txt", + "object-tests/batch/many-0298.txt", + "object-tests/batch/many-0299.txt", + "object-tests/batch/many-0300.txt", + "object-tests/batch/many-0301.txt", + "object-tests/batch/many-0302.txt", + "object-tests/batch/many-0303.txt", + "object-tests/batch/many-0304.txt", + "object-tests/batch/many-0305.txt", + "object-tests/batch/many-0306.txt", + "object-tests/batch/many-0307.txt", + "object-tests/batch/many-0308.txt", + "object-tests/batch/many-0309.txt", + "object-tests/batch/many-0310.txt", + "object-tests/batch/many-0311.txt", + "object-tests/batch/many-0312.txt", + "object-tests/batch/many-0313.txt", + "object-tests/batch/many-0314.txt", + "object-tests/batch/many-0315.txt", + "object-tests/batch/many-0316.txt", + "object-tests/batch/many-0317.txt", + "object-tests/batch/many-0318.txt", + "object-tests/batch/many-0319.txt", + "object-tests/batch/many-0320.txt", + "object-tests/batch/many-0321.txt", + "object-tests/batch/many-0322.txt", + "object-tests/batch/many-0323.txt", + "object-tests/batch/many-0324.txt", + "object-tests/batch/many-0325.txt", + "object-tests/batch/many-0326.txt", + "object-tests/batch/many-0327.txt", + "object-tests/batch/many-0328.txt", + "object-tests/batch/many-0329.txt", + "object-tests/batch/many-0330.txt", + "object-tests/batch/many-0331.txt", + "object-tests/batch/many-0332.txt", + "object-tests/batch/many-0333.txt", + "object-tests/batch/many-0334.txt", + "object-tests/batch/many-0335.txt", + "object-tests/batch/many-0336.txt", + "object-tests/batch/many-0337.txt", + "object-tests/batch/many-0338.txt", + "object-tests/batch/many-0339.txt", + "object-tests/batch/many-0340.txt", + "object-tests/batch/many-0341.txt", + "object-tests/batch/many-0342.txt", + "object-tests/batch/many-0343.txt", + "object-tests/batch/many-0344.txt", + "object-tests/batch/many-0345.txt", + "object-tests/batch/many-0346.txt", + "object-tests/batch/many-0347.txt", + "object-tests/batch/many-0348.txt", + "object-tests/batch/many-0349.txt", + "object-tests/batch/many-0350.txt", + "object-tests/batch/many-0351.txt", + "object-tests/batch/many-0352.txt", + "object-tests/batch/many-0353.txt", + "object-tests/batch/many-0354.txt", + "object-tests/batch/many-0355.txt", + "object-tests/batch/many-0356.txt", + "object-tests/batch/many-0357.txt", + "object-tests/batch/many-0358.txt", + "object-tests/batch/many-0359.txt", + "object-tests/batch/many-0360.txt", + "object-tests/batch/many-0361.txt", + "object-tests/batch/many-0362.txt", + "object-tests/batch/many-0363.txt", + "object-tests/batch/many-0364.txt", + "object-tests/batch/many-0365.txt", + "object-tests/batch/many-0366.txt", + "object-tests/batch/many-0367.txt", + "object-tests/batch/many-0368.txt", + "object-tests/batch/many-0369.txt", + "object-tests/batch/many-0370.txt", + "object-tests/batch/many-0371.txt", + "object-tests/batch/many-0372.txt", + "object-tests/batch/many-0373.txt", + "object-tests/batch/many-0374.txt", + "object-tests/batch/many-0375.txt", + "object-tests/batch/many-0376.txt", + "object-tests/batch/many-0377.txt", + "object-tests/batch/many-0378.txt", + "object-tests/batch/many-0379.txt", + "object-tests/batch/many-0380.txt", + "object-tests/batch/many-0381.txt", + "object-tests/batch/many-0382.txt", + "object-tests/batch/many-0383.txt", + "object-tests/batch/many-0384.txt", + "object-tests/batch/many-0385.txt", + "object-tests/batch/many-0386.txt", + "object-tests/batch/many-0387.txt", + "object-tests/batch/many-0388.txt", + "object-tests/batch/many-0389.txt", + "object-tests/batch/many-0390.txt", + "object-tests/batch/many-0391.txt", + "object-tests/batch/many-0392.txt", + "object-tests/batch/many-0393.txt", + "object-tests/batch/many-0394.txt", + "object-tests/batch/many-0395.txt", + "object-tests/batch/many-0396.txt", + "object-tests/batch/many-0397.txt", + "object-tests/batch/many-0398.txt", + "object-tests/batch/many-0399.txt", + "object-tests/batch/many-0400.txt", + "object-tests/batch/many-0401.txt", + "object-tests/batch/many-0402.txt", + "object-tests/batch/many-0403.txt", + "object-tests/batch/many-0404.txt", + "object-tests/batch/many-0405.txt", + "object-tests/batch/many-0406.txt", + "object-tests/batch/many-0407.txt", + "object-tests/batch/many-0408.txt", + "object-tests/batch/many-0409.txt", + "object-tests/batch/many-0410.txt", + "object-tests/batch/many-0411.txt", + "object-tests/batch/many-0412.txt", + "object-tests/batch/many-0413.txt", + "object-tests/batch/many-0414.txt", + "object-tests/batch/many-0415.txt", + "object-tests/batch/many-0416.txt", + "object-tests/batch/many-0417.txt", + "object-tests/batch/many-0418.txt", + "object-tests/batch/many-0419.txt", + "object-tests/batch/many-0420.txt", + "object-tests/batch/many-0421.txt", + "object-tests/batch/many-0422.txt", + "object-tests/batch/many-0423.txt", + "object-tests/batch/many-0424.txt", + "object-tests/batch/many-0425.txt", + "object-tests/batch/many-0426.txt", + "object-tests/batch/many-0427.txt", + "object-tests/batch/many-0428.txt", + "object-tests/batch/many-0429.txt", + "object-tests/batch/many-0430.txt", + "object-tests/batch/many-0431.txt", + "object-tests/batch/many-0432.txt", + "object-tests/batch/many-0433.txt", + "object-tests/batch/many-0434.txt", + "object-tests/batch/many-0435.txt", + "object-tests/batch/many-0436.txt", + "object-tests/batch/many-0437.txt", + "object-tests/batch/many-0438.txt", + "object-tests/batch/many-0439.txt", + "object-tests/batch/many-0440.txt", + "object-tests/batch/many-0441.txt", + "object-tests/batch/many-0442.txt", + "object-tests/batch/many-0443.txt", + "object-tests/batch/many-0444.txt", + "object-tests/batch/many-0445.txt", + "object-tests/batch/many-0446.txt", + "object-tests/batch/many-0447.txt", + "object-tests/batch/many-0448.txt", + "object-tests/batch/many-0449.txt", + "object-tests/batch/many-0450.txt", + "object-tests/batch/many-0451.txt", + "object-tests/batch/many-0452.txt", + "object-tests/batch/many-0453.txt", + "object-tests/batch/many-0454.txt", + "object-tests/batch/many-0455.txt", + "object-tests/batch/many-0456.txt", + "object-tests/batch/many-0457.txt", + "object-tests/batch/many-0458.txt", + "object-tests/batch/many-0459.txt", + "object-tests/batch/many-0460.txt", + "object-tests/batch/many-0461.txt", + "object-tests/batch/many-0462.txt", + "object-tests/batch/many-0463.txt", + "object-tests/batch/many-0464.txt", + "object-tests/batch/many-0465.txt", + "object-tests/batch/many-0466.txt", + "object-tests/batch/many-0467.txt", + "object-tests/batch/many-0468.txt", + "object-tests/batch/many-0469.txt", + "object-tests/batch/many-0470.txt", + "object-tests/batch/many-0471.txt", + "object-tests/batch/many-0472.txt", + "object-tests/batch/many-0473.txt", + "object-tests/batch/many-0474.txt", + "object-tests/batch/many-0475.txt", + "object-tests/batch/many-0476.txt", + "object-tests/batch/many-0477.txt", + "object-tests/batch/many-0478.txt", + "object-tests/batch/many-0479.txt", + "object-tests/batch/many-0480.txt", + "object-tests/batch/many-0481.txt", + "object-tests/batch/many-0482.txt", + "object-tests/batch/many-0483.txt", + "object-tests/batch/many-0484.txt", + "object-tests/batch/many-0485.txt", + "object-tests/batch/many-0486.txt", + "object-tests/batch/many-0487.txt", + "object-tests/batch/many-0488.txt", + "object-tests/batch/many-0489.txt", + "object-tests/batch/many-0490.txt", + "object-tests/batch/many-0491.txt", + "object-tests/batch/many-0492.txt", + "object-tests/batch/many-0493.txt", + "object-tests/batch/many-0494.txt", + "object-tests/batch/many-0495.txt", + "object-tests/batch/many-0496.txt", + "object-tests/batch/many-0497.txt", + "object-tests/batch/many-0498.txt", + "object-tests/batch/many-0499.txt", + "object-tests/batch/many-0500.txt", + "object-tests/batch/many-0501.txt", + "object-tests/batch/many-0502.txt", + "object-tests/batch/many-0503.txt", + "object-tests/batch/many-0504.txt", + "object-tests/batch/many-0505.txt", + "object-tests/batch/many-0506.txt", + "object-tests/batch/many-0507.txt", + "object-tests/batch/many-0508.txt", + "object-tests/batch/many-0509.txt", + "object-tests/batch/many-0510.txt", + "object-tests/batch/many-0511.txt", + "object-tests/batch/many-0512.txt", + "object-tests/batch/many-0513.txt", + "object-tests/batch/many-0514.txt", + "object-tests/batch/many-0515.txt", + "object-tests/batch/many-0516.txt", + "object-tests/batch/many-0517.txt", + "object-tests/batch/many-0518.txt", + "object-tests/batch/many-0519.txt", + "object-tests/batch/many-0520.txt", + "object-tests/batch/many-0521.txt", + "object-tests/batch/many-0522.txt", + "object-tests/batch/many-0523.txt", + "object-tests/batch/many-0524.txt", + "object-tests/batch/many-0525.txt", + "object-tests/batch/many-0526.txt", + "object-tests/batch/many-0527.txt", + "object-tests/batch/many-0528.txt", + "object-tests/batch/many-0529.txt", + "object-tests/batch/many-0530.txt", + "object-tests/batch/many-0531.txt", + "object-tests/batch/many-0532.txt", + "object-tests/batch/many-0533.txt", + "object-tests/batch/many-0534.txt", + "object-tests/batch/many-0535.txt", + "object-tests/batch/many-0536.txt", + "object-tests/batch/many-0537.txt", + "object-tests/batch/many-0538.txt", + "object-tests/batch/many-0539.txt", + "object-tests/batch/many-0540.txt", + "object-tests/batch/many-0541.txt", + "object-tests/batch/many-0542.txt", + "object-tests/batch/many-0543.txt", + "object-tests/batch/many-0544.txt", + "object-tests/batch/many-0545.txt", + "object-tests/batch/many-0546.txt", + "object-tests/batch/many-0547.txt", + "object-tests/batch/many-0548.txt", + "object-tests/batch/many-0549.txt", + "object-tests/batch/many-0550.txt", + "object-tests/batch/many-0551.txt", + "object-tests/batch/many-0552.txt", + "object-tests/batch/many-0553.txt", + "object-tests/batch/many-0554.txt", + "object-tests/batch/many-0555.txt", + "object-tests/batch/many-0556.txt", + "object-tests/batch/many-0557.txt", + "object-tests/batch/many-0558.txt", + "object-tests/batch/many-0559.txt", + "object-tests/batch/many-0560.txt", + "object-tests/batch/many-0561.txt", + "object-tests/batch/many-0562.txt", + "object-tests/batch/many-0563.txt", + "object-tests/batch/many-0564.txt", + "object-tests/batch/many-0565.txt", + "object-tests/batch/many-0566.txt", + "object-tests/batch/many-0567.txt", + "object-tests/batch/many-0568.txt", + "object-tests/batch/many-0569.txt", + "object-tests/batch/many-0570.txt", + "object-tests/batch/many-0571.txt", + "object-tests/batch/many-0572.txt", + "object-tests/batch/many-0573.txt", + "object-tests/batch/many-0574.txt", + "object-tests/batch/many-0575.txt", + "object-tests/batch/many-0576.txt", + "object-tests/batch/many-0577.txt", + "object-tests/batch/many-0578.txt", + "object-tests/batch/many-0579.txt", + "object-tests/batch/many-0580.txt", + "object-tests/batch/many-0581.txt", + "object-tests/batch/many-0582.txt", + "object-tests/batch/many-0583.txt", + "object-tests/batch/many-0584.txt", + "object-tests/batch/many-0585.txt", + "object-tests/batch/many-0586.txt", + "object-tests/batch/many-0587.txt", + "object-tests/batch/many-0588.txt", + "object-tests/batch/many-0589.txt", + "object-tests/batch/many-0590.txt", + "object-tests/batch/many-0591.txt", + "object-tests/batch/many-0592.txt", + "object-tests/batch/many-0593.txt", + "object-tests/batch/many-0594.txt", + "object-tests/batch/many-0595.txt", + "object-tests/batch/many-0596.txt", + "object-tests/batch/many-0597.txt", + "object-tests/batch/many-0598.txt", + "object-tests/batch/many-0599.txt", + "object-tests/batch/many-0600.txt", + "object-tests/batch/many-0601.txt", + "object-tests/batch/many-0602.txt", + "object-tests/batch/many-0603.txt", + "object-tests/batch/many-0604.txt", + "object-tests/batch/many-0605.txt", + "object-tests/batch/many-0606.txt", + "object-tests/batch/many-0607.txt", + "object-tests/batch/many-0608.txt", + "object-tests/batch/many-0609.txt", + "object-tests/batch/many-0610.txt", + "object-tests/batch/many-0611.txt", + "object-tests/batch/many-0612.txt", + "object-tests/batch/many-0613.txt", + "object-tests/batch/many-0614.txt", + "object-tests/batch/many-0615.txt", + "object-tests/batch/many-0616.txt", + "object-tests/batch/many-0617.txt", + "object-tests/batch/many-0618.txt", + "object-tests/batch/many-0619.txt", + "object-tests/batch/many-0620.txt", + "object-tests/batch/many-0621.txt", + "object-tests/batch/many-0622.txt", + "object-tests/batch/many-0623.txt", + "object-tests/batch/many-0624.txt", + "object-tests/batch/many-0625.txt", + "object-tests/batch/many-0626.txt", + "object-tests/batch/many-0627.txt", + "object-tests/batch/many-0628.txt", + "object-tests/batch/many-0629.txt", + "object-tests/batch/many-0630.txt", + "object-tests/batch/many-0631.txt", + "object-tests/batch/many-0632.txt", + "object-tests/batch/many-0633.txt", + "object-tests/batch/many-0634.txt", + "object-tests/batch/many-0635.txt", + "object-tests/batch/many-0636.txt", + "object-tests/batch/many-0637.txt", + "object-tests/batch/many-0638.txt", + "object-tests/batch/many-0639.txt", + "object-tests/batch/many-0640.txt", + "object-tests/batch/many-0641.txt", + "object-tests/batch/many-0642.txt", + "object-tests/batch/many-0643.txt", + "object-tests/batch/many-0644.txt", + "object-tests/batch/many-0645.txt", + "object-tests/batch/many-0646.txt", + "object-tests/batch/many-0647.txt", + "object-tests/batch/many-0648.txt", + "object-tests/batch/many-0649.txt", + "object-tests/batch/many-0650.txt", + "object-tests/batch/many-0651.txt", + "object-tests/batch/many-0652.txt", + "object-tests/batch/many-0653.txt", + "object-tests/batch/many-0654.txt", + "object-tests/batch/many-0655.txt", + "object-tests/batch/many-0656.txt", + "object-tests/batch/many-0657.txt", + "object-tests/batch/many-0658.txt", + "object-tests/batch/many-0659.txt", + "object-tests/batch/many-0660.txt", + "object-tests/batch/many-0661.txt", + "object-tests/batch/many-0662.txt", + "object-tests/batch/many-0663.txt", + "object-tests/batch/many-0664.txt", + "object-tests/batch/many-0665.txt", + "object-tests/batch/many-0666.txt", + "object-tests/batch/many-0667.txt", + "object-tests/batch/many-0668.txt", + "object-tests/batch/many-0669.txt", + "object-tests/batch/many-0670.txt", + "object-tests/batch/many-0671.txt", + "object-tests/batch/many-0672.txt", + "object-tests/batch/many-0673.txt", + "object-tests/batch/many-0674.txt", + "object-tests/batch/many-0675.txt", + "object-tests/batch/many-0676.txt", + "object-tests/batch/many-0677.txt", + "object-tests/batch/many-0678.txt", + "object-tests/batch/many-0679.txt", + "object-tests/batch/many-0680.txt", + "object-tests/batch/many-0681.txt", + "object-tests/batch/many-0682.txt", + "object-tests/batch/many-0683.txt", + "object-tests/batch/many-0684.txt", + "object-tests/batch/many-0685.txt", + "object-tests/batch/many-0686.txt", + "object-tests/batch/many-0687.txt", + "object-tests/batch/many-0688.txt", + "object-tests/batch/many-0689.txt", + "object-tests/batch/many-0690.txt", + "object-tests/batch/many-0691.txt", + "object-tests/batch/many-0692.txt", + "object-tests/batch/many-0693.txt", + "object-tests/batch/many-0694.txt", + "object-tests/batch/many-0695.txt", + "object-tests/batch/many-0696.txt", + "object-tests/batch/many-0697.txt", + "object-tests/batch/many-0698.txt", + "object-tests/batch/many-0699.txt", + "object-tests/batch/many-0700.txt", + "object-tests/batch/many-0701.txt", + "object-tests/batch/many-0702.txt", + "object-tests/batch/many-0703.txt", + "object-tests/batch/many-0704.txt", + "object-tests/batch/many-0705.txt", + "object-tests/batch/many-0706.txt", + "object-tests/batch/many-0707.txt", + "object-tests/batch/many-0708.txt", + "object-tests/batch/many-0709.txt", + "object-tests/batch/many-0710.txt", + "object-tests/batch/many-0711.txt", + "object-tests/batch/many-0712.txt", + "object-tests/batch/many-0713.txt", + "object-tests/batch/many-0714.txt", + "object-tests/batch/many-0715.txt", + "object-tests/batch/many-0716.txt", + "object-tests/batch/many-0717.txt", + "object-tests/batch/many-0718.txt", + "object-tests/batch/many-0719.txt", + "object-tests/batch/many-0720.txt", + "object-tests/batch/many-0721.txt", + "object-tests/batch/many-0722.txt", + "object-tests/batch/many-0723.txt", + "object-tests/batch/many-0724.txt", + "object-tests/batch/many-0725.txt", + "object-tests/batch/many-0726.txt", + "object-tests/batch/many-0727.txt", + "object-tests/batch/many-0728.txt", + "object-tests/batch/many-0729.txt", + "object-tests/batch/many-0730.txt", + "object-tests/batch/many-0731.txt", + "object-tests/batch/many-0732.txt", + "object-tests/batch/many-0733.txt", + "object-tests/batch/many-0734.txt", + "object-tests/batch/many-0735.txt", + "object-tests/batch/many-0736.txt", + "object-tests/batch/many-0737.txt", + "object-tests/batch/many-0738.txt", + "object-tests/batch/many-0739.txt", + "object-tests/batch/many-0740.txt", + "object-tests/batch/many-0741.txt", + "object-tests/batch/many-0742.txt", + "object-tests/batch/many-0743.txt", + "object-tests/batch/many-0744.txt", + "object-tests/batch/many-0745.txt", + "object-tests/batch/many-0746.txt", + "object-tests/batch/many-0747.txt", + "object-tests/batch/many-0748.txt", + "object-tests/batch/many-0749.txt", + "object-tests/batch/many-0750.txt", + "object-tests/batch/many-0751.txt", + "object-tests/batch/many-0752.txt", + "object-tests/batch/many-0753.txt", + "object-tests/batch/many-0754.txt", + "object-tests/batch/many-0755.txt", + "object-tests/batch/many-0756.txt", + "object-tests/batch/many-0757.txt", + "object-tests/batch/many-0758.txt", + "object-tests/batch/many-0759.txt", + "object-tests/batch/many-0760.txt", + "object-tests/batch/many-0761.txt", + "object-tests/batch/many-0762.txt", + "object-tests/batch/many-0763.txt", + "object-tests/batch/many-0764.txt", + "object-tests/batch/many-0765.txt", + "object-tests/batch/many-0766.txt", + "object-tests/batch/many-0767.txt", + "object-tests/batch/many-0768.txt", + "object-tests/batch/many-0769.txt", + "object-tests/batch/many-0770.txt", + "object-tests/batch/many-0771.txt", + "object-tests/batch/many-0772.txt", + "object-tests/batch/many-0773.txt", + "object-tests/batch/many-0774.txt", + "object-tests/batch/many-0775.txt", + "object-tests/batch/many-0776.txt", + "object-tests/batch/many-0777.txt", + "object-tests/batch/many-0778.txt", + "object-tests/batch/many-0779.txt", + "object-tests/batch/many-0780.txt", + "object-tests/batch/many-0781.txt", + "object-tests/batch/many-0782.txt", + "object-tests/batch/many-0783.txt", + "object-tests/batch/many-0784.txt", + "object-tests/batch/many-0785.txt", + "object-tests/batch/many-0786.txt", + "object-tests/batch/many-0787.txt", + "object-tests/batch/many-0788.txt", + "object-tests/batch/many-0789.txt", + "object-tests/batch/many-0790.txt", + "object-tests/batch/many-0791.txt", + "object-tests/batch/many-0792.txt", + "object-tests/batch/many-0793.txt", + "object-tests/batch/many-0794.txt", + "object-tests/batch/many-0795.txt", + "object-tests/batch/many-0796.txt", + "object-tests/batch/many-0797.txt", + "object-tests/batch/many-0798.txt", + "object-tests/batch/many-0799.txt", + "object-tests/batch/many-0800.txt", + "object-tests/batch/many-0801.txt", + "object-tests/batch/many-0802.txt", + "object-tests/batch/many-0803.txt", + "object-tests/batch/many-0804.txt", + "object-tests/batch/many-0805.txt", + "object-tests/batch/many-0806.txt", + "object-tests/batch/many-0807.txt", + "object-tests/batch/many-0808.txt", + "object-tests/batch/many-0809.txt", + "object-tests/batch/many-0810.txt", + "object-tests/batch/many-0811.txt", + "object-tests/batch/many-0812.txt", + "object-tests/batch/many-0813.txt", + "object-tests/batch/many-0814.txt", + "object-tests/batch/many-0815.txt", + "object-tests/batch/many-0816.txt", + "object-tests/batch/many-0817.txt", + "object-tests/batch/many-0818.txt", + "object-tests/batch/many-0819.txt", + "object-tests/batch/many-0820.txt", + "object-tests/batch/many-0821.txt", + "object-tests/batch/many-0822.txt", + "object-tests/batch/many-0823.txt", + "object-tests/batch/many-0824.txt", + "object-tests/batch/many-0825.txt", + "object-tests/batch/many-0826.txt", + "object-tests/batch/many-0827.txt", + "object-tests/batch/many-0828.txt", + "object-tests/batch/many-0829.txt", + "object-tests/batch/many-0830.txt", + "object-tests/batch/many-0831.txt", + "object-tests/batch/many-0832.txt", + "object-tests/batch/many-0833.txt", + "object-tests/batch/many-0834.txt", + "object-tests/batch/many-0835.txt", + "object-tests/batch/many-0836.txt", + "object-tests/batch/many-0837.txt", + "object-tests/batch/many-0838.txt", + "object-tests/batch/many-0839.txt", + "object-tests/batch/many-0840.txt", + "object-tests/batch/many-0841.txt", + "object-tests/batch/many-0842.txt", + "object-tests/batch/many-0843.txt", + "object-tests/batch/many-0844.txt", + "object-tests/batch/many-0845.txt", + "object-tests/batch/many-0846.txt", + "object-tests/batch/many-0847.txt", + "object-tests/batch/many-0848.txt", + "object-tests/batch/many-0849.txt", + "object-tests/batch/many-0850.txt", + "object-tests/batch/many-0851.txt", + "object-tests/batch/many-0852.txt", + "object-tests/batch/many-0853.txt", + "object-tests/batch/many-0854.txt", + "object-tests/batch/many-0855.txt", + "object-tests/batch/many-0856.txt", + "object-tests/batch/many-0857.txt", + "object-tests/batch/many-0858.txt", + "object-tests/batch/many-0859.txt", + "object-tests/batch/many-0860.txt", + "object-tests/batch/many-0861.txt", + "object-tests/batch/many-0862.txt", + "object-tests/batch/many-0863.txt", + "object-tests/batch/many-0864.txt", + "object-tests/batch/many-0865.txt", + "object-tests/batch/many-0866.txt", + "object-tests/batch/many-0867.txt", + "object-tests/batch/many-0868.txt", + "object-tests/batch/many-0869.txt", + "object-tests/batch/many-0870.txt", + "object-tests/batch/many-0871.txt", + "object-tests/batch/many-0872.txt", + "object-tests/batch/many-0873.txt", + "object-tests/batch/many-0874.txt", + "object-tests/batch/many-0875.txt", + "object-tests/batch/many-0876.txt", + "object-tests/batch/many-0877.txt", + "object-tests/batch/many-0878.txt", + "object-tests/batch/many-0879.txt", + "object-tests/batch/many-0880.txt", + "object-tests/batch/many-0881.txt", + "object-tests/batch/many-0882.txt", + "object-tests/batch/many-0883.txt", + "object-tests/batch/many-0884.txt", + "object-tests/batch/many-0885.txt", + "object-tests/batch/many-0886.txt", + "object-tests/batch/many-0887.txt", + "object-tests/batch/many-0888.txt", + "object-tests/batch/many-0889.txt", + "object-tests/batch/many-0890.txt", + "object-tests/batch/many-0891.txt", + "object-tests/batch/many-0892.txt", + "object-tests/batch/many-0893.txt", + "object-tests/batch/many-0894.txt", + "object-tests/batch/many-0895.txt", + "object-tests/batch/many-0896.txt", + "object-tests/batch/many-0897.txt", + "object-tests/batch/many-0898.txt", + "object-tests/batch/many-0899.txt", + "object-tests/batch/many-0900.txt", + "object-tests/batch/many-0901.txt", + "object-tests/batch/many-0902.txt", + "object-tests/batch/many-0903.txt", + "object-tests/batch/many-0904.txt", + "object-tests/batch/many-0905.txt", + "object-tests/batch/many-0906.txt", + "object-tests/batch/many-0907.txt", + "object-tests/batch/many-0908.txt", + "object-tests/batch/many-0909.txt", + "object-tests/batch/many-0910.txt", + "object-tests/batch/many-0911.txt", + "object-tests/batch/many-0912.txt", + "object-tests/batch/many-0913.txt", + "object-tests/batch/many-0914.txt", + "object-tests/batch/many-0915.txt", + "object-tests/batch/many-0916.txt", + "object-tests/batch/many-0917.txt", + "object-tests/batch/many-0918.txt", + "object-tests/batch/many-0919.txt", + "object-tests/batch/many-0920.txt", + "object-tests/batch/many-0921.txt", + "object-tests/batch/many-0922.txt", + "object-tests/batch/many-0923.txt", + "object-tests/batch/many-0924.txt", + "object-tests/batch/many-0925.txt", + "object-tests/batch/many-0926.txt", + "object-tests/batch/many-0927.txt", + "object-tests/batch/many-0928.txt", + "object-tests/batch/many-0929.txt", + "object-tests/batch/many-0930.txt", + "object-tests/batch/many-0931.txt", + "object-tests/batch/many-0932.txt", + "object-tests/batch/many-0933.txt", + "object-tests/batch/many-0934.txt", + "object-tests/batch/many-0935.txt", + "object-tests/batch/many-0936.txt", + "object-tests/batch/many-0937.txt", + "object-tests/batch/many-0938.txt", + "object-tests/batch/many-0939.txt", + "object-tests/batch/many-0940.txt", + "object-tests/batch/many-0941.txt", + "object-tests/batch/many-0942.txt", + "object-tests/batch/many-0943.txt", + "object-tests/batch/many-0944.txt", + "object-tests/batch/many-0945.txt", + "object-tests/batch/many-0946.txt", + "object-tests/batch/many-0947.txt", + "object-tests/batch/many-0948.txt", + "object-tests/batch/many-0949.txt", + "object-tests/batch/many-0950.txt", + "object-tests/batch/many-0951.txt", + "object-tests/batch/many-0952.txt", + "object-tests/batch/many-0953.txt", + "object-tests/batch/many-0954.txt", + "object-tests/batch/many-0955.txt", + "object-tests/batch/many-0956.txt", + "object-tests/batch/many-0957.txt", + "object-tests/batch/many-0958.txt", + "object-tests/batch/many-0959.txt", + "object-tests/batch/many-0960.txt", + "object-tests/batch/many-0961.txt", + "object-tests/batch/many-0962.txt", + "object-tests/batch/many-0963.txt", + "object-tests/batch/many-0964.txt", + "object-tests/batch/many-0965.txt", + "object-tests/batch/many-0966.txt", + "object-tests/batch/many-0967.txt", + "object-tests/batch/many-0968.txt", + "object-tests/batch/many-0969.txt", + "object-tests/batch/many-0970.txt", + "object-tests/batch/many-0971.txt", + "object-tests/batch/many-0972.txt", + "object-tests/batch/many-0973.txt", + "object-tests/batch/many-0974.txt", + "object-tests/batch/many-0975.txt", + "object-tests/batch/many-0976.txt", + "object-tests/batch/many-0977.txt", + "object-tests/batch/many-0978.txt", + "object-tests/batch/many-0979.txt", + "object-tests/batch/many-0980.txt", + "object-tests/batch/many-0981.txt", + "object-tests/batch/many-0982.txt", + "object-tests/batch/many-0983.txt", + "object-tests/batch/many-0984.txt", + "object-tests/batch/many-0985.txt", + "object-tests/batch/many-0986.txt", + "object-tests/batch/many-0987.txt", + "object-tests/batch/many-0988.txt", + "object-tests/batch/many-0989.txt", + "object-tests/batch/many-0990.txt", + "object-tests/batch/many-0991.txt", + "object-tests/batch/many-0992.txt", + "object-tests/batch/many-0993.txt", + "object-tests/batch/many-0994.txt", + "object-tests/batch/many-0995.txt", + "object-tests/batch/many-0996.txt", + "object-tests/batch/many-0997.txt", + "object-tests/batch/many-0998.txt", + "object-tests/batch/many-0999.txt" + ], + "op": "delete_many" }, "exchanges": [ { @@ -66087,7 +99829,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "POST" } }, { @@ -66095,43 +99837,60 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/append/object.log" + "value": "/fixture" } }, { - "at": "/body_base64", + "at": "/body_text", "optional": false, "rule": { - "is": "equal", - "value": "c2Vjb25k" + "is": "xml", + "value": "object-tests/batch/many-0000.txtobject-tests/batch/many-0001.txtobject-tests/batch/many-0002.txtobject-tests/batch/many-0003.txtobject-tests/batch/many-0004.txtobject-tests/batch/many-0005.txtobject-tests/batch/many-0006.txtobject-tests/batch/many-0007.txtobject-tests/batch/many-0008.txtobject-tests/batch/many-0009.txtobject-tests/batch/many-0010.txtobject-tests/batch/many-0011.txtobject-tests/batch/many-0012.txtobject-tests/batch/many-0013.txtobject-tests/batch/many-0014.txtobject-tests/batch/many-0015.txtobject-tests/batch/many-0016.txtobject-tests/batch/many-0017.txtobject-tests/batch/many-0018.txtobject-tests/batch/many-0019.txtobject-tests/batch/many-0020.txtobject-tests/batch/many-0021.txtobject-tests/batch/many-0022.txtobject-tests/batch/many-0023.txtobject-tests/batch/many-0024.txtobject-tests/batch/many-0025.txtobject-tests/batch/many-0026.txtobject-tests/batch/many-0027.txtobject-tests/batch/many-0028.txtobject-tests/batch/many-0029.txtobject-tests/batch/many-0030.txtobject-tests/batch/many-0031.txtobject-tests/batch/many-0032.txtobject-tests/batch/many-0033.txtobject-tests/batch/many-0034.txtobject-tests/batch/many-0035.txtobject-tests/batch/many-0036.txtobject-tests/batch/many-0037.txtobject-tests/batch/many-0038.txtobject-tests/batch/many-0039.txtobject-tests/batch/many-0040.txtobject-tests/batch/many-0041.txtobject-tests/batch/many-0042.txtobject-tests/batch/many-0043.txtobject-tests/batch/many-0044.txtobject-tests/batch/many-0045.txtobject-tests/batch/many-0046.txtobject-tests/batch/many-0047.txtobject-tests/batch/many-0048.txtobject-tests/batch/many-0049.txtobject-tests/batch/many-0050.txtobject-tests/batch/many-0051.txtobject-tests/batch/many-0052.txtobject-tests/batch/many-0053.txtobject-tests/batch/many-0054.txtobject-tests/batch/many-0055.txtobject-tests/batch/many-0056.txtobject-tests/batch/many-0057.txtobject-tests/batch/many-0058.txtobject-tests/batch/many-0059.txtobject-tests/batch/many-0060.txtobject-tests/batch/many-0061.txtobject-tests/batch/many-0062.txtobject-tests/batch/many-0063.txtobject-tests/batch/many-0064.txtobject-tests/batch/many-0065.txtobject-tests/batch/many-0066.txtobject-tests/batch/many-0067.txtobject-tests/batch/many-0068.txtobject-tests/batch/many-0069.txtobject-tests/batch/many-0070.txtobject-tests/batch/many-0071.txtobject-tests/batch/many-0072.txtobject-tests/batch/many-0073.txtobject-tests/batch/many-0074.txtobject-tests/batch/many-0075.txtobject-tests/batch/many-0076.txtobject-tests/batch/many-0077.txtobject-tests/batch/many-0078.txtobject-tests/batch/many-0079.txtobject-tests/batch/many-0080.txtobject-tests/batch/many-0081.txtobject-tests/batch/many-0082.txtobject-tests/batch/many-0083.txtobject-tests/batch/many-0084.txtobject-tests/batch/many-0085.txtobject-tests/batch/many-0086.txtobject-tests/batch/many-0087.txtobject-tests/batch/many-0088.txtobject-tests/batch/many-0089.txtobject-tests/batch/many-0090.txtobject-tests/batch/many-0091.txtobject-tests/batch/many-0092.txtobject-tests/batch/many-0093.txtobject-tests/batch/many-0094.txtobject-tests/batch/many-0095.txtobject-tests/batch/many-0096.txtobject-tests/batch/many-0097.txtobject-tests/batch/many-0098.txtobject-tests/batch/many-0099.txtobject-tests/batch/many-0100.txtobject-tests/batch/many-0101.txtobject-tests/batch/many-0102.txtobject-tests/batch/many-0103.txtobject-tests/batch/many-0104.txtobject-tests/batch/many-0105.txtobject-tests/batch/many-0106.txtobject-tests/batch/many-0107.txtobject-tests/batch/many-0108.txtobject-tests/batch/many-0109.txtobject-tests/batch/many-0110.txtobject-tests/batch/many-0111.txtobject-tests/batch/many-0112.txtobject-tests/batch/many-0113.txtobject-tests/batch/many-0114.txtobject-tests/batch/many-0115.txtobject-tests/batch/many-0116.txtobject-tests/batch/many-0117.txtobject-tests/batch/many-0118.txtobject-tests/batch/many-0119.txtobject-tests/batch/many-0120.txtobject-tests/batch/many-0121.txtobject-tests/batch/many-0122.txtobject-tests/batch/many-0123.txtobject-tests/batch/many-0124.txtobject-tests/batch/many-0125.txtobject-tests/batch/many-0126.txtobject-tests/batch/many-0127.txtobject-tests/batch/many-0128.txtobject-tests/batch/many-0129.txtobject-tests/batch/many-0130.txtobject-tests/batch/many-0131.txtobject-tests/batch/many-0132.txtobject-tests/batch/many-0133.txtobject-tests/batch/many-0134.txtobject-tests/batch/many-0135.txtobject-tests/batch/many-0136.txtobject-tests/batch/many-0137.txtobject-tests/batch/many-0138.txtobject-tests/batch/many-0139.txtobject-tests/batch/many-0140.txtobject-tests/batch/many-0141.txtobject-tests/batch/many-0142.txtobject-tests/batch/many-0143.txtobject-tests/batch/many-0144.txtobject-tests/batch/many-0145.txtobject-tests/batch/many-0146.txtobject-tests/batch/many-0147.txtobject-tests/batch/many-0148.txtobject-tests/batch/many-0149.txtobject-tests/batch/many-0150.txtobject-tests/batch/many-0151.txtobject-tests/batch/many-0152.txtobject-tests/batch/many-0153.txtobject-tests/batch/many-0154.txtobject-tests/batch/many-0155.txtobject-tests/batch/many-0156.txtobject-tests/batch/many-0157.txtobject-tests/batch/many-0158.txtobject-tests/batch/many-0159.txtobject-tests/batch/many-0160.txtobject-tests/batch/many-0161.txtobject-tests/batch/many-0162.txtobject-tests/batch/many-0163.txtobject-tests/batch/many-0164.txtobject-tests/batch/many-0165.txtobject-tests/batch/many-0166.txtobject-tests/batch/many-0167.txtobject-tests/batch/many-0168.txtobject-tests/batch/many-0169.txtobject-tests/batch/many-0170.txtobject-tests/batch/many-0171.txtobject-tests/batch/many-0172.txtobject-tests/batch/many-0173.txtobject-tests/batch/many-0174.txtobject-tests/batch/many-0175.txtobject-tests/batch/many-0176.txtobject-tests/batch/many-0177.txtobject-tests/batch/many-0178.txtobject-tests/batch/many-0179.txtobject-tests/batch/many-0180.txtobject-tests/batch/many-0181.txtobject-tests/batch/many-0182.txtobject-tests/batch/many-0183.txtobject-tests/batch/many-0184.txtobject-tests/batch/many-0185.txtobject-tests/batch/many-0186.txtobject-tests/batch/many-0187.txtobject-tests/batch/many-0188.txtobject-tests/batch/many-0189.txtobject-tests/batch/many-0190.txtobject-tests/batch/many-0191.txtobject-tests/batch/many-0192.txtobject-tests/batch/many-0193.txtobject-tests/batch/many-0194.txtobject-tests/batch/many-0195.txtobject-tests/batch/many-0196.txtobject-tests/batch/many-0197.txtobject-tests/batch/many-0198.txtobject-tests/batch/many-0199.txtobject-tests/batch/many-0200.txtobject-tests/batch/many-0201.txtobject-tests/batch/many-0202.txtobject-tests/batch/many-0203.txtobject-tests/batch/many-0204.txtobject-tests/batch/many-0205.txtobject-tests/batch/many-0206.txtobject-tests/batch/many-0207.txtobject-tests/batch/many-0208.txtobject-tests/batch/many-0209.txtobject-tests/batch/many-0210.txtobject-tests/batch/many-0211.txtobject-tests/batch/many-0212.txtobject-tests/batch/many-0213.txtobject-tests/batch/many-0214.txtobject-tests/batch/many-0215.txtobject-tests/batch/many-0216.txtobject-tests/batch/many-0217.txtobject-tests/batch/many-0218.txtobject-tests/batch/many-0219.txtobject-tests/batch/many-0220.txtobject-tests/batch/many-0221.txtobject-tests/batch/many-0222.txtobject-tests/batch/many-0223.txtobject-tests/batch/many-0224.txtobject-tests/batch/many-0225.txtobject-tests/batch/many-0226.txtobject-tests/batch/many-0227.txtobject-tests/batch/many-0228.txtobject-tests/batch/many-0229.txtobject-tests/batch/many-0230.txtobject-tests/batch/many-0231.txtobject-tests/batch/many-0232.txtobject-tests/batch/many-0233.txtobject-tests/batch/many-0234.txtobject-tests/batch/many-0235.txtobject-tests/batch/many-0236.txtobject-tests/batch/many-0237.txtobject-tests/batch/many-0238.txtobject-tests/batch/many-0239.txtobject-tests/batch/many-0240.txtobject-tests/batch/many-0241.txtobject-tests/batch/many-0242.txtobject-tests/batch/many-0243.txtobject-tests/batch/many-0244.txtobject-tests/batch/many-0245.txtobject-tests/batch/many-0246.txtobject-tests/batch/many-0247.txtobject-tests/batch/many-0248.txtobject-tests/batch/many-0249.txtobject-tests/batch/many-0250.txtobject-tests/batch/many-0251.txtobject-tests/batch/many-0252.txtobject-tests/batch/many-0253.txtobject-tests/batch/many-0254.txtobject-tests/batch/many-0255.txtobject-tests/batch/many-0256.txtobject-tests/batch/many-0257.txtobject-tests/batch/many-0258.txtobject-tests/batch/many-0259.txtobject-tests/batch/many-0260.txtobject-tests/batch/many-0261.txtobject-tests/batch/many-0262.txtobject-tests/batch/many-0263.txtobject-tests/batch/many-0264.txtobject-tests/batch/many-0265.txtobject-tests/batch/many-0266.txtobject-tests/batch/many-0267.txtobject-tests/batch/many-0268.txtobject-tests/batch/many-0269.txtobject-tests/batch/many-0270.txtobject-tests/batch/many-0271.txtobject-tests/batch/many-0272.txtobject-tests/batch/many-0273.txtobject-tests/batch/many-0274.txtobject-tests/batch/many-0275.txtobject-tests/batch/many-0276.txtobject-tests/batch/many-0277.txtobject-tests/batch/many-0278.txtobject-tests/batch/many-0279.txtobject-tests/batch/many-0280.txtobject-tests/batch/many-0281.txtobject-tests/batch/many-0282.txtobject-tests/batch/many-0283.txtobject-tests/batch/many-0284.txtobject-tests/batch/many-0285.txtobject-tests/batch/many-0286.txtobject-tests/batch/many-0287.txtobject-tests/batch/many-0288.txtobject-tests/batch/many-0289.txtobject-tests/batch/many-0290.txtobject-tests/batch/many-0291.txtobject-tests/batch/many-0292.txtobject-tests/batch/many-0293.txtobject-tests/batch/many-0294.txtobject-tests/batch/many-0295.txtobject-tests/batch/many-0296.txtobject-tests/batch/many-0297.txtobject-tests/batch/many-0298.txtobject-tests/batch/many-0299.txtobject-tests/batch/many-0300.txtobject-tests/batch/many-0301.txtobject-tests/batch/many-0302.txtobject-tests/batch/many-0303.txtobject-tests/batch/many-0304.txtobject-tests/batch/many-0305.txtobject-tests/batch/many-0306.txtobject-tests/batch/many-0307.txtobject-tests/batch/many-0308.txtobject-tests/batch/many-0309.txtobject-tests/batch/many-0310.txtobject-tests/batch/many-0311.txtobject-tests/batch/many-0312.txtobject-tests/batch/many-0313.txtobject-tests/batch/many-0314.txtobject-tests/batch/many-0315.txtobject-tests/batch/many-0316.txtobject-tests/batch/many-0317.txtobject-tests/batch/many-0318.txtobject-tests/batch/many-0319.txtobject-tests/batch/many-0320.txtobject-tests/batch/many-0321.txtobject-tests/batch/many-0322.txtobject-tests/batch/many-0323.txtobject-tests/batch/many-0324.txtobject-tests/batch/many-0325.txtobject-tests/batch/many-0326.txtobject-tests/batch/many-0327.txtobject-tests/batch/many-0328.txtobject-tests/batch/many-0329.txtobject-tests/batch/many-0330.txtobject-tests/batch/many-0331.txtobject-tests/batch/many-0332.txtobject-tests/batch/many-0333.txtobject-tests/batch/many-0334.txtobject-tests/batch/many-0335.txtobject-tests/batch/many-0336.txtobject-tests/batch/many-0337.txtobject-tests/batch/many-0338.txtobject-tests/batch/many-0339.txtobject-tests/batch/many-0340.txtobject-tests/batch/many-0341.txtobject-tests/batch/many-0342.txtobject-tests/batch/many-0343.txtobject-tests/batch/many-0344.txtobject-tests/batch/many-0345.txtobject-tests/batch/many-0346.txtobject-tests/batch/many-0347.txtobject-tests/batch/many-0348.txtobject-tests/batch/many-0349.txtobject-tests/batch/many-0350.txtobject-tests/batch/many-0351.txtobject-tests/batch/many-0352.txtobject-tests/batch/many-0353.txtobject-tests/batch/many-0354.txtobject-tests/batch/many-0355.txtobject-tests/batch/many-0356.txtobject-tests/batch/many-0357.txtobject-tests/batch/many-0358.txtobject-tests/batch/many-0359.txtobject-tests/batch/many-0360.txtobject-tests/batch/many-0361.txtobject-tests/batch/many-0362.txtobject-tests/batch/many-0363.txtobject-tests/batch/many-0364.txtobject-tests/batch/many-0365.txtobject-tests/batch/many-0366.txtobject-tests/batch/many-0367.txtobject-tests/batch/many-0368.txtobject-tests/batch/many-0369.txtobject-tests/batch/many-0370.txtobject-tests/batch/many-0371.txtobject-tests/batch/many-0372.txtobject-tests/batch/many-0373.txtobject-tests/batch/many-0374.txtobject-tests/batch/many-0375.txtobject-tests/batch/many-0376.txtobject-tests/batch/many-0377.txtobject-tests/batch/many-0378.txtobject-tests/batch/many-0379.txtobject-tests/batch/many-0380.txtobject-tests/batch/many-0381.txtobject-tests/batch/many-0382.txtobject-tests/batch/many-0383.txtobject-tests/batch/many-0384.txtobject-tests/batch/many-0385.txtobject-tests/batch/many-0386.txtobject-tests/batch/many-0387.txtobject-tests/batch/many-0388.txtobject-tests/batch/many-0389.txtobject-tests/batch/many-0390.txtobject-tests/batch/many-0391.txtobject-tests/batch/many-0392.txtobject-tests/batch/many-0393.txtobject-tests/batch/many-0394.txtobject-tests/batch/many-0395.txtobject-tests/batch/many-0396.txtobject-tests/batch/many-0397.txtobject-tests/batch/many-0398.txtobject-tests/batch/many-0399.txtobject-tests/batch/many-0400.txtobject-tests/batch/many-0401.txtobject-tests/batch/many-0402.txtobject-tests/batch/many-0403.txtobject-tests/batch/many-0404.txtobject-tests/batch/many-0405.txtobject-tests/batch/many-0406.txtobject-tests/batch/many-0407.txtobject-tests/batch/many-0408.txtobject-tests/batch/many-0409.txtobject-tests/batch/many-0410.txtobject-tests/batch/many-0411.txtobject-tests/batch/many-0412.txtobject-tests/batch/many-0413.txtobject-tests/batch/many-0414.txtobject-tests/batch/many-0415.txtobject-tests/batch/many-0416.txtobject-tests/batch/many-0417.txtobject-tests/batch/many-0418.txtobject-tests/batch/many-0419.txtobject-tests/batch/many-0420.txtobject-tests/batch/many-0421.txtobject-tests/batch/many-0422.txtobject-tests/batch/many-0423.txtobject-tests/batch/many-0424.txtobject-tests/batch/many-0425.txtobject-tests/batch/many-0426.txtobject-tests/batch/many-0427.txtobject-tests/batch/many-0428.txtobject-tests/batch/many-0429.txtobject-tests/batch/many-0430.txtobject-tests/batch/many-0431.txtobject-tests/batch/many-0432.txtobject-tests/batch/many-0433.txtobject-tests/batch/many-0434.txtobject-tests/batch/many-0435.txtobject-tests/batch/many-0436.txtobject-tests/batch/many-0437.txtobject-tests/batch/many-0438.txtobject-tests/batch/many-0439.txtobject-tests/batch/many-0440.txtobject-tests/batch/many-0441.txtobject-tests/batch/many-0442.txtobject-tests/batch/many-0443.txtobject-tests/batch/many-0444.txtobject-tests/batch/many-0445.txtobject-tests/batch/many-0446.txtobject-tests/batch/many-0447.txtobject-tests/batch/many-0448.txtobject-tests/batch/many-0449.txtobject-tests/batch/many-0450.txtobject-tests/batch/many-0451.txtobject-tests/batch/many-0452.txtobject-tests/batch/many-0453.txtobject-tests/batch/many-0454.txtobject-tests/batch/many-0455.txtobject-tests/batch/many-0456.txtobject-tests/batch/many-0457.txtobject-tests/batch/many-0458.txtobject-tests/batch/many-0459.txtobject-tests/batch/many-0460.txtobject-tests/batch/many-0461.txtobject-tests/batch/many-0462.txtobject-tests/batch/many-0463.txtobject-tests/batch/many-0464.txtobject-tests/batch/many-0465.txtobject-tests/batch/many-0466.txtobject-tests/batch/many-0467.txtobject-tests/batch/many-0468.txtobject-tests/batch/many-0469.txtobject-tests/batch/many-0470.txtobject-tests/batch/many-0471.txtobject-tests/batch/many-0472.txtobject-tests/batch/many-0473.txtobject-tests/batch/many-0474.txtobject-tests/batch/many-0475.txtobject-tests/batch/many-0476.txtobject-tests/batch/many-0477.txtobject-tests/batch/many-0478.txtobject-tests/batch/many-0479.txtobject-tests/batch/many-0480.txtobject-tests/batch/many-0481.txtobject-tests/batch/many-0482.txtobject-tests/batch/many-0483.txtobject-tests/batch/many-0484.txtobject-tests/batch/many-0485.txtobject-tests/batch/many-0486.txtobject-tests/batch/many-0487.txtobject-tests/batch/many-0488.txtobject-tests/batch/many-0489.txtobject-tests/batch/many-0490.txtobject-tests/batch/many-0491.txtobject-tests/batch/many-0492.txtobject-tests/batch/many-0493.txtobject-tests/batch/many-0494.txtobject-tests/batch/many-0495.txtobject-tests/batch/many-0496.txtobject-tests/batch/many-0497.txtobject-tests/batch/many-0498.txtobject-tests/batch/many-0499.txtobject-tests/batch/many-0500.txtobject-tests/batch/many-0501.txtobject-tests/batch/many-0502.txtobject-tests/batch/many-0503.txtobject-tests/batch/many-0504.txtobject-tests/batch/many-0505.txtobject-tests/batch/many-0506.txtobject-tests/batch/many-0507.txtobject-tests/batch/many-0508.txtobject-tests/batch/many-0509.txtobject-tests/batch/many-0510.txtobject-tests/batch/many-0511.txtobject-tests/batch/many-0512.txtobject-tests/batch/many-0513.txtobject-tests/batch/many-0514.txtobject-tests/batch/many-0515.txtobject-tests/batch/many-0516.txtobject-tests/batch/many-0517.txtobject-tests/batch/many-0518.txtobject-tests/batch/many-0519.txtobject-tests/batch/many-0520.txtobject-tests/batch/many-0521.txtobject-tests/batch/many-0522.txtobject-tests/batch/many-0523.txtobject-tests/batch/many-0524.txtobject-tests/batch/many-0525.txtobject-tests/batch/many-0526.txtobject-tests/batch/many-0527.txtobject-tests/batch/many-0528.txtobject-tests/batch/many-0529.txtobject-tests/batch/many-0530.txtobject-tests/batch/many-0531.txtobject-tests/batch/many-0532.txtobject-tests/batch/many-0533.txtobject-tests/batch/many-0534.txtobject-tests/batch/many-0535.txtobject-tests/batch/many-0536.txtobject-tests/batch/many-0537.txtobject-tests/batch/many-0538.txtobject-tests/batch/many-0539.txtobject-tests/batch/many-0540.txtobject-tests/batch/many-0541.txtobject-tests/batch/many-0542.txtobject-tests/batch/many-0543.txtobject-tests/batch/many-0544.txtobject-tests/batch/many-0545.txtobject-tests/batch/many-0546.txtobject-tests/batch/many-0547.txtobject-tests/batch/many-0548.txtobject-tests/batch/many-0549.txtobject-tests/batch/many-0550.txtobject-tests/batch/many-0551.txtobject-tests/batch/many-0552.txtobject-tests/batch/many-0553.txtobject-tests/batch/many-0554.txtobject-tests/batch/many-0555.txtobject-tests/batch/many-0556.txtobject-tests/batch/many-0557.txtobject-tests/batch/many-0558.txtobject-tests/batch/many-0559.txtobject-tests/batch/many-0560.txtobject-tests/batch/many-0561.txtobject-tests/batch/many-0562.txtobject-tests/batch/many-0563.txtobject-tests/batch/many-0564.txtobject-tests/batch/many-0565.txtobject-tests/batch/many-0566.txtobject-tests/batch/many-0567.txtobject-tests/batch/many-0568.txtobject-tests/batch/many-0569.txtobject-tests/batch/many-0570.txtobject-tests/batch/many-0571.txtobject-tests/batch/many-0572.txtobject-tests/batch/many-0573.txtobject-tests/batch/many-0574.txtobject-tests/batch/many-0575.txtobject-tests/batch/many-0576.txtobject-tests/batch/many-0577.txtobject-tests/batch/many-0578.txtobject-tests/batch/many-0579.txtobject-tests/batch/many-0580.txtobject-tests/batch/many-0581.txtobject-tests/batch/many-0582.txtobject-tests/batch/many-0583.txtobject-tests/batch/many-0584.txtobject-tests/batch/many-0585.txtobject-tests/batch/many-0586.txtobject-tests/batch/many-0587.txtobject-tests/batch/many-0588.txtobject-tests/batch/many-0589.txtobject-tests/batch/many-0590.txtobject-tests/batch/many-0591.txtobject-tests/batch/many-0592.txtobject-tests/batch/many-0593.txtobject-tests/batch/many-0594.txtobject-tests/batch/many-0595.txtobject-tests/batch/many-0596.txtobject-tests/batch/many-0597.txtobject-tests/batch/many-0598.txtobject-tests/batch/many-0599.txtobject-tests/batch/many-0600.txtobject-tests/batch/many-0601.txtobject-tests/batch/many-0602.txtobject-tests/batch/many-0603.txtobject-tests/batch/many-0604.txtobject-tests/batch/many-0605.txtobject-tests/batch/many-0606.txtobject-tests/batch/many-0607.txtobject-tests/batch/many-0608.txtobject-tests/batch/many-0609.txtobject-tests/batch/many-0610.txtobject-tests/batch/many-0611.txtobject-tests/batch/many-0612.txtobject-tests/batch/many-0613.txtobject-tests/batch/many-0614.txtobject-tests/batch/many-0615.txtobject-tests/batch/many-0616.txtobject-tests/batch/many-0617.txtobject-tests/batch/many-0618.txtobject-tests/batch/many-0619.txtobject-tests/batch/many-0620.txtobject-tests/batch/many-0621.txtobject-tests/batch/many-0622.txtobject-tests/batch/many-0623.txtobject-tests/batch/many-0624.txtobject-tests/batch/many-0625.txtobject-tests/batch/many-0626.txtobject-tests/batch/many-0627.txtobject-tests/batch/many-0628.txtobject-tests/batch/many-0629.txtobject-tests/batch/many-0630.txtobject-tests/batch/many-0631.txtobject-tests/batch/many-0632.txtobject-tests/batch/many-0633.txtobject-tests/batch/many-0634.txtobject-tests/batch/many-0635.txtobject-tests/batch/many-0636.txtobject-tests/batch/many-0637.txtobject-tests/batch/many-0638.txtobject-tests/batch/many-0639.txtobject-tests/batch/many-0640.txtobject-tests/batch/many-0641.txtobject-tests/batch/many-0642.txtobject-tests/batch/many-0643.txtobject-tests/batch/many-0644.txtobject-tests/batch/many-0645.txtobject-tests/batch/many-0646.txtobject-tests/batch/many-0647.txtobject-tests/batch/many-0648.txtobject-tests/batch/many-0649.txtobject-tests/batch/many-0650.txtobject-tests/batch/many-0651.txtobject-tests/batch/many-0652.txtobject-tests/batch/many-0653.txtobject-tests/batch/many-0654.txtobject-tests/batch/many-0655.txtobject-tests/batch/many-0656.txtobject-tests/batch/many-0657.txtobject-tests/batch/many-0658.txtobject-tests/batch/many-0659.txtobject-tests/batch/many-0660.txtobject-tests/batch/many-0661.txtobject-tests/batch/many-0662.txtobject-tests/batch/many-0663.txtobject-tests/batch/many-0664.txtobject-tests/batch/many-0665.txtobject-tests/batch/many-0666.txtobject-tests/batch/many-0667.txtobject-tests/batch/many-0668.txtobject-tests/batch/many-0669.txtobject-tests/batch/many-0670.txtobject-tests/batch/many-0671.txtobject-tests/batch/many-0672.txtobject-tests/batch/many-0673.txtobject-tests/batch/many-0674.txtobject-tests/batch/many-0675.txtobject-tests/batch/many-0676.txtobject-tests/batch/many-0677.txtobject-tests/batch/many-0678.txtobject-tests/batch/many-0679.txtobject-tests/batch/many-0680.txtobject-tests/batch/many-0681.txtobject-tests/batch/many-0682.txtobject-tests/batch/many-0683.txtobject-tests/batch/many-0684.txtobject-tests/batch/many-0685.txtobject-tests/batch/many-0686.txtobject-tests/batch/many-0687.txtobject-tests/batch/many-0688.txtobject-tests/batch/many-0689.txtobject-tests/batch/many-0690.txtobject-tests/batch/many-0691.txtobject-tests/batch/many-0692.txtobject-tests/batch/many-0693.txtobject-tests/batch/many-0694.txtobject-tests/batch/many-0695.txtobject-tests/batch/many-0696.txtobject-tests/batch/many-0697.txtobject-tests/batch/many-0698.txtobject-tests/batch/many-0699.txtobject-tests/batch/many-0700.txtobject-tests/batch/many-0701.txtobject-tests/batch/many-0702.txtobject-tests/batch/many-0703.txtobject-tests/batch/many-0704.txtobject-tests/batch/many-0705.txtobject-tests/batch/many-0706.txtobject-tests/batch/many-0707.txtobject-tests/batch/many-0708.txtobject-tests/batch/many-0709.txtobject-tests/batch/many-0710.txtobject-tests/batch/many-0711.txtobject-tests/batch/many-0712.txtobject-tests/batch/many-0713.txtobject-tests/batch/many-0714.txtobject-tests/batch/many-0715.txtobject-tests/batch/many-0716.txtobject-tests/batch/many-0717.txtobject-tests/batch/many-0718.txtobject-tests/batch/many-0719.txtobject-tests/batch/many-0720.txtobject-tests/batch/many-0721.txtobject-tests/batch/many-0722.txtobject-tests/batch/many-0723.txtobject-tests/batch/many-0724.txtobject-tests/batch/many-0725.txtobject-tests/batch/many-0726.txtobject-tests/batch/many-0727.txtobject-tests/batch/many-0728.txtobject-tests/batch/many-0729.txtobject-tests/batch/many-0730.txtobject-tests/batch/many-0731.txtobject-tests/batch/many-0732.txtobject-tests/batch/many-0733.txtobject-tests/batch/many-0734.txtobject-tests/batch/many-0735.txtobject-tests/batch/many-0736.txtobject-tests/batch/many-0737.txtobject-tests/batch/many-0738.txtobject-tests/batch/many-0739.txtobject-tests/batch/many-0740.txtobject-tests/batch/many-0741.txtobject-tests/batch/many-0742.txtobject-tests/batch/many-0743.txtobject-tests/batch/many-0744.txtobject-tests/batch/many-0745.txtobject-tests/batch/many-0746.txtobject-tests/batch/many-0747.txtobject-tests/batch/many-0748.txtobject-tests/batch/many-0749.txtobject-tests/batch/many-0750.txtobject-tests/batch/many-0751.txtobject-tests/batch/many-0752.txtobject-tests/batch/many-0753.txtobject-tests/batch/many-0754.txtobject-tests/batch/many-0755.txtobject-tests/batch/many-0756.txtobject-tests/batch/many-0757.txtobject-tests/batch/many-0758.txtobject-tests/batch/many-0759.txtobject-tests/batch/many-0760.txtobject-tests/batch/many-0761.txtobject-tests/batch/many-0762.txtobject-tests/batch/many-0763.txtobject-tests/batch/many-0764.txtobject-tests/batch/many-0765.txtobject-tests/batch/many-0766.txtobject-tests/batch/many-0767.txtobject-tests/batch/many-0768.txtobject-tests/batch/many-0769.txtobject-tests/batch/many-0770.txtobject-tests/batch/many-0771.txtobject-tests/batch/many-0772.txtobject-tests/batch/many-0773.txtobject-tests/batch/many-0774.txtobject-tests/batch/many-0775.txtobject-tests/batch/many-0776.txtobject-tests/batch/many-0777.txtobject-tests/batch/many-0778.txtobject-tests/batch/many-0779.txtobject-tests/batch/many-0780.txtobject-tests/batch/many-0781.txtobject-tests/batch/many-0782.txtobject-tests/batch/many-0783.txtobject-tests/batch/many-0784.txtobject-tests/batch/many-0785.txtobject-tests/batch/many-0786.txtobject-tests/batch/many-0787.txtobject-tests/batch/many-0788.txtobject-tests/batch/many-0789.txtobject-tests/batch/many-0790.txtobject-tests/batch/many-0791.txtobject-tests/batch/many-0792.txtobject-tests/batch/many-0793.txtobject-tests/batch/many-0794.txtobject-tests/batch/many-0795.txtobject-tests/batch/many-0796.txtobject-tests/batch/many-0797.txtobject-tests/batch/many-0798.txtobject-tests/batch/many-0799.txtobject-tests/batch/many-0800.txtobject-tests/batch/many-0801.txtobject-tests/batch/many-0802.txtobject-tests/batch/many-0803.txtobject-tests/batch/many-0804.txtobject-tests/batch/many-0805.txtobject-tests/batch/many-0806.txtobject-tests/batch/many-0807.txtobject-tests/batch/many-0808.txtobject-tests/batch/many-0809.txtobject-tests/batch/many-0810.txtobject-tests/batch/many-0811.txtobject-tests/batch/many-0812.txtobject-tests/batch/many-0813.txtobject-tests/batch/many-0814.txtobject-tests/batch/many-0815.txtobject-tests/batch/many-0816.txtobject-tests/batch/many-0817.txtobject-tests/batch/many-0818.txtobject-tests/batch/many-0819.txtobject-tests/batch/many-0820.txtobject-tests/batch/many-0821.txtobject-tests/batch/many-0822.txtobject-tests/batch/many-0823.txtobject-tests/batch/many-0824.txtobject-tests/batch/many-0825.txtobject-tests/batch/many-0826.txtobject-tests/batch/many-0827.txtobject-tests/batch/many-0828.txtobject-tests/batch/many-0829.txtobject-tests/batch/many-0830.txtobject-tests/batch/many-0831.txtobject-tests/batch/many-0832.txtobject-tests/batch/many-0833.txtobject-tests/batch/many-0834.txtobject-tests/batch/many-0835.txtobject-tests/batch/many-0836.txtobject-tests/batch/many-0837.txtobject-tests/batch/many-0838.txtobject-tests/batch/many-0839.txtobject-tests/batch/many-0840.txtobject-tests/batch/many-0841.txtobject-tests/batch/many-0842.txtobject-tests/batch/many-0843.txtobject-tests/batch/many-0844.txtobject-tests/batch/many-0845.txtobject-tests/batch/many-0846.txtobject-tests/batch/many-0847.txtobject-tests/batch/many-0848.txtobject-tests/batch/many-0849.txtobject-tests/batch/many-0850.txtobject-tests/batch/many-0851.txtobject-tests/batch/many-0852.txtobject-tests/batch/many-0853.txtobject-tests/batch/many-0854.txtobject-tests/batch/many-0855.txtobject-tests/batch/many-0856.txtobject-tests/batch/many-0857.txtobject-tests/batch/many-0858.txtobject-tests/batch/many-0859.txtobject-tests/batch/many-0860.txtobject-tests/batch/many-0861.txtobject-tests/batch/many-0862.txtobject-tests/batch/many-0863.txtobject-tests/batch/many-0864.txtobject-tests/batch/many-0865.txtobject-tests/batch/many-0866.txtobject-tests/batch/many-0867.txtobject-tests/batch/many-0868.txtobject-tests/batch/many-0869.txtobject-tests/batch/many-0870.txtobject-tests/batch/many-0871.txtobject-tests/batch/many-0872.txtobject-tests/batch/many-0873.txtobject-tests/batch/many-0874.txtobject-tests/batch/many-0875.txtobject-tests/batch/many-0876.txtobject-tests/batch/many-0877.txtobject-tests/batch/many-0878.txtobject-tests/batch/many-0879.txtobject-tests/batch/many-0880.txtobject-tests/batch/many-0881.txtobject-tests/batch/many-0882.txtobject-tests/batch/many-0883.txtobject-tests/batch/many-0884.txtobject-tests/batch/many-0885.txtobject-tests/batch/many-0886.txtobject-tests/batch/many-0887.txtobject-tests/batch/many-0888.txtobject-tests/batch/many-0889.txtobject-tests/batch/many-0890.txtobject-tests/batch/many-0891.txtobject-tests/batch/many-0892.txtobject-tests/batch/many-0893.txtobject-tests/batch/many-0894.txtobject-tests/batch/many-0895.txtobject-tests/batch/many-0896.txtobject-tests/batch/many-0897.txtobject-tests/batch/many-0898.txtobject-tests/batch/many-0899.txtobject-tests/batch/many-0900.txtobject-tests/batch/many-0901.txtobject-tests/batch/many-0902.txtobject-tests/batch/many-0903.txtobject-tests/batch/many-0904.txtobject-tests/batch/many-0905.txtobject-tests/batch/many-0906.txtobject-tests/batch/many-0907.txtobject-tests/batch/many-0908.txtobject-tests/batch/many-0909.txtobject-tests/batch/many-0910.txtobject-tests/batch/many-0911.txtobject-tests/batch/many-0912.txtobject-tests/batch/many-0913.txtobject-tests/batch/many-0914.txtobject-tests/batch/many-0915.txtobject-tests/batch/many-0916.txtobject-tests/batch/many-0917.txtobject-tests/batch/many-0918.txtobject-tests/batch/many-0919.txtobject-tests/batch/many-0920.txtobject-tests/batch/many-0921.txtobject-tests/batch/many-0922.txtobject-tests/batch/many-0923.txtobject-tests/batch/many-0924.txtobject-tests/batch/many-0925.txtobject-tests/batch/many-0926.txtobject-tests/batch/many-0927.txtobject-tests/batch/many-0928.txtobject-tests/batch/many-0929.txtobject-tests/batch/many-0930.txtobject-tests/batch/many-0931.txtobject-tests/batch/many-0932.txtobject-tests/batch/many-0933.txtobject-tests/batch/many-0934.txtobject-tests/batch/many-0935.txtobject-tests/batch/many-0936.txtobject-tests/batch/many-0937.txtobject-tests/batch/many-0938.txtobject-tests/batch/many-0939.txtobject-tests/batch/many-0940.txtobject-tests/batch/many-0941.txtobject-tests/batch/many-0942.txtobject-tests/batch/many-0943.txtobject-tests/batch/many-0944.txtobject-tests/batch/many-0945.txtobject-tests/batch/many-0946.txtobject-tests/batch/many-0947.txtobject-tests/batch/many-0948.txtobject-tests/batch/many-0949.txtobject-tests/batch/many-0950.txtobject-tests/batch/many-0951.txtobject-tests/batch/many-0952.txtobject-tests/batch/many-0953.txtobject-tests/batch/many-0954.txtobject-tests/batch/many-0955.txtobject-tests/batch/many-0956.txtobject-tests/batch/many-0957.txtobject-tests/batch/many-0958.txtobject-tests/batch/many-0959.txtobject-tests/batch/many-0960.txtobject-tests/batch/many-0961.txtobject-tests/batch/many-0962.txtobject-tests/batch/many-0963.txtobject-tests/batch/many-0964.txtobject-tests/batch/many-0965.txtobject-tests/batch/many-0966.txtobject-tests/batch/many-0967.txtobject-tests/batch/many-0968.txtobject-tests/batch/many-0969.txtobject-tests/batch/many-0970.txtobject-tests/batch/many-0971.txtobject-tests/batch/many-0972.txtobject-tests/batch/many-0973.txtobject-tests/batch/many-0974.txtobject-tests/batch/many-0975.txtobject-tests/batch/many-0976.txtobject-tests/batch/many-0977.txtobject-tests/batch/many-0978.txtobject-tests/batch/many-0979.txtobject-tests/batch/many-0980.txtobject-tests/batch/many-0981.txtobject-tests/batch/many-0982.txtobject-tests/batch/many-0983.txtobject-tests/batch/many-0984.txtobject-tests/batch/many-0985.txtobject-tests/batch/many-0986.txtobject-tests/batch/many-0987.txtobject-tests/batch/many-0988.txtobject-tests/batch/many-0989.txtobject-tests/batch/many-0990.txtobject-tests/batch/many-0991.txtobject-tests/batch/many-0992.txtobject-tests/batch/many-0993.txtobject-tests/batch/many-0994.txtobject-tests/batch/many-0995.txtobject-tests/batch/many-0996.txtobject-tests/batch/many-0997.txtobject-tests/batch/many-0998.txtobject-tests/batch/many-0999.txt" } }, { - "at": "/query/comp", + "at": "/query/delete", "optional": false, "rule": { "is": "equal", - "value": "appendblock" + "value": "" + } + }, + { + "at": "/headers/x-amz-checksum-crc64nvme", + "optional": false, + "rule": { + "is": "matches", + "pattern": "[A-Za-z0-9+/]{11}=" + } + }, + { + "at": "", + "optional": false, + "rule": { + "is": "body_checksum", + "header": "x-amz-checksum-crc64nvme", + "algorithm": "crc64nvme" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 201, + "status": 200, "headers": { + "content-type": "application/xml", "date": { "from": "now" - }, - "etag": "\"fixture-etag\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-blob-append-offset": "5", - "x-ms-blob-committed-block-count": "2", - "x-ms-request-server-encrypted": "true" + } }, "body": { - "encoding": "empty" - } + "encoding": "utf8", + "data": "\nobject-tests/batch/many-0000.txtobject-tests/batch/many-0001.txtobject-tests/batch/many-0002.txtobject-tests/batch/many-0003.txtobject-tests/batch/many-0004.txtobject-tests/batch/many-0005.txtobject-tests/batch/many-0006.txtobject-tests/batch/many-0007.txtobject-tests/batch/many-0008.txtobject-tests/batch/many-0009.txtobject-tests/batch/many-0010.txtobject-tests/batch/many-0011.txtobject-tests/batch/many-0012.txtobject-tests/batch/many-0013.txtobject-tests/batch/many-0014.txtobject-tests/batch/many-0015.txtobject-tests/batch/many-0016.txtobject-tests/batch/many-0017.txtobject-tests/batch/many-0018.txtobject-tests/batch/many-0019.txtobject-tests/batch/many-0020.txtobject-tests/batch/many-0021.txtobject-tests/batch/many-0022.txtobject-tests/batch/many-0023.txtobject-tests/batch/many-0024.txtobject-tests/batch/many-0025.txtobject-tests/batch/many-0026.txtobject-tests/batch/many-0027.txtobject-tests/batch/many-0028.txtobject-tests/batch/many-0029.txtobject-tests/batch/many-0030.txtobject-tests/batch/many-0031.txtobject-tests/batch/many-0032.txtobject-tests/batch/many-0033.txtobject-tests/batch/many-0034.txtobject-tests/batch/many-0035.txtobject-tests/batch/many-0036.txtobject-tests/batch/many-0037.txtobject-tests/batch/many-0038.txtobject-tests/batch/many-0039.txtobject-tests/batch/many-0040.txtobject-tests/batch/many-0041.txtobject-tests/batch/many-0042.txtobject-tests/batch/many-0043.txtobject-tests/batch/many-0044.txtobject-tests/batch/many-0045.txtobject-tests/batch/many-0046.txtobject-tests/batch/many-0047.txtobject-tests/batch/many-0048.txtobject-tests/batch/many-0049.txtobject-tests/batch/many-0050.txtobject-tests/batch/many-0051.txtobject-tests/batch/many-0052.txtobject-tests/batch/many-0053.txtobject-tests/batch/many-0054.txtobject-tests/batch/many-0055.txtobject-tests/batch/many-0056.txtobject-tests/batch/many-0057.txtobject-tests/batch/many-0058.txtobject-tests/batch/many-0059.txtobject-tests/batch/many-0060.txtobject-tests/batch/many-0061.txtobject-tests/batch/many-0062.txtobject-tests/batch/many-0063.txtobject-tests/batch/many-0064.txtobject-tests/batch/many-0065.txtobject-tests/batch/many-0066.txtobject-tests/batch/many-0067.txtobject-tests/batch/many-0068.txtobject-tests/batch/many-0069.txtobject-tests/batch/many-0070.txtobject-tests/batch/many-0071.txtobject-tests/batch/many-0072.txtobject-tests/batch/many-0073.txtobject-tests/batch/many-0074.txtobject-tests/batch/many-0075.txtobject-tests/batch/many-0076.txtobject-tests/batch/many-0077.txtobject-tests/batch/many-0078.txtobject-tests/batch/many-0079.txtobject-tests/batch/many-0080.txtobject-tests/batch/many-0081.txtobject-tests/batch/many-0082.txtobject-tests/batch/many-0083.txtobject-tests/batch/many-0084.txtobject-tests/batch/many-0085.txtobject-tests/batch/many-0086.txtobject-tests/batch/many-0087.txtobject-tests/batch/many-0088.txtobject-tests/batch/many-0089.txtobject-tests/batch/many-0090.txtobject-tests/batch/many-0091.txtobject-tests/batch/many-0092.txtobject-tests/batch/many-0093.txtobject-tests/batch/many-0094.txtobject-tests/batch/many-0095.txtobject-tests/batch/many-0096.txtobject-tests/batch/many-0097.txtobject-tests/batch/many-0098.txtobject-tests/batch/many-0099.txtobject-tests/batch/many-0100.txtobject-tests/batch/many-0101.txtobject-tests/batch/many-0102.txtobject-tests/batch/many-0103.txtobject-tests/batch/many-0104.txtobject-tests/batch/many-0105.txtobject-tests/batch/many-0106.txtobject-tests/batch/many-0107.txtobject-tests/batch/many-0108.txtobject-tests/batch/many-0109.txtobject-tests/batch/many-0110.txtobject-tests/batch/many-0111.txtobject-tests/batch/many-0112.txtobject-tests/batch/many-0113.txtobject-tests/batch/many-0114.txtobject-tests/batch/many-0115.txtobject-tests/batch/many-0116.txtobject-tests/batch/many-0117.txtobject-tests/batch/many-0118.txtobject-tests/batch/many-0119.txtobject-tests/batch/many-0120.txtobject-tests/batch/many-0121.txtobject-tests/batch/many-0122.txtobject-tests/batch/many-0123.txtobject-tests/batch/many-0124.txtobject-tests/batch/many-0125.txtobject-tests/batch/many-0126.txtobject-tests/batch/many-0127.txtobject-tests/batch/many-0128.txtobject-tests/batch/many-0129.txtobject-tests/batch/many-0130.txtobject-tests/batch/many-0131.txtobject-tests/batch/many-0132.txtobject-tests/batch/many-0133.txtobject-tests/batch/many-0134.txtobject-tests/batch/many-0135.txtobject-tests/batch/many-0136.txtobject-tests/batch/many-0137.txtobject-tests/batch/many-0138.txtobject-tests/batch/many-0139.txtobject-tests/batch/many-0140.txtobject-tests/batch/many-0141.txtobject-tests/batch/many-0142.txtobject-tests/batch/many-0143.txtobject-tests/batch/many-0144.txtobject-tests/batch/many-0145.txtobject-tests/batch/many-0146.txtobject-tests/batch/many-0147.txtobject-tests/batch/many-0148.txtobject-tests/batch/many-0149.txtobject-tests/batch/many-0150.txtobject-tests/batch/many-0151.txtobject-tests/batch/many-0152.txtobject-tests/batch/many-0153.txtobject-tests/batch/many-0154.txtobject-tests/batch/many-0155.txtobject-tests/batch/many-0156.txtobject-tests/batch/many-0157.txtobject-tests/batch/many-0158.txtobject-tests/batch/many-0159.txtobject-tests/batch/many-0160.txtobject-tests/batch/many-0161.txtobject-tests/batch/many-0162.txtobject-tests/batch/many-0163.txtobject-tests/batch/many-0164.txtobject-tests/batch/many-0165.txtobject-tests/batch/many-0166.txtobject-tests/batch/many-0167.txtobject-tests/batch/many-0168.txtobject-tests/batch/many-0169.txtobject-tests/batch/many-0170.txtobject-tests/batch/many-0171.txtobject-tests/batch/many-0172.txtobject-tests/batch/many-0173.txtobject-tests/batch/many-0174.txtobject-tests/batch/many-0175.txtobject-tests/batch/many-0176.txtobject-tests/batch/many-0177.txtobject-tests/batch/many-0178.txtobject-tests/batch/many-0179.txtobject-tests/batch/many-0180.txtobject-tests/batch/many-0181.txtobject-tests/batch/many-0182.txtobject-tests/batch/many-0183.txtobject-tests/batch/many-0184.txtobject-tests/batch/many-0185.txtobject-tests/batch/many-0186.txtobject-tests/batch/many-0187.txtobject-tests/batch/many-0188.txtobject-tests/batch/many-0189.txtobject-tests/batch/many-0190.txtobject-tests/batch/many-0191.txtobject-tests/batch/many-0192.txtobject-tests/batch/many-0193.txtobject-tests/batch/many-0194.txtobject-tests/batch/many-0195.txtobject-tests/batch/many-0196.txtobject-tests/batch/many-0197.txtobject-tests/batch/many-0198.txtobject-tests/batch/many-0199.txtobject-tests/batch/many-0200.txtobject-tests/batch/many-0201.txtobject-tests/batch/many-0202.txtobject-tests/batch/many-0203.txtobject-tests/batch/many-0204.txtobject-tests/batch/many-0205.txtobject-tests/batch/many-0206.txtobject-tests/batch/many-0207.txtobject-tests/batch/many-0208.txtobject-tests/batch/many-0209.txtobject-tests/batch/many-0210.txtobject-tests/batch/many-0211.txtobject-tests/batch/many-0212.txtobject-tests/batch/many-0213.txtobject-tests/batch/many-0214.txtobject-tests/batch/many-0215.txtobject-tests/batch/many-0216.txtobject-tests/batch/many-0217.txtobject-tests/batch/many-0218.txtobject-tests/batch/many-0219.txtobject-tests/batch/many-0220.txtobject-tests/batch/many-0221.txtobject-tests/batch/many-0222.txtobject-tests/batch/many-0223.txtobject-tests/batch/many-0224.txtobject-tests/batch/many-0225.txtobject-tests/batch/many-0226.txtobject-tests/batch/many-0227.txtobject-tests/batch/many-0228.txtobject-tests/batch/many-0229.txtobject-tests/batch/many-0230.txtobject-tests/batch/many-0231.txtobject-tests/batch/many-0232.txtobject-tests/batch/many-0233.txtobject-tests/batch/many-0234.txtobject-tests/batch/many-0235.txtobject-tests/batch/many-0236.txtobject-tests/batch/many-0237.txtobject-tests/batch/many-0238.txtobject-tests/batch/many-0239.txtobject-tests/batch/many-0240.txtobject-tests/batch/many-0241.txtobject-tests/batch/many-0242.txtobject-tests/batch/many-0243.txtobject-tests/batch/many-0244.txtobject-tests/batch/many-0245.txtobject-tests/batch/many-0246.txtobject-tests/batch/many-0247.txtobject-tests/batch/many-0248.txtobject-tests/batch/many-0249.txtobject-tests/batch/many-0250.txtobject-tests/batch/many-0251.txtobject-tests/batch/many-0252.txtobject-tests/batch/many-0253.txtobject-tests/batch/many-0254.txtobject-tests/batch/many-0255.txtobject-tests/batch/many-0256.txtobject-tests/batch/many-0257.txtobject-tests/batch/many-0258.txtobject-tests/batch/many-0259.txtobject-tests/batch/many-0260.txtobject-tests/batch/many-0261.txtobject-tests/batch/many-0262.txtobject-tests/batch/many-0263.txtobject-tests/batch/many-0264.txtobject-tests/batch/many-0265.txtobject-tests/batch/many-0266.txtobject-tests/batch/many-0267.txtobject-tests/batch/many-0268.txtobject-tests/batch/many-0269.txtobject-tests/batch/many-0270.txtobject-tests/batch/many-0271.txtobject-tests/batch/many-0272.txtobject-tests/batch/many-0273.txtobject-tests/batch/many-0274.txtobject-tests/batch/many-0275.txtobject-tests/batch/many-0276.txtobject-tests/batch/many-0277.txtobject-tests/batch/many-0278.txtobject-tests/batch/many-0279.txtobject-tests/batch/many-0280.txtobject-tests/batch/many-0281.txtobject-tests/batch/many-0282.txtobject-tests/batch/many-0283.txtobject-tests/batch/many-0284.txtobject-tests/batch/many-0285.txtobject-tests/batch/many-0286.txtobject-tests/batch/many-0287.txtobject-tests/batch/many-0288.txtobject-tests/batch/many-0289.txtobject-tests/batch/many-0290.txtobject-tests/batch/many-0291.txtobject-tests/batch/many-0292.txtobject-tests/batch/many-0293.txtobject-tests/batch/many-0294.txtobject-tests/batch/many-0295.txtobject-tests/batch/many-0296.txtobject-tests/batch/many-0297.txtobject-tests/batch/many-0298.txtobject-tests/batch/many-0299.txtobject-tests/batch/many-0300.txtobject-tests/batch/many-0301.txtobject-tests/batch/many-0302.txtobject-tests/batch/many-0303.txtobject-tests/batch/many-0304.txtobject-tests/batch/many-0305.txtobject-tests/batch/many-0306.txtobject-tests/batch/many-0307.txtobject-tests/batch/many-0308.txtobject-tests/batch/many-0309.txtobject-tests/batch/many-0310.txtobject-tests/batch/many-0311.txtobject-tests/batch/many-0312.txtobject-tests/batch/many-0313.txtobject-tests/batch/many-0314.txtobject-tests/batch/many-0315.txtobject-tests/batch/many-0316.txtobject-tests/batch/many-0317.txtobject-tests/batch/many-0318.txtobject-tests/batch/many-0319.txtobject-tests/batch/many-0320.txtobject-tests/batch/many-0321.txtobject-tests/batch/many-0322.txtobject-tests/batch/many-0323.txtobject-tests/batch/many-0324.txtobject-tests/batch/many-0325.txtobject-tests/batch/many-0326.txtobject-tests/batch/many-0327.txtobject-tests/batch/many-0328.txtobject-tests/batch/many-0329.txtobject-tests/batch/many-0330.txtobject-tests/batch/many-0331.txtobject-tests/batch/many-0332.txtobject-tests/batch/many-0333.txtobject-tests/batch/many-0334.txtobject-tests/batch/many-0335.txtobject-tests/batch/many-0336.txtobject-tests/batch/many-0337.txtobject-tests/batch/many-0338.txtobject-tests/batch/many-0339.txtobject-tests/batch/many-0340.txtobject-tests/batch/many-0341.txtobject-tests/batch/many-0342.txtobject-tests/batch/many-0343.txtobject-tests/batch/many-0344.txtobject-tests/batch/many-0345.txtobject-tests/batch/many-0346.txtobject-tests/batch/many-0347.txtobject-tests/batch/many-0348.txtobject-tests/batch/many-0349.txtobject-tests/batch/many-0350.txtobject-tests/batch/many-0351.txtobject-tests/batch/many-0352.txtobject-tests/batch/many-0353.txtobject-tests/batch/many-0354.txtobject-tests/batch/many-0355.txtobject-tests/batch/many-0356.txtobject-tests/batch/many-0357.txtobject-tests/batch/many-0358.txtobject-tests/batch/many-0359.txtobject-tests/batch/many-0360.txtobject-tests/batch/many-0361.txtobject-tests/batch/many-0362.txtobject-tests/batch/many-0363.txtobject-tests/batch/many-0364.txtobject-tests/batch/many-0365.txtobject-tests/batch/many-0366.txtobject-tests/batch/many-0367.txtobject-tests/batch/many-0368.txtobject-tests/batch/many-0369.txtobject-tests/batch/many-0370.txtobject-tests/batch/many-0371.txtobject-tests/batch/many-0372.txtobject-tests/batch/many-0373.txtobject-tests/batch/many-0374.txtobject-tests/batch/many-0375.txtobject-tests/batch/many-0376.txtobject-tests/batch/many-0377.txtobject-tests/batch/many-0378.txtobject-tests/batch/many-0379.txtobject-tests/batch/many-0380.txtobject-tests/batch/many-0381.txtobject-tests/batch/many-0382.txtobject-tests/batch/many-0383.txtobject-tests/batch/many-0384.txtobject-tests/batch/many-0385.txtobject-tests/batch/many-0386.txtobject-tests/batch/many-0387.txtobject-tests/batch/many-0388.txtobject-tests/batch/many-0389.txtobject-tests/batch/many-0390.txtobject-tests/batch/many-0391.txtobject-tests/batch/many-0392.txtobject-tests/batch/many-0393.txtobject-tests/batch/many-0394.txtobject-tests/batch/many-0395.txtobject-tests/batch/many-0396.txtobject-tests/batch/many-0397.txtobject-tests/batch/many-0398.txtobject-tests/batch/many-0399.txtobject-tests/batch/many-0400.txtobject-tests/batch/many-0401.txtobject-tests/batch/many-0402.txtobject-tests/batch/many-0403.txtobject-tests/batch/many-0404.txtobject-tests/batch/many-0405.txtobject-tests/batch/many-0406.txtobject-tests/batch/many-0407.txtobject-tests/batch/many-0408.txtobject-tests/batch/many-0409.txtobject-tests/batch/many-0410.txtobject-tests/batch/many-0411.txtobject-tests/batch/many-0412.txtobject-tests/batch/many-0413.txtobject-tests/batch/many-0414.txtobject-tests/batch/many-0415.txtobject-tests/batch/many-0416.txtobject-tests/batch/many-0417.txtobject-tests/batch/many-0418.txtobject-tests/batch/many-0419.txtobject-tests/batch/many-0420.txtobject-tests/batch/many-0421.txtobject-tests/batch/many-0422.txtobject-tests/batch/many-0423.txtobject-tests/batch/many-0424.txtobject-tests/batch/many-0425.txtobject-tests/batch/many-0426.txtobject-tests/batch/many-0427.txtobject-tests/batch/many-0428.txtobject-tests/batch/many-0429.txtobject-tests/batch/many-0430.txtobject-tests/batch/many-0431.txtobject-tests/batch/many-0432.txtobject-tests/batch/many-0433.txtobject-tests/batch/many-0434.txtobject-tests/batch/many-0435.txtobject-tests/batch/many-0436.txtobject-tests/batch/many-0437.txtobject-tests/batch/many-0438.txtobject-tests/batch/many-0439.txtobject-tests/batch/many-0440.txtobject-tests/batch/many-0441.txtobject-tests/batch/many-0442.txtobject-tests/batch/many-0443.txtobject-tests/batch/many-0444.txtobject-tests/batch/many-0445.txtobject-tests/batch/many-0446.txtobject-tests/batch/many-0447.txtobject-tests/batch/many-0448.txtobject-tests/batch/many-0449.txtobject-tests/batch/many-0450.txtobject-tests/batch/many-0451.txtobject-tests/batch/many-0452.txtobject-tests/batch/many-0453.txtobject-tests/batch/many-0454.txtobject-tests/batch/many-0455.txtobject-tests/batch/many-0456.txtobject-tests/batch/many-0457.txtobject-tests/batch/many-0458.txtobject-tests/batch/many-0459.txtobject-tests/batch/many-0460.txtobject-tests/batch/many-0461.txtobject-tests/batch/many-0462.txtobject-tests/batch/many-0463.txtobject-tests/batch/many-0464.txtobject-tests/batch/many-0465.txtobject-tests/batch/many-0466.txtobject-tests/batch/many-0467.txtobject-tests/batch/many-0468.txtobject-tests/batch/many-0469.txtobject-tests/batch/many-0470.txtobject-tests/batch/many-0471.txtobject-tests/batch/many-0472.txtobject-tests/batch/many-0473.txtobject-tests/batch/many-0474.txtobject-tests/batch/many-0475.txtobject-tests/batch/many-0476.txtobject-tests/batch/many-0477.txtobject-tests/batch/many-0478.txtobject-tests/batch/many-0479.txtobject-tests/batch/many-0480.txtobject-tests/batch/many-0481.txtobject-tests/batch/many-0482.txtobject-tests/batch/many-0483.txtobject-tests/batch/many-0484.txtobject-tests/batch/many-0485.txtobject-tests/batch/many-0486.txtobject-tests/batch/many-0487.txtobject-tests/batch/many-0488.txtobject-tests/batch/many-0489.txtobject-tests/batch/many-0490.txtobject-tests/batch/many-0491.txtobject-tests/batch/many-0492.txtobject-tests/batch/many-0493.txtobject-tests/batch/many-0494.txtobject-tests/batch/many-0495.txtobject-tests/batch/many-0496.txtobject-tests/batch/many-0497.txtobject-tests/batch/many-0498.txtobject-tests/batch/many-0499.txtobject-tests/batch/many-0500.txtobject-tests/batch/many-0501.txtobject-tests/batch/many-0502.txtobject-tests/batch/many-0503.txtobject-tests/batch/many-0504.txtobject-tests/batch/many-0505.txtobject-tests/batch/many-0506.txtobject-tests/batch/many-0507.txtobject-tests/batch/many-0508.txtobject-tests/batch/many-0509.txtobject-tests/batch/many-0510.txtobject-tests/batch/many-0511.txtobject-tests/batch/many-0512.txtobject-tests/batch/many-0513.txtobject-tests/batch/many-0514.txtobject-tests/batch/many-0515.txtobject-tests/batch/many-0516.txtobject-tests/batch/many-0517.txtobject-tests/batch/many-0518.txtobject-tests/batch/many-0519.txtobject-tests/batch/many-0520.txtobject-tests/batch/many-0521.txtobject-tests/batch/many-0522.txtobject-tests/batch/many-0523.txtobject-tests/batch/many-0524.txtobject-tests/batch/many-0525.txtobject-tests/batch/many-0526.txtobject-tests/batch/many-0527.txtobject-tests/batch/many-0528.txtobject-tests/batch/many-0529.txtobject-tests/batch/many-0530.txtobject-tests/batch/many-0531.txtobject-tests/batch/many-0532.txtobject-tests/batch/many-0533.txtobject-tests/batch/many-0534.txtobject-tests/batch/many-0535.txtobject-tests/batch/many-0536.txtobject-tests/batch/many-0537.txtobject-tests/batch/many-0538.txtobject-tests/batch/many-0539.txtobject-tests/batch/many-0540.txtobject-tests/batch/many-0541.txtobject-tests/batch/many-0542.txtobject-tests/batch/many-0543.txtobject-tests/batch/many-0544.txtobject-tests/batch/many-0545.txtobject-tests/batch/many-0546.txtobject-tests/batch/many-0547.txtobject-tests/batch/many-0548.txtobject-tests/batch/many-0549.txtobject-tests/batch/many-0550.txtobject-tests/batch/many-0551.txtobject-tests/batch/many-0552.txtobject-tests/batch/many-0553.txtobject-tests/batch/many-0554.txtobject-tests/batch/many-0555.txtobject-tests/batch/many-0556.txtobject-tests/batch/many-0557.txtobject-tests/batch/many-0558.txtobject-tests/batch/many-0559.txtobject-tests/batch/many-0560.txtobject-tests/batch/many-0561.txtobject-tests/batch/many-0562.txtobject-tests/batch/many-0563.txtobject-tests/batch/many-0564.txtobject-tests/batch/many-0565.txtobject-tests/batch/many-0566.txtobject-tests/batch/many-0567.txtobject-tests/batch/many-0568.txtobject-tests/batch/many-0569.txtobject-tests/batch/many-0570.txtobject-tests/batch/many-0571.txtobject-tests/batch/many-0572.txtobject-tests/batch/many-0573.txtobject-tests/batch/many-0574.txtobject-tests/batch/many-0575.txtobject-tests/batch/many-0576.txtobject-tests/batch/many-0577.txtobject-tests/batch/many-0578.txtobject-tests/batch/many-0579.txtobject-tests/batch/many-0580.txtobject-tests/batch/many-0581.txtobject-tests/batch/many-0582.txtobject-tests/batch/many-0583.txtobject-tests/batch/many-0584.txtobject-tests/batch/many-0585.txtobject-tests/batch/many-0586.txtobject-tests/batch/many-0587.txtobject-tests/batch/many-0588.txtobject-tests/batch/many-0589.txtobject-tests/batch/many-0590.txtobject-tests/batch/many-0591.txtobject-tests/batch/many-0592.txtobject-tests/batch/many-0593.txtobject-tests/batch/many-0594.txtobject-tests/batch/many-0595.txtobject-tests/batch/many-0596.txtobject-tests/batch/many-0597.txtobject-tests/batch/many-0598.txtobject-tests/batch/many-0599.txtobject-tests/batch/many-0600.txtobject-tests/batch/many-0601.txtobject-tests/batch/many-0602.txtobject-tests/batch/many-0603.txtobject-tests/batch/many-0604.txtobject-tests/batch/many-0605.txtobject-tests/batch/many-0606.txtobject-tests/batch/many-0607.txtobject-tests/batch/many-0608.txtobject-tests/batch/many-0609.txtobject-tests/batch/many-0610.txtobject-tests/batch/many-0611.txtobject-tests/batch/many-0612.txtobject-tests/batch/many-0613.txtobject-tests/batch/many-0614.txtobject-tests/batch/many-0615.txtobject-tests/batch/many-0616.txtobject-tests/batch/many-0617.txtobject-tests/batch/many-0618.txtobject-tests/batch/many-0619.txtobject-tests/batch/many-0620.txtobject-tests/batch/many-0621.txtobject-tests/batch/many-0622.txtobject-tests/batch/many-0623.txtobject-tests/batch/many-0624.txtobject-tests/batch/many-0625.txtobject-tests/batch/many-0626.txtobject-tests/batch/many-0627.txtobject-tests/batch/many-0628.txtobject-tests/batch/many-0629.txtobject-tests/batch/many-0630.txtobject-tests/batch/many-0631.txtobject-tests/batch/many-0632.txtobject-tests/batch/many-0633.txtobject-tests/batch/many-0634.txtobject-tests/batch/many-0635.txtobject-tests/batch/many-0636.txtobject-tests/batch/many-0637.txtobject-tests/batch/many-0638.txtobject-tests/batch/many-0639.txtobject-tests/batch/many-0640.txtobject-tests/batch/many-0641.txtobject-tests/batch/many-0642.txtobject-tests/batch/many-0643.txtobject-tests/batch/many-0644.txtobject-tests/batch/many-0645.txtobject-tests/batch/many-0646.txtobject-tests/batch/many-0647.txtobject-tests/batch/many-0648.txtobject-tests/batch/many-0649.txtobject-tests/batch/many-0650.txtobject-tests/batch/many-0651.txtobject-tests/batch/many-0652.txtobject-tests/batch/many-0653.txtobject-tests/batch/many-0654.txtobject-tests/batch/many-0655.txtobject-tests/batch/many-0656.txtobject-tests/batch/many-0657.txtobject-tests/batch/many-0658.txtobject-tests/batch/many-0659.txtobject-tests/batch/many-0660.txtobject-tests/batch/many-0661.txtobject-tests/batch/many-0662.txtobject-tests/batch/many-0663.txtobject-tests/batch/many-0664.txtobject-tests/batch/many-0665.txtobject-tests/batch/many-0666.txtobject-tests/batch/many-0667.txtobject-tests/batch/many-0668.txtobject-tests/batch/many-0669.txtobject-tests/batch/many-0670.txtobject-tests/batch/many-0671.txtobject-tests/batch/many-0672.txtobject-tests/batch/many-0673.txtobject-tests/batch/many-0674.txtobject-tests/batch/many-0675.txtobject-tests/batch/many-0676.txtobject-tests/batch/many-0677.txtobject-tests/batch/many-0678.txtobject-tests/batch/many-0679.txtobject-tests/batch/many-0680.txtobject-tests/batch/many-0681.txtobject-tests/batch/many-0682.txtobject-tests/batch/many-0683.txtobject-tests/batch/many-0684.txtobject-tests/batch/many-0685.txtobject-tests/batch/many-0686.txtobject-tests/batch/many-0687.txtobject-tests/batch/many-0688.txtobject-tests/batch/many-0689.txtobject-tests/batch/many-0690.txtobject-tests/batch/many-0691.txtobject-tests/batch/many-0692.txtobject-tests/batch/many-0693.txtobject-tests/batch/many-0694.txtobject-tests/batch/many-0695.txtobject-tests/batch/many-0696.txtobject-tests/batch/many-0697.txtobject-tests/batch/many-0698.txtobject-tests/batch/many-0699.txtobject-tests/batch/many-0700.txtobject-tests/batch/many-0701.txtobject-tests/batch/many-0702.txtobject-tests/batch/many-0703.txtobject-tests/batch/many-0704.txtobject-tests/batch/many-0705.txtobject-tests/batch/many-0706.txtobject-tests/batch/many-0707.txtobject-tests/batch/many-0708.txtobject-tests/batch/many-0709.txtobject-tests/batch/many-0710.txtobject-tests/batch/many-0711.txtobject-tests/batch/many-0712.txtobject-tests/batch/many-0713.txtobject-tests/batch/many-0714.txtobject-tests/batch/many-0715.txtobject-tests/batch/many-0716.txtobject-tests/batch/many-0717.txtobject-tests/batch/many-0718.txtobject-tests/batch/many-0719.txtobject-tests/batch/many-0720.txtobject-tests/batch/many-0721.txtobject-tests/batch/many-0722.txtobject-tests/batch/many-0723.txtobject-tests/batch/many-0724.txtobject-tests/batch/many-0725.txtobject-tests/batch/many-0726.txtobject-tests/batch/many-0727.txtobject-tests/batch/many-0728.txtobject-tests/batch/many-0729.txtobject-tests/batch/many-0730.txtobject-tests/batch/many-0731.txtobject-tests/batch/many-0732.txtobject-tests/batch/many-0733.txtobject-tests/batch/many-0734.txtobject-tests/batch/many-0735.txtobject-tests/batch/many-0736.txtobject-tests/batch/many-0737.txtobject-tests/batch/many-0738.txtobject-tests/batch/many-0739.txtobject-tests/batch/many-0740.txtobject-tests/batch/many-0741.txtobject-tests/batch/many-0742.txtobject-tests/batch/many-0743.txtobject-tests/batch/many-0744.txtobject-tests/batch/many-0745.txtobject-tests/batch/many-0746.txtobject-tests/batch/many-0747.txtobject-tests/batch/many-0748.txtobject-tests/batch/many-0749.txtobject-tests/batch/many-0750.txtobject-tests/batch/many-0751.txtobject-tests/batch/many-0752.txtobject-tests/batch/many-0753.txtobject-tests/batch/many-0754.txtobject-tests/batch/many-0755.txtobject-tests/batch/many-0756.txtobject-tests/batch/many-0757.txtobject-tests/batch/many-0758.txtobject-tests/batch/many-0759.txtobject-tests/batch/many-0760.txtobject-tests/batch/many-0761.txtobject-tests/batch/many-0762.txtobject-tests/batch/many-0763.txtobject-tests/batch/many-0764.txtobject-tests/batch/many-0765.txtobject-tests/batch/many-0766.txtobject-tests/batch/many-0767.txtobject-tests/batch/many-0768.txtobject-tests/batch/many-0769.txtobject-tests/batch/many-0770.txtobject-tests/batch/many-0771.txtobject-tests/batch/many-0772.txtobject-tests/batch/many-0773.txtobject-tests/batch/many-0774.txtobject-tests/batch/many-0775.txtobject-tests/batch/many-0776.txtobject-tests/batch/many-0777.txtobject-tests/batch/many-0778.txtobject-tests/batch/many-0779.txtobject-tests/batch/many-0780.txtobject-tests/batch/many-0781.txtobject-tests/batch/many-0782.txtobject-tests/batch/many-0783.txtobject-tests/batch/many-0784.txtobject-tests/batch/many-0785.txtobject-tests/batch/many-0786.txtobject-tests/batch/many-0787.txtobject-tests/batch/many-0788.txtobject-tests/batch/many-0789.txtobject-tests/batch/many-0790.txtobject-tests/batch/many-0791.txtobject-tests/batch/many-0792.txtobject-tests/batch/many-0793.txtobject-tests/batch/many-0794.txtobject-tests/batch/many-0795.txtobject-tests/batch/many-0796.txtobject-tests/batch/many-0797.txtobject-tests/batch/many-0798.txtobject-tests/batch/many-0799.txtobject-tests/batch/many-0800.txtobject-tests/batch/many-0801.txtobject-tests/batch/many-0802.txtobject-tests/batch/many-0803.txtobject-tests/batch/many-0804.txtobject-tests/batch/many-0805.txtobject-tests/batch/many-0806.txtobject-tests/batch/many-0807.txtobject-tests/batch/many-0808.txtobject-tests/batch/many-0809.txtobject-tests/batch/many-0810.txtobject-tests/batch/many-0811.txtobject-tests/batch/many-0812.txtobject-tests/batch/many-0813.txtobject-tests/batch/many-0814.txtobject-tests/batch/many-0815.txtobject-tests/batch/many-0816.txtobject-tests/batch/many-0817.txtobject-tests/batch/many-0818.txtobject-tests/batch/many-0819.txtobject-tests/batch/many-0820.txtobject-tests/batch/many-0821.txtobject-tests/batch/many-0822.txtobject-tests/batch/many-0823.txtobject-tests/batch/many-0824.txtobject-tests/batch/many-0825.txtobject-tests/batch/many-0826.txtobject-tests/batch/many-0827.txtobject-tests/batch/many-0828.txtobject-tests/batch/many-0829.txtobject-tests/batch/many-0830.txtobject-tests/batch/many-0831.txtobject-tests/batch/many-0832.txtobject-tests/batch/many-0833.txtobject-tests/batch/many-0834.txtobject-tests/batch/many-0835.txtobject-tests/batch/many-0836.txtobject-tests/batch/many-0837.txtobject-tests/batch/many-0838.txtobject-tests/batch/many-0839.txtobject-tests/batch/many-0840.txtobject-tests/batch/many-0841.txtobject-tests/batch/many-0842.txtobject-tests/batch/many-0843.txtobject-tests/batch/many-0844.txtobject-tests/batch/many-0845.txtobject-tests/batch/many-0846.txtobject-tests/batch/many-0847.txtobject-tests/batch/many-0848.txtobject-tests/batch/many-0849.txtobject-tests/batch/many-0850.txtobject-tests/batch/many-0851.txtobject-tests/batch/many-0852.txtobject-tests/batch/many-0853.txtobject-tests/batch/many-0854.txtobject-tests/batch/many-0855.txtobject-tests/batch/many-0856.txtobject-tests/batch/many-0857.txtobject-tests/batch/many-0858.txtobject-tests/batch/many-0859.txtobject-tests/batch/many-0860.txtobject-tests/batch/many-0861.txtobject-tests/batch/many-0862.txtobject-tests/batch/many-0863.txtobject-tests/batch/many-0864.txtobject-tests/batch/many-0865.txtobject-tests/batch/many-0866.txtobject-tests/batch/many-0867.txtobject-tests/batch/many-0868.txtobject-tests/batch/many-0869.txtobject-tests/batch/many-0870.txtobject-tests/batch/many-0871.txtobject-tests/batch/many-0872.txtobject-tests/batch/many-0873.txtobject-tests/batch/many-0874.txtobject-tests/batch/many-0875.txtobject-tests/batch/many-0876.txtobject-tests/batch/many-0877.txtobject-tests/batch/many-0878.txtobject-tests/batch/many-0879.txtobject-tests/batch/many-0880.txtobject-tests/batch/many-0881.txtobject-tests/batch/many-0882.txtobject-tests/batch/many-0883.txtobject-tests/batch/many-0884.txtobject-tests/batch/many-0885.txtobject-tests/batch/many-0886.txtobject-tests/batch/many-0887.txtobject-tests/batch/many-0888.txtobject-tests/batch/many-0889.txtobject-tests/batch/many-0890.txtobject-tests/batch/many-0891.txtobject-tests/batch/many-0892.txtobject-tests/batch/many-0893.txtobject-tests/batch/many-0894.txtobject-tests/batch/many-0895.txtobject-tests/batch/many-0896.txtobject-tests/batch/many-0897.txtobject-tests/batch/many-0898.txtobject-tests/batch/many-0899.txtobject-tests/batch/many-0900.txtobject-tests/batch/many-0901.txtobject-tests/batch/many-0902.txtobject-tests/batch/many-0903.txtobject-tests/batch/many-0904.txtobject-tests/batch/many-0905.txtobject-tests/batch/many-0906.txtobject-tests/batch/many-0907.txtobject-tests/batch/many-0908.txtobject-tests/batch/many-0909.txtobject-tests/batch/many-0910.txtobject-tests/batch/many-0911.txtobject-tests/batch/many-0912.txtobject-tests/batch/many-0913.txtobject-tests/batch/many-0914.txtobject-tests/batch/many-0915.txtobject-tests/batch/many-0916.txtobject-tests/batch/many-0917.txtobject-tests/batch/many-0918.txtobject-tests/batch/many-0919.txtobject-tests/batch/many-0920.txtobject-tests/batch/many-0921.txtobject-tests/batch/many-0922.txtobject-tests/batch/many-0923.txtobject-tests/batch/many-0924.txtobject-tests/batch/many-0925.txtobject-tests/batch/many-0926.txtobject-tests/batch/many-0927.txtobject-tests/batch/many-0928.txtobject-tests/batch/many-0929.txtobject-tests/batch/many-0930.txtobject-tests/batch/many-0931.txtobject-tests/batch/many-0932.txtobject-tests/batch/many-0933.txtobject-tests/batch/many-0934.txtobject-tests/batch/many-0935.txtobject-tests/batch/many-0936.txtobject-tests/batch/many-0937.txtobject-tests/batch/many-0938.txtobject-tests/batch/many-0939.txtobject-tests/batch/many-0940.txtobject-tests/batch/many-0941.txtobject-tests/batch/many-0942.txtobject-tests/batch/many-0943.txtobject-tests/batch/many-0944.txtobject-tests/batch/many-0945.txtobject-tests/batch/many-0946.txtobject-tests/batch/many-0947.txtobject-tests/batch/many-0948.txtobject-tests/batch/many-0949.txtobject-tests/batch/many-0950.txtobject-tests/batch/many-0951.txtobject-tests/batch/many-0952.txtobject-tests/batch/many-0953.txtobject-tests/batch/many-0954.txtobject-tests/batch/many-0955.txtobject-tests/batch/many-0956.txtobject-tests/batch/many-0957.txtobject-tests/batch/many-0958.txtobject-tests/batch/many-0959.txtobject-tests/batch/many-0960.txtobject-tests/batch/many-0961.txtobject-tests/batch/many-0962.txtobject-tests/batch/many-0963.txtobject-tests/batch/many-0964.txtobject-tests/batch/many-0965.txtobject-tests/batch/many-0966.txtobject-tests/batch/many-0967.txtobject-tests/batch/many-0968.txtobject-tests/batch/many-0969.txtobject-tests/batch/many-0970.txtobject-tests/batch/many-0971.txtobject-tests/batch/many-0972.txtobject-tests/batch/many-0973.txtobject-tests/batch/many-0974.txtobject-tests/batch/many-0975.txtobject-tests/batch/many-0976.txtobject-tests/batch/many-0977.txtobject-tests/batch/many-0978.txtobject-tests/batch/many-0979.txtobject-tests/batch/many-0980.txtobject-tests/batch/many-0981.txtobject-tests/batch/many-0982.txtobject-tests/batch/many-0983.txtobject-tests/batch/many-0984.txtobject-tests/batch/many-0985.txtobject-tests/batch/many-0986.txtobject-tests/batch/many-0987.txtobject-tests/batch/many-0988.txtobject-tests/batch/many-0989.txtobject-tests/batch/many-0990.txtobject-tests/batch/many-0991.txtobject-tests/batch/many-0992.txtobject-tests/batch/many-0993.txtobject-tests/batch/many-0994.txtobject-tests/batch/many-0995.txtobject-tests/batch/many-0996.txtobject-tests/batch/many-0997.txtobject-tests/batch/many-0998.txtobject-tests/batch/many-0999.txt" + }, + "framing": "chunked" } } ] @@ -66147,35 +99906,2038 @@ } }, { - "at": "/value/append_offset", + "at": "/value/deleted", "optional": false, "rule": { "is": "equal", - "value": 5 + "value": [ + "object-tests/batch/many-0000.txt", + "object-tests/batch/many-0001.txt", + "object-tests/batch/many-0002.txt", + "object-tests/batch/many-0003.txt", + "object-tests/batch/many-0004.txt", + "object-tests/batch/many-0005.txt", + "object-tests/batch/many-0006.txt", + "object-tests/batch/many-0007.txt", + "object-tests/batch/many-0008.txt", + "object-tests/batch/many-0009.txt", + "object-tests/batch/many-0010.txt", + "object-tests/batch/many-0011.txt", + "object-tests/batch/many-0012.txt", + "object-tests/batch/many-0013.txt", + "object-tests/batch/many-0014.txt", + "object-tests/batch/many-0015.txt", + "object-tests/batch/many-0016.txt", + "object-tests/batch/many-0017.txt", + "object-tests/batch/many-0018.txt", + "object-tests/batch/many-0019.txt", + "object-tests/batch/many-0020.txt", + "object-tests/batch/many-0021.txt", + "object-tests/batch/many-0022.txt", + "object-tests/batch/many-0023.txt", + "object-tests/batch/many-0024.txt", + "object-tests/batch/many-0025.txt", + "object-tests/batch/many-0026.txt", + "object-tests/batch/many-0027.txt", + "object-tests/batch/many-0028.txt", + "object-tests/batch/many-0029.txt", + "object-tests/batch/many-0030.txt", + "object-tests/batch/many-0031.txt", + "object-tests/batch/many-0032.txt", + "object-tests/batch/many-0033.txt", + "object-tests/batch/many-0034.txt", + "object-tests/batch/many-0035.txt", + "object-tests/batch/many-0036.txt", + "object-tests/batch/many-0037.txt", + "object-tests/batch/many-0038.txt", + "object-tests/batch/many-0039.txt", + "object-tests/batch/many-0040.txt", + "object-tests/batch/many-0041.txt", + "object-tests/batch/many-0042.txt", + "object-tests/batch/many-0043.txt", + "object-tests/batch/many-0044.txt", + "object-tests/batch/many-0045.txt", + "object-tests/batch/many-0046.txt", + "object-tests/batch/many-0047.txt", + "object-tests/batch/many-0048.txt", + "object-tests/batch/many-0049.txt", + "object-tests/batch/many-0050.txt", + "object-tests/batch/many-0051.txt", + "object-tests/batch/many-0052.txt", + "object-tests/batch/many-0053.txt", + "object-tests/batch/many-0054.txt", + "object-tests/batch/many-0055.txt", + "object-tests/batch/many-0056.txt", + "object-tests/batch/many-0057.txt", + "object-tests/batch/many-0058.txt", + "object-tests/batch/many-0059.txt", + "object-tests/batch/many-0060.txt", + "object-tests/batch/many-0061.txt", + "object-tests/batch/many-0062.txt", + "object-tests/batch/many-0063.txt", + "object-tests/batch/many-0064.txt", + "object-tests/batch/many-0065.txt", + "object-tests/batch/many-0066.txt", + "object-tests/batch/many-0067.txt", + "object-tests/batch/many-0068.txt", + "object-tests/batch/many-0069.txt", + "object-tests/batch/many-0070.txt", + "object-tests/batch/many-0071.txt", + "object-tests/batch/many-0072.txt", + "object-tests/batch/many-0073.txt", + "object-tests/batch/many-0074.txt", + "object-tests/batch/many-0075.txt", + "object-tests/batch/many-0076.txt", + "object-tests/batch/many-0077.txt", + "object-tests/batch/many-0078.txt", + "object-tests/batch/many-0079.txt", + "object-tests/batch/many-0080.txt", + "object-tests/batch/many-0081.txt", + "object-tests/batch/many-0082.txt", + "object-tests/batch/many-0083.txt", + "object-tests/batch/many-0084.txt", + "object-tests/batch/many-0085.txt", + "object-tests/batch/many-0086.txt", + "object-tests/batch/many-0087.txt", + "object-tests/batch/many-0088.txt", + "object-tests/batch/many-0089.txt", + "object-tests/batch/many-0090.txt", + "object-tests/batch/many-0091.txt", + "object-tests/batch/many-0092.txt", + "object-tests/batch/many-0093.txt", + "object-tests/batch/many-0094.txt", + "object-tests/batch/many-0095.txt", + "object-tests/batch/many-0096.txt", + "object-tests/batch/many-0097.txt", + "object-tests/batch/many-0098.txt", + "object-tests/batch/many-0099.txt", + "object-tests/batch/many-0100.txt", + "object-tests/batch/many-0101.txt", + "object-tests/batch/many-0102.txt", + "object-tests/batch/many-0103.txt", + "object-tests/batch/many-0104.txt", + "object-tests/batch/many-0105.txt", + "object-tests/batch/many-0106.txt", + "object-tests/batch/many-0107.txt", + "object-tests/batch/many-0108.txt", + "object-tests/batch/many-0109.txt", + "object-tests/batch/many-0110.txt", + "object-tests/batch/many-0111.txt", + "object-tests/batch/many-0112.txt", + "object-tests/batch/many-0113.txt", + "object-tests/batch/many-0114.txt", + "object-tests/batch/many-0115.txt", + "object-tests/batch/many-0116.txt", + "object-tests/batch/many-0117.txt", + "object-tests/batch/many-0118.txt", + "object-tests/batch/many-0119.txt", + "object-tests/batch/many-0120.txt", + "object-tests/batch/many-0121.txt", + "object-tests/batch/many-0122.txt", + "object-tests/batch/many-0123.txt", + "object-tests/batch/many-0124.txt", + "object-tests/batch/many-0125.txt", + "object-tests/batch/many-0126.txt", + "object-tests/batch/many-0127.txt", + "object-tests/batch/many-0128.txt", + "object-tests/batch/many-0129.txt", + "object-tests/batch/many-0130.txt", + "object-tests/batch/many-0131.txt", + "object-tests/batch/many-0132.txt", + "object-tests/batch/many-0133.txt", + "object-tests/batch/many-0134.txt", + "object-tests/batch/many-0135.txt", + "object-tests/batch/many-0136.txt", + "object-tests/batch/many-0137.txt", + "object-tests/batch/many-0138.txt", + "object-tests/batch/many-0139.txt", + "object-tests/batch/many-0140.txt", + "object-tests/batch/many-0141.txt", + "object-tests/batch/many-0142.txt", + "object-tests/batch/many-0143.txt", + "object-tests/batch/many-0144.txt", + "object-tests/batch/many-0145.txt", + "object-tests/batch/many-0146.txt", + "object-tests/batch/many-0147.txt", + "object-tests/batch/many-0148.txt", + "object-tests/batch/many-0149.txt", + "object-tests/batch/many-0150.txt", + "object-tests/batch/many-0151.txt", + "object-tests/batch/many-0152.txt", + "object-tests/batch/many-0153.txt", + "object-tests/batch/many-0154.txt", + "object-tests/batch/many-0155.txt", + "object-tests/batch/many-0156.txt", + "object-tests/batch/many-0157.txt", + "object-tests/batch/many-0158.txt", + "object-tests/batch/many-0159.txt", + "object-tests/batch/many-0160.txt", + "object-tests/batch/many-0161.txt", + "object-tests/batch/many-0162.txt", + "object-tests/batch/many-0163.txt", + "object-tests/batch/many-0164.txt", + "object-tests/batch/many-0165.txt", + "object-tests/batch/many-0166.txt", + "object-tests/batch/many-0167.txt", + "object-tests/batch/many-0168.txt", + "object-tests/batch/many-0169.txt", + "object-tests/batch/many-0170.txt", + "object-tests/batch/many-0171.txt", + "object-tests/batch/many-0172.txt", + "object-tests/batch/many-0173.txt", + "object-tests/batch/many-0174.txt", + "object-tests/batch/many-0175.txt", + "object-tests/batch/many-0176.txt", + "object-tests/batch/many-0177.txt", + "object-tests/batch/many-0178.txt", + "object-tests/batch/many-0179.txt", + "object-tests/batch/many-0180.txt", + "object-tests/batch/many-0181.txt", + "object-tests/batch/many-0182.txt", + "object-tests/batch/many-0183.txt", + "object-tests/batch/many-0184.txt", + "object-tests/batch/many-0185.txt", + "object-tests/batch/many-0186.txt", + "object-tests/batch/many-0187.txt", + "object-tests/batch/many-0188.txt", + "object-tests/batch/many-0189.txt", + "object-tests/batch/many-0190.txt", + "object-tests/batch/many-0191.txt", + "object-tests/batch/many-0192.txt", + "object-tests/batch/many-0193.txt", + "object-tests/batch/many-0194.txt", + "object-tests/batch/many-0195.txt", + "object-tests/batch/many-0196.txt", + "object-tests/batch/many-0197.txt", + "object-tests/batch/many-0198.txt", + "object-tests/batch/many-0199.txt", + "object-tests/batch/many-0200.txt", + "object-tests/batch/many-0201.txt", + "object-tests/batch/many-0202.txt", + "object-tests/batch/many-0203.txt", + "object-tests/batch/many-0204.txt", + "object-tests/batch/many-0205.txt", + "object-tests/batch/many-0206.txt", + "object-tests/batch/many-0207.txt", + "object-tests/batch/many-0208.txt", + "object-tests/batch/many-0209.txt", + "object-tests/batch/many-0210.txt", + "object-tests/batch/many-0211.txt", + "object-tests/batch/many-0212.txt", + "object-tests/batch/many-0213.txt", + "object-tests/batch/many-0214.txt", + "object-tests/batch/many-0215.txt", + "object-tests/batch/many-0216.txt", + "object-tests/batch/many-0217.txt", + "object-tests/batch/many-0218.txt", + "object-tests/batch/many-0219.txt", + "object-tests/batch/many-0220.txt", + "object-tests/batch/many-0221.txt", + "object-tests/batch/many-0222.txt", + "object-tests/batch/many-0223.txt", + "object-tests/batch/many-0224.txt", + "object-tests/batch/many-0225.txt", + "object-tests/batch/many-0226.txt", + "object-tests/batch/many-0227.txt", + "object-tests/batch/many-0228.txt", + "object-tests/batch/many-0229.txt", + "object-tests/batch/many-0230.txt", + "object-tests/batch/many-0231.txt", + "object-tests/batch/many-0232.txt", + "object-tests/batch/many-0233.txt", + "object-tests/batch/many-0234.txt", + "object-tests/batch/many-0235.txt", + "object-tests/batch/many-0236.txt", + "object-tests/batch/many-0237.txt", + "object-tests/batch/many-0238.txt", + "object-tests/batch/many-0239.txt", + "object-tests/batch/many-0240.txt", + "object-tests/batch/many-0241.txt", + "object-tests/batch/many-0242.txt", + "object-tests/batch/many-0243.txt", + "object-tests/batch/many-0244.txt", + "object-tests/batch/many-0245.txt", + "object-tests/batch/many-0246.txt", + "object-tests/batch/many-0247.txt", + "object-tests/batch/many-0248.txt", + "object-tests/batch/many-0249.txt", + "object-tests/batch/many-0250.txt", + "object-tests/batch/many-0251.txt", + "object-tests/batch/many-0252.txt", + "object-tests/batch/many-0253.txt", + "object-tests/batch/many-0254.txt", + "object-tests/batch/many-0255.txt", + "object-tests/batch/many-0256.txt", + "object-tests/batch/many-0257.txt", + "object-tests/batch/many-0258.txt", + "object-tests/batch/many-0259.txt", + "object-tests/batch/many-0260.txt", + "object-tests/batch/many-0261.txt", + "object-tests/batch/many-0262.txt", + "object-tests/batch/many-0263.txt", + "object-tests/batch/many-0264.txt", + "object-tests/batch/many-0265.txt", + "object-tests/batch/many-0266.txt", + "object-tests/batch/many-0267.txt", + "object-tests/batch/many-0268.txt", + "object-tests/batch/many-0269.txt", + "object-tests/batch/many-0270.txt", + "object-tests/batch/many-0271.txt", + "object-tests/batch/many-0272.txt", + "object-tests/batch/many-0273.txt", + "object-tests/batch/many-0274.txt", + "object-tests/batch/many-0275.txt", + "object-tests/batch/many-0276.txt", + "object-tests/batch/many-0277.txt", + "object-tests/batch/many-0278.txt", + "object-tests/batch/many-0279.txt", + "object-tests/batch/many-0280.txt", + "object-tests/batch/many-0281.txt", + "object-tests/batch/many-0282.txt", + "object-tests/batch/many-0283.txt", + "object-tests/batch/many-0284.txt", + "object-tests/batch/many-0285.txt", + "object-tests/batch/many-0286.txt", + "object-tests/batch/many-0287.txt", + "object-tests/batch/many-0288.txt", + "object-tests/batch/many-0289.txt", + "object-tests/batch/many-0290.txt", + "object-tests/batch/many-0291.txt", + "object-tests/batch/many-0292.txt", + "object-tests/batch/many-0293.txt", + "object-tests/batch/many-0294.txt", + "object-tests/batch/many-0295.txt", + "object-tests/batch/many-0296.txt", + "object-tests/batch/many-0297.txt", + "object-tests/batch/many-0298.txt", + "object-tests/batch/many-0299.txt", + "object-tests/batch/many-0300.txt", + "object-tests/batch/many-0301.txt", + "object-tests/batch/many-0302.txt", + "object-tests/batch/many-0303.txt", + "object-tests/batch/many-0304.txt", + "object-tests/batch/many-0305.txt", + "object-tests/batch/many-0306.txt", + "object-tests/batch/many-0307.txt", + "object-tests/batch/many-0308.txt", + "object-tests/batch/many-0309.txt", + "object-tests/batch/many-0310.txt", + "object-tests/batch/many-0311.txt", + "object-tests/batch/many-0312.txt", + "object-tests/batch/many-0313.txt", + "object-tests/batch/many-0314.txt", + "object-tests/batch/many-0315.txt", + "object-tests/batch/many-0316.txt", + "object-tests/batch/many-0317.txt", + "object-tests/batch/many-0318.txt", + "object-tests/batch/many-0319.txt", + "object-tests/batch/many-0320.txt", + "object-tests/batch/many-0321.txt", + "object-tests/batch/many-0322.txt", + "object-tests/batch/many-0323.txt", + "object-tests/batch/many-0324.txt", + "object-tests/batch/many-0325.txt", + "object-tests/batch/many-0326.txt", + "object-tests/batch/many-0327.txt", + "object-tests/batch/many-0328.txt", + "object-tests/batch/many-0329.txt", + "object-tests/batch/many-0330.txt", + "object-tests/batch/many-0331.txt", + "object-tests/batch/many-0332.txt", + "object-tests/batch/many-0333.txt", + "object-tests/batch/many-0334.txt", + "object-tests/batch/many-0335.txt", + "object-tests/batch/many-0336.txt", + "object-tests/batch/many-0337.txt", + "object-tests/batch/many-0338.txt", + "object-tests/batch/many-0339.txt", + "object-tests/batch/many-0340.txt", + "object-tests/batch/many-0341.txt", + "object-tests/batch/many-0342.txt", + "object-tests/batch/many-0343.txt", + "object-tests/batch/many-0344.txt", + "object-tests/batch/many-0345.txt", + "object-tests/batch/many-0346.txt", + "object-tests/batch/many-0347.txt", + "object-tests/batch/many-0348.txt", + "object-tests/batch/many-0349.txt", + "object-tests/batch/many-0350.txt", + "object-tests/batch/many-0351.txt", + "object-tests/batch/many-0352.txt", + "object-tests/batch/many-0353.txt", + "object-tests/batch/many-0354.txt", + "object-tests/batch/many-0355.txt", + "object-tests/batch/many-0356.txt", + "object-tests/batch/many-0357.txt", + "object-tests/batch/many-0358.txt", + "object-tests/batch/many-0359.txt", + "object-tests/batch/many-0360.txt", + "object-tests/batch/many-0361.txt", + "object-tests/batch/many-0362.txt", + "object-tests/batch/many-0363.txt", + "object-tests/batch/many-0364.txt", + "object-tests/batch/many-0365.txt", + "object-tests/batch/many-0366.txt", + "object-tests/batch/many-0367.txt", + "object-tests/batch/many-0368.txt", + "object-tests/batch/many-0369.txt", + "object-tests/batch/many-0370.txt", + "object-tests/batch/many-0371.txt", + "object-tests/batch/many-0372.txt", + "object-tests/batch/many-0373.txt", + "object-tests/batch/many-0374.txt", + "object-tests/batch/many-0375.txt", + "object-tests/batch/many-0376.txt", + "object-tests/batch/many-0377.txt", + "object-tests/batch/many-0378.txt", + "object-tests/batch/many-0379.txt", + "object-tests/batch/many-0380.txt", + "object-tests/batch/many-0381.txt", + "object-tests/batch/many-0382.txt", + "object-tests/batch/many-0383.txt", + "object-tests/batch/many-0384.txt", + "object-tests/batch/many-0385.txt", + "object-tests/batch/many-0386.txt", + "object-tests/batch/many-0387.txt", + "object-tests/batch/many-0388.txt", + "object-tests/batch/many-0389.txt", + "object-tests/batch/many-0390.txt", + "object-tests/batch/many-0391.txt", + "object-tests/batch/many-0392.txt", + "object-tests/batch/many-0393.txt", + "object-tests/batch/many-0394.txt", + "object-tests/batch/many-0395.txt", + "object-tests/batch/many-0396.txt", + "object-tests/batch/many-0397.txt", + "object-tests/batch/many-0398.txt", + "object-tests/batch/many-0399.txt", + "object-tests/batch/many-0400.txt", + "object-tests/batch/many-0401.txt", + "object-tests/batch/many-0402.txt", + "object-tests/batch/many-0403.txt", + "object-tests/batch/many-0404.txt", + "object-tests/batch/many-0405.txt", + "object-tests/batch/many-0406.txt", + "object-tests/batch/many-0407.txt", + "object-tests/batch/many-0408.txt", + "object-tests/batch/many-0409.txt", + "object-tests/batch/many-0410.txt", + "object-tests/batch/many-0411.txt", + "object-tests/batch/many-0412.txt", + "object-tests/batch/many-0413.txt", + "object-tests/batch/many-0414.txt", + "object-tests/batch/many-0415.txt", + "object-tests/batch/many-0416.txt", + "object-tests/batch/many-0417.txt", + "object-tests/batch/many-0418.txt", + "object-tests/batch/many-0419.txt", + "object-tests/batch/many-0420.txt", + "object-tests/batch/many-0421.txt", + "object-tests/batch/many-0422.txt", + "object-tests/batch/many-0423.txt", + "object-tests/batch/many-0424.txt", + "object-tests/batch/many-0425.txt", + "object-tests/batch/many-0426.txt", + "object-tests/batch/many-0427.txt", + "object-tests/batch/many-0428.txt", + "object-tests/batch/many-0429.txt", + "object-tests/batch/many-0430.txt", + "object-tests/batch/many-0431.txt", + "object-tests/batch/many-0432.txt", + "object-tests/batch/many-0433.txt", + "object-tests/batch/many-0434.txt", + "object-tests/batch/many-0435.txt", + "object-tests/batch/many-0436.txt", + "object-tests/batch/many-0437.txt", + "object-tests/batch/many-0438.txt", + "object-tests/batch/many-0439.txt", + "object-tests/batch/many-0440.txt", + "object-tests/batch/many-0441.txt", + "object-tests/batch/many-0442.txt", + "object-tests/batch/many-0443.txt", + "object-tests/batch/many-0444.txt", + "object-tests/batch/many-0445.txt", + "object-tests/batch/many-0446.txt", + "object-tests/batch/many-0447.txt", + "object-tests/batch/many-0448.txt", + "object-tests/batch/many-0449.txt", + "object-tests/batch/many-0450.txt", + "object-tests/batch/many-0451.txt", + "object-tests/batch/many-0452.txt", + "object-tests/batch/many-0453.txt", + "object-tests/batch/many-0454.txt", + "object-tests/batch/many-0455.txt", + "object-tests/batch/many-0456.txt", + "object-tests/batch/many-0457.txt", + "object-tests/batch/many-0458.txt", + "object-tests/batch/many-0459.txt", + "object-tests/batch/many-0460.txt", + "object-tests/batch/many-0461.txt", + "object-tests/batch/many-0462.txt", + "object-tests/batch/many-0463.txt", + "object-tests/batch/many-0464.txt", + "object-tests/batch/many-0465.txt", + "object-tests/batch/many-0466.txt", + "object-tests/batch/many-0467.txt", + "object-tests/batch/many-0468.txt", + "object-tests/batch/many-0469.txt", + "object-tests/batch/many-0470.txt", + "object-tests/batch/many-0471.txt", + "object-tests/batch/many-0472.txt", + "object-tests/batch/many-0473.txt", + "object-tests/batch/many-0474.txt", + "object-tests/batch/many-0475.txt", + "object-tests/batch/many-0476.txt", + "object-tests/batch/many-0477.txt", + "object-tests/batch/many-0478.txt", + "object-tests/batch/many-0479.txt", + "object-tests/batch/many-0480.txt", + "object-tests/batch/many-0481.txt", + "object-tests/batch/many-0482.txt", + "object-tests/batch/many-0483.txt", + "object-tests/batch/many-0484.txt", + "object-tests/batch/many-0485.txt", + "object-tests/batch/many-0486.txt", + "object-tests/batch/many-0487.txt", + "object-tests/batch/many-0488.txt", + "object-tests/batch/many-0489.txt", + "object-tests/batch/many-0490.txt", + "object-tests/batch/many-0491.txt", + "object-tests/batch/many-0492.txt", + "object-tests/batch/many-0493.txt", + "object-tests/batch/many-0494.txt", + "object-tests/batch/many-0495.txt", + "object-tests/batch/many-0496.txt", + "object-tests/batch/many-0497.txt", + "object-tests/batch/many-0498.txt", + "object-tests/batch/many-0499.txt", + "object-tests/batch/many-0500.txt", + "object-tests/batch/many-0501.txt", + "object-tests/batch/many-0502.txt", + "object-tests/batch/many-0503.txt", + "object-tests/batch/many-0504.txt", + "object-tests/batch/many-0505.txt", + "object-tests/batch/many-0506.txt", + "object-tests/batch/many-0507.txt", + "object-tests/batch/many-0508.txt", + "object-tests/batch/many-0509.txt", + "object-tests/batch/many-0510.txt", + "object-tests/batch/many-0511.txt", + "object-tests/batch/many-0512.txt", + "object-tests/batch/many-0513.txt", + "object-tests/batch/many-0514.txt", + "object-tests/batch/many-0515.txt", + "object-tests/batch/many-0516.txt", + "object-tests/batch/many-0517.txt", + "object-tests/batch/many-0518.txt", + "object-tests/batch/many-0519.txt", + "object-tests/batch/many-0520.txt", + "object-tests/batch/many-0521.txt", + "object-tests/batch/many-0522.txt", + "object-tests/batch/many-0523.txt", + "object-tests/batch/many-0524.txt", + "object-tests/batch/many-0525.txt", + "object-tests/batch/many-0526.txt", + "object-tests/batch/many-0527.txt", + "object-tests/batch/many-0528.txt", + "object-tests/batch/many-0529.txt", + "object-tests/batch/many-0530.txt", + "object-tests/batch/many-0531.txt", + "object-tests/batch/many-0532.txt", + "object-tests/batch/many-0533.txt", + "object-tests/batch/many-0534.txt", + "object-tests/batch/many-0535.txt", + "object-tests/batch/many-0536.txt", + "object-tests/batch/many-0537.txt", + "object-tests/batch/many-0538.txt", + "object-tests/batch/many-0539.txt", + "object-tests/batch/many-0540.txt", + "object-tests/batch/many-0541.txt", + "object-tests/batch/many-0542.txt", + "object-tests/batch/many-0543.txt", + "object-tests/batch/many-0544.txt", + "object-tests/batch/many-0545.txt", + "object-tests/batch/many-0546.txt", + "object-tests/batch/many-0547.txt", + "object-tests/batch/many-0548.txt", + "object-tests/batch/many-0549.txt", + "object-tests/batch/many-0550.txt", + "object-tests/batch/many-0551.txt", + "object-tests/batch/many-0552.txt", + "object-tests/batch/many-0553.txt", + "object-tests/batch/many-0554.txt", + "object-tests/batch/many-0555.txt", + "object-tests/batch/many-0556.txt", + "object-tests/batch/many-0557.txt", + "object-tests/batch/many-0558.txt", + "object-tests/batch/many-0559.txt", + "object-tests/batch/many-0560.txt", + "object-tests/batch/many-0561.txt", + "object-tests/batch/many-0562.txt", + "object-tests/batch/many-0563.txt", + "object-tests/batch/many-0564.txt", + "object-tests/batch/many-0565.txt", + "object-tests/batch/many-0566.txt", + "object-tests/batch/many-0567.txt", + "object-tests/batch/many-0568.txt", + "object-tests/batch/many-0569.txt", + "object-tests/batch/many-0570.txt", + "object-tests/batch/many-0571.txt", + "object-tests/batch/many-0572.txt", + "object-tests/batch/many-0573.txt", + "object-tests/batch/many-0574.txt", + "object-tests/batch/many-0575.txt", + "object-tests/batch/many-0576.txt", + "object-tests/batch/many-0577.txt", + "object-tests/batch/many-0578.txt", + "object-tests/batch/many-0579.txt", + "object-tests/batch/many-0580.txt", + "object-tests/batch/many-0581.txt", + "object-tests/batch/many-0582.txt", + "object-tests/batch/many-0583.txt", + "object-tests/batch/many-0584.txt", + "object-tests/batch/many-0585.txt", + "object-tests/batch/many-0586.txt", + "object-tests/batch/many-0587.txt", + "object-tests/batch/many-0588.txt", + "object-tests/batch/many-0589.txt", + "object-tests/batch/many-0590.txt", + "object-tests/batch/many-0591.txt", + "object-tests/batch/many-0592.txt", + "object-tests/batch/many-0593.txt", + "object-tests/batch/many-0594.txt", + "object-tests/batch/many-0595.txt", + "object-tests/batch/many-0596.txt", + "object-tests/batch/many-0597.txt", + "object-tests/batch/many-0598.txt", + "object-tests/batch/many-0599.txt", + "object-tests/batch/many-0600.txt", + "object-tests/batch/many-0601.txt", + "object-tests/batch/many-0602.txt", + "object-tests/batch/many-0603.txt", + "object-tests/batch/many-0604.txt", + "object-tests/batch/many-0605.txt", + "object-tests/batch/many-0606.txt", + "object-tests/batch/many-0607.txt", + "object-tests/batch/many-0608.txt", + "object-tests/batch/many-0609.txt", + "object-tests/batch/many-0610.txt", + "object-tests/batch/many-0611.txt", + "object-tests/batch/many-0612.txt", + "object-tests/batch/many-0613.txt", + "object-tests/batch/many-0614.txt", + "object-tests/batch/many-0615.txt", + "object-tests/batch/many-0616.txt", + "object-tests/batch/many-0617.txt", + "object-tests/batch/many-0618.txt", + "object-tests/batch/many-0619.txt", + "object-tests/batch/many-0620.txt", + "object-tests/batch/many-0621.txt", + "object-tests/batch/many-0622.txt", + "object-tests/batch/many-0623.txt", + "object-tests/batch/many-0624.txt", + "object-tests/batch/many-0625.txt", + "object-tests/batch/many-0626.txt", + "object-tests/batch/many-0627.txt", + "object-tests/batch/many-0628.txt", + "object-tests/batch/many-0629.txt", + "object-tests/batch/many-0630.txt", + "object-tests/batch/many-0631.txt", + "object-tests/batch/many-0632.txt", + "object-tests/batch/many-0633.txt", + "object-tests/batch/many-0634.txt", + "object-tests/batch/many-0635.txt", + "object-tests/batch/many-0636.txt", + "object-tests/batch/many-0637.txt", + "object-tests/batch/many-0638.txt", + "object-tests/batch/many-0639.txt", + "object-tests/batch/many-0640.txt", + "object-tests/batch/many-0641.txt", + "object-tests/batch/many-0642.txt", + "object-tests/batch/many-0643.txt", + "object-tests/batch/many-0644.txt", + "object-tests/batch/many-0645.txt", + "object-tests/batch/many-0646.txt", + "object-tests/batch/many-0647.txt", + "object-tests/batch/many-0648.txt", + "object-tests/batch/many-0649.txt", + "object-tests/batch/many-0650.txt", + "object-tests/batch/many-0651.txt", + "object-tests/batch/many-0652.txt", + "object-tests/batch/many-0653.txt", + "object-tests/batch/many-0654.txt", + "object-tests/batch/many-0655.txt", + "object-tests/batch/many-0656.txt", + "object-tests/batch/many-0657.txt", + "object-tests/batch/many-0658.txt", + "object-tests/batch/many-0659.txt", + "object-tests/batch/many-0660.txt", + "object-tests/batch/many-0661.txt", + "object-tests/batch/many-0662.txt", + "object-tests/batch/many-0663.txt", + "object-tests/batch/many-0664.txt", + "object-tests/batch/many-0665.txt", + "object-tests/batch/many-0666.txt", + "object-tests/batch/many-0667.txt", + "object-tests/batch/many-0668.txt", + "object-tests/batch/many-0669.txt", + "object-tests/batch/many-0670.txt", + "object-tests/batch/many-0671.txt", + "object-tests/batch/many-0672.txt", + "object-tests/batch/many-0673.txt", + "object-tests/batch/many-0674.txt", + "object-tests/batch/many-0675.txt", + "object-tests/batch/many-0676.txt", + "object-tests/batch/many-0677.txt", + "object-tests/batch/many-0678.txt", + "object-tests/batch/many-0679.txt", + "object-tests/batch/many-0680.txt", + "object-tests/batch/many-0681.txt", + "object-tests/batch/many-0682.txt", + "object-tests/batch/many-0683.txt", + "object-tests/batch/many-0684.txt", + "object-tests/batch/many-0685.txt", + "object-tests/batch/many-0686.txt", + "object-tests/batch/many-0687.txt", + "object-tests/batch/many-0688.txt", + "object-tests/batch/many-0689.txt", + "object-tests/batch/many-0690.txt", + "object-tests/batch/many-0691.txt", + "object-tests/batch/many-0692.txt", + "object-tests/batch/many-0693.txt", + "object-tests/batch/many-0694.txt", + "object-tests/batch/many-0695.txt", + "object-tests/batch/many-0696.txt", + "object-tests/batch/many-0697.txt", + "object-tests/batch/many-0698.txt", + "object-tests/batch/many-0699.txt", + "object-tests/batch/many-0700.txt", + "object-tests/batch/many-0701.txt", + "object-tests/batch/many-0702.txt", + "object-tests/batch/many-0703.txt", + "object-tests/batch/many-0704.txt", + "object-tests/batch/many-0705.txt", + "object-tests/batch/many-0706.txt", + "object-tests/batch/many-0707.txt", + "object-tests/batch/many-0708.txt", + "object-tests/batch/many-0709.txt", + "object-tests/batch/many-0710.txt", + "object-tests/batch/many-0711.txt", + "object-tests/batch/many-0712.txt", + "object-tests/batch/many-0713.txt", + "object-tests/batch/many-0714.txt", + "object-tests/batch/many-0715.txt", + "object-tests/batch/many-0716.txt", + "object-tests/batch/many-0717.txt", + "object-tests/batch/many-0718.txt", + "object-tests/batch/many-0719.txt", + "object-tests/batch/many-0720.txt", + "object-tests/batch/many-0721.txt", + "object-tests/batch/many-0722.txt", + "object-tests/batch/many-0723.txt", + "object-tests/batch/many-0724.txt", + "object-tests/batch/many-0725.txt", + "object-tests/batch/many-0726.txt", + "object-tests/batch/many-0727.txt", + "object-tests/batch/many-0728.txt", + "object-tests/batch/many-0729.txt", + "object-tests/batch/many-0730.txt", + "object-tests/batch/many-0731.txt", + "object-tests/batch/many-0732.txt", + "object-tests/batch/many-0733.txt", + "object-tests/batch/many-0734.txt", + "object-tests/batch/many-0735.txt", + "object-tests/batch/many-0736.txt", + "object-tests/batch/many-0737.txt", + "object-tests/batch/many-0738.txt", + "object-tests/batch/many-0739.txt", + "object-tests/batch/many-0740.txt", + "object-tests/batch/many-0741.txt", + "object-tests/batch/many-0742.txt", + "object-tests/batch/many-0743.txt", + "object-tests/batch/many-0744.txt", + "object-tests/batch/many-0745.txt", + "object-tests/batch/many-0746.txt", + "object-tests/batch/many-0747.txt", + "object-tests/batch/many-0748.txt", + "object-tests/batch/many-0749.txt", + "object-tests/batch/many-0750.txt", + "object-tests/batch/many-0751.txt", + "object-tests/batch/many-0752.txt", + "object-tests/batch/many-0753.txt", + "object-tests/batch/many-0754.txt", + "object-tests/batch/many-0755.txt", + "object-tests/batch/many-0756.txt", + "object-tests/batch/many-0757.txt", + "object-tests/batch/many-0758.txt", + "object-tests/batch/many-0759.txt", + "object-tests/batch/many-0760.txt", + "object-tests/batch/many-0761.txt", + "object-tests/batch/many-0762.txt", + "object-tests/batch/many-0763.txt", + "object-tests/batch/many-0764.txt", + "object-tests/batch/many-0765.txt", + "object-tests/batch/many-0766.txt", + "object-tests/batch/many-0767.txt", + "object-tests/batch/many-0768.txt", + "object-tests/batch/many-0769.txt", + "object-tests/batch/many-0770.txt", + "object-tests/batch/many-0771.txt", + "object-tests/batch/many-0772.txt", + "object-tests/batch/many-0773.txt", + "object-tests/batch/many-0774.txt", + "object-tests/batch/many-0775.txt", + "object-tests/batch/many-0776.txt", + "object-tests/batch/many-0777.txt", + "object-tests/batch/many-0778.txt", + "object-tests/batch/many-0779.txt", + "object-tests/batch/many-0780.txt", + "object-tests/batch/many-0781.txt", + "object-tests/batch/many-0782.txt", + "object-tests/batch/many-0783.txt", + "object-tests/batch/many-0784.txt", + "object-tests/batch/many-0785.txt", + "object-tests/batch/many-0786.txt", + "object-tests/batch/many-0787.txt", + "object-tests/batch/many-0788.txt", + "object-tests/batch/many-0789.txt", + "object-tests/batch/many-0790.txt", + "object-tests/batch/many-0791.txt", + "object-tests/batch/many-0792.txt", + "object-tests/batch/many-0793.txt", + "object-tests/batch/many-0794.txt", + "object-tests/batch/many-0795.txt", + "object-tests/batch/many-0796.txt", + "object-tests/batch/many-0797.txt", + "object-tests/batch/many-0798.txt", + "object-tests/batch/many-0799.txt", + "object-tests/batch/many-0800.txt", + "object-tests/batch/many-0801.txt", + "object-tests/batch/many-0802.txt", + "object-tests/batch/many-0803.txt", + "object-tests/batch/many-0804.txt", + "object-tests/batch/many-0805.txt", + "object-tests/batch/many-0806.txt", + "object-tests/batch/many-0807.txt", + "object-tests/batch/many-0808.txt", + "object-tests/batch/many-0809.txt", + "object-tests/batch/many-0810.txt", + "object-tests/batch/many-0811.txt", + "object-tests/batch/many-0812.txt", + "object-tests/batch/many-0813.txt", + "object-tests/batch/many-0814.txt", + "object-tests/batch/many-0815.txt", + "object-tests/batch/many-0816.txt", + "object-tests/batch/many-0817.txt", + "object-tests/batch/many-0818.txt", + "object-tests/batch/many-0819.txt", + "object-tests/batch/many-0820.txt", + "object-tests/batch/many-0821.txt", + "object-tests/batch/many-0822.txt", + "object-tests/batch/many-0823.txt", + "object-tests/batch/many-0824.txt", + "object-tests/batch/many-0825.txt", + "object-tests/batch/many-0826.txt", + "object-tests/batch/many-0827.txt", + "object-tests/batch/many-0828.txt", + "object-tests/batch/many-0829.txt", + "object-tests/batch/many-0830.txt", + "object-tests/batch/many-0831.txt", + "object-tests/batch/many-0832.txt", + "object-tests/batch/many-0833.txt", + "object-tests/batch/many-0834.txt", + "object-tests/batch/many-0835.txt", + "object-tests/batch/many-0836.txt", + "object-tests/batch/many-0837.txt", + "object-tests/batch/many-0838.txt", + "object-tests/batch/many-0839.txt", + "object-tests/batch/many-0840.txt", + "object-tests/batch/many-0841.txt", + "object-tests/batch/many-0842.txt", + "object-tests/batch/many-0843.txt", + "object-tests/batch/many-0844.txt", + "object-tests/batch/many-0845.txt", + "object-tests/batch/many-0846.txt", + "object-tests/batch/many-0847.txt", + "object-tests/batch/many-0848.txt", + "object-tests/batch/many-0849.txt", + "object-tests/batch/many-0850.txt", + "object-tests/batch/many-0851.txt", + "object-tests/batch/many-0852.txt", + "object-tests/batch/many-0853.txt", + "object-tests/batch/many-0854.txt", + "object-tests/batch/many-0855.txt", + "object-tests/batch/many-0856.txt", + "object-tests/batch/many-0857.txt", + "object-tests/batch/many-0858.txt", + "object-tests/batch/many-0859.txt", + "object-tests/batch/many-0860.txt", + "object-tests/batch/many-0861.txt", + "object-tests/batch/many-0862.txt", + "object-tests/batch/many-0863.txt", + "object-tests/batch/many-0864.txt", + "object-tests/batch/many-0865.txt", + "object-tests/batch/many-0866.txt", + "object-tests/batch/many-0867.txt", + "object-tests/batch/many-0868.txt", + "object-tests/batch/many-0869.txt", + "object-tests/batch/many-0870.txt", + "object-tests/batch/many-0871.txt", + "object-tests/batch/many-0872.txt", + "object-tests/batch/many-0873.txt", + "object-tests/batch/many-0874.txt", + "object-tests/batch/many-0875.txt", + "object-tests/batch/many-0876.txt", + "object-tests/batch/many-0877.txt", + "object-tests/batch/many-0878.txt", + "object-tests/batch/many-0879.txt", + "object-tests/batch/many-0880.txt", + "object-tests/batch/many-0881.txt", + "object-tests/batch/many-0882.txt", + "object-tests/batch/many-0883.txt", + "object-tests/batch/many-0884.txt", + "object-tests/batch/many-0885.txt", + "object-tests/batch/many-0886.txt", + "object-tests/batch/many-0887.txt", + "object-tests/batch/many-0888.txt", + "object-tests/batch/many-0889.txt", + "object-tests/batch/many-0890.txt", + "object-tests/batch/many-0891.txt", + "object-tests/batch/many-0892.txt", + "object-tests/batch/many-0893.txt", + "object-tests/batch/many-0894.txt", + "object-tests/batch/many-0895.txt", + "object-tests/batch/many-0896.txt", + "object-tests/batch/many-0897.txt", + "object-tests/batch/many-0898.txt", + "object-tests/batch/many-0899.txt", + "object-tests/batch/many-0900.txt", + "object-tests/batch/many-0901.txt", + "object-tests/batch/many-0902.txt", + "object-tests/batch/many-0903.txt", + "object-tests/batch/many-0904.txt", + "object-tests/batch/many-0905.txt", + "object-tests/batch/many-0906.txt", + "object-tests/batch/many-0907.txt", + "object-tests/batch/many-0908.txt", + "object-tests/batch/many-0909.txt", + "object-tests/batch/many-0910.txt", + "object-tests/batch/many-0911.txt", + "object-tests/batch/many-0912.txt", + "object-tests/batch/many-0913.txt", + "object-tests/batch/many-0914.txt", + "object-tests/batch/many-0915.txt", + "object-tests/batch/many-0916.txt", + "object-tests/batch/many-0917.txt", + "object-tests/batch/many-0918.txt", + "object-tests/batch/many-0919.txt", + "object-tests/batch/many-0920.txt", + "object-tests/batch/many-0921.txt", + "object-tests/batch/many-0922.txt", + "object-tests/batch/many-0923.txt", + "object-tests/batch/many-0924.txt", + "object-tests/batch/many-0925.txt", + "object-tests/batch/many-0926.txt", + "object-tests/batch/many-0927.txt", + "object-tests/batch/many-0928.txt", + "object-tests/batch/many-0929.txt", + "object-tests/batch/many-0930.txt", + "object-tests/batch/many-0931.txt", + "object-tests/batch/many-0932.txt", + "object-tests/batch/many-0933.txt", + "object-tests/batch/many-0934.txt", + "object-tests/batch/many-0935.txt", + "object-tests/batch/many-0936.txt", + "object-tests/batch/many-0937.txt", + "object-tests/batch/many-0938.txt", + "object-tests/batch/many-0939.txt", + "object-tests/batch/many-0940.txt", + "object-tests/batch/many-0941.txt", + "object-tests/batch/many-0942.txt", + "object-tests/batch/many-0943.txt", + "object-tests/batch/many-0944.txt", + "object-tests/batch/many-0945.txt", + "object-tests/batch/many-0946.txt", + "object-tests/batch/many-0947.txt", + "object-tests/batch/many-0948.txt", + "object-tests/batch/many-0949.txt", + "object-tests/batch/many-0950.txt", + "object-tests/batch/many-0951.txt", + "object-tests/batch/many-0952.txt", + "object-tests/batch/many-0953.txt", + "object-tests/batch/many-0954.txt", + "object-tests/batch/many-0955.txt", + "object-tests/batch/many-0956.txt", + "object-tests/batch/many-0957.txt", + "object-tests/batch/many-0958.txt", + "object-tests/batch/many-0959.txt", + "object-tests/batch/many-0960.txt", + "object-tests/batch/many-0961.txt", + "object-tests/batch/many-0962.txt", + "object-tests/batch/many-0963.txt", + "object-tests/batch/many-0964.txt", + "object-tests/batch/many-0965.txt", + "object-tests/batch/many-0966.txt", + "object-tests/batch/many-0967.txt", + "object-tests/batch/many-0968.txt", + "object-tests/batch/many-0969.txt", + "object-tests/batch/many-0970.txt", + "object-tests/batch/many-0971.txt", + "object-tests/batch/many-0972.txt", + "object-tests/batch/many-0973.txt", + "object-tests/batch/many-0974.txt", + "object-tests/batch/many-0975.txt", + "object-tests/batch/many-0976.txt", + "object-tests/batch/many-0977.txt", + "object-tests/batch/many-0978.txt", + "object-tests/batch/many-0979.txt", + "object-tests/batch/many-0980.txt", + "object-tests/batch/many-0981.txt", + "object-tests/batch/many-0982.txt", + "object-tests/batch/many-0983.txt", + "object-tests/batch/many-0984.txt", + "object-tests/batch/many-0985.txt", + "object-tests/batch/many-0986.txt", + "object-tests/batch/many-0987.txt", + "object-tests/batch/many-0988.txt", + "object-tests/batch/many-0989.txt", + "object-tests/batch/many-0990.txt", + "object-tests/batch/many-0991.txt", + "object-tests/batch/many-0992.txt", + "object-tests/batch/many-0993.txt", + "object-tests/batch/many-0994.txt", + "object-tests/batch/many-0995.txt", + "object-tests/batch/many-0996.txt", + "object-tests/batch/many-0997.txt", + "object-tests/batch/many-0998.txt", + "object-tests/batch/many-0999.txt" + ] } }, { - "at": "/value/committed_block_count", + "at": "/value/errors", "optional": false, "rule": { "is": "equal", - "value": 2 + "value": [] } } ], "refusal": null }, { - "id": "operations/azure-hns/create-append", - "profile": "azure-hns", + "id": "operations/s3/delete-many-1001", + "profile": "s3", "lane": "core", - "purpose": "Create an empty append blob", + "purpose": "Report a DeleteObjects request of 1,001 keys, one more than S3 takes, as an error. A client may refuse it before sending", "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/put-blob" + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjects.html" ], "call": { - "key": "object-tests/append/object.log", - "op": "azure.create_append" + "keys": [ + "object-tests/batch/many-0000.txt", + "object-tests/batch/many-0001.txt", + "object-tests/batch/many-0002.txt", + "object-tests/batch/many-0003.txt", + "object-tests/batch/many-0004.txt", + "object-tests/batch/many-0005.txt", + "object-tests/batch/many-0006.txt", + "object-tests/batch/many-0007.txt", + "object-tests/batch/many-0008.txt", + "object-tests/batch/many-0009.txt", + "object-tests/batch/many-0010.txt", + "object-tests/batch/many-0011.txt", + "object-tests/batch/many-0012.txt", + "object-tests/batch/many-0013.txt", + "object-tests/batch/many-0014.txt", + "object-tests/batch/many-0015.txt", + "object-tests/batch/many-0016.txt", + "object-tests/batch/many-0017.txt", + "object-tests/batch/many-0018.txt", + "object-tests/batch/many-0019.txt", + "object-tests/batch/many-0020.txt", + "object-tests/batch/many-0021.txt", + "object-tests/batch/many-0022.txt", + "object-tests/batch/many-0023.txt", + "object-tests/batch/many-0024.txt", + "object-tests/batch/many-0025.txt", + "object-tests/batch/many-0026.txt", + "object-tests/batch/many-0027.txt", + "object-tests/batch/many-0028.txt", + "object-tests/batch/many-0029.txt", + "object-tests/batch/many-0030.txt", + "object-tests/batch/many-0031.txt", + "object-tests/batch/many-0032.txt", + "object-tests/batch/many-0033.txt", + "object-tests/batch/many-0034.txt", + "object-tests/batch/many-0035.txt", + "object-tests/batch/many-0036.txt", + "object-tests/batch/many-0037.txt", + "object-tests/batch/many-0038.txt", + "object-tests/batch/many-0039.txt", + "object-tests/batch/many-0040.txt", + "object-tests/batch/many-0041.txt", + "object-tests/batch/many-0042.txt", + "object-tests/batch/many-0043.txt", + "object-tests/batch/many-0044.txt", + "object-tests/batch/many-0045.txt", + "object-tests/batch/many-0046.txt", + "object-tests/batch/many-0047.txt", + "object-tests/batch/many-0048.txt", + "object-tests/batch/many-0049.txt", + "object-tests/batch/many-0050.txt", + "object-tests/batch/many-0051.txt", + "object-tests/batch/many-0052.txt", + "object-tests/batch/many-0053.txt", + "object-tests/batch/many-0054.txt", + "object-tests/batch/many-0055.txt", + "object-tests/batch/many-0056.txt", + "object-tests/batch/many-0057.txt", + "object-tests/batch/many-0058.txt", + "object-tests/batch/many-0059.txt", + "object-tests/batch/many-0060.txt", + "object-tests/batch/many-0061.txt", + "object-tests/batch/many-0062.txt", + "object-tests/batch/many-0063.txt", + "object-tests/batch/many-0064.txt", + "object-tests/batch/many-0065.txt", + "object-tests/batch/many-0066.txt", + "object-tests/batch/many-0067.txt", + "object-tests/batch/many-0068.txt", + "object-tests/batch/many-0069.txt", + "object-tests/batch/many-0070.txt", + "object-tests/batch/many-0071.txt", + "object-tests/batch/many-0072.txt", + "object-tests/batch/many-0073.txt", + "object-tests/batch/many-0074.txt", + "object-tests/batch/many-0075.txt", + "object-tests/batch/many-0076.txt", + "object-tests/batch/many-0077.txt", + "object-tests/batch/many-0078.txt", + "object-tests/batch/many-0079.txt", + "object-tests/batch/many-0080.txt", + "object-tests/batch/many-0081.txt", + "object-tests/batch/many-0082.txt", + "object-tests/batch/many-0083.txt", + "object-tests/batch/many-0084.txt", + "object-tests/batch/many-0085.txt", + "object-tests/batch/many-0086.txt", + "object-tests/batch/many-0087.txt", + "object-tests/batch/many-0088.txt", + "object-tests/batch/many-0089.txt", + "object-tests/batch/many-0090.txt", + "object-tests/batch/many-0091.txt", + "object-tests/batch/many-0092.txt", + "object-tests/batch/many-0093.txt", + "object-tests/batch/many-0094.txt", + "object-tests/batch/many-0095.txt", + "object-tests/batch/many-0096.txt", + "object-tests/batch/many-0097.txt", + "object-tests/batch/many-0098.txt", + "object-tests/batch/many-0099.txt", + "object-tests/batch/many-0100.txt", + "object-tests/batch/many-0101.txt", + "object-tests/batch/many-0102.txt", + "object-tests/batch/many-0103.txt", + "object-tests/batch/many-0104.txt", + "object-tests/batch/many-0105.txt", + "object-tests/batch/many-0106.txt", + "object-tests/batch/many-0107.txt", + "object-tests/batch/many-0108.txt", + "object-tests/batch/many-0109.txt", + "object-tests/batch/many-0110.txt", + "object-tests/batch/many-0111.txt", + "object-tests/batch/many-0112.txt", + "object-tests/batch/many-0113.txt", + "object-tests/batch/many-0114.txt", + "object-tests/batch/many-0115.txt", + "object-tests/batch/many-0116.txt", + "object-tests/batch/many-0117.txt", + "object-tests/batch/many-0118.txt", + "object-tests/batch/many-0119.txt", + "object-tests/batch/many-0120.txt", + "object-tests/batch/many-0121.txt", + "object-tests/batch/many-0122.txt", + "object-tests/batch/many-0123.txt", + "object-tests/batch/many-0124.txt", + "object-tests/batch/many-0125.txt", + "object-tests/batch/many-0126.txt", + "object-tests/batch/many-0127.txt", + "object-tests/batch/many-0128.txt", + "object-tests/batch/many-0129.txt", + "object-tests/batch/many-0130.txt", + "object-tests/batch/many-0131.txt", + "object-tests/batch/many-0132.txt", + "object-tests/batch/many-0133.txt", + "object-tests/batch/many-0134.txt", + "object-tests/batch/many-0135.txt", + "object-tests/batch/many-0136.txt", + "object-tests/batch/many-0137.txt", + "object-tests/batch/many-0138.txt", + "object-tests/batch/many-0139.txt", + "object-tests/batch/many-0140.txt", + "object-tests/batch/many-0141.txt", + "object-tests/batch/many-0142.txt", + "object-tests/batch/many-0143.txt", + "object-tests/batch/many-0144.txt", + "object-tests/batch/many-0145.txt", + "object-tests/batch/many-0146.txt", + "object-tests/batch/many-0147.txt", + "object-tests/batch/many-0148.txt", + "object-tests/batch/many-0149.txt", + "object-tests/batch/many-0150.txt", + "object-tests/batch/many-0151.txt", + "object-tests/batch/many-0152.txt", + "object-tests/batch/many-0153.txt", + "object-tests/batch/many-0154.txt", + "object-tests/batch/many-0155.txt", + "object-tests/batch/many-0156.txt", + "object-tests/batch/many-0157.txt", + "object-tests/batch/many-0158.txt", + "object-tests/batch/many-0159.txt", + "object-tests/batch/many-0160.txt", + "object-tests/batch/many-0161.txt", + "object-tests/batch/many-0162.txt", + "object-tests/batch/many-0163.txt", + "object-tests/batch/many-0164.txt", + "object-tests/batch/many-0165.txt", + "object-tests/batch/many-0166.txt", + "object-tests/batch/many-0167.txt", + "object-tests/batch/many-0168.txt", + "object-tests/batch/many-0169.txt", + "object-tests/batch/many-0170.txt", + "object-tests/batch/many-0171.txt", + "object-tests/batch/many-0172.txt", + "object-tests/batch/many-0173.txt", + "object-tests/batch/many-0174.txt", + "object-tests/batch/many-0175.txt", + "object-tests/batch/many-0176.txt", + "object-tests/batch/many-0177.txt", + "object-tests/batch/many-0178.txt", + "object-tests/batch/many-0179.txt", + "object-tests/batch/many-0180.txt", + "object-tests/batch/many-0181.txt", + "object-tests/batch/many-0182.txt", + "object-tests/batch/many-0183.txt", + "object-tests/batch/many-0184.txt", + "object-tests/batch/many-0185.txt", + "object-tests/batch/many-0186.txt", + "object-tests/batch/many-0187.txt", + "object-tests/batch/many-0188.txt", + "object-tests/batch/many-0189.txt", + "object-tests/batch/many-0190.txt", + "object-tests/batch/many-0191.txt", + "object-tests/batch/many-0192.txt", + "object-tests/batch/many-0193.txt", + "object-tests/batch/many-0194.txt", + "object-tests/batch/many-0195.txt", + "object-tests/batch/many-0196.txt", + "object-tests/batch/many-0197.txt", + "object-tests/batch/many-0198.txt", + "object-tests/batch/many-0199.txt", + "object-tests/batch/many-0200.txt", + "object-tests/batch/many-0201.txt", + "object-tests/batch/many-0202.txt", + "object-tests/batch/many-0203.txt", + "object-tests/batch/many-0204.txt", + "object-tests/batch/many-0205.txt", + "object-tests/batch/many-0206.txt", + "object-tests/batch/many-0207.txt", + "object-tests/batch/many-0208.txt", + "object-tests/batch/many-0209.txt", + "object-tests/batch/many-0210.txt", + "object-tests/batch/many-0211.txt", + "object-tests/batch/many-0212.txt", + "object-tests/batch/many-0213.txt", + "object-tests/batch/many-0214.txt", + "object-tests/batch/many-0215.txt", + "object-tests/batch/many-0216.txt", + "object-tests/batch/many-0217.txt", + "object-tests/batch/many-0218.txt", + "object-tests/batch/many-0219.txt", + "object-tests/batch/many-0220.txt", + "object-tests/batch/many-0221.txt", + "object-tests/batch/many-0222.txt", + "object-tests/batch/many-0223.txt", + "object-tests/batch/many-0224.txt", + "object-tests/batch/many-0225.txt", + "object-tests/batch/many-0226.txt", + "object-tests/batch/many-0227.txt", + "object-tests/batch/many-0228.txt", + "object-tests/batch/many-0229.txt", + "object-tests/batch/many-0230.txt", + "object-tests/batch/many-0231.txt", + "object-tests/batch/many-0232.txt", + "object-tests/batch/many-0233.txt", + "object-tests/batch/many-0234.txt", + "object-tests/batch/many-0235.txt", + "object-tests/batch/many-0236.txt", + "object-tests/batch/many-0237.txt", + "object-tests/batch/many-0238.txt", + "object-tests/batch/many-0239.txt", + "object-tests/batch/many-0240.txt", + "object-tests/batch/many-0241.txt", + "object-tests/batch/many-0242.txt", + "object-tests/batch/many-0243.txt", + "object-tests/batch/many-0244.txt", + "object-tests/batch/many-0245.txt", + "object-tests/batch/many-0246.txt", + "object-tests/batch/many-0247.txt", + "object-tests/batch/many-0248.txt", + "object-tests/batch/many-0249.txt", + "object-tests/batch/many-0250.txt", + "object-tests/batch/many-0251.txt", + "object-tests/batch/many-0252.txt", + "object-tests/batch/many-0253.txt", + "object-tests/batch/many-0254.txt", + "object-tests/batch/many-0255.txt", + "object-tests/batch/many-0256.txt", + "object-tests/batch/many-0257.txt", + "object-tests/batch/many-0258.txt", + "object-tests/batch/many-0259.txt", + "object-tests/batch/many-0260.txt", + "object-tests/batch/many-0261.txt", + "object-tests/batch/many-0262.txt", + "object-tests/batch/many-0263.txt", + "object-tests/batch/many-0264.txt", + "object-tests/batch/many-0265.txt", + "object-tests/batch/many-0266.txt", + "object-tests/batch/many-0267.txt", + "object-tests/batch/many-0268.txt", + "object-tests/batch/many-0269.txt", + "object-tests/batch/many-0270.txt", + "object-tests/batch/many-0271.txt", + "object-tests/batch/many-0272.txt", + "object-tests/batch/many-0273.txt", + "object-tests/batch/many-0274.txt", + "object-tests/batch/many-0275.txt", + "object-tests/batch/many-0276.txt", + "object-tests/batch/many-0277.txt", + "object-tests/batch/many-0278.txt", + "object-tests/batch/many-0279.txt", + "object-tests/batch/many-0280.txt", + "object-tests/batch/many-0281.txt", + "object-tests/batch/many-0282.txt", + "object-tests/batch/many-0283.txt", + "object-tests/batch/many-0284.txt", + "object-tests/batch/many-0285.txt", + "object-tests/batch/many-0286.txt", + "object-tests/batch/many-0287.txt", + "object-tests/batch/many-0288.txt", + "object-tests/batch/many-0289.txt", + "object-tests/batch/many-0290.txt", + "object-tests/batch/many-0291.txt", + "object-tests/batch/many-0292.txt", + "object-tests/batch/many-0293.txt", + "object-tests/batch/many-0294.txt", + "object-tests/batch/many-0295.txt", + "object-tests/batch/many-0296.txt", + "object-tests/batch/many-0297.txt", + "object-tests/batch/many-0298.txt", + "object-tests/batch/many-0299.txt", + "object-tests/batch/many-0300.txt", + "object-tests/batch/many-0301.txt", + "object-tests/batch/many-0302.txt", + "object-tests/batch/many-0303.txt", + "object-tests/batch/many-0304.txt", + "object-tests/batch/many-0305.txt", + "object-tests/batch/many-0306.txt", + "object-tests/batch/many-0307.txt", + "object-tests/batch/many-0308.txt", + "object-tests/batch/many-0309.txt", + "object-tests/batch/many-0310.txt", + "object-tests/batch/many-0311.txt", + "object-tests/batch/many-0312.txt", + "object-tests/batch/many-0313.txt", + "object-tests/batch/many-0314.txt", + "object-tests/batch/many-0315.txt", + "object-tests/batch/many-0316.txt", + "object-tests/batch/many-0317.txt", + "object-tests/batch/many-0318.txt", + "object-tests/batch/many-0319.txt", + "object-tests/batch/many-0320.txt", + "object-tests/batch/many-0321.txt", + "object-tests/batch/many-0322.txt", + "object-tests/batch/many-0323.txt", + "object-tests/batch/many-0324.txt", + "object-tests/batch/many-0325.txt", + "object-tests/batch/many-0326.txt", + "object-tests/batch/many-0327.txt", + "object-tests/batch/many-0328.txt", + "object-tests/batch/many-0329.txt", + "object-tests/batch/many-0330.txt", + "object-tests/batch/many-0331.txt", + "object-tests/batch/many-0332.txt", + "object-tests/batch/many-0333.txt", + "object-tests/batch/many-0334.txt", + "object-tests/batch/many-0335.txt", + "object-tests/batch/many-0336.txt", + "object-tests/batch/many-0337.txt", + "object-tests/batch/many-0338.txt", + "object-tests/batch/many-0339.txt", + "object-tests/batch/many-0340.txt", + "object-tests/batch/many-0341.txt", + "object-tests/batch/many-0342.txt", + "object-tests/batch/many-0343.txt", + "object-tests/batch/many-0344.txt", + "object-tests/batch/many-0345.txt", + "object-tests/batch/many-0346.txt", + "object-tests/batch/many-0347.txt", + "object-tests/batch/many-0348.txt", + "object-tests/batch/many-0349.txt", + "object-tests/batch/many-0350.txt", + "object-tests/batch/many-0351.txt", + "object-tests/batch/many-0352.txt", + "object-tests/batch/many-0353.txt", + "object-tests/batch/many-0354.txt", + "object-tests/batch/many-0355.txt", + "object-tests/batch/many-0356.txt", + "object-tests/batch/many-0357.txt", + "object-tests/batch/many-0358.txt", + "object-tests/batch/many-0359.txt", + "object-tests/batch/many-0360.txt", + "object-tests/batch/many-0361.txt", + "object-tests/batch/many-0362.txt", + "object-tests/batch/many-0363.txt", + "object-tests/batch/many-0364.txt", + "object-tests/batch/many-0365.txt", + "object-tests/batch/many-0366.txt", + "object-tests/batch/many-0367.txt", + "object-tests/batch/many-0368.txt", + "object-tests/batch/many-0369.txt", + "object-tests/batch/many-0370.txt", + "object-tests/batch/many-0371.txt", + "object-tests/batch/many-0372.txt", + "object-tests/batch/many-0373.txt", + "object-tests/batch/many-0374.txt", + "object-tests/batch/many-0375.txt", + "object-tests/batch/many-0376.txt", + "object-tests/batch/many-0377.txt", + "object-tests/batch/many-0378.txt", + "object-tests/batch/many-0379.txt", + "object-tests/batch/many-0380.txt", + "object-tests/batch/many-0381.txt", + "object-tests/batch/many-0382.txt", + "object-tests/batch/many-0383.txt", + "object-tests/batch/many-0384.txt", + "object-tests/batch/many-0385.txt", + "object-tests/batch/many-0386.txt", + "object-tests/batch/many-0387.txt", + "object-tests/batch/many-0388.txt", + "object-tests/batch/many-0389.txt", + "object-tests/batch/many-0390.txt", + "object-tests/batch/many-0391.txt", + "object-tests/batch/many-0392.txt", + "object-tests/batch/many-0393.txt", + "object-tests/batch/many-0394.txt", + "object-tests/batch/many-0395.txt", + "object-tests/batch/many-0396.txt", + "object-tests/batch/many-0397.txt", + "object-tests/batch/many-0398.txt", + "object-tests/batch/many-0399.txt", + "object-tests/batch/many-0400.txt", + "object-tests/batch/many-0401.txt", + "object-tests/batch/many-0402.txt", + "object-tests/batch/many-0403.txt", + "object-tests/batch/many-0404.txt", + "object-tests/batch/many-0405.txt", + "object-tests/batch/many-0406.txt", + "object-tests/batch/many-0407.txt", + "object-tests/batch/many-0408.txt", + "object-tests/batch/many-0409.txt", + "object-tests/batch/many-0410.txt", + "object-tests/batch/many-0411.txt", + "object-tests/batch/many-0412.txt", + "object-tests/batch/many-0413.txt", + "object-tests/batch/many-0414.txt", + "object-tests/batch/many-0415.txt", + "object-tests/batch/many-0416.txt", + "object-tests/batch/many-0417.txt", + "object-tests/batch/many-0418.txt", + "object-tests/batch/many-0419.txt", + "object-tests/batch/many-0420.txt", + "object-tests/batch/many-0421.txt", + "object-tests/batch/many-0422.txt", + "object-tests/batch/many-0423.txt", + "object-tests/batch/many-0424.txt", + "object-tests/batch/many-0425.txt", + "object-tests/batch/many-0426.txt", + "object-tests/batch/many-0427.txt", + "object-tests/batch/many-0428.txt", + "object-tests/batch/many-0429.txt", + "object-tests/batch/many-0430.txt", + "object-tests/batch/many-0431.txt", + "object-tests/batch/many-0432.txt", + "object-tests/batch/many-0433.txt", + "object-tests/batch/many-0434.txt", + "object-tests/batch/many-0435.txt", + "object-tests/batch/many-0436.txt", + "object-tests/batch/many-0437.txt", + "object-tests/batch/many-0438.txt", + "object-tests/batch/many-0439.txt", + "object-tests/batch/many-0440.txt", + "object-tests/batch/many-0441.txt", + "object-tests/batch/many-0442.txt", + "object-tests/batch/many-0443.txt", + "object-tests/batch/many-0444.txt", + "object-tests/batch/many-0445.txt", + "object-tests/batch/many-0446.txt", + "object-tests/batch/many-0447.txt", + "object-tests/batch/many-0448.txt", + "object-tests/batch/many-0449.txt", + "object-tests/batch/many-0450.txt", + "object-tests/batch/many-0451.txt", + "object-tests/batch/many-0452.txt", + "object-tests/batch/many-0453.txt", + "object-tests/batch/many-0454.txt", + "object-tests/batch/many-0455.txt", + "object-tests/batch/many-0456.txt", + "object-tests/batch/many-0457.txt", + "object-tests/batch/many-0458.txt", + "object-tests/batch/many-0459.txt", + "object-tests/batch/many-0460.txt", + "object-tests/batch/many-0461.txt", + "object-tests/batch/many-0462.txt", + "object-tests/batch/many-0463.txt", + "object-tests/batch/many-0464.txt", + "object-tests/batch/many-0465.txt", + "object-tests/batch/many-0466.txt", + "object-tests/batch/many-0467.txt", + "object-tests/batch/many-0468.txt", + "object-tests/batch/many-0469.txt", + "object-tests/batch/many-0470.txt", + "object-tests/batch/many-0471.txt", + "object-tests/batch/many-0472.txt", + "object-tests/batch/many-0473.txt", + "object-tests/batch/many-0474.txt", + "object-tests/batch/many-0475.txt", + "object-tests/batch/many-0476.txt", + "object-tests/batch/many-0477.txt", + "object-tests/batch/many-0478.txt", + "object-tests/batch/many-0479.txt", + "object-tests/batch/many-0480.txt", + "object-tests/batch/many-0481.txt", + "object-tests/batch/many-0482.txt", + "object-tests/batch/many-0483.txt", + "object-tests/batch/many-0484.txt", + "object-tests/batch/many-0485.txt", + "object-tests/batch/many-0486.txt", + "object-tests/batch/many-0487.txt", + "object-tests/batch/many-0488.txt", + "object-tests/batch/many-0489.txt", + "object-tests/batch/many-0490.txt", + "object-tests/batch/many-0491.txt", + "object-tests/batch/many-0492.txt", + "object-tests/batch/many-0493.txt", + "object-tests/batch/many-0494.txt", + "object-tests/batch/many-0495.txt", + "object-tests/batch/many-0496.txt", + "object-tests/batch/many-0497.txt", + "object-tests/batch/many-0498.txt", + "object-tests/batch/many-0499.txt", + "object-tests/batch/many-0500.txt", + "object-tests/batch/many-0501.txt", + "object-tests/batch/many-0502.txt", + "object-tests/batch/many-0503.txt", + "object-tests/batch/many-0504.txt", + "object-tests/batch/many-0505.txt", + "object-tests/batch/many-0506.txt", + "object-tests/batch/many-0507.txt", + "object-tests/batch/many-0508.txt", + "object-tests/batch/many-0509.txt", + "object-tests/batch/many-0510.txt", + "object-tests/batch/many-0511.txt", + "object-tests/batch/many-0512.txt", + "object-tests/batch/many-0513.txt", + "object-tests/batch/many-0514.txt", + "object-tests/batch/many-0515.txt", + "object-tests/batch/many-0516.txt", + "object-tests/batch/many-0517.txt", + "object-tests/batch/many-0518.txt", + "object-tests/batch/many-0519.txt", + "object-tests/batch/many-0520.txt", + "object-tests/batch/many-0521.txt", + "object-tests/batch/many-0522.txt", + "object-tests/batch/many-0523.txt", + "object-tests/batch/many-0524.txt", + "object-tests/batch/many-0525.txt", + "object-tests/batch/many-0526.txt", + "object-tests/batch/many-0527.txt", + "object-tests/batch/many-0528.txt", + "object-tests/batch/many-0529.txt", + "object-tests/batch/many-0530.txt", + "object-tests/batch/many-0531.txt", + "object-tests/batch/many-0532.txt", + "object-tests/batch/many-0533.txt", + "object-tests/batch/many-0534.txt", + "object-tests/batch/many-0535.txt", + "object-tests/batch/many-0536.txt", + "object-tests/batch/many-0537.txt", + "object-tests/batch/many-0538.txt", + "object-tests/batch/many-0539.txt", + "object-tests/batch/many-0540.txt", + "object-tests/batch/many-0541.txt", + "object-tests/batch/many-0542.txt", + "object-tests/batch/many-0543.txt", + "object-tests/batch/many-0544.txt", + "object-tests/batch/many-0545.txt", + "object-tests/batch/many-0546.txt", + "object-tests/batch/many-0547.txt", + "object-tests/batch/many-0548.txt", + "object-tests/batch/many-0549.txt", + "object-tests/batch/many-0550.txt", + "object-tests/batch/many-0551.txt", + "object-tests/batch/many-0552.txt", + "object-tests/batch/many-0553.txt", + "object-tests/batch/many-0554.txt", + "object-tests/batch/many-0555.txt", + "object-tests/batch/many-0556.txt", + "object-tests/batch/many-0557.txt", + "object-tests/batch/many-0558.txt", + "object-tests/batch/many-0559.txt", + "object-tests/batch/many-0560.txt", + "object-tests/batch/many-0561.txt", + "object-tests/batch/many-0562.txt", + "object-tests/batch/many-0563.txt", + "object-tests/batch/many-0564.txt", + "object-tests/batch/many-0565.txt", + "object-tests/batch/many-0566.txt", + "object-tests/batch/many-0567.txt", + "object-tests/batch/many-0568.txt", + "object-tests/batch/many-0569.txt", + "object-tests/batch/many-0570.txt", + "object-tests/batch/many-0571.txt", + "object-tests/batch/many-0572.txt", + "object-tests/batch/many-0573.txt", + "object-tests/batch/many-0574.txt", + "object-tests/batch/many-0575.txt", + "object-tests/batch/many-0576.txt", + "object-tests/batch/many-0577.txt", + "object-tests/batch/many-0578.txt", + "object-tests/batch/many-0579.txt", + "object-tests/batch/many-0580.txt", + "object-tests/batch/many-0581.txt", + "object-tests/batch/many-0582.txt", + "object-tests/batch/many-0583.txt", + "object-tests/batch/many-0584.txt", + "object-tests/batch/many-0585.txt", + "object-tests/batch/many-0586.txt", + "object-tests/batch/many-0587.txt", + "object-tests/batch/many-0588.txt", + "object-tests/batch/many-0589.txt", + "object-tests/batch/many-0590.txt", + "object-tests/batch/many-0591.txt", + "object-tests/batch/many-0592.txt", + "object-tests/batch/many-0593.txt", + "object-tests/batch/many-0594.txt", + "object-tests/batch/many-0595.txt", + "object-tests/batch/many-0596.txt", + "object-tests/batch/many-0597.txt", + "object-tests/batch/many-0598.txt", + "object-tests/batch/many-0599.txt", + "object-tests/batch/many-0600.txt", + "object-tests/batch/many-0601.txt", + "object-tests/batch/many-0602.txt", + "object-tests/batch/many-0603.txt", + "object-tests/batch/many-0604.txt", + "object-tests/batch/many-0605.txt", + "object-tests/batch/many-0606.txt", + "object-tests/batch/many-0607.txt", + "object-tests/batch/many-0608.txt", + "object-tests/batch/many-0609.txt", + "object-tests/batch/many-0610.txt", + "object-tests/batch/many-0611.txt", + "object-tests/batch/many-0612.txt", + "object-tests/batch/many-0613.txt", + "object-tests/batch/many-0614.txt", + "object-tests/batch/many-0615.txt", + "object-tests/batch/many-0616.txt", + "object-tests/batch/many-0617.txt", + "object-tests/batch/many-0618.txt", + "object-tests/batch/many-0619.txt", + "object-tests/batch/many-0620.txt", + "object-tests/batch/many-0621.txt", + "object-tests/batch/many-0622.txt", + "object-tests/batch/many-0623.txt", + "object-tests/batch/many-0624.txt", + "object-tests/batch/many-0625.txt", + "object-tests/batch/many-0626.txt", + "object-tests/batch/many-0627.txt", + "object-tests/batch/many-0628.txt", + "object-tests/batch/many-0629.txt", + "object-tests/batch/many-0630.txt", + "object-tests/batch/many-0631.txt", + "object-tests/batch/many-0632.txt", + "object-tests/batch/many-0633.txt", + "object-tests/batch/many-0634.txt", + "object-tests/batch/many-0635.txt", + "object-tests/batch/many-0636.txt", + "object-tests/batch/many-0637.txt", + "object-tests/batch/many-0638.txt", + "object-tests/batch/many-0639.txt", + "object-tests/batch/many-0640.txt", + "object-tests/batch/many-0641.txt", + "object-tests/batch/many-0642.txt", + "object-tests/batch/many-0643.txt", + "object-tests/batch/many-0644.txt", + "object-tests/batch/many-0645.txt", + "object-tests/batch/many-0646.txt", + "object-tests/batch/many-0647.txt", + "object-tests/batch/many-0648.txt", + "object-tests/batch/many-0649.txt", + "object-tests/batch/many-0650.txt", + "object-tests/batch/many-0651.txt", + "object-tests/batch/many-0652.txt", + "object-tests/batch/many-0653.txt", + "object-tests/batch/many-0654.txt", + "object-tests/batch/many-0655.txt", + "object-tests/batch/many-0656.txt", + "object-tests/batch/many-0657.txt", + "object-tests/batch/many-0658.txt", + "object-tests/batch/many-0659.txt", + "object-tests/batch/many-0660.txt", + "object-tests/batch/many-0661.txt", + "object-tests/batch/many-0662.txt", + "object-tests/batch/many-0663.txt", + "object-tests/batch/many-0664.txt", + "object-tests/batch/many-0665.txt", + "object-tests/batch/many-0666.txt", + "object-tests/batch/many-0667.txt", + "object-tests/batch/many-0668.txt", + "object-tests/batch/many-0669.txt", + "object-tests/batch/many-0670.txt", + "object-tests/batch/many-0671.txt", + "object-tests/batch/many-0672.txt", + "object-tests/batch/many-0673.txt", + "object-tests/batch/many-0674.txt", + "object-tests/batch/many-0675.txt", + "object-tests/batch/many-0676.txt", + "object-tests/batch/many-0677.txt", + "object-tests/batch/many-0678.txt", + "object-tests/batch/many-0679.txt", + "object-tests/batch/many-0680.txt", + "object-tests/batch/many-0681.txt", + "object-tests/batch/many-0682.txt", + "object-tests/batch/many-0683.txt", + "object-tests/batch/many-0684.txt", + "object-tests/batch/many-0685.txt", + "object-tests/batch/many-0686.txt", + "object-tests/batch/many-0687.txt", + "object-tests/batch/many-0688.txt", + "object-tests/batch/many-0689.txt", + "object-tests/batch/many-0690.txt", + "object-tests/batch/many-0691.txt", + "object-tests/batch/many-0692.txt", + "object-tests/batch/many-0693.txt", + "object-tests/batch/many-0694.txt", + "object-tests/batch/many-0695.txt", + "object-tests/batch/many-0696.txt", + "object-tests/batch/many-0697.txt", + "object-tests/batch/many-0698.txt", + "object-tests/batch/many-0699.txt", + "object-tests/batch/many-0700.txt", + "object-tests/batch/many-0701.txt", + "object-tests/batch/many-0702.txt", + "object-tests/batch/many-0703.txt", + "object-tests/batch/many-0704.txt", + "object-tests/batch/many-0705.txt", + "object-tests/batch/many-0706.txt", + "object-tests/batch/many-0707.txt", + "object-tests/batch/many-0708.txt", + "object-tests/batch/many-0709.txt", + "object-tests/batch/many-0710.txt", + "object-tests/batch/many-0711.txt", + "object-tests/batch/many-0712.txt", + "object-tests/batch/many-0713.txt", + "object-tests/batch/many-0714.txt", + "object-tests/batch/many-0715.txt", + "object-tests/batch/many-0716.txt", + "object-tests/batch/many-0717.txt", + "object-tests/batch/many-0718.txt", + "object-tests/batch/many-0719.txt", + "object-tests/batch/many-0720.txt", + "object-tests/batch/many-0721.txt", + "object-tests/batch/many-0722.txt", + "object-tests/batch/many-0723.txt", + "object-tests/batch/many-0724.txt", + "object-tests/batch/many-0725.txt", + "object-tests/batch/many-0726.txt", + "object-tests/batch/many-0727.txt", + "object-tests/batch/many-0728.txt", + "object-tests/batch/many-0729.txt", + "object-tests/batch/many-0730.txt", + "object-tests/batch/many-0731.txt", + "object-tests/batch/many-0732.txt", + "object-tests/batch/many-0733.txt", + "object-tests/batch/many-0734.txt", + "object-tests/batch/many-0735.txt", + "object-tests/batch/many-0736.txt", + "object-tests/batch/many-0737.txt", + "object-tests/batch/many-0738.txt", + "object-tests/batch/many-0739.txt", + "object-tests/batch/many-0740.txt", + "object-tests/batch/many-0741.txt", + "object-tests/batch/many-0742.txt", + "object-tests/batch/many-0743.txt", + "object-tests/batch/many-0744.txt", + "object-tests/batch/many-0745.txt", + "object-tests/batch/many-0746.txt", + "object-tests/batch/many-0747.txt", + "object-tests/batch/many-0748.txt", + "object-tests/batch/many-0749.txt", + "object-tests/batch/many-0750.txt", + "object-tests/batch/many-0751.txt", + "object-tests/batch/many-0752.txt", + "object-tests/batch/many-0753.txt", + "object-tests/batch/many-0754.txt", + "object-tests/batch/many-0755.txt", + "object-tests/batch/many-0756.txt", + "object-tests/batch/many-0757.txt", + "object-tests/batch/many-0758.txt", + "object-tests/batch/many-0759.txt", + "object-tests/batch/many-0760.txt", + "object-tests/batch/many-0761.txt", + "object-tests/batch/many-0762.txt", + "object-tests/batch/many-0763.txt", + "object-tests/batch/many-0764.txt", + "object-tests/batch/many-0765.txt", + "object-tests/batch/many-0766.txt", + "object-tests/batch/many-0767.txt", + "object-tests/batch/many-0768.txt", + "object-tests/batch/many-0769.txt", + "object-tests/batch/many-0770.txt", + "object-tests/batch/many-0771.txt", + "object-tests/batch/many-0772.txt", + "object-tests/batch/many-0773.txt", + "object-tests/batch/many-0774.txt", + "object-tests/batch/many-0775.txt", + "object-tests/batch/many-0776.txt", + "object-tests/batch/many-0777.txt", + "object-tests/batch/many-0778.txt", + "object-tests/batch/many-0779.txt", + "object-tests/batch/many-0780.txt", + "object-tests/batch/many-0781.txt", + "object-tests/batch/many-0782.txt", + "object-tests/batch/many-0783.txt", + "object-tests/batch/many-0784.txt", + "object-tests/batch/many-0785.txt", + "object-tests/batch/many-0786.txt", + "object-tests/batch/many-0787.txt", + "object-tests/batch/many-0788.txt", + "object-tests/batch/many-0789.txt", + "object-tests/batch/many-0790.txt", + "object-tests/batch/many-0791.txt", + "object-tests/batch/many-0792.txt", + "object-tests/batch/many-0793.txt", + "object-tests/batch/many-0794.txt", + "object-tests/batch/many-0795.txt", + "object-tests/batch/many-0796.txt", + "object-tests/batch/many-0797.txt", + "object-tests/batch/many-0798.txt", + "object-tests/batch/many-0799.txt", + "object-tests/batch/many-0800.txt", + "object-tests/batch/many-0801.txt", + "object-tests/batch/many-0802.txt", + "object-tests/batch/many-0803.txt", + "object-tests/batch/many-0804.txt", + "object-tests/batch/many-0805.txt", + "object-tests/batch/many-0806.txt", + "object-tests/batch/many-0807.txt", + "object-tests/batch/many-0808.txt", + "object-tests/batch/many-0809.txt", + "object-tests/batch/many-0810.txt", + "object-tests/batch/many-0811.txt", + "object-tests/batch/many-0812.txt", + "object-tests/batch/many-0813.txt", + "object-tests/batch/many-0814.txt", + "object-tests/batch/many-0815.txt", + "object-tests/batch/many-0816.txt", + "object-tests/batch/many-0817.txt", + "object-tests/batch/many-0818.txt", + "object-tests/batch/many-0819.txt", + "object-tests/batch/many-0820.txt", + "object-tests/batch/many-0821.txt", + "object-tests/batch/many-0822.txt", + "object-tests/batch/many-0823.txt", + "object-tests/batch/many-0824.txt", + "object-tests/batch/many-0825.txt", + "object-tests/batch/many-0826.txt", + "object-tests/batch/many-0827.txt", + "object-tests/batch/many-0828.txt", + "object-tests/batch/many-0829.txt", + "object-tests/batch/many-0830.txt", + "object-tests/batch/many-0831.txt", + "object-tests/batch/many-0832.txt", + "object-tests/batch/many-0833.txt", + "object-tests/batch/many-0834.txt", + "object-tests/batch/many-0835.txt", + "object-tests/batch/many-0836.txt", + "object-tests/batch/many-0837.txt", + "object-tests/batch/many-0838.txt", + "object-tests/batch/many-0839.txt", + "object-tests/batch/many-0840.txt", + "object-tests/batch/many-0841.txt", + "object-tests/batch/many-0842.txt", + "object-tests/batch/many-0843.txt", + "object-tests/batch/many-0844.txt", + "object-tests/batch/many-0845.txt", + "object-tests/batch/many-0846.txt", + "object-tests/batch/many-0847.txt", + "object-tests/batch/many-0848.txt", + "object-tests/batch/many-0849.txt", + "object-tests/batch/many-0850.txt", + "object-tests/batch/many-0851.txt", + "object-tests/batch/many-0852.txt", + "object-tests/batch/many-0853.txt", + "object-tests/batch/many-0854.txt", + "object-tests/batch/many-0855.txt", + "object-tests/batch/many-0856.txt", + "object-tests/batch/many-0857.txt", + "object-tests/batch/many-0858.txt", + "object-tests/batch/many-0859.txt", + "object-tests/batch/many-0860.txt", + "object-tests/batch/many-0861.txt", + "object-tests/batch/many-0862.txt", + "object-tests/batch/many-0863.txt", + "object-tests/batch/many-0864.txt", + "object-tests/batch/many-0865.txt", + "object-tests/batch/many-0866.txt", + "object-tests/batch/many-0867.txt", + "object-tests/batch/many-0868.txt", + "object-tests/batch/many-0869.txt", + "object-tests/batch/many-0870.txt", + "object-tests/batch/many-0871.txt", + "object-tests/batch/many-0872.txt", + "object-tests/batch/many-0873.txt", + "object-tests/batch/many-0874.txt", + "object-tests/batch/many-0875.txt", + "object-tests/batch/many-0876.txt", + "object-tests/batch/many-0877.txt", + "object-tests/batch/many-0878.txt", + "object-tests/batch/many-0879.txt", + "object-tests/batch/many-0880.txt", + "object-tests/batch/many-0881.txt", + "object-tests/batch/many-0882.txt", + "object-tests/batch/many-0883.txt", + "object-tests/batch/many-0884.txt", + "object-tests/batch/many-0885.txt", + "object-tests/batch/many-0886.txt", + "object-tests/batch/many-0887.txt", + "object-tests/batch/many-0888.txt", + "object-tests/batch/many-0889.txt", + "object-tests/batch/many-0890.txt", + "object-tests/batch/many-0891.txt", + "object-tests/batch/many-0892.txt", + "object-tests/batch/many-0893.txt", + "object-tests/batch/many-0894.txt", + "object-tests/batch/many-0895.txt", + "object-tests/batch/many-0896.txt", + "object-tests/batch/many-0897.txt", + "object-tests/batch/many-0898.txt", + "object-tests/batch/many-0899.txt", + "object-tests/batch/many-0900.txt", + "object-tests/batch/many-0901.txt", + "object-tests/batch/many-0902.txt", + "object-tests/batch/many-0903.txt", + "object-tests/batch/many-0904.txt", + "object-tests/batch/many-0905.txt", + "object-tests/batch/many-0906.txt", + "object-tests/batch/many-0907.txt", + "object-tests/batch/many-0908.txt", + "object-tests/batch/many-0909.txt", + "object-tests/batch/many-0910.txt", + "object-tests/batch/many-0911.txt", + "object-tests/batch/many-0912.txt", + "object-tests/batch/many-0913.txt", + "object-tests/batch/many-0914.txt", + "object-tests/batch/many-0915.txt", + "object-tests/batch/many-0916.txt", + "object-tests/batch/many-0917.txt", + "object-tests/batch/many-0918.txt", + "object-tests/batch/many-0919.txt", + "object-tests/batch/many-0920.txt", + "object-tests/batch/many-0921.txt", + "object-tests/batch/many-0922.txt", + "object-tests/batch/many-0923.txt", + "object-tests/batch/many-0924.txt", + "object-tests/batch/many-0925.txt", + "object-tests/batch/many-0926.txt", + "object-tests/batch/many-0927.txt", + "object-tests/batch/many-0928.txt", + "object-tests/batch/many-0929.txt", + "object-tests/batch/many-0930.txt", + "object-tests/batch/many-0931.txt", + "object-tests/batch/many-0932.txt", + "object-tests/batch/many-0933.txt", + "object-tests/batch/many-0934.txt", + "object-tests/batch/many-0935.txt", + "object-tests/batch/many-0936.txt", + "object-tests/batch/many-0937.txt", + "object-tests/batch/many-0938.txt", + "object-tests/batch/many-0939.txt", + "object-tests/batch/many-0940.txt", + "object-tests/batch/many-0941.txt", + "object-tests/batch/many-0942.txt", + "object-tests/batch/many-0943.txt", + "object-tests/batch/many-0944.txt", + "object-tests/batch/many-0945.txt", + "object-tests/batch/many-0946.txt", + "object-tests/batch/many-0947.txt", + "object-tests/batch/many-0948.txt", + "object-tests/batch/many-0949.txt", + "object-tests/batch/many-0950.txt", + "object-tests/batch/many-0951.txt", + "object-tests/batch/many-0952.txt", + "object-tests/batch/many-0953.txt", + "object-tests/batch/many-0954.txt", + "object-tests/batch/many-0955.txt", + "object-tests/batch/many-0956.txt", + "object-tests/batch/many-0957.txt", + "object-tests/batch/many-0958.txt", + "object-tests/batch/many-0959.txt", + "object-tests/batch/many-0960.txt", + "object-tests/batch/many-0961.txt", + "object-tests/batch/many-0962.txt", + "object-tests/batch/many-0963.txt", + "object-tests/batch/many-0964.txt", + "object-tests/batch/many-0965.txt", + "object-tests/batch/many-0966.txt", + "object-tests/batch/many-0967.txt", + "object-tests/batch/many-0968.txt", + "object-tests/batch/many-0969.txt", + "object-tests/batch/many-0970.txt", + "object-tests/batch/many-0971.txt", + "object-tests/batch/many-0972.txt", + "object-tests/batch/many-0973.txt", + "object-tests/batch/many-0974.txt", + "object-tests/batch/many-0975.txt", + "object-tests/batch/many-0976.txt", + "object-tests/batch/many-0977.txt", + "object-tests/batch/many-0978.txt", + "object-tests/batch/many-0979.txt", + "object-tests/batch/many-0980.txt", + "object-tests/batch/many-0981.txt", + "object-tests/batch/many-0982.txt", + "object-tests/batch/many-0983.txt", + "object-tests/batch/many-0984.txt", + "object-tests/batch/many-0985.txt", + "object-tests/batch/many-0986.txt", + "object-tests/batch/many-0987.txt", + "object-tests/batch/many-0988.txt", + "object-tests/batch/many-0989.txt", + "object-tests/batch/many-0990.txt", + "object-tests/batch/many-0991.txt", + "object-tests/batch/many-0992.txt", + "object-tests/batch/many-0993.txt", + "object-tests/batch/many-0994.txt", + "object-tests/batch/many-0995.txt", + "object-tests/batch/many-0996.txt", + "object-tests/batch/many-0997.txt", + "object-tests/batch/many-0998.txt", + "object-tests/batch/many-0999.txt", + "object-tests/batch/many-1000.txt" + ], + "op": "delete_many" }, "exchanges": [ { @@ -66187,7 +101949,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "POST" } }, { @@ -66195,133 +101957,60 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/append/object.log" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/headers/x-ms-blob-type", - "optional": false, - "rule": { - "is": "equal", - "value": "AppendBlob" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 201, - "headers": { - "date": { - "from": "now" - }, - "etag": "\"fixture-etag\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true" - }, - "body": { - "encoding": "empty" - } - } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/put-leased-if-match-without-lease-id", - "profile": "azure-hns", - "lane": "core", - "purpose": "Refuse a write to a leased object whose If-Match holds but that names no lease ID", - "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/lease-blob" - ], - "call": { - "body_base64": "c2Vjb25k", - "if_match": "\"fixture-etag\"", - "key": "object-tests/leases/object.txt", - "op": "put" - }, - "exchanges": [ - { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "PUT" + "value": "/fixture" } }, { - "at": "/path", + "at": "/body_text", "optional": false, "rule": { - "is": "equal", - "value": "/fixture/object-tests/leases/object.txt" + "is": "xml", + "value": "object-tests/batch/many-0000.txtobject-tests/batch/many-0001.txtobject-tests/batch/many-0002.txtobject-tests/batch/many-0003.txtobject-tests/batch/many-0004.txtobject-tests/batch/many-0005.txtobject-tests/batch/many-0006.txtobject-tests/batch/many-0007.txtobject-tests/batch/many-0008.txtobject-tests/batch/many-0009.txtobject-tests/batch/many-0010.txtobject-tests/batch/many-0011.txtobject-tests/batch/many-0012.txtobject-tests/batch/many-0013.txtobject-tests/batch/many-0014.txtobject-tests/batch/many-0015.txtobject-tests/batch/many-0016.txtobject-tests/batch/many-0017.txtobject-tests/batch/many-0018.txtobject-tests/batch/many-0019.txtobject-tests/batch/many-0020.txtobject-tests/batch/many-0021.txtobject-tests/batch/many-0022.txtobject-tests/batch/many-0023.txtobject-tests/batch/many-0024.txtobject-tests/batch/many-0025.txtobject-tests/batch/many-0026.txtobject-tests/batch/many-0027.txtobject-tests/batch/many-0028.txtobject-tests/batch/many-0029.txtobject-tests/batch/many-0030.txtobject-tests/batch/many-0031.txtobject-tests/batch/many-0032.txtobject-tests/batch/many-0033.txtobject-tests/batch/many-0034.txtobject-tests/batch/many-0035.txtobject-tests/batch/many-0036.txtobject-tests/batch/many-0037.txtobject-tests/batch/many-0038.txtobject-tests/batch/many-0039.txtobject-tests/batch/many-0040.txtobject-tests/batch/many-0041.txtobject-tests/batch/many-0042.txtobject-tests/batch/many-0043.txtobject-tests/batch/many-0044.txtobject-tests/batch/many-0045.txtobject-tests/batch/many-0046.txtobject-tests/batch/many-0047.txtobject-tests/batch/many-0048.txtobject-tests/batch/many-0049.txtobject-tests/batch/many-0050.txtobject-tests/batch/many-0051.txtobject-tests/batch/many-0052.txtobject-tests/batch/many-0053.txtobject-tests/batch/many-0054.txtobject-tests/batch/many-0055.txtobject-tests/batch/many-0056.txtobject-tests/batch/many-0057.txtobject-tests/batch/many-0058.txtobject-tests/batch/many-0059.txtobject-tests/batch/many-0060.txtobject-tests/batch/many-0061.txtobject-tests/batch/many-0062.txtobject-tests/batch/many-0063.txtobject-tests/batch/many-0064.txtobject-tests/batch/many-0065.txtobject-tests/batch/many-0066.txtobject-tests/batch/many-0067.txtobject-tests/batch/many-0068.txtobject-tests/batch/many-0069.txtobject-tests/batch/many-0070.txtobject-tests/batch/many-0071.txtobject-tests/batch/many-0072.txtobject-tests/batch/many-0073.txtobject-tests/batch/many-0074.txtobject-tests/batch/many-0075.txtobject-tests/batch/many-0076.txtobject-tests/batch/many-0077.txtobject-tests/batch/many-0078.txtobject-tests/batch/many-0079.txtobject-tests/batch/many-0080.txtobject-tests/batch/many-0081.txtobject-tests/batch/many-0082.txtobject-tests/batch/many-0083.txtobject-tests/batch/many-0084.txtobject-tests/batch/many-0085.txtobject-tests/batch/many-0086.txtobject-tests/batch/many-0087.txtobject-tests/batch/many-0088.txtobject-tests/batch/many-0089.txtobject-tests/batch/many-0090.txtobject-tests/batch/many-0091.txtobject-tests/batch/many-0092.txtobject-tests/batch/many-0093.txtobject-tests/batch/many-0094.txtobject-tests/batch/many-0095.txtobject-tests/batch/many-0096.txtobject-tests/batch/many-0097.txtobject-tests/batch/many-0098.txtobject-tests/batch/many-0099.txtobject-tests/batch/many-0100.txtobject-tests/batch/many-0101.txtobject-tests/batch/many-0102.txtobject-tests/batch/many-0103.txtobject-tests/batch/many-0104.txtobject-tests/batch/many-0105.txtobject-tests/batch/many-0106.txtobject-tests/batch/many-0107.txtobject-tests/batch/many-0108.txtobject-tests/batch/many-0109.txtobject-tests/batch/many-0110.txtobject-tests/batch/many-0111.txtobject-tests/batch/many-0112.txtobject-tests/batch/many-0113.txtobject-tests/batch/many-0114.txtobject-tests/batch/many-0115.txtobject-tests/batch/many-0116.txtobject-tests/batch/many-0117.txtobject-tests/batch/many-0118.txtobject-tests/batch/many-0119.txtobject-tests/batch/many-0120.txtobject-tests/batch/many-0121.txtobject-tests/batch/many-0122.txtobject-tests/batch/many-0123.txtobject-tests/batch/many-0124.txtobject-tests/batch/many-0125.txtobject-tests/batch/many-0126.txtobject-tests/batch/many-0127.txtobject-tests/batch/many-0128.txtobject-tests/batch/many-0129.txtobject-tests/batch/many-0130.txtobject-tests/batch/many-0131.txtobject-tests/batch/many-0132.txtobject-tests/batch/many-0133.txtobject-tests/batch/many-0134.txtobject-tests/batch/many-0135.txtobject-tests/batch/many-0136.txtobject-tests/batch/many-0137.txtobject-tests/batch/many-0138.txtobject-tests/batch/many-0139.txtobject-tests/batch/many-0140.txtobject-tests/batch/many-0141.txtobject-tests/batch/many-0142.txtobject-tests/batch/many-0143.txtobject-tests/batch/many-0144.txtobject-tests/batch/many-0145.txtobject-tests/batch/many-0146.txtobject-tests/batch/many-0147.txtobject-tests/batch/many-0148.txtobject-tests/batch/many-0149.txtobject-tests/batch/many-0150.txtobject-tests/batch/many-0151.txtobject-tests/batch/many-0152.txtobject-tests/batch/many-0153.txtobject-tests/batch/many-0154.txtobject-tests/batch/many-0155.txtobject-tests/batch/many-0156.txtobject-tests/batch/many-0157.txtobject-tests/batch/many-0158.txtobject-tests/batch/many-0159.txtobject-tests/batch/many-0160.txtobject-tests/batch/many-0161.txtobject-tests/batch/many-0162.txtobject-tests/batch/many-0163.txtobject-tests/batch/many-0164.txtobject-tests/batch/many-0165.txtobject-tests/batch/many-0166.txtobject-tests/batch/many-0167.txtobject-tests/batch/many-0168.txtobject-tests/batch/many-0169.txtobject-tests/batch/many-0170.txtobject-tests/batch/many-0171.txtobject-tests/batch/many-0172.txtobject-tests/batch/many-0173.txtobject-tests/batch/many-0174.txtobject-tests/batch/many-0175.txtobject-tests/batch/many-0176.txtobject-tests/batch/many-0177.txtobject-tests/batch/many-0178.txtobject-tests/batch/many-0179.txtobject-tests/batch/many-0180.txtobject-tests/batch/many-0181.txtobject-tests/batch/many-0182.txtobject-tests/batch/many-0183.txtobject-tests/batch/many-0184.txtobject-tests/batch/many-0185.txtobject-tests/batch/many-0186.txtobject-tests/batch/many-0187.txtobject-tests/batch/many-0188.txtobject-tests/batch/many-0189.txtobject-tests/batch/many-0190.txtobject-tests/batch/many-0191.txtobject-tests/batch/many-0192.txtobject-tests/batch/many-0193.txtobject-tests/batch/many-0194.txtobject-tests/batch/many-0195.txtobject-tests/batch/many-0196.txtobject-tests/batch/many-0197.txtobject-tests/batch/many-0198.txtobject-tests/batch/many-0199.txtobject-tests/batch/many-0200.txtobject-tests/batch/many-0201.txtobject-tests/batch/many-0202.txtobject-tests/batch/many-0203.txtobject-tests/batch/many-0204.txtobject-tests/batch/many-0205.txtobject-tests/batch/many-0206.txtobject-tests/batch/many-0207.txtobject-tests/batch/many-0208.txtobject-tests/batch/many-0209.txtobject-tests/batch/many-0210.txtobject-tests/batch/many-0211.txtobject-tests/batch/many-0212.txtobject-tests/batch/many-0213.txtobject-tests/batch/many-0214.txtobject-tests/batch/many-0215.txtobject-tests/batch/many-0216.txtobject-tests/batch/many-0217.txtobject-tests/batch/many-0218.txtobject-tests/batch/many-0219.txtobject-tests/batch/many-0220.txtobject-tests/batch/many-0221.txtobject-tests/batch/many-0222.txtobject-tests/batch/many-0223.txtobject-tests/batch/many-0224.txtobject-tests/batch/many-0225.txtobject-tests/batch/many-0226.txtobject-tests/batch/many-0227.txtobject-tests/batch/many-0228.txtobject-tests/batch/many-0229.txtobject-tests/batch/many-0230.txtobject-tests/batch/many-0231.txtobject-tests/batch/many-0232.txtobject-tests/batch/many-0233.txtobject-tests/batch/many-0234.txtobject-tests/batch/many-0235.txtobject-tests/batch/many-0236.txtobject-tests/batch/many-0237.txtobject-tests/batch/many-0238.txtobject-tests/batch/many-0239.txtobject-tests/batch/many-0240.txtobject-tests/batch/many-0241.txtobject-tests/batch/many-0242.txtobject-tests/batch/many-0243.txtobject-tests/batch/many-0244.txtobject-tests/batch/many-0245.txtobject-tests/batch/many-0246.txtobject-tests/batch/many-0247.txtobject-tests/batch/many-0248.txtobject-tests/batch/many-0249.txtobject-tests/batch/many-0250.txtobject-tests/batch/many-0251.txtobject-tests/batch/many-0252.txtobject-tests/batch/many-0253.txtobject-tests/batch/many-0254.txtobject-tests/batch/many-0255.txtobject-tests/batch/many-0256.txtobject-tests/batch/many-0257.txtobject-tests/batch/many-0258.txtobject-tests/batch/many-0259.txtobject-tests/batch/many-0260.txtobject-tests/batch/many-0261.txtobject-tests/batch/many-0262.txtobject-tests/batch/many-0263.txtobject-tests/batch/many-0264.txtobject-tests/batch/many-0265.txtobject-tests/batch/many-0266.txtobject-tests/batch/many-0267.txtobject-tests/batch/many-0268.txtobject-tests/batch/many-0269.txtobject-tests/batch/many-0270.txtobject-tests/batch/many-0271.txtobject-tests/batch/many-0272.txtobject-tests/batch/many-0273.txtobject-tests/batch/many-0274.txtobject-tests/batch/many-0275.txtobject-tests/batch/many-0276.txtobject-tests/batch/many-0277.txtobject-tests/batch/many-0278.txtobject-tests/batch/many-0279.txtobject-tests/batch/many-0280.txtobject-tests/batch/many-0281.txtobject-tests/batch/many-0282.txtobject-tests/batch/many-0283.txtobject-tests/batch/many-0284.txtobject-tests/batch/many-0285.txtobject-tests/batch/many-0286.txtobject-tests/batch/many-0287.txtobject-tests/batch/many-0288.txtobject-tests/batch/many-0289.txtobject-tests/batch/many-0290.txtobject-tests/batch/many-0291.txtobject-tests/batch/many-0292.txtobject-tests/batch/many-0293.txtobject-tests/batch/many-0294.txtobject-tests/batch/many-0295.txtobject-tests/batch/many-0296.txtobject-tests/batch/many-0297.txtobject-tests/batch/many-0298.txtobject-tests/batch/many-0299.txtobject-tests/batch/many-0300.txtobject-tests/batch/many-0301.txtobject-tests/batch/many-0302.txtobject-tests/batch/many-0303.txtobject-tests/batch/many-0304.txtobject-tests/batch/many-0305.txtobject-tests/batch/many-0306.txtobject-tests/batch/many-0307.txtobject-tests/batch/many-0308.txtobject-tests/batch/many-0309.txtobject-tests/batch/many-0310.txtobject-tests/batch/many-0311.txtobject-tests/batch/many-0312.txtobject-tests/batch/many-0313.txtobject-tests/batch/many-0314.txtobject-tests/batch/many-0315.txtobject-tests/batch/many-0316.txtobject-tests/batch/many-0317.txtobject-tests/batch/many-0318.txtobject-tests/batch/many-0319.txtobject-tests/batch/many-0320.txtobject-tests/batch/many-0321.txtobject-tests/batch/many-0322.txtobject-tests/batch/many-0323.txtobject-tests/batch/many-0324.txtobject-tests/batch/many-0325.txtobject-tests/batch/many-0326.txtobject-tests/batch/many-0327.txtobject-tests/batch/many-0328.txtobject-tests/batch/many-0329.txtobject-tests/batch/many-0330.txtobject-tests/batch/many-0331.txtobject-tests/batch/many-0332.txtobject-tests/batch/many-0333.txtobject-tests/batch/many-0334.txtobject-tests/batch/many-0335.txtobject-tests/batch/many-0336.txtobject-tests/batch/many-0337.txtobject-tests/batch/many-0338.txtobject-tests/batch/many-0339.txtobject-tests/batch/many-0340.txtobject-tests/batch/many-0341.txtobject-tests/batch/many-0342.txtobject-tests/batch/many-0343.txtobject-tests/batch/many-0344.txtobject-tests/batch/many-0345.txtobject-tests/batch/many-0346.txtobject-tests/batch/many-0347.txtobject-tests/batch/many-0348.txtobject-tests/batch/many-0349.txtobject-tests/batch/many-0350.txtobject-tests/batch/many-0351.txtobject-tests/batch/many-0352.txtobject-tests/batch/many-0353.txtobject-tests/batch/many-0354.txtobject-tests/batch/many-0355.txtobject-tests/batch/many-0356.txtobject-tests/batch/many-0357.txtobject-tests/batch/many-0358.txtobject-tests/batch/many-0359.txtobject-tests/batch/many-0360.txtobject-tests/batch/many-0361.txtobject-tests/batch/many-0362.txtobject-tests/batch/many-0363.txtobject-tests/batch/many-0364.txtobject-tests/batch/many-0365.txtobject-tests/batch/many-0366.txtobject-tests/batch/many-0367.txtobject-tests/batch/many-0368.txtobject-tests/batch/many-0369.txtobject-tests/batch/many-0370.txtobject-tests/batch/many-0371.txtobject-tests/batch/many-0372.txtobject-tests/batch/many-0373.txtobject-tests/batch/many-0374.txtobject-tests/batch/many-0375.txtobject-tests/batch/many-0376.txtobject-tests/batch/many-0377.txtobject-tests/batch/many-0378.txtobject-tests/batch/many-0379.txtobject-tests/batch/many-0380.txtobject-tests/batch/many-0381.txtobject-tests/batch/many-0382.txtobject-tests/batch/many-0383.txtobject-tests/batch/many-0384.txtobject-tests/batch/many-0385.txtobject-tests/batch/many-0386.txtobject-tests/batch/many-0387.txtobject-tests/batch/many-0388.txtobject-tests/batch/many-0389.txtobject-tests/batch/many-0390.txtobject-tests/batch/many-0391.txtobject-tests/batch/many-0392.txtobject-tests/batch/many-0393.txtobject-tests/batch/many-0394.txtobject-tests/batch/many-0395.txtobject-tests/batch/many-0396.txtobject-tests/batch/many-0397.txtobject-tests/batch/many-0398.txtobject-tests/batch/many-0399.txtobject-tests/batch/many-0400.txtobject-tests/batch/many-0401.txtobject-tests/batch/many-0402.txtobject-tests/batch/many-0403.txtobject-tests/batch/many-0404.txtobject-tests/batch/many-0405.txtobject-tests/batch/many-0406.txtobject-tests/batch/many-0407.txtobject-tests/batch/many-0408.txtobject-tests/batch/many-0409.txtobject-tests/batch/many-0410.txtobject-tests/batch/many-0411.txtobject-tests/batch/many-0412.txtobject-tests/batch/many-0413.txtobject-tests/batch/many-0414.txtobject-tests/batch/many-0415.txtobject-tests/batch/many-0416.txtobject-tests/batch/many-0417.txtobject-tests/batch/many-0418.txtobject-tests/batch/many-0419.txtobject-tests/batch/many-0420.txtobject-tests/batch/many-0421.txtobject-tests/batch/many-0422.txtobject-tests/batch/many-0423.txtobject-tests/batch/many-0424.txtobject-tests/batch/many-0425.txtobject-tests/batch/many-0426.txtobject-tests/batch/many-0427.txtobject-tests/batch/many-0428.txtobject-tests/batch/many-0429.txtobject-tests/batch/many-0430.txtobject-tests/batch/many-0431.txtobject-tests/batch/many-0432.txtobject-tests/batch/many-0433.txtobject-tests/batch/many-0434.txtobject-tests/batch/many-0435.txtobject-tests/batch/many-0436.txtobject-tests/batch/many-0437.txtobject-tests/batch/many-0438.txtobject-tests/batch/many-0439.txtobject-tests/batch/many-0440.txtobject-tests/batch/many-0441.txtobject-tests/batch/many-0442.txtobject-tests/batch/many-0443.txtobject-tests/batch/many-0444.txtobject-tests/batch/many-0445.txtobject-tests/batch/many-0446.txtobject-tests/batch/many-0447.txtobject-tests/batch/many-0448.txtobject-tests/batch/many-0449.txtobject-tests/batch/many-0450.txtobject-tests/batch/many-0451.txtobject-tests/batch/many-0452.txtobject-tests/batch/many-0453.txtobject-tests/batch/many-0454.txtobject-tests/batch/many-0455.txtobject-tests/batch/many-0456.txtobject-tests/batch/many-0457.txtobject-tests/batch/many-0458.txtobject-tests/batch/many-0459.txtobject-tests/batch/many-0460.txtobject-tests/batch/many-0461.txtobject-tests/batch/many-0462.txtobject-tests/batch/many-0463.txtobject-tests/batch/many-0464.txtobject-tests/batch/many-0465.txtobject-tests/batch/many-0466.txtobject-tests/batch/many-0467.txtobject-tests/batch/many-0468.txtobject-tests/batch/many-0469.txtobject-tests/batch/many-0470.txtobject-tests/batch/many-0471.txtobject-tests/batch/many-0472.txtobject-tests/batch/many-0473.txtobject-tests/batch/many-0474.txtobject-tests/batch/many-0475.txtobject-tests/batch/many-0476.txtobject-tests/batch/many-0477.txtobject-tests/batch/many-0478.txtobject-tests/batch/many-0479.txtobject-tests/batch/many-0480.txtobject-tests/batch/many-0481.txtobject-tests/batch/many-0482.txtobject-tests/batch/many-0483.txtobject-tests/batch/many-0484.txtobject-tests/batch/many-0485.txtobject-tests/batch/many-0486.txtobject-tests/batch/many-0487.txtobject-tests/batch/many-0488.txtobject-tests/batch/many-0489.txtobject-tests/batch/many-0490.txtobject-tests/batch/many-0491.txtobject-tests/batch/many-0492.txtobject-tests/batch/many-0493.txtobject-tests/batch/many-0494.txtobject-tests/batch/many-0495.txtobject-tests/batch/many-0496.txtobject-tests/batch/many-0497.txtobject-tests/batch/many-0498.txtobject-tests/batch/many-0499.txtobject-tests/batch/many-0500.txtobject-tests/batch/many-0501.txtobject-tests/batch/many-0502.txtobject-tests/batch/many-0503.txtobject-tests/batch/many-0504.txtobject-tests/batch/many-0505.txtobject-tests/batch/many-0506.txtobject-tests/batch/many-0507.txtobject-tests/batch/many-0508.txtobject-tests/batch/many-0509.txtobject-tests/batch/many-0510.txtobject-tests/batch/many-0511.txtobject-tests/batch/many-0512.txtobject-tests/batch/many-0513.txtobject-tests/batch/many-0514.txtobject-tests/batch/many-0515.txtobject-tests/batch/many-0516.txtobject-tests/batch/many-0517.txtobject-tests/batch/many-0518.txtobject-tests/batch/many-0519.txtobject-tests/batch/many-0520.txtobject-tests/batch/many-0521.txtobject-tests/batch/many-0522.txtobject-tests/batch/many-0523.txtobject-tests/batch/many-0524.txtobject-tests/batch/many-0525.txtobject-tests/batch/many-0526.txtobject-tests/batch/many-0527.txtobject-tests/batch/many-0528.txtobject-tests/batch/many-0529.txtobject-tests/batch/many-0530.txtobject-tests/batch/many-0531.txtobject-tests/batch/many-0532.txtobject-tests/batch/many-0533.txtobject-tests/batch/many-0534.txtobject-tests/batch/many-0535.txtobject-tests/batch/many-0536.txtobject-tests/batch/many-0537.txtobject-tests/batch/many-0538.txtobject-tests/batch/many-0539.txtobject-tests/batch/many-0540.txtobject-tests/batch/many-0541.txtobject-tests/batch/many-0542.txtobject-tests/batch/many-0543.txtobject-tests/batch/many-0544.txtobject-tests/batch/many-0545.txtobject-tests/batch/many-0546.txtobject-tests/batch/many-0547.txtobject-tests/batch/many-0548.txtobject-tests/batch/many-0549.txtobject-tests/batch/many-0550.txtobject-tests/batch/many-0551.txtobject-tests/batch/many-0552.txtobject-tests/batch/many-0553.txtobject-tests/batch/many-0554.txtobject-tests/batch/many-0555.txtobject-tests/batch/many-0556.txtobject-tests/batch/many-0557.txtobject-tests/batch/many-0558.txtobject-tests/batch/many-0559.txtobject-tests/batch/many-0560.txtobject-tests/batch/many-0561.txtobject-tests/batch/many-0562.txtobject-tests/batch/many-0563.txtobject-tests/batch/many-0564.txtobject-tests/batch/many-0565.txtobject-tests/batch/many-0566.txtobject-tests/batch/many-0567.txtobject-tests/batch/many-0568.txtobject-tests/batch/many-0569.txtobject-tests/batch/many-0570.txtobject-tests/batch/many-0571.txtobject-tests/batch/many-0572.txtobject-tests/batch/many-0573.txtobject-tests/batch/many-0574.txtobject-tests/batch/many-0575.txtobject-tests/batch/many-0576.txtobject-tests/batch/many-0577.txtobject-tests/batch/many-0578.txtobject-tests/batch/many-0579.txtobject-tests/batch/many-0580.txtobject-tests/batch/many-0581.txtobject-tests/batch/many-0582.txtobject-tests/batch/many-0583.txtobject-tests/batch/many-0584.txtobject-tests/batch/many-0585.txtobject-tests/batch/many-0586.txtobject-tests/batch/many-0587.txtobject-tests/batch/many-0588.txtobject-tests/batch/many-0589.txtobject-tests/batch/many-0590.txtobject-tests/batch/many-0591.txtobject-tests/batch/many-0592.txtobject-tests/batch/many-0593.txtobject-tests/batch/many-0594.txtobject-tests/batch/many-0595.txtobject-tests/batch/many-0596.txtobject-tests/batch/many-0597.txtobject-tests/batch/many-0598.txtobject-tests/batch/many-0599.txtobject-tests/batch/many-0600.txtobject-tests/batch/many-0601.txtobject-tests/batch/many-0602.txtobject-tests/batch/many-0603.txtobject-tests/batch/many-0604.txtobject-tests/batch/many-0605.txtobject-tests/batch/many-0606.txtobject-tests/batch/many-0607.txtobject-tests/batch/many-0608.txtobject-tests/batch/many-0609.txtobject-tests/batch/many-0610.txtobject-tests/batch/many-0611.txtobject-tests/batch/many-0612.txtobject-tests/batch/many-0613.txtobject-tests/batch/many-0614.txtobject-tests/batch/many-0615.txtobject-tests/batch/many-0616.txtobject-tests/batch/many-0617.txtobject-tests/batch/many-0618.txtobject-tests/batch/many-0619.txtobject-tests/batch/many-0620.txtobject-tests/batch/many-0621.txtobject-tests/batch/many-0622.txtobject-tests/batch/many-0623.txtobject-tests/batch/many-0624.txtobject-tests/batch/many-0625.txtobject-tests/batch/many-0626.txtobject-tests/batch/many-0627.txtobject-tests/batch/many-0628.txtobject-tests/batch/many-0629.txtobject-tests/batch/many-0630.txtobject-tests/batch/many-0631.txtobject-tests/batch/many-0632.txtobject-tests/batch/many-0633.txtobject-tests/batch/many-0634.txtobject-tests/batch/many-0635.txtobject-tests/batch/many-0636.txtobject-tests/batch/many-0637.txtobject-tests/batch/many-0638.txtobject-tests/batch/many-0639.txtobject-tests/batch/many-0640.txtobject-tests/batch/many-0641.txtobject-tests/batch/many-0642.txtobject-tests/batch/many-0643.txtobject-tests/batch/many-0644.txtobject-tests/batch/many-0645.txtobject-tests/batch/many-0646.txtobject-tests/batch/many-0647.txtobject-tests/batch/many-0648.txtobject-tests/batch/many-0649.txtobject-tests/batch/many-0650.txtobject-tests/batch/many-0651.txtobject-tests/batch/many-0652.txtobject-tests/batch/many-0653.txtobject-tests/batch/many-0654.txtobject-tests/batch/many-0655.txtobject-tests/batch/many-0656.txtobject-tests/batch/many-0657.txtobject-tests/batch/many-0658.txtobject-tests/batch/many-0659.txtobject-tests/batch/many-0660.txtobject-tests/batch/many-0661.txtobject-tests/batch/many-0662.txtobject-tests/batch/many-0663.txtobject-tests/batch/many-0664.txtobject-tests/batch/many-0665.txtobject-tests/batch/many-0666.txtobject-tests/batch/many-0667.txtobject-tests/batch/many-0668.txtobject-tests/batch/many-0669.txtobject-tests/batch/many-0670.txtobject-tests/batch/many-0671.txtobject-tests/batch/many-0672.txtobject-tests/batch/many-0673.txtobject-tests/batch/many-0674.txtobject-tests/batch/many-0675.txtobject-tests/batch/many-0676.txtobject-tests/batch/many-0677.txtobject-tests/batch/many-0678.txtobject-tests/batch/many-0679.txtobject-tests/batch/many-0680.txtobject-tests/batch/many-0681.txtobject-tests/batch/many-0682.txtobject-tests/batch/many-0683.txtobject-tests/batch/many-0684.txtobject-tests/batch/many-0685.txtobject-tests/batch/many-0686.txtobject-tests/batch/many-0687.txtobject-tests/batch/many-0688.txtobject-tests/batch/many-0689.txtobject-tests/batch/many-0690.txtobject-tests/batch/many-0691.txtobject-tests/batch/many-0692.txtobject-tests/batch/many-0693.txtobject-tests/batch/many-0694.txtobject-tests/batch/many-0695.txtobject-tests/batch/many-0696.txtobject-tests/batch/many-0697.txtobject-tests/batch/many-0698.txtobject-tests/batch/many-0699.txtobject-tests/batch/many-0700.txtobject-tests/batch/many-0701.txtobject-tests/batch/many-0702.txtobject-tests/batch/many-0703.txtobject-tests/batch/many-0704.txtobject-tests/batch/many-0705.txtobject-tests/batch/many-0706.txtobject-tests/batch/many-0707.txtobject-tests/batch/many-0708.txtobject-tests/batch/many-0709.txtobject-tests/batch/many-0710.txtobject-tests/batch/many-0711.txtobject-tests/batch/many-0712.txtobject-tests/batch/many-0713.txtobject-tests/batch/many-0714.txtobject-tests/batch/many-0715.txtobject-tests/batch/many-0716.txtobject-tests/batch/many-0717.txtobject-tests/batch/many-0718.txtobject-tests/batch/many-0719.txtobject-tests/batch/many-0720.txtobject-tests/batch/many-0721.txtobject-tests/batch/many-0722.txtobject-tests/batch/many-0723.txtobject-tests/batch/many-0724.txtobject-tests/batch/many-0725.txtobject-tests/batch/many-0726.txtobject-tests/batch/many-0727.txtobject-tests/batch/many-0728.txtobject-tests/batch/many-0729.txtobject-tests/batch/many-0730.txtobject-tests/batch/many-0731.txtobject-tests/batch/many-0732.txtobject-tests/batch/many-0733.txtobject-tests/batch/many-0734.txtobject-tests/batch/many-0735.txtobject-tests/batch/many-0736.txtobject-tests/batch/many-0737.txtobject-tests/batch/many-0738.txtobject-tests/batch/many-0739.txtobject-tests/batch/many-0740.txtobject-tests/batch/many-0741.txtobject-tests/batch/many-0742.txtobject-tests/batch/many-0743.txtobject-tests/batch/many-0744.txtobject-tests/batch/many-0745.txtobject-tests/batch/many-0746.txtobject-tests/batch/many-0747.txtobject-tests/batch/many-0748.txtobject-tests/batch/many-0749.txtobject-tests/batch/many-0750.txtobject-tests/batch/many-0751.txtobject-tests/batch/many-0752.txtobject-tests/batch/many-0753.txtobject-tests/batch/many-0754.txtobject-tests/batch/many-0755.txtobject-tests/batch/many-0756.txtobject-tests/batch/many-0757.txtobject-tests/batch/many-0758.txtobject-tests/batch/many-0759.txtobject-tests/batch/many-0760.txtobject-tests/batch/many-0761.txtobject-tests/batch/many-0762.txtobject-tests/batch/many-0763.txtobject-tests/batch/many-0764.txtobject-tests/batch/many-0765.txtobject-tests/batch/many-0766.txtobject-tests/batch/many-0767.txtobject-tests/batch/many-0768.txtobject-tests/batch/many-0769.txtobject-tests/batch/many-0770.txtobject-tests/batch/many-0771.txtobject-tests/batch/many-0772.txtobject-tests/batch/many-0773.txtobject-tests/batch/many-0774.txtobject-tests/batch/many-0775.txtobject-tests/batch/many-0776.txtobject-tests/batch/many-0777.txtobject-tests/batch/many-0778.txtobject-tests/batch/many-0779.txtobject-tests/batch/many-0780.txtobject-tests/batch/many-0781.txtobject-tests/batch/many-0782.txtobject-tests/batch/many-0783.txtobject-tests/batch/many-0784.txtobject-tests/batch/many-0785.txtobject-tests/batch/many-0786.txtobject-tests/batch/many-0787.txtobject-tests/batch/many-0788.txtobject-tests/batch/many-0789.txtobject-tests/batch/many-0790.txtobject-tests/batch/many-0791.txtobject-tests/batch/many-0792.txtobject-tests/batch/many-0793.txtobject-tests/batch/many-0794.txtobject-tests/batch/many-0795.txtobject-tests/batch/many-0796.txtobject-tests/batch/many-0797.txtobject-tests/batch/many-0798.txtobject-tests/batch/many-0799.txtobject-tests/batch/many-0800.txtobject-tests/batch/many-0801.txtobject-tests/batch/many-0802.txtobject-tests/batch/many-0803.txtobject-tests/batch/many-0804.txtobject-tests/batch/many-0805.txtobject-tests/batch/many-0806.txtobject-tests/batch/many-0807.txtobject-tests/batch/many-0808.txtobject-tests/batch/many-0809.txtobject-tests/batch/many-0810.txtobject-tests/batch/many-0811.txtobject-tests/batch/many-0812.txtobject-tests/batch/many-0813.txtobject-tests/batch/many-0814.txtobject-tests/batch/many-0815.txtobject-tests/batch/many-0816.txtobject-tests/batch/many-0817.txtobject-tests/batch/many-0818.txtobject-tests/batch/many-0819.txtobject-tests/batch/many-0820.txtobject-tests/batch/many-0821.txtobject-tests/batch/many-0822.txtobject-tests/batch/many-0823.txtobject-tests/batch/many-0824.txtobject-tests/batch/many-0825.txtobject-tests/batch/many-0826.txtobject-tests/batch/many-0827.txtobject-tests/batch/many-0828.txtobject-tests/batch/many-0829.txtobject-tests/batch/many-0830.txtobject-tests/batch/many-0831.txtobject-tests/batch/many-0832.txtobject-tests/batch/many-0833.txtobject-tests/batch/many-0834.txtobject-tests/batch/many-0835.txtobject-tests/batch/many-0836.txtobject-tests/batch/many-0837.txtobject-tests/batch/many-0838.txtobject-tests/batch/many-0839.txtobject-tests/batch/many-0840.txtobject-tests/batch/many-0841.txtobject-tests/batch/many-0842.txtobject-tests/batch/many-0843.txtobject-tests/batch/many-0844.txtobject-tests/batch/many-0845.txtobject-tests/batch/many-0846.txtobject-tests/batch/many-0847.txtobject-tests/batch/many-0848.txtobject-tests/batch/many-0849.txtobject-tests/batch/many-0850.txtobject-tests/batch/many-0851.txtobject-tests/batch/many-0852.txtobject-tests/batch/many-0853.txtobject-tests/batch/many-0854.txtobject-tests/batch/many-0855.txtobject-tests/batch/many-0856.txtobject-tests/batch/many-0857.txtobject-tests/batch/many-0858.txtobject-tests/batch/many-0859.txtobject-tests/batch/many-0860.txtobject-tests/batch/many-0861.txtobject-tests/batch/many-0862.txtobject-tests/batch/many-0863.txtobject-tests/batch/many-0864.txtobject-tests/batch/many-0865.txtobject-tests/batch/many-0866.txtobject-tests/batch/many-0867.txtobject-tests/batch/many-0868.txtobject-tests/batch/many-0869.txtobject-tests/batch/many-0870.txtobject-tests/batch/many-0871.txtobject-tests/batch/many-0872.txtobject-tests/batch/many-0873.txtobject-tests/batch/many-0874.txtobject-tests/batch/many-0875.txtobject-tests/batch/many-0876.txtobject-tests/batch/many-0877.txtobject-tests/batch/many-0878.txtobject-tests/batch/many-0879.txtobject-tests/batch/many-0880.txtobject-tests/batch/many-0881.txtobject-tests/batch/many-0882.txtobject-tests/batch/many-0883.txtobject-tests/batch/many-0884.txtobject-tests/batch/many-0885.txtobject-tests/batch/many-0886.txtobject-tests/batch/many-0887.txtobject-tests/batch/many-0888.txtobject-tests/batch/many-0889.txtobject-tests/batch/many-0890.txtobject-tests/batch/many-0891.txtobject-tests/batch/many-0892.txtobject-tests/batch/many-0893.txtobject-tests/batch/many-0894.txtobject-tests/batch/many-0895.txtobject-tests/batch/many-0896.txtobject-tests/batch/many-0897.txtobject-tests/batch/many-0898.txtobject-tests/batch/many-0899.txtobject-tests/batch/many-0900.txtobject-tests/batch/many-0901.txtobject-tests/batch/many-0902.txtobject-tests/batch/many-0903.txtobject-tests/batch/many-0904.txtobject-tests/batch/many-0905.txtobject-tests/batch/many-0906.txtobject-tests/batch/many-0907.txtobject-tests/batch/many-0908.txtobject-tests/batch/many-0909.txtobject-tests/batch/many-0910.txtobject-tests/batch/many-0911.txtobject-tests/batch/many-0912.txtobject-tests/batch/many-0913.txtobject-tests/batch/many-0914.txtobject-tests/batch/many-0915.txtobject-tests/batch/many-0916.txtobject-tests/batch/many-0917.txtobject-tests/batch/many-0918.txtobject-tests/batch/many-0919.txtobject-tests/batch/many-0920.txtobject-tests/batch/many-0921.txtobject-tests/batch/many-0922.txtobject-tests/batch/many-0923.txtobject-tests/batch/many-0924.txtobject-tests/batch/many-0925.txtobject-tests/batch/many-0926.txtobject-tests/batch/many-0927.txtobject-tests/batch/many-0928.txtobject-tests/batch/many-0929.txtobject-tests/batch/many-0930.txtobject-tests/batch/many-0931.txtobject-tests/batch/many-0932.txtobject-tests/batch/many-0933.txtobject-tests/batch/many-0934.txtobject-tests/batch/many-0935.txtobject-tests/batch/many-0936.txtobject-tests/batch/many-0937.txtobject-tests/batch/many-0938.txtobject-tests/batch/many-0939.txtobject-tests/batch/many-0940.txtobject-tests/batch/many-0941.txtobject-tests/batch/many-0942.txtobject-tests/batch/many-0943.txtobject-tests/batch/many-0944.txtobject-tests/batch/many-0945.txtobject-tests/batch/many-0946.txtobject-tests/batch/many-0947.txtobject-tests/batch/many-0948.txtobject-tests/batch/many-0949.txtobject-tests/batch/many-0950.txtobject-tests/batch/many-0951.txtobject-tests/batch/many-0952.txtobject-tests/batch/many-0953.txtobject-tests/batch/many-0954.txtobject-tests/batch/many-0955.txtobject-tests/batch/many-0956.txtobject-tests/batch/many-0957.txtobject-tests/batch/many-0958.txtobject-tests/batch/many-0959.txtobject-tests/batch/many-0960.txtobject-tests/batch/many-0961.txtobject-tests/batch/many-0962.txtobject-tests/batch/many-0963.txtobject-tests/batch/many-0964.txtobject-tests/batch/many-0965.txtobject-tests/batch/many-0966.txtobject-tests/batch/many-0967.txtobject-tests/batch/many-0968.txtobject-tests/batch/many-0969.txtobject-tests/batch/many-0970.txtobject-tests/batch/many-0971.txtobject-tests/batch/many-0972.txtobject-tests/batch/many-0973.txtobject-tests/batch/many-0974.txtobject-tests/batch/many-0975.txtobject-tests/batch/many-0976.txtobject-tests/batch/many-0977.txtobject-tests/batch/many-0978.txtobject-tests/batch/many-0979.txtobject-tests/batch/many-0980.txtobject-tests/batch/many-0981.txtobject-tests/batch/many-0982.txtobject-tests/batch/many-0983.txtobject-tests/batch/many-0984.txtobject-tests/batch/many-0985.txtobject-tests/batch/many-0986.txtobject-tests/batch/many-0987.txtobject-tests/batch/many-0988.txtobject-tests/batch/many-0989.txtobject-tests/batch/many-0990.txtobject-tests/batch/many-0991.txtobject-tests/batch/many-0992.txtobject-tests/batch/many-0993.txtobject-tests/batch/many-0994.txtobject-tests/batch/many-0995.txtobject-tests/batch/many-0996.txtobject-tests/batch/many-0997.txtobject-tests/batch/many-0998.txtobject-tests/batch/many-0999.txtobject-tests/batch/many-1000.txt" } }, { - "at": "/body_base64", + "at": "/query/delete", "optional": false, "rule": { "is": "equal", - "value": "c2Vjb25k" + "value": "" } }, { - "at": "/headers/x-ms-blob-type", + "at": "/headers/x-amz-checksum-crc64nvme", "optional": false, "rule": { - "is": "equal", - "value": "BlockBlob" + "is": "matches", + "pattern": "[A-Za-z0-9+/]{11}=" } }, { - "at": "/headers/if-match", + "at": "", "optional": false, "rule": { - "is": "equal", - "value": "\"fixture-etag\"" + "is": "body_checksum", + "header": "x-amz-checksum-crc64nvme", + "algorithm": "crc64nvme" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 412, + "status": 400, "headers": { "content-type": "application/xml", "date": { "from": "now" - }, - "x-ms-error-code": "LeaseIdMissing" + } }, "body": { "encoding": "utf8", - "data": "LeaseIdMissingFixture error" - } + "data": "\nMalformedXMLFixture error" + }, + "framing": "chunked" } } ] @@ -66341,7 +102030,7 @@ "optional": false, "rule": { "is": "equal", - "value": 412 + "value": 400 } }, { @@ -66349,25 +102038,65 @@ "optional": false, "rule": { "is": "equal", - "value": "LeaseIdMissing" + "value": "MalformedXML" } } ], - "refusal": null + "refusal": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "refused" + } + }, + { + "at": "/kind", + "optional": false, + "rule": { + "is": "matches", + "pattern": ".+" + } + }, + { + "at": "/parameter", + "optional": false, + "rule": { + "is": "equal", + "value": "keys" + } + }, + { + "at": "/status", + "optional": true, + "rule": { + "is": "equal", + "value": 400 + } + }, + { + "at": "/code", + "optional": true, + "rule": { + "is": "equal", + "value": "MalformedXML" + } + } + ] }, { - "id": "operations/azure-hns/put-leased-with-lease-id", - "profile": "azure-hns", + "id": "operations/s3/delete-slow-down", + "profile": "s3", "lane": "core", - "purpose": "Write to a leased object with its lease ID", + "purpose": "Report a 503 SlowDown answer as an error, after at most 5 retries", "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/lease-blob" + "https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html" ], + "origin": "transient", "call": { - "body_base64": "c2Vjb25k", - "key": "object-tests/leases/object.txt", - "lease_id": "11111111-2222-3333-4444-555555555555", - "op": "put" + "key": "object-tests/remove/present.txt", + "op": "delete" }, "exchanges": [ { @@ -66379,7 +102108,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "DELETE" } }, { @@ -66387,7 +102116,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/leases/object.txt" + "value": "/fixture/object-tests/remove/present.txt" } }, { @@ -66395,172 +102124,82 @@ "optional": false, "rule": { "is": "equal", - "value": "c2Vjb25k" - } - }, - { - "at": "/headers/x-ms-blob-type", - "optional": false, - "rule": { - "is": "equal", - "value": "BlockBlob" - } - }, - { - "at": "/headers/x-ms-lease-id", - "optional": false, - "rule": { - "is": "equal", - "value": "11111111-2222-3333-4444-555555555555" + "value": "" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 201, + "status": 503, "headers": { + "content-type": "application/xml", "date": { "from": "now" - }, - "etag": "\"fixture-etag\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true" + } }, "body": { - "encoding": "empty" - } + "encoding": "utf8", + "data": "\nSlowDownPlease reduce your request rate.fixture" + }, + "framing": "chunked" } } ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/put-leased-without-lease-id", - "profile": "azure-hns", - "lane": "core", - "purpose": "Refuse a write to a leased object that names no lease ID", - "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/lease-blob" - ], - "call": { - "body_base64": "c2Vjb25k", - "key": "object-tests/leases/object.txt", - "op": "put" - }, - "exchanges": [ + }, { "alternatives": [ { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "PUT" - } - }, + "request": [ { - "at": "/path", + "at": "/method", "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/leases/object.txt" + "value": "DELETE" } }, { - "at": "/body_base64", + "at": "/path", "optional": false, "rule": { "is": "equal", - "value": "c2Vjb25k" + "value": "/fixture/object-tests/remove/present.txt" } }, { - "at": "/headers/x-ms-blob-type", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "BlockBlob" + "value": "" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 412, + "status": 503, "headers": { "content-type": "application/xml", "date": { "from": "now" - }, - "x-ms-error-code": "LeaseIdMissing" + } }, "body": { "encoding": "utf8", - "data": "LeaseIdMissingFixture error" - } + "data": "\nSlowDownPlease reduce your request rate.fixture" + }, + "framing": "chunked" } } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 412 - } + ], + "optional": true }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "equal", - "value": "LeaseIdMissing" - } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/lease-break", - "profile": "azure-hns", - "lane": "core", - "purpose": "Break a lease at once", - "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/lease-blob" - ], - "call": { - "action": "break", - "break_period": 0, - "key": "object-tests/leases/object.txt", - "op": "azure.lease" - }, - "exchanges": [ { "alternatives": [ { @@ -66570,7 +102209,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "DELETE" } }, { @@ -66578,7 +102217,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/leases/object.txt" + "value": "/fixture/object-tests/remove/present.txt" } }, { @@ -66588,79 +102227,81 @@ "is": "equal", "value": "" } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 503, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + } + }, + "body": { + "encoding": "utf8", + "data": "\nSlowDownPlease reduce your request rate.fixture" }, + "framing": "chunked" + } + } + ], + "optional": true + }, + { + "alternatives": [ + { + "request": [ { - "at": "/query/comp", + "at": "/method", "optional": false, "rule": { "is": "equal", - "value": "lease" + "value": "DELETE" } }, { - "at": "/headers/x-ms-lease-action", + "at": "/path", "optional": false, "rule": { "is": "equal", - "value": "break" + "value": "/fixture/object-tests/remove/present.txt" } }, { - "at": "/headers/x-ms-lease-break-period", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "0" + "value": "" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 202, + "status": 503, "headers": { + "content-type": "application/xml", "date": { "from": "now" - }, - "etag": "\"fixture-etag\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-time": "0" + } }, "body": { - "encoding": "empty" - } + "encoding": "utf8", + "data": "\nSlowDownPlease reduce your request rate.fixture" + }, + "framing": "chunked" } } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/lease-release", - "profile": "azure-hns", - "lane": "core", - "purpose": "Release a lease", - "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/lease-blob" - ], - "call": { - "action": "release", - "key": "object-tests/leases/object.txt", - "lease_id": "11111111-2222-3333-4444-555555555555", - "op": "azure.lease" - }, - "exchanges": [ + ], + "optional": true + }, { "alternatives": [ { @@ -66670,7 +102311,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "DELETE" } }, { @@ -66678,7 +102319,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/leases/object.txt" + "value": "/fixture/object-tests/remove/present.txt" } }, { @@ -66688,49 +102329,80 @@ "is": "equal", "value": "" } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 503, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + } + }, + "body": { + "encoding": "utf8", + "data": "\nSlowDownPlease reduce your request rate.fixture" }, + "framing": "chunked" + } + } + ], + "optional": true + }, + { + "alternatives": [ + { + "request": [ { - "at": "/query/comp", + "at": "/method", "optional": false, "rule": { "is": "equal", - "value": "lease" + "value": "DELETE" } }, { - "at": "/headers/x-ms-lease-action", + "at": "/path", "optional": false, "rule": { "is": "equal", - "value": "release" + "value": "/fixture/object-tests/remove/present.txt" } }, { - "at": "/headers/x-ms-lease-id", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "11111111-2222-3333-4444-555555555555" + "value": "" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 200, + "status": 503, "headers": { + "content-type": "application/xml", "date": { "from": "now" - }, - "etag": "\"fixture-etag\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { - "encoding": "empty" - } + "encoding": "utf8", + "data": "\nSlowDownPlease reduce your request rate.fixture" + }, + "framing": "chunked" } } - ] + ], + "optional": true } ], "expect": [ @@ -66739,26 +102411,39 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 503 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "SlowDown" } } ], "refusal": null }, { - "id": "operations/azure-hns/lease-acquire-leased", - "profile": "azure-hns", + "id": "operations/s3/delete-bucket-missing", + "profile": "s3", "lane": "core", - "purpose": "Refuse a second lease while another lease holds the object", + "purpose": "delete bucket missing. A client reports it as container_not_found: the bucket or container is absent, not the object", "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/lease-blob" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "action": "acquire", - "duration": 15, - "key": "object-tests/leases/object.txt", - "op": "azure.lease", - "proposed_lease_id": "66666666-7777-8888-9999-000000000000" + "key": "object.txt", + "op": "delete" }, "exchanges": [ { @@ -66770,7 +102455,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "DELETE" } }, { @@ -66778,7 +102463,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/leases/object.txt" + "value": "/fixture/object.txt" } }, { @@ -66788,55 +102473,25 @@ "is": "equal", "value": "" } - }, - { - "at": "/query/comp", - "optional": false, - "rule": { - "is": "equal", - "value": "lease" - } - }, - { - "at": "/headers/x-ms-lease-action", - "optional": false, - "rule": { - "is": "equal", - "value": "acquire" - } - }, - { - "at": "/headers/x-ms-lease-duration", - "optional": false, - "rule": { - "is": "equal", - "value": "15" - } - }, - { - "at": "/headers/x-ms-proposed-lease-id", - "optional": false, - "rule": { - "is": "equal", - "value": "66666666-7777-8888-9999-000000000000" - } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 409, + "status": 404, "headers": { "content-type": "application/xml", "date": { "from": "now" - }, - "x-ms-error-code": "LeaseAlreadyPresent" + } }, "body": { "encoding": "utf8", - "data": "LeaseAlreadyPresentFixture error" - } + "data": "\nNoSuchBucketFixture error" + }, + "framing": "chunked" } } ] @@ -66856,7 +102511,7 @@ "optional": false, "rule": { "is": "equal", - "value": 409 + "value": 404 } }, { @@ -66864,26 +102519,32 @@ "optional": false, "rule": { "is": "equal", - "value": "LeaseAlreadyPresent" + "value": "NoSuchBucket" + } + }, + { + "at": "/kind", + "optional": false, + "rule": { + "is": "equal", + "value": "container_not_found" } } ], "refusal": null }, { - "id": "operations/azure-hns/lease-acquire", - "profile": "azure-hns", + "id": "operations/s3/delete-if-match-current", + "profile": "s3", "lane": "core", - "purpose": "Acquire a lease on an object with a proposed lease ID", + "purpose": "delete if match current", "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/lease-blob" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "action": "acquire", - "duration": 15, - "key": "object-tests/leases/object.txt", - "op": "azure.lease", - "proposed_lease_id": "11111111-2222-3333-4444-555555555555" + "if_match": "\"fixture-6c30b210f0a8\"", + "key": "object-tests/remove/conditional.txt", + "op": "delete" }, "exchanges": [ { @@ -66895,7 +102556,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "DELETE" } }, { @@ -66903,7 +102564,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/leases/object.txt" + "value": "/fixture/object-tests/remove/conditional.txt" } }, { @@ -66915,52 +102576,29 @@ } }, { - "at": "/query/comp", - "optional": false, - "rule": { - "is": "equal", - "value": "lease" - } - }, - { - "at": "/headers/x-ms-lease-action", - "optional": false, - "rule": { - "is": "equal", - "value": "acquire" - } - }, - { - "at": "/headers/x-ms-lease-duration", - "optional": false, - "rule": { - "is": "equal", - "value": "15" - } - }, - { - "at": "/headers/x-ms-proposed-lease-id", + "at": "/headers/if-match", "optional": false, "rule": { "is": "equal", - "value": "11111111-2222-3333-4444-555555555555" + "value": "\"fixture-6c30b210f0a8\"" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 201, + "status": 204, "headers": { "date": { "from": "now" }, - "etag": "\"fixture-etag\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-lease-id": "11111111-2222-3333-4444-555555555555" + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "empty" + "encoding": "base64", + "data": "" } } } @@ -66975,33 +102613,21 @@ "is": "equal", "value": "ok" } - }, - { - "at": "/value/lease_id", - "optional": false, - "rule": { - "is": "equal", - "value": "11111111-2222-3333-4444-555555555555" - } } ], "refusal": null }, { - "id": "operations/azure-hns/put-with-tags", - "profile": "azure-hns", + "id": "operations/s3/delete-missing", + "profile": "s3", "lane": "core", - "purpose": "Write an object with tags, which an HNS account does not support", + "purpose": "delete missing", "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/put-blob" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "body_base64": "Zmlyc3Q=", - "key": "object-tests/tags/object.txt", - "op": "put", - "tags": { - "project": "object-tests" - } + "key": "object-tests/remove/absent.txt", + "op": "delete" }, "exchanges": [ { @@ -67013,7 +102639,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "DELETE" } }, { @@ -67021,7 +102647,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/tags/object.txt" + "value": "/fixture/object-tests/remove/absent.txt" } }, { @@ -67029,40 +102655,25 @@ "optional": false, "rule": { "is": "equal", - "value": "Zmlyc3Q=" - } - }, - { - "at": "/headers/x-ms-blob-type", - "optional": false, - "rule": { - "is": "equal", - "value": "BlockBlob" - } - }, - { - "at": "/headers/x-ms-tags", - "optional": false, - "rule": { - "is": "equal", - "value": "project=object-tests" + "value": "" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 409, + "status": 204, "headers": { - "content-type": "application/xml", "date": { "from": "now" }, - "x-ms-error-code": "FeatureNotYetSupportedForHierarchicalNamespaceAccounts" + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "FeatureNotYetSupportedForHierarchicalNamespaceAccountsFixture error" + "encoding": "base64", + "data": "" } } } @@ -67075,39 +102686,24 @@ "optional": false, "rule": { "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 409 - } - }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "equal", - "value": "FeatureNotYetSupportedForHierarchicalNamespaceAccounts" + "value": "ok" } } ], "refusal": null }, { - "id": "operations/azure-hns/get-tags", - "profile": "azure-hns", + "id": "operations/s3/delete-precondition-failed", + "profile": "s3", "lane": "core", - "purpose": "Read the tags of an object, which an HNS account does not support", + "purpose": "delete precondition failed", "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/get-blob-tags" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/tags/object.txt", - "op": "azure.get_tags" + "if_match": "\"fixture-db71b2c0257c\"", + "key": "object-tests/remove/conditional.txt", + "op": "delete" }, "exchanges": [ { @@ -67119,7 +102715,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "DELETE" } }, { @@ -67127,7 +102723,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/tags/object.txt" + "value": "/fixture/object-tests/remove/conditional.txt" } }, { @@ -67139,29 +102735,31 @@ } }, { - "at": "/query/comp", + "at": "/headers/if-match", "optional": false, "rule": { "is": "equal", - "value": "tags" + "value": "\"fixture-db71b2c0257c\"" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 400, + "status": 412, "headers": { "content-type": "application/xml", "date": { "from": "now" - }, - "x-ms-error-code": "InvalidQueryParameterValue" + } }, "body": { "encoding": "utf8", - "data": "InvalidQueryParameterValueFixture error" - } + "data": "\nPreconditionFailedFixture error" + }, + "framing": "chunked" } } ] @@ -67181,7 +102779,7 @@ "optional": false, "rule": { "is": "equal", - "value": 400 + "value": 412 } }, { @@ -67189,26 +102787,23 @@ "optional": false, "rule": { "is": "equal", - "value": "InvalidQueryParameterValue" + "value": "PreconditionFailed" } } ], "refusal": null }, { - "id": "operations/azure-hns/set-tags", - "profile": "azure-hns", + "id": "operations/s3/delete-unauthenticated", + "profile": "s3", "lane": "core", - "purpose": "Replace the tags of an object, which an HNS account does not support", + "purpose": "Report the service authorization error for this operation; signature acceptance is tested separately.", "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/set-blob-tags" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/tags/object.txt", - "op": "azure.set_tags", - "tags": { - "project": "object-tests" - } + "key": "object-tests/remove/absent.txt", + "op": "delete" }, "exchanges": [ { @@ -67220,7 +102815,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "DELETE" } }, { @@ -67228,52 +102823,35 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/tags/object.txt" - } - }, - { - "at": "/body_text", - "optional": false, - "rule": { - "is": "xml", - "value": "projectobject-tests" + "value": "/fixture/object-tests/remove/absent.txt" } }, { - "at": "/query/comp", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "tags" - } - }, - { - "at": "/headers/content-type", - "optional": false, - "rule": { - "is": "one_of", - "values": [ - "application/xml", - "application/xml; charset=UTF-8" - ] + "value": "" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 400, + "status": 403, "headers": { "content-type": "application/xml", "date": { "from": "now" - }, - "x-ms-error-code": "BlobApiNotYetSupportedForHierarchicalNamespaceAccounts" + } }, "body": { "encoding": "utf8", - "data": "BlobApiNotYetSupportedForHierarchicalNamespaceAccountsFixture error" - } + "data": "\nInvalidAccessKeyIdFixture error" + }, + "framing": "chunked" } } ] @@ -67293,7 +102871,7 @@ "optional": false, "rule": { "is": "equal", - "value": 400 + "value": 403 } }, { @@ -67301,25 +102879,23 @@ "optional": false, "rule": { "is": "equal", - "value": "BlobApiNotYetSupportedForHierarchicalNamespaceAccounts" + "value": "InvalidAccessKeyId" } } ], "refusal": null }, { - "id": "operations/azure-hns/put-with-tier", - "profile": "azure-hns", + "id": "operations/s3/get-before-commit", + "profile": "s3", "lane": "core", - "purpose": "Write an object straight into the Cool access tier", + "purpose": "get before commit", "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/put-blob" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "body_base64": "Zmlyc3Q=", - "key": "object-tests/tiers/object.txt", - "op": "put", - "tier": "Cool" + "key": "object-tests/multipart/object.bin", + "op": "get" }, "exchanges": [ { @@ -67331,7 +102907,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -67339,7 +102915,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/tiers/object.txt" + "value": "/fixture/object-tests/multipart/object.bin" } }, { @@ -67347,74 +102923,29 @@ "optional": false, "rule": { "is": "equal", - "value": "Zmlyc3Q=" - } - }, - { - "at": "/headers/x-ms-blob-type", - "optional": false, - "rule": { - "is": "equal", - "value": "BlockBlob" - } - }, - { - "at": "/headers/x-ms-access-tier", - "optional": false, - "rule": { - "is": "equal", - "value": "Cool" + "value": "" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 201, + "status": 404, "headers": { + "content-type": "application/xml", "date": { "from": "now" - }, - "etag": "\"fixture-etag\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true" + } }, "body": { - "encoding": "empty" - } + "encoding": "utf8", + "data": "\nNoSuchKeyFixture error" + }, + "framing": "chunked" } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/set-tier-unknown", - "profile": "azure-hns", - "lane": "core", - "purpose": "Refuse an access tier the service does not have", - "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/set-blob-tier" - ], - "call": { - "key": "object-tests/tiers/object.txt", - "op": "azure.set_tier", - "tier": "Warm" - }, - "exchanges": [ - { - "alternatives": [ + }, { "request": [ { @@ -67422,7 +102953,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -67430,7 +102961,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/tiers/object.txt" + "value": "/fixture/object-tests/multipart/object.bin" } }, { @@ -67442,37 +102973,31 @@ } }, { - "at": "/query/comp", - "optional": false, - "rule": { - "is": "equal", - "value": "tier" - } - }, - { - "at": "/headers/x-ms-access-tier", + "at": "/headers/range", "optional": false, "rule": { - "is": "equal", - "value": "Warm" + "is": "matches", + "pattern": "bytes=0-[1-9][0-9]{2,}" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 400, + "status": 404, "headers": { "content-type": "application/xml", "date": { "from": "now" - }, - "x-ms-error-code": "InvalidHeaderValue" + } }, "body": { "encoding": "utf8", - "data": "InvalidHeaderValueFixture error" - } + "data": "\nNoSuchKeyFixture error" + }, + "framing": "chunked" } } ] @@ -67492,7 +103017,7 @@ "optional": false, "rule": { "is": "equal", - "value": 400 + "value": 404 } }, { @@ -67500,24 +103025,23 @@ "optional": false, "rule": { "is": "equal", - "value": "InvalidHeaderValue" + "value": "NoSuchKey" } } ], "refusal": null }, { - "id": "operations/azure-hns/set-tier-cool", - "profile": "azure-hns", + "id": "operations/s3/get-bucket-missing", + "profile": "s3", "lane": "core", - "purpose": "Move an object to the Cool access tier", + "purpose": "get bucket missing. A client reports it as container_not_found: the bucket or container is absent, not the object", "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/set-blob-tier" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/tiers/object.txt", - "op": "azure.set_tier", - "tier": "Cool" + "key": "object.txt", + "op": "get" }, "exchanges": [ { @@ -67529,7 +103053,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -67537,7 +103061,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/tiers/object.txt" + "value": "/fixture/object.txt" } }, { @@ -67547,36 +103071,79 @@ "is": "equal", "value": "" } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 404, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + } + }, + "body": { + "encoding": "utf8", + "data": "\nNoSuchBucketFixture error" }, + "framing": "chunked" + } + }, + { + "request": [ { - "at": "/query/comp", + "at": "/method", "optional": false, "rule": { "is": "equal", - "value": "tier" + "value": "GET" } }, { - "at": "/headers/x-ms-access-tier", + "at": "/path", "optional": false, "rule": { "is": "equal", - "value": "Cool" + "value": "/fixture/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/range", + "optional": false, + "rule": { + "is": "matches", + "pattern": "bytes=0-[1-9][0-9]{2,}" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 200, + "status": 404, "headers": { + "content-type": "application/xml", "date": { "from": "now" } }, "body": { - "encoding": "empty" - } + "encoding": "utf8", + "data": "\nNoSuchBucketFixture error" + }, + "framing": "chunked" } } ] @@ -67588,26 +103155,47 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 404 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "NoSuchBucket" + } + }, + { + "at": "/kind", + "optional": false, + "rule": { + "is": "equal", + "value": "container_not_found" } } ], "refusal": null }, { - "id": "operations/azure-hns/put-internal-error", - "profile": "azure-hns", + "id": "operations/s3/head-bucket-missing", + "profile": "s3", "lane": "core", - "purpose": "Report a 500 InternalError answer as an error, after at most 5 retries", + "purpose": "Report a HEAD of an object in a missing bucket as missing, not not_found. S3 answers 404 without a body, the same answer as for a missing object, so a client cannot tell that the object is absent", "sources": [ - "https://learn.microsoft.com/en-us/rest/api/storageservices/common-rest-api-error-codes", - "https://learn.microsoft.com/en-us/rest/api/storageservices/blob-service-error-codes" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], - "origin": "transient", "call": { - "body_base64": "MDEyMzQ1Njc4OQ==", - "key": "object-tests/write/object.txt", - "op": "put" + "key": "object.txt", + "op": "head" }, "exchanges": [ { @@ -67619,7 +103207,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "HEAD" } }, { @@ -67627,7 +103215,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/write/object.txt" + "value": "/fixture/object.txt" } }, { @@ -67635,15 +103223,7 @@ "optional": false, "rule": { "is": "equal", - "value": "MDEyMzQ1Njc4OQ==" - } - }, - { - "at": "/headers/x-ms-blob-type", - "optional": false, - "rule": { - "is": "equal", - "value": "BlockBlob" + "value": "" } } ], @@ -67652,22 +103232,64 @@ ], "allow_query": [], "response": { - "status": 500, + "status": 404, "headers": { - "content-type": "application/xml", "date": { "from": "now" - }, - "x-ms-error-code": "InternalError" + } }, "body": { - "encoding": "utf8", - "data": "InternalErrorThe server encountered an internal error. Please retry the request." + "encoding": "empty" } } } ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 404 + } }, + { + "at": "/kind", + "optional": false, + "rule": { + "is": "equal", + "value": "missing" + } + } + ], + "refusal": null + }, + { + "id": "operations/s3/get-committed-tail", + "profile": "s3", + "lane": "core", + "purpose": "get committed tail", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "key": "object-tests/multipart/object.bin", + "op": "get", + "range": { + "suffix": 10 + } + }, + "exchanges": [ { "alternatives": [ { @@ -67677,7 +103299,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -67685,7 +103307,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/write/object.txt" + "value": "/fixture/object-tests/multipart/object.bin" } }, { @@ -67693,15 +103315,15 @@ "optional": false, "rule": { "is": "equal", - "value": "MDEyMzQ1Njc4OQ==" + "value": "" } }, { - "at": "/headers/x-ms-blob-type", + "at": "/headers/range", "optional": false, "rule": { "is": "equal", - "value": "BlockBlob" + "value": "bytes=-10" } } ], @@ -67710,82 +103332,219 @@ ], "allow_query": [], "response": { - "status": 500, + "status": 206, "headers": { - "content-type": "application/xml", + "content-range": "bytes 5242876-5242885/5242886", + "content-type": "binary/octet-stream", "date": { "from": "now" }, - "x-ms-error-code": "InternalError" + "etag": "\"fixture-ae1b6d1d32ce\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "InternalErrorThe server encountered an internal error. Please retry the request." + "encoding": "base64", + "data": "Y2RlZnNlY29uZA==" } } - } - ], - "optional": true - }, - { - "alternatives": [ + }, { "request": [ { - "at": "/method", + "at": "/path", "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "/fixture/object-tests/multipart/object.bin" } }, { - "at": "/path", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/write/object.txt" + "value": "" } }, { - "at": "/body_base64", + "at": "/headers/range", "optional": false, "rule": { "is": "equal", - "value": "MDEyMzQ1Njc4OQ==" + "value": "bytes=-10" } }, { - "at": "/headers/x-ms-blob-type", + "at": "/method", "optional": false, "rule": { "is": "equal", - "value": "BlockBlob" + "value": "HEAD" } } ], + "then": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/multipart/object.bin" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/range", + "optional": false, + "rule": { + "is": "equal", + "value": "bytes=5242876-5242885" + } + }, + { + "at": "/headers/if-match", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-ae1b6d1d32ce\"" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 206, + "headers": { + "content-range": "bytes 5242876-5242885/5242886", + "content-type": "binary/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-ae1b6d1d32ce\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "base64", + "data": "Y2RlZnNlY29uZA==" + } + } + } + ] + } + ], "allow_headers": [ "content-type" ], "allow_query": [], "response": { - "status": 500, + "status": 206, "headers": { - "content-type": "application/xml", + "content-length": "10", + "content-range": "bytes 5242876-5242885/5242886", + "content-type": "binary/octet-stream", "date": { "from": "now" }, - "x-ms-error-code": "InternalError" + "etag": "\"fixture-ae1b6d1d32ce\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "InternalErrorThe server encountered an internal error. Please retry the request." + "encoding": "empty" } } } - ], - "optional": true + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-ae1b6d1d32ce\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 10 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "binary/octet-stream" + } + }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "Y2RlZnNlY29uZA==" + } + } + ], + "refusal": null + }, + { + "id": "operations/s3/get-empty", + "profile": "s3", + "lane": "core", + "purpose": "get empty", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "key": "object-tests/write/empty.bin", + "op": "get" + }, + "exchanges": [ { "alternatives": [ { @@ -67795,7 +103554,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -67803,7 +103562,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/write/object.txt" + "value": "/fixture/object-tests/write/empty.bin" } }, { @@ -67811,15 +103570,7 @@ "optional": false, "rule": { "is": "equal", - "value": "MDEyMzQ1Njc4OQ==" - } - }, - { - "at": "/headers/x-ms-blob-type", - "optional": false, - "rule": { - "is": "equal", - "value": "BlockBlob" + "value": "" } } ], @@ -67828,25 +103579,21 @@ ], "allow_query": [], "response": { - "status": 500, + "status": 200, "headers": { - "content-type": "application/xml", + "content-type": "binary/octet-stream", "date": { "from": "now" }, - "x-ms-error-code": "InternalError" + "etag": "\"fixture-7d64e1430626\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "InternalErrorThe server encountered an internal error. Please retry the request." + "encoding": "base64", + "data": "" } } - } - ], - "optional": true - }, - { - "alternatives": [ + }, { "request": [ { @@ -67854,7 +103601,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -67862,7 +103609,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/write/object.txt" + "value": "/fixture/object-tests/write/empty.bin" } }, { @@ -67870,42 +103617,148 @@ "optional": false, "rule": { "is": "equal", - "value": "MDEyMzQ1Njc4OQ==" + "value": "" } }, { - "at": "/headers/x-ms-blob-type", + "at": "/headers/range", "optional": false, "rule": { - "is": "equal", - "value": "BlockBlob" + "is": "matches", + "pattern": "bytes=0-[1-9][0-9]{2,}" } } ], + "then": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/write/empty.bin" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "binary/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-7d64e1430626\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + }, + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/write/empty.bin" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/partNumber", + "optional": false, + "rule": { + "is": "equal", + "value": "1" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "binary/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-7d64e1430626\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], "allow_headers": [ "content-type" ], "allow_query": [], "response": { - "status": 500, + "status": 416, "headers": { + "content-range": "bytes */0", "content-type": "application/xml", "date": { "from": "now" }, - "x-ms-error-code": "InternalError" + "etag": "\"fixture-7d64e1430626\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "utf8", - "data": "InternalErrorThe server encountered an internal error. Please retry the request." - } + "data": "\nInvalidRangeEmpty object0" + }, + "framing": "chunked" } - } - ], - "optional": true - }, - { - "alternatives": [ + }, { "request": [ { @@ -67913,7 +103766,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -67921,7 +103774,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/write/object.txt" + "value": "/fixture/object-tests/write/empty.bin" } }, { @@ -67929,15 +103782,15 @@ "optional": false, "rule": { "is": "equal", - "value": "MDEyMzQ1Njc4OQ==" + "value": "" } }, { - "at": "/headers/x-ms-blob-type", + "at": "/query/partNumber", "optional": false, "rule": { "is": "equal", - "value": "BlockBlob" + "value": "1" } } ], @@ -67946,22 +103799,22 @@ ], "allow_query": [], "response": { - "status": 500, + "status": 200, "headers": { - "content-type": "application/xml", + "content-type": "binary/octet-stream", "date": { "from": "now" }, - "x-ms-error-code": "InternalError" + "etag": "\"fixture-7d64e1430626\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "InternalErrorThe server encountered an internal error. Please retry the request." + "encoding": "base64", + "data": "" } } } - ], - "optional": true + ] } ], "expect": [ @@ -67970,41 +103823,70 @@ "optional": false, "rule": { "is": "equal", - "value": "error" + "value": "ok" } }, { - "at": "/status", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": 500 + "value": "\"fixture-7d64e1430626\"" } }, { - "at": "/code", + "at": "/value/size", "optional": false, "rule": { "is": "equal", - "value": "InternalError" + "value": 0 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "binary/octet-stream" + } + }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" } } ], "refusal": null }, { - "id": "operations/azure-hns/put-if-unmodified-since-past", - "profile": "azure-hns", + "id": "operations/s3/get-range-of-empty-object", + "profile": "s3", "lane": "core", - "purpose": "Refuse a write with 412 when the object changed after If-Unmodified-Since", + "purpose": "Report a range read of an empty object as 416 InvalidRange: no range of it can be satisfied, not even its first byte", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "body_base64": "MDEyMzQ1Njc4OQ==", - "if_unmodified_since": "Sat, 01 Jan 2000 00:00:00 GMT", - "key": "object-tests/write/object.txt", - "op": "put" + "key": "object-tests/write/empty.bin", + "op": "get", + "range": { + "end": 1, + "start": 0 + } }, "exchanges": [ { @@ -68016,7 +103898,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -68024,7 +103906,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/write/object.txt" + "value": "/fixture/object-tests/write/empty.bin" } }, { @@ -68032,23 +103914,15 @@ "optional": false, "rule": { "is": "equal", - "value": "MDEyMzQ1Njc4OQ==" - } - }, - { - "at": "/headers/x-ms-blob-type", - "optional": false, - "rule": { - "is": "equal", - "value": "BlockBlob" + "value": "" } }, { - "at": "/headers/if-unmodified-since", + "at": "/headers/range", "optional": false, "rule": { "is": "equal", - "value": "Sat, 01 Jan 2000 00:00:00 GMT" + "value": "bytes=0-0" } } ], @@ -68057,18 +103931,19 @@ ], "allow_query": [], "response": { - "status": 412, + "status": 416, "headers": { + "content-range": "bytes */0", "content-type": "application/xml", "date": { "from": "now" - }, - "x-ms-error-code": "ConditionNotMet" + } }, "body": { "encoding": "utf8", - "data": "ConditionNotMetFixture error" - } + "data": "\nInvalidRangeFixture error" + }, + "framing": "chunked" } } ] @@ -68088,7 +103963,7 @@ "optional": false, "rule": { "is": "equal", - "value": 412 + "value": 416 } }, { @@ -68096,25 +103971,24 @@ "optional": false, "rule": { "is": "equal", - "value": "ConditionNotMet" + "value": "InvalidRange" } } ], "refusal": null }, { - "id": "operations/azure-hns/put-content-encoding-gzip", - "profile": "azure-hns", + "id": "operations/s3/get-if-match-current", + "profile": "s3", "lane": "core", - "purpose": "Store Content-Encoding: gzip with a write, and the gzip bytes unchanged", + "purpose": "get if match current", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "body_base64": "H4sIAAAAAAACA0vOzy0oSi0uTk1RyM9TKCgtKsgvTuUCAAHVPIcWAAAA", - "content_encoding": "gzip", - "key": "object-tests/write/object.txt", - "op": "put" + "if_match": "\"fixture-ad03f2ab332a\"", + "key": "object-tests/read/object.txt", + "op": "get" }, "exchanges": [ { @@ -68126,7 +104000,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -68134,7 +104008,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/write/object.txt" + "value": "/fixture/object-tests/read/object.txt" } }, { @@ -68142,23 +104016,15 @@ "optional": false, "rule": { "is": "equal", - "value": "H4sIAAAAAAACA0vOzy0oSi0uTk1RyM9TKCgtKsgvTuUCAAHVPIcWAAAA" - } - }, - { - "at": "/headers/x-ms-blob-type", - "optional": false, - "rule": { - "is": "equal", - "value": "BlockBlob" + "value": "" } }, { - "at": "/headers/x-ms-blob-content-encoding", + "at": "/headers/if-match", "optional": false, "rule": { "is": "equal", - "value": "gzip" + "value": "\"fixture-ad03f2ab332a\"" } } ], @@ -68167,20 +104033,18 @@ ], "allow_query": [], "response": { - "status": 201, + "status": 200, "headers": { - "content-md5": "CVsDGvNMZH4SPA4MSLswrA==", + "content-type": "binary/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-bf139483d631\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true" + "etag": "\"fixture-ad03f2ab332a\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "base64", - "data": "" + "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" } } }, @@ -68191,7 +104055,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -68199,7 +104063,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/write/object.txt" + "value": "/fixture/object-tests/read/object.txt" } }, { @@ -68207,23 +104071,23 @@ "optional": false, "rule": { "is": "equal", - "value": "H4sIAAAAAAACA0vOzy0oSi0uTk1RyM9TKCgtKsgvTuUCAAHVPIcWAAAA" + "value": "" } }, { - "at": "/headers/x-ms-blob-type", + "at": "/headers/if-match", "optional": false, "rule": { "is": "equal", - "value": "BlockBlob" + "value": "\"fixture-ad03f2ab332a\"" } }, { - "at": "/headers/content-encoding", + "at": "/headers/range", "optional": false, "rule": { - "is": "equal", - "value": "gzip" + "is": "matches", + "pattern": "bytes=0-[1-9][0-9]{2,}" } } ], @@ -68232,20 +104096,19 @@ ], "allow_query": [], "response": { - "status": 201, + "status": 206, "headers": { - "content-md5": "CVsDGvNMZH4SPA4MSLswrA==", + "content-range": "bytes 0-29/30", + "content-type": "binary/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-bf139483d631\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true" + "etag": "\"fixture-ad03f2ab332a\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "base64", - "data": "" + "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" } } } @@ -68266,7 +104129,23 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-bf139483d631\"" + "value": "\"fixture-ad03f2ab332a\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 30 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "binary/octet-stream" } }, { @@ -68279,26 +104158,30 @@ "" ] } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + } } ], "refusal": null }, { - "id": "operations/azure-hns/put-content-properties", - "profile": "azure-hns", + "id": "operations/s3/get-if-none-match-other", + "profile": "s3", "lane": "core", - "purpose": "Store Content-Type, Content-Language, Content-Disposition and Cache-Control with a write", + "purpose": "get if none match other", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "body_base64": "MDEyMzQ1Njc4OQ==", - "cache_control": "max-age=3600", - "content_disposition": "attachment; filename=\"report.txt\"", - "content_language": "nl-NL", - "content_type": "text/plain; charset=utf-8", - "key": "object-tests/write/object.txt", - "op": "put" + "if_none_match": "\"fixture-db71b2c0257c\"", + "key": "object-tests/read/object.txt", + "op": "get" }, "exchanges": [ { @@ -68310,7 +104193,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -68318,7 +104201,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/write/object.txt" + "value": "/fixture/object-tests/read/object.txt" } }, { @@ -68326,47 +104209,15 @@ "optional": false, "rule": { "is": "equal", - "value": "MDEyMzQ1Njc4OQ==" - } - }, - { - "at": "/headers/x-ms-blob-type", - "optional": false, - "rule": { - "is": "equal", - "value": "BlockBlob" - } - }, - { - "at": "/headers/x-ms-blob-content-type", - "optional": false, - "rule": { - "is": "equal", - "value": "text/plain; charset=utf-8" - } - }, - { - "at": "/headers/x-ms-blob-content-language", - "optional": false, - "rule": { - "is": "equal", - "value": "nl-NL" - } - }, - { - "at": "/headers/x-ms-blob-content-disposition", - "optional": false, - "rule": { - "is": "equal", - "value": "attachment; filename=\"report.txt\"" + "value": "" } }, { - "at": "/headers/x-ms-blob-cache-control", + "at": "/headers/if-none-match", "optional": false, "rule": { "is": "equal", - "value": "max-age=3600" + "value": "\"fixture-db71b2c0257c\"" } } ], @@ -68375,20 +104226,18 @@ ], "allow_query": [], "response": { - "status": 201, + "status": 200, "headers": { - "content-md5": "eB5eJF1ptWaXm4bijSPyxw==", + "content-type": "binary/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-bf139483d631\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true" + "etag": "\"fixture-ad03f2ab332a\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "base64", - "data": "" + "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" } } }, @@ -68399,7 +104248,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -68407,7 +104256,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/write/object.txt" + "value": "/fixture/object-tests/read/object.txt" } }, { @@ -68415,47 +104264,23 @@ "optional": false, "rule": { "is": "equal", - "value": "MDEyMzQ1Njc4OQ==" - } - }, - { - "at": "/headers/x-ms-blob-type", - "optional": false, - "rule": { - "is": "equal", - "value": "BlockBlob" - } - }, - { - "at": "/headers/content-type", - "optional": false, - "rule": { - "is": "equal", - "value": "text/plain; charset=utf-8" - } - }, - { - "at": "/headers/content-language", - "optional": false, - "rule": { - "is": "equal", - "value": "nl-NL" + "value": "" } }, { - "at": "/headers/x-ms-blob-content-disposition", + "at": "/headers/if-none-match", "optional": false, "rule": { "is": "equal", - "value": "attachment; filename=\"report.txt\"" + "value": "\"fixture-db71b2c0257c\"" } }, { - "at": "/headers/cache-control", + "at": "/headers/range", "optional": false, "rule": { - "is": "equal", - "value": "max-age=3600" + "is": "matches", + "pattern": "bytes=0-[1-9][0-9]{2,}" } } ], @@ -68464,20 +104289,19 @@ ], "allow_query": [], "response": { - "status": 201, + "status": 206, "headers": { - "content-md5": "eB5eJF1ptWaXm4bijSPyxw==", + "content-range": "bytes 0-29/30", + "content-type": "binary/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-bf139483d631\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true" + "etag": "\"fixture-ad03f2ab332a\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "base64", - "data": "" + "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" } } } @@ -68498,7 +104322,23 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-bf139483d631\"" + "value": "\"fixture-ad03f2ab332a\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 30 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "binary/octet-stream" } }, { @@ -68511,22 +104351,29 @@ "" ] } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + } } ], "refusal": null }, { - "id": "operations/azure-hns/put-first-version", - "profile": "azure-hns", + "id": "operations/s3/get-key-with-hash", + "profile": "s3", "lane": "core", - "purpose": "put first version", + "purpose": "get key with hash", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "body_base64": "djE=", - "key": "object-tests/versions-mtypy4jp/object.txt", - "op": "put" + "key": "object-tests/names/hash#tag.txt", + "op": "get" }, "exchanges": [ { @@ -68538,7 +104385,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -68546,7 +104393,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/versions-mtypy4jp/object.txt" + "value": "/fixture/object-tests/names/hash#tag.txt" } }, { @@ -68554,15 +104401,62 @@ "optional": false, "rule": { "is": "equal", - "value": "djE=" + "value": "" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "binary/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-6c30b210f0a8\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "base64", + "data": "MQ==" + } + } + }, + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" } }, { - "at": "/headers/x-ms-blob-type", + "at": "/path", "optional": false, "rule": { "is": "equal", - "value": "BlockBlob" + "value": "/fixture/object-tests/names/hash#tag.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/range", + "optional": false, + "rule": { + "is": "matches", + "pattern": "bytes=0-[1-9][0-9]{2,}" } } ], @@ -68571,20 +104465,19 @@ ], "allow_query": [], "response": { - "status": 201, + "status": 206, "headers": { - "content-md5": "ZlTHNMyrj0QP8IJetEPcfw==", + "content-range": "bytes 0-0/1", + "content-type": "binary/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-36af044f7dd6\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true" + "etag": "\"fixture-6c30b210f0a8\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "base64", - "data": "" + "data": "MQ==" } } } @@ -68605,7 +104498,23 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-36af044f7dd6\"" + "value": "\"fixture-6c30b210f0a8\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "binary/octet-stream" } }, { @@ -68618,23 +104527,29 @@ "" ] } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MQ==" + } } ], "refusal": null }, { - "id": "operations/azure-hns/put-if-match-current", - "profile": "azure-hns", + "id": "operations/s3/get-key-with-percent", + "profile": "s3", "lane": "core", - "purpose": "put if match current", + "purpose": "get key with percent", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "body_base64": "cmVwbGFjZWQ=", - "if_match": "\"fixture-bf139483d631\"", - "key": "object-tests/write/object.txt", - "op": "put" + "key": "object-tests/names/percent%20.txt", + "op": "get" }, "exchanges": [ { @@ -68646,7 +104561,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -68654,7 +104569,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/write/object.txt" + "value": "/fixture/object-tests/names/percent%20.txt" } }, { @@ -68662,23 +104577,62 @@ "optional": false, "rule": { "is": "equal", - "value": "cmVwbGFjZWQ=" + "value": "" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "binary/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-6c30b210f0a8\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "base64", + "data": "MQ==" + } + } + }, + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" } }, { - "at": "/headers/if-match", + "at": "/path", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-bf139483d631\"" + "value": "/fixture/object-tests/names/percent%20.txt" } }, { - "at": "/headers/x-ms-blob-type", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "BlockBlob" + "value": "" + } + }, + { + "at": "/headers/range", + "optional": false, + "rule": { + "is": "matches", + "pattern": "bytes=0-[1-9][0-9]{2,}" } } ], @@ -68687,20 +104641,19 @@ ], "allow_query": [], "response": { - "status": 201, + "status": 206, "headers": { - "content-md5": "kbskg1kEP+mEFuJZyb3xDQ==", + "content-range": "bytes 0-0/1", + "content-type": "binary/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-12045b9dfdc3\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true" + "etag": "\"fixture-6c30b210f0a8\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "base64", - "data": "" + "data": "MQ==" } } } @@ -68721,7 +104674,23 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-12045b9dfdc3\"" + "value": "\"fixture-6c30b210f0a8\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "binary/octet-stream" } }, { @@ -68734,23 +104703,29 @@ "" ] } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MQ==" + } } ], "refusal": null }, { - "id": "operations/azure-hns/put-if-none-match-missing", - "profile": "azure-hns", + "id": "operations/s3/get-key-with-plus", + "profile": "s3", "lane": "core", - "purpose": "put if none match missing", + "purpose": "get key with plus", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "body_base64": "ZnJlc2g=", - "if_none_match": "*", - "key": "object-tests/write/fresh.txt", - "op": "put" + "key": "object-tests/names/plus+plus.txt", + "op": "get" }, "exchanges": [ { @@ -68762,7 +104737,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -68770,7 +104745,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/write/fresh.txt" + "value": "/fixture/object-tests/names/plus+plus.txt" } }, { @@ -68778,23 +104753,62 @@ "optional": false, "rule": { "is": "equal", - "value": "ZnJlc2g=" + "value": "" } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "binary/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-6c30b210f0a8\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, + "body": { + "encoding": "base64", + "data": "MQ==" + } + } + }, + { + "request": [ { - "at": "/headers/if-none-match", + "at": "/method", "optional": false, "rule": { "is": "equal", - "value": "*" + "value": "GET" } }, { - "at": "/headers/x-ms-blob-type", + "at": "/path", "optional": false, "rule": { "is": "equal", - "value": "BlockBlob" + "value": "/fixture/object-tests/names/plus+plus.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/range", + "optional": false, + "rule": { + "is": "matches", + "pattern": "bytes=0-[1-9][0-9]{2,}" } } ], @@ -68803,20 +104817,19 @@ ], "allow_query": [], "response": { - "status": 201, + "status": 206, "headers": { - "content-md5": "dgEIWMg2LXMC71+UNqpmOQ==", + "content-range": "bytes 0-0/1", + "content-type": "binary/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-5be249955d3d\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true" + "etag": "\"fixture-6c30b210f0a8\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "base64", - "data": "" + "data": "MQ==" } } } @@ -68837,7 +104850,23 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-5be249955d3d\"" + "value": "\"fixture-6c30b210f0a8\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "binary/octet-stream" } }, { @@ -68850,22 +104879,29 @@ "" ] } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MQ==" + } } ], "refusal": null }, { - "id": "operations/azure-hns/put-key-1024", - "profile": "azure-hns", + "id": "operations/s3/get-key-with-space", + "profile": "s3", "lane": "core", - "purpose": "put key 1024", + "purpose": "get key with space", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "body_base64": "MQ==", - "key": "object-tests/long/kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", - "op": "put" + "key": "object-tests/names/space name.txt", + "op": "get" }, "exchanges": [ { @@ -68877,7 +104913,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -68885,7 +104921,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/long/kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk" + "value": "/fixture/object-tests/names/space name.txt" } }, { @@ -68893,15 +104929,7 @@ "optional": false, "rule": { "is": "equal", - "value": "MQ==" - } - }, - { - "at": "/headers/x-ms-blob-type", - "optional": false, - "rule": { - "is": "equal", - "value": "BlockBlob" + "value": "" } } ], @@ -68910,73 +104938,21 @@ ], "allow_query": [], "response": { - "status": 201, + "status": 200, "headers": { - "content-md5": "xMpCOKC5I4INzFCab3WEmw==", + "content-type": "binary/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-f5596350d7a5\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true" + "etag": "\"fixture-6c30b210f0a8\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "base64", - "data": "" + "data": "MQ==" } } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-f5596350d7a5\"" - } - }, - { - "at": "/value/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/put-key-1025", - "profile": "azure-hns", - "lane": "core", - "purpose": "put key 1025", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "body_base64": "MQ==", - "key": "object-tests/long/kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", - "op": "put" - }, - "exchanges": [ - { - "alternatives": [ + }, { "request": [ { @@ -68984,7 +104960,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -68992,7 +104968,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/long/kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk" + "value": "/fixture/object-tests/names/space name.txt" } }, { @@ -69000,15 +104976,15 @@ "optional": false, "rule": { "is": "equal", - "value": "MQ==" + "value": "" } }, { - "at": "/headers/x-ms-blob-type", + "at": "/headers/range", "optional": false, "rule": { - "is": "equal", - "value": "BlockBlob" + "is": "matches", + "pattern": "bytes=0-[1-9][0-9]{2,}" } } ], @@ -69017,20 +104993,19 @@ ], "allow_query": [], "response": { - "status": 201, + "status": 206, "headers": { - "content-md5": "xMpCOKC5I4INzFCab3WEmw==", + "content-range": "bytes 0-0/1", + "content-type": "binary/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-16d1c2f31d98\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true" + "etag": "\"fixture-6c30b210f0a8\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "base64", - "data": "" + "data": "MQ==" } } } @@ -69051,7 +105026,23 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-16d1c2f31d98\"" + "value": "\"fixture-6c30b210f0a8\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "binary/octet-stream" } }, { @@ -69064,22 +105055,29 @@ "" ] } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MQ==" + } } ], "refusal": null }, { - "id": "operations/azure-hns/put-key-under-object", - "profile": "azure-hns", + "id": "operations/s3/get-key-with-question", + "profile": "s3", "lane": "core", - "purpose": "put key under object", + "purpose": "get key question", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html" ], "call": { - "body_base64": "MQ==", - "key": "object-tests/order/a/b", - "op": "put" + "key": "a?b", + "op": "get" }, "exchanges": [ { @@ -69091,7 +105089,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -69099,7 +105097,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/order/a/b" + "value": "/fixture/a?b" } }, { @@ -69107,85 +105105,41 @@ "optional": false, "rule": { "is": "equal", - "value": "MQ==" + "value": "" } }, { - "at": "/headers/x-ms-blob-type", - "optional": false, + "at": "/headers/content-type", + "optional": true, "rule": { - "is": "equal", - "value": "BlockBlob" + "is": "one_of", + "values": [ + "application/xml", + "application/octet-stream", + "binary/octet-stream" + ] } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 404, + "status": 200, "headers": { - "content-type": "application/xml", + "content-type": "application/octet-stream", "date": { "from": "now" }, - "x-ms-error-code": "BlobNotFound" + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-amz-request-id": "fixture-request-id" }, "body": { - "encoding": "utf8", - "data": "BlobNotFoundFixture error" + "encoding": "base64", + "data": "aGVsbG8=" } } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 404 - } - }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "equal", - "value": "BlobNotFound" - } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/put-lost-the-race-to-create", - "profile": "azure-hns", - "lane": "core", - "purpose": "put lost the race to create", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "body_base64": "YW5vdGhlciBvYmplY3Q=", - "if_none_match": "*", - "key": "object-tests/write/object.txt", - "op": "put" - }, - "exchanges": [ - { - "alternatives": [ + }, { "request": [ { @@ -69193,7 +105147,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -69201,7 +105155,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/write/object.txt" + "value": "/fixture/a?b" } }, { @@ -69209,42 +105163,47 @@ "optional": false, "rule": { "is": "equal", - "value": "YW5vdGhlciBvYmplY3Q=" + "value": "" } }, { - "at": "/headers/if-none-match", - "optional": false, + "at": "/headers/content-type", + "optional": true, "rule": { - "is": "equal", - "value": "*" + "is": "one_of", + "values": [ + "application/xml", + "application/octet-stream", + "binary/octet-stream" + ] } }, { - "at": "/headers/x-ms-blob-type", + "at": "/headers/range", "optional": false, "rule": { - "is": "equal", - "value": "BlockBlob" + "is": "matches", + "pattern": "bytes=0-[1-9][0-9]{2,}" } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 409, + "status": 206, "headers": { - "content-type": "application/xml", + "content-range": "bytes 0-4/5", + "content-type": "application/octet-stream", "date": { "from": "now" }, - "x-ms-error-code": "BlobAlreadyExists" + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-amz-request-id": "fixture-request-id" }, "body": { - "encoding": "utf8", - "data": "BlobAlreadyExistsFixture error" + "encoding": "base64", + "data": "aGVsbG8=" } } } @@ -69257,44 +105216,31 @@ "optional": false, "rule": { "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 409 + "value": "ok" } }, { - "at": "/code", + "at": "/value/body_base64", "optional": false, "rule": { "is": "equal", - "value": "BlobAlreadyExists" + "value": "aGVsbG8=" } } ], "refusal": null }, { - "id": "operations/azure-hns/put-md5-mismatch", - "profile": "azure-hns", + "id": "operations/s3/get-key-with-non-ascii", + "profile": "s3", "lane": "core", - "purpose": "put md5 mismatch", + "purpose": "get key unicode", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html" ], "call": { - "body_base64": "ZGVjbGFyZWQtYm9keQ==", - "checksum": { - "algorithm": "md5", - "value_base64": "eV8yArF8trw9S3cdjGyerw==" - }, - "key": "object-tests/hashes/md5-mismatch.txt", - "op": "put" + "key": "café/雪", + "op": "get" }, "exchanges": [ { @@ -69306,7 +105252,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -69314,7 +105260,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/hashes/md5-mismatch.txt" + "value": "/fixture/café/雪" } }, { @@ -69322,95 +105268,41 @@ "optional": false, "rule": { "is": "equal", - "value": "ZGVjbGFyZWQtYm9keQ==" - } - }, - { - "at": "/headers/content-md5", - "optional": false, - "rule": { - "is": "equal", - "value": "eV8yArF8trw9S3cdjGyerw==" + "value": "" } }, { - "at": "/headers/x-ms-blob-type", - "optional": false, + "at": "/headers/content-type", + "optional": true, "rule": { - "is": "equal", - "value": "BlockBlob" + "is": "one_of", + "values": [ + "application/xml", + "application/octet-stream", + "binary/octet-stream" + ] } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 400, + "status": 200, "headers": { - "content-type": "application/xml", + "content-type": "application/octet-stream", "date": { "from": "now" }, - "x-ms-error-code": "Md5Mismatch" + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-amz-request-id": "fixture-request-id" }, "body": { - "encoding": "utf8", - "data": "Md5MismatchFixture error" + "encoding": "base64", + "data": "aGVsbG8=" } } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 400 - } - }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "equal", - "value": "Md5Mismatch" - } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/put-metadata-empty-value", - "profile": "azure-hns", - "lane": "core", - "purpose": "put metadata empty value", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "body_base64": "MQ==", - "key": "object-tests/metadata/empty-value.txt", - "metadata": { - "empty": "" - }, - "op": "put" - }, - "exchanges": [ - { - "alternatives": [ + }, { "request": [ { @@ -69418,7 +105310,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -69426,7 +105318,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/metadata/empty-value.txt" + "value": "/fixture/café/雪" } }, { @@ -69434,45 +105326,47 @@ "optional": false, "rule": { "is": "equal", - "value": "MQ==" + "value": "" } }, { - "at": "/headers/x-ms-meta-empty", - "optional": false, + "at": "/headers/content-type", + "optional": true, "rule": { - "is": "equal", - "value": "" + "is": "one_of", + "values": [ + "application/xml", + "application/octet-stream", + "binary/octet-stream" + ] } }, { - "at": "/headers/x-ms-blob-type", + "at": "/headers/range", "optional": false, "rule": { - "is": "equal", - "value": "BlockBlob" + "is": "matches", + "pattern": "bytes=0-[1-9][0-9]{2,}" } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 201, + "status": 206, "headers": { - "content-md5": "xMpCOKC5I4INzFCab3WEmw==", + "content-range": "bytes 0-4/5", + "content-type": "application/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-18852ad86043\"", + "etag": "\"fixture-etag\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true" + "x-amz-request-id": "fixture-request-id" }, "body": { "encoding": "base64", - "data": "" + "data": "aGVsbG8=" } } } @@ -69489,42 +105383,27 @@ } }, { - "at": "/value/etag", + "at": "/value/body_base64", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-18852ad86043\"" - } - }, - { - "at": "/value/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "value": "aGVsbG8=" } } ], "refusal": null }, { - "id": "operations/azure-hns/put-metadata-invalid-name", - "profile": "azure-hns", + "id": "operations/s3/get-key-with-separators", + "profile": "s3", "lane": "core", - "purpose": "put metadata invalid name", + "purpose": "get key separators", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html" ], "call": { - "body_base64": "MQ==", - "key": "object-tests/metadata/invalid-name.txt", - "metadata": { - "not-valid": "1" - }, - "op": "put" + "key": "a//b/", + "op": "get" }, "exchanges": [ { @@ -69536,7 +105415,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -69544,7 +105423,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/metadata/invalid-name.txt" + "value": "/fixture/a//b/" } }, { @@ -69552,133 +105431,41 @@ "optional": false, "rule": { "is": "equal", - "value": "MQ==" - } - }, - { - "at": "/headers/x-ms-meta-not-valid", - "optional": false, - "rule": { - "is": "equal", - "value": "1" + "value": "" } }, { - "at": "/headers/x-ms-blob-type", - "optional": false, + "at": "/headers/content-type", + "optional": true, "rule": { - "is": "equal", - "value": "BlockBlob" + "is": "one_of", + "values": [ + "application/xml", + "application/octet-stream", + "binary/octet-stream" + ] } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 400, + "status": 200, "headers": { - "content-type": "application/xml", + "content-type": "application/octet-stream", "date": { "from": "now" }, - "x-ms-error-code": "InvalidMetadata" + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-amz-request-id": "fixture-request-id" }, "body": { - "encoding": "utf8", - "data": "InvalidMetadataFixture error" + "encoding": "base64", + "data": "aGVsbG8=" } } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 400 - } - }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "equal", - "value": "InvalidMetadata" - } - } - ], - "refusal": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "refused" - } - }, - { - "at": "/kind", - "optional": false, - "rule": { - "is": "matches", - "pattern": ".+" - } - }, - { - "at": "/parameter", - "optional": false, - "rule": { - "is": "equal", - "value": "metadata" - } - }, - { - "at": "/status", - "optional": true, - "rule": { - "is": "equal", - "value": 400 - } - }, - { - "at": "/code", - "optional": true, - "rule": { - "is": "equal", - "value": "InvalidMetadata" - } - } - ] - }, - { - "id": "operations/azure-hns/put-metadata-replaced", - "profile": "azure-hns", - "lane": "core", - "purpose": "put metadata replaced", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "body_base64": "Mg==", - "key": "object-tests/metadata/replaced.txt", - "op": "put" - }, - "exchanges": [ - { - "alternatives": [ + }, { "request": [ { @@ -69686,7 +105473,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -69694,7 +105481,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/metadata/replaced.txt" + "value": "/fixture/a//b/" } }, { @@ -69702,37 +105489,47 @@ "optional": false, "rule": { "is": "equal", - "value": "Mg==" + "value": "" } }, { - "at": "/headers/x-ms-blob-type", + "at": "/headers/content-type", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + "application/xml", + "application/octet-stream", + "binary/octet-stream" + ] + } + }, + { + "at": "/headers/range", "optional": false, "rule": { - "is": "equal", - "value": "BlockBlob" + "is": "matches", + "pattern": "bytes=0-[1-9][0-9]{2,}" } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 201, + "status": 206, "headers": { - "content-md5": "yB5yjZ1ML2NvBn+JzBSGLA==", + "content-range": "bytes 0-4/5", + "content-type": "application/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-c24dabf9e117\"", + "etag": "\"fixture-etag\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true" + "x-amz-request-id": "fixture-request-id" }, "body": { "encoding": "base64", - "data": "" + "data": "aGVsbG8=" } } } @@ -69749,43 +105546,27 @@ } }, { - "at": "/value/etag", + "at": "/value/body_base64", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-c24dabf9e117\"" - } - }, - { - "at": "/value/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "value": "aGVsbG8=" } } ], "refusal": null }, { - "id": "operations/azure-hns/put-metadata", - "profile": "azure-hns", + "id": "operations/s3/get-metadata-empty-value", + "profile": "s3", "lane": "core", - "purpose": "put metadata", + "purpose": "get metadata empty value", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "body_base64": "MQ==", - "key": "object-tests/metadata/object.txt", - "metadata": { - "name": "value", - "second": "2" - }, - "op": "put" + "key": "object-tests/metadata/empty-value.txt", + "op": "get" }, "exchanges": [ { @@ -69797,7 +105578,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -69805,7 +105586,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/metadata/object.txt" + "value": "/fixture/object-tests/metadata/empty-value.txt" } }, { @@ -69813,31 +105594,63 @@ "optional": false, "rule": { "is": "equal", - "value": "MQ==" + "value": "" } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "binary/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-6c30b210f0a8\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-amz-meta-empty": "" }, + "body": { + "encoding": "base64", + "data": "MQ==" + } + } + }, + { + "request": [ { - "at": "/headers/x-ms-meta-name", + "at": "/method", "optional": false, "rule": { "is": "equal", - "value": "value" + "value": "GET" } }, { - "at": "/headers/x-ms-meta-second", + "at": "/path", "optional": false, "rule": { "is": "equal", - "value": "2" + "value": "/fixture/object-tests/metadata/empty-value.txt" } }, { - "at": "/headers/x-ms-blob-type", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "BlockBlob" + "value": "" + } + }, + { + "at": "/headers/range", + "optional": false, + "rule": { + "is": "matches", + "pattern": "bytes=0-[1-9][0-9]{2,}" } } ], @@ -69846,20 +105659,20 @@ ], "allow_query": [], "response": { - "status": 201, + "status": 206, "headers": { - "content-md5": "xMpCOKC5I4INzFCab3WEmw==", + "content-range": "bytes 0-0/1", + "content-type": "binary/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-4d04dba3441e\"", + "etag": "\"fixture-6c30b210f0a8\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true" + "x-amz-meta-empty": "" }, "body": { "encoding": "base64", - "data": "" + "data": "MQ==" } } } @@ -69880,7 +105693,23 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-4d04dba3441e\"" + "value": "\"fixture-6c30b210f0a8\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "binary/octet-stream" } }, { @@ -69893,25 +105722,39 @@ "" ] } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MQ==" + } + }, + { + "at": "/value/metadata", + "optional": false, + "rule": { + "is": "equal", + "value": { + "empty": "" + } + } } ], "refusal": null }, { - "id": "operations/azure-hns/put-metadata-identifier-name", - "profile": "azure-hns", + "id": "operations/s3/get-metadata-hyphen-name", + "profile": "s3", "lane": "core", - "purpose": "An Azure metadata name must be a C# identifier, which may start with an underscore and hold digits. Send _a1; only a name that is no identifier may be refused.", + "purpose": "get metadata hyphen name", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "body_base64": "MQ==", - "key": "object-tests/metadata/identifier-name.txt", - "metadata": { - "_a1": "1" - }, - "op": "put" + "key": "object-tests/metadata/hyphen-name.txt", + "op": "get" }, "exchanges": [ { @@ -69923,7 +105766,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -69931,7 +105774,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/metadata/identifier-name.txt" + "value": "/fixture/object-tests/metadata/hyphen-name.txt" } }, { @@ -69939,23 +105782,63 @@ "optional": false, "rule": { "is": "equal", - "value": "MQ==" + "value": "" } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "binary/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-6c30b210f0a8\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-amz-meta-not-valid": "1" }, + "body": { + "encoding": "base64", + "data": "MQ==" + } + } + }, + { + "request": [ { - "at": "/headers/x-ms-meta-_a1", + "at": "/method", "optional": false, "rule": { "is": "equal", - "value": "1" + "value": "GET" } }, { - "at": "/headers/x-ms-blob-type", + "at": "/path", "optional": false, "rule": { "is": "equal", - "value": "BlockBlob" + "value": "/fixture/object-tests/metadata/hyphen-name.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/range", + "optional": false, + "rule": { + "is": "matches", + "pattern": "bytes=0-[1-9][0-9]{2,}" } } ], @@ -69964,20 +105847,20 @@ ], "allow_query": [], "response": { - "status": 201, + "status": 206, "headers": { - "content-md5": "xMpCOKC5I4INzFCab3WEmw==", + "content-range": "bytes 0-0/1", + "content-type": "binary/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-4d04dba3441e\"", + "etag": "\"fixture-6c30b210f0a8\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true" + "x-amz-meta-not-valid": "1" }, "body": { "encoding": "base64", - "data": "" + "data": "MQ==" } } } @@ -69998,7 +105881,23 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-4d04dba3441e\"" + "value": "\"fixture-6c30b210f0a8\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "binary/octet-stream" } }, { @@ -70011,22 +105910,39 @@ "" ] } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MQ==" + } + }, + { + "at": "/value/metadata", + "optional": false, + "rule": { + "is": "equal", + "value": { + "not-valid": "1" + } + } } ], "refusal": null }, { - "id": "operations/azure-hns/put-over-snapshotted", - "profile": "azure-hns", + "id": "operations/s3/get-metadata-punctuation-name", + "profile": "s3", "lane": "core", - "purpose": "put over snapshotted", + "purpose": "Report a metadata name that holds any character of an HTTP token.", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "body_base64": "dHdv", - "key": "object-tests/snapshots/object.txt", - "op": "put" + "key": "object-tests/metadata/punctuation-name.txt", + "op": "get" }, "exchanges": [ { @@ -70038,7 +105954,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -70046,7 +105962,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/snapshots/object.txt" + "value": "/fixture/object-tests/metadata/punctuation-name.txt" } }, { @@ -70054,15 +105970,7 @@ "optional": false, "rule": { "is": "equal", - "value": "dHdv" - } - }, - { - "at": "/headers/x-ms-blob-type", - "optional": false, - "rule": { - "is": "equal", - "value": "BlockBlob" + "value": "" } } ], @@ -70071,73 +105979,22 @@ ], "allow_query": [], "response": { - "status": 201, + "status": 200, "headers": { - "content-md5": "uKn3Fdu2T9XFbneDxoIKYQ==", + "content-type": "binary/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-810306ce8bc4\"", + "etag": "\"fixture-6c30b210f0a8\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true" + "x-amz-meta-1a!#$%&'*+.^_`|~b": "1" }, "body": { "encoding": "base64", - "data": "" + "data": "MQ==" } } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-810306ce8bc4\"" - } - }, - { - "at": "/value/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/put-overwrite", - "profile": "azure-hns", - "lane": "core", - "purpose": "put overwrite", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "body_base64": "b3ZlcndyaXR0ZW4=", - "key": "object-tests/write/object.txt", - "op": "put" - }, - "exchanges": [ - { - "alternatives": [ + }, { "request": [ { @@ -70145,7 +106002,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -70153,7 +106010,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/write/object.txt" + "value": "/fixture/object-tests/metadata/punctuation-name.txt" } }, { @@ -70161,15 +106018,15 @@ "optional": false, "rule": { "is": "equal", - "value": "b3ZlcndyaXR0ZW4=" + "value": "" } }, { - "at": "/headers/x-ms-blob-type", + "at": "/headers/range", "optional": false, "rule": { - "is": "equal", - "value": "BlockBlob" + "is": "matches", + "pattern": "bytes=0-[1-9][0-9]{2,}" } } ], @@ -70178,20 +106035,20 @@ ], "allow_query": [], "response": { - "status": 201, + "status": 206, "headers": { - "content-md5": "UJ/0v/8wp3EDqsNAaOpGxw==", + "content-range": "bytes 0-0/1", + "content-type": "binary/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-3da2f422ef3c\"", + "etag": "\"fixture-6c30b210f0a8\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true" + "x-amz-meta-1a!#$%&'*+.^_`|~b": "1" }, "body": { "encoding": "base64", - "data": "" + "data": "MQ==" } } } @@ -70212,7 +106069,23 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-3da2f422ef3c\"" + "value": "\"fixture-6c30b210f0a8\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "binary/octet-stream" } }, { @@ -70225,23 +106098,39 @@ "" ] } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MQ==" + } + }, + { + "at": "/value/metadata", + "optional": false, + "rule": { + "is": "equal", + "value": { + "1a!#$%&'*+.^_`|~b": "1" + } + } } ], "refusal": null }, { - "id": "operations/azure-hns/put-precondition-failed", - "profile": "azure-hns", + "id": "operations/s3/get-metadata-non-ascii-value", + "profile": "s3", "lane": "core", - "purpose": "put precondition failed", + "purpose": "A general-purpose bucket returns a value outside ASCII as an RFC 2047 encoded word. Decode it, so é reads back as é.", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "body_base64": "YW5vdGhlciBvYmplY3Q=", - "if_match": "\"fixture-088e5dc109cf\"", - "key": "object-tests/write/object.txt", - "op": "put" + "key": "object-tests/metadata/non-ascii.txt", + "op": "get" }, "exchanges": [ { @@ -70253,7 +106142,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -70261,7 +106150,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/write/object.txt" + "value": "/fixture/object-tests/metadata/non-ascii.txt" } }, { @@ -70269,23 +106158,7 @@ "optional": false, "rule": { "is": "equal", - "value": "YW5vdGhlciBvYmplY3Q=" - } - }, - { - "at": "/headers/if-match", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-088e5dc109cf\"" - } - }, - { - "at": "/headers/x-ms-blob-type", - "optional": false, - "rule": { - "is": "equal", - "value": "BlockBlob" + "value": "" } } ], @@ -70294,111 +106167,54 @@ ], "allow_query": [], "response": { - "status": 412, + "status": 200, "headers": { - "content-type": "application/xml", + "content-type": "binary/octet-stream", "date": { "from": "now" }, - "x-ms-error-code": "ConditionNotMet" + "etag": "\"fixture-6c30b210f0a8\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-amz-meta-value": "=?UTF-8?Q?caf=C3=A9?=" }, "body": { - "encoding": "utf8", - "data": "ConditionNotMetFixture error" + "encoding": "base64", + "data": "MQ==" } } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 412 - } - }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "equal", - "value": "ConditionNotMet" - } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/put-precondition-failed-code-in-body", - "profile": "azure-hns", - "lane": "core", - "purpose": "put precondition failed, with the error code only in the XML body", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp", - "https://learn.microsoft.com/en-us/rest/api/storageservices/common-rest-api-error-codes", - "https://learn.microsoft.com/en-us/rest/api/storageservices/blob-service-error-codes" - ], - "origin": "constructed", - "call": { - "body_base64": "YW5vdGhlciBvYmplY3Q=", - "if_match": "\"fixture-088e5dc109cf\"", - "key": "object-tests/write/object.txt", - "op": "put" - }, - "exchanges": [ - { - "alternatives": [ + }, { "request": [ { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "PUT" - } - }, - { - "at": "/path", + "at": "/method", "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/write/object.txt" + "value": "GET" } }, { - "at": "/body_base64", + "at": "/path", "optional": false, "rule": { "is": "equal", - "value": "YW5vdGhlciBvYmplY3Q=" + "value": "/fixture/object-tests/metadata/non-ascii.txt" } }, { - "at": "/headers/if-match", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-088e5dc109cf\"" + "value": "" } }, { - "at": "/headers/x-ms-blob-type", + "at": "/headers/range", "optional": false, "rule": { - "is": "equal", - "value": "BlockBlob" + "is": "matches", + "pattern": "bytes=0-[1-9][0-9]{2,}" } } ], @@ -70407,16 +106223,20 @@ ], "allow_query": [], "response": { - "status": 412, + "status": 206, "headers": { - "content-type": "application/xml", + "content-range": "bytes 0-0/1", + "content-type": "binary/octet-stream", "date": { "from": "now" - } + }, + "etag": "\"fixture-6c30b210f0a8\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-amz-meta-value": "=?UTF-8?Q?caf=C3=A9?=" }, "body": { - "encoding": "utf8", - "data": "ConditionNotMetFixture error" + "encoding": "base64", + "data": "MQ==" } } } @@ -70429,40 +106249,76 @@ "optional": false, "rule": { "is": "equal", - "value": "error" + "value": "ok" } }, { - "at": "/status", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": 412 + "value": "\"fixture-6c30b210f0a8\"" } }, { - "at": "/code", + "at": "/value/size", "optional": false, "rule": { "is": "equal", - "value": "ConditionNotMet" + "value": 1 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "binary/octet-stream" + } + }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MQ==" + } + }, + { + "at": "/value/metadata", + "optional": false, + "rule": { + "is": "equal", + "value": { + "value": "café" + } } } ], "refusal": null }, { - "id": "operations/azure-hns/put-refused", - "profile": "azure-hns", + "id": "operations/s3/get-metadata-outside-latin-1", + "profile": "s3", "lane": "core", - "purpose": "Report the service authorization error for this operation; signature acceptance is tested separately.", + "purpose": "Decode a base64 RFC 2047 encoded word, which S3 returns for text that is mostly outside ASCII.", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "body_base64": "bm90aGluZyBpcyBzdG9yZWQ=", - "key": "object.txt", - "op": "put" + "key": "object-tests/metadata/outside-latin-1.txt", + "op": "get" }, "exchanges": [ { @@ -70474,7 +106330,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -70482,7 +106338,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object.txt" + "value": "/fixture/object-tests/metadata/outside-latin-1.txt" } }, { @@ -70490,15 +106346,7 @@ "optional": false, "rule": { "is": "equal", - "value": "bm90aGluZyBpcyBzdG9yZWQ=" - } - }, - { - "at": "/headers/x-ms-blob-type", - "optional": false, - "rule": { - "is": "equal", - "value": "BlockBlob" + "value": "" } } ], @@ -70507,67 +106355,22 @@ ], "allow_query": [], "response": { - "status": 404, + "status": 200, "headers": { - "content-type": "application/xml", + "content-type": "binary/octet-stream", "date": { "from": "now" }, - "x-ms-error-code": "ContainerNotFound" + "etag": "\"fixture-6c30b210f0a8\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-amz-meta-value": "=?UTF-8?B?6Zuq?=" }, "body": { - "encoding": "utf8", - "data": "ContainerNotFoundFixture error" + "encoding": "base64", + "data": "MQ==" } } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 404 - } - }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "equal", - "value": "ContainerNotFound" - } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/put-second-version", - "profile": "azure-hns", - "lane": "core", - "purpose": "put second version", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "body_base64": "djI=", - "key": "object-tests/versions-mtypy4jp/object.txt", - "op": "put" - }, - "exchanges": [ - { - "alternatives": [ + }, { "request": [ { @@ -70575,7 +106378,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -70583,7 +106386,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/versions-mtypy4jp/object.txt" + "value": "/fixture/object-tests/metadata/outside-latin-1.txt" } }, { @@ -70591,15 +106394,15 @@ "optional": false, "rule": { "is": "equal", - "value": "djI=" + "value": "" } }, { - "at": "/headers/x-ms-blob-type", + "at": "/headers/range", "optional": false, "rule": { - "is": "equal", - "value": "BlockBlob" + "is": "matches", + "pattern": "bytes=0-[1-9][0-9]{2,}" } } ], @@ -70608,20 +106411,20 @@ ], "allow_query": [], "response": { - "status": 201, + "status": 206, "headers": { - "content-md5": "GyZ2GcSBLMRu4oF0eITKUA==", + "content-range": "bytes 0-0/1", + "content-type": "binary/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-ecff54f15562\"", + "etag": "\"fixture-6c30b210f0a8\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true" + "x-amz-meta-value": "=?UTF-8?B?6Zuq?=" }, "body": { "encoding": "base64", - "data": "" + "data": "MQ==" } } } @@ -70642,7 +106445,23 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-ecff54f15562\"" + "value": "\"fixture-6c30b210f0a8\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "binary/octet-stream" } }, { @@ -70655,22 +106474,39 @@ "" ] } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MQ==" + } + }, + { + "at": "/value/metadata", + "optional": false, + "rule": { + "is": "equal", + "value": { + "value": "雪" + } + } } ], "refusal": null }, { - "id": "operations/azure-hns/put-unauthenticated", - "profile": "azure-hns", + "id": "operations/s3/get-metadata-split-encoded-words", + "profile": "s3", "lane": "core", - "purpose": "Report the service authorization error for this operation; signature acceptance is tested separately.", + "purpose": "S3 returns a long value as several RFC 2047 encoded words, separated by spaces. Decode each and join them without the spaces.", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "body_base64": "bm90aGluZyBpcyBzdG9yZWQ=", - "key": "object-tests/write/object.txt", - "op": "put" + "key": "object-tests/metadata/split-encoded-words.txt", + "op": "get" }, "exchanges": [ { @@ -70682,7 +106518,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -70690,7 +106526,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/write/object.txt" + "value": "/fixture/object-tests/metadata/split-encoded-words.txt" } }, { @@ -70698,15 +106534,7 @@ "optional": false, "rule": { "is": "equal", - "value": "bm90aGluZyBpcyBzdG9yZWQ=" - } - }, - { - "at": "/headers/x-ms-blob-type", - "optional": false, - "rule": { - "is": "equal", - "value": "BlockBlob" + "value": "" } } ], @@ -70715,71 +106543,22 @@ ], "allow_query": [], "response": { - "status": 401, + "status": 200, "headers": { - "content-type": "application/xml", + "content-type": "binary/octet-stream", "date": { "from": "now" }, - "x-ms-error-code": "InvalidAuthenticationInfo" + "etag": "\"fixture-6c30b210f0a8\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-amz-meta-value": "=?UTF-8?B?6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq?= =?UTF-8?B?6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq?=" }, "body": { - "encoding": "utf8", - "data": "InvalidAuthenticationInfoFixture error" + "encoding": "base64", + "data": "MQ==" } } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 401 - } - }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "equal", - "value": "InvalidAuthenticationInfo" - } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/put-with-crc64", - "profile": "azure-hns", - "lane": "core", - "purpose": "put with crc64", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "body_base64": "ZGVjbGFyZWQtYm9keQ==", - "checksum": { - "algorithm": "azure_crc64", - "value_base64": "9XBvAwWoR9o=" - }, - "key": "object-tests/hashes/crc64.txt", - "op": "put" - }, - "exchanges": [ - { - "alternatives": [ + }, { "request": [ { @@ -70787,7 +106566,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -70795,7 +106574,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/hashes/crc64.txt" + "value": "/fixture/object-tests/metadata/split-encoded-words.txt" } }, { @@ -70803,23 +106582,15 @@ "optional": false, "rule": { "is": "equal", - "value": "ZGVjbGFyZWQtYm9keQ==" - } - }, - { - "at": "/headers/x-ms-content-crc64", - "optional": false, - "rule": { - "is": "equal", - "value": "9XBvAwWoR9o=" + "value": "" } }, { - "at": "/headers/x-ms-blob-type", + "at": "/headers/range", "optional": false, "rule": { - "is": "equal", - "value": "BlockBlob" + "is": "matches", + "pattern": "bytes=0-[1-9][0-9]{2,}" } } ], @@ -70828,20 +106599,20 @@ ], "allow_query": [], "response": { - "status": 201, + "status": 206, "headers": { - "content-md5": "N6YZkbg+Lyfxtskwn8iRCg==", + "content-range": "bytes 0-0/1", + "content-type": "binary/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-bf462a2f52f2\"", + "etag": "\"fixture-6c30b210f0a8\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true" + "x-amz-meta-value": "=?UTF-8?B?6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq?= =?UTF-8?B?6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq?=" }, "body": { "encoding": "base64", - "data": "" + "data": "MQ==" } } } @@ -70862,7 +106633,23 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-bf462a2f52f2\"" + "value": "\"fixture-6c30b210f0a8\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "binary/octet-stream" } }, { @@ -70875,26 +106662,39 @@ "" ] } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MQ==" + } + }, + { + "at": "/value/metadata", + "optional": false, + "rule": { + "is": "equal", + "value": { + "value": "雪雪雪雪雪雪雪雪雪雪雪雪雪雪雪雪雪雪雪雪雪雪雪雪雪雪雪雪雪雪" + } + } } ], "refusal": null }, { - "id": "operations/azure-hns/put-with-md5", - "profile": "azure-hns", + "id": "operations/s3/get-metadata-malformed-encoded-word", + "profile": "s3", "lane": "core", - "purpose": "put with md5", + "purpose": "Leave a value that only looks like an RFC 2047 encoded word as it is: =ZZ is no hexadecimal byte.", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "body_base64": "ZGVjbGFyZWQtYm9keQ==", - "checksum": { - "algorithm": "md5", - "value_base64": "N6YZkbg+Lyfxtskwn8iRCg==" - }, - "key": "object-tests/hashes/md5.txt", - "op": "put" + "key": "object-tests/metadata/malformed-encoded-word.txt", + "op": "get" }, "exchanges": [ { @@ -70906,7 +106706,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -70914,7 +106714,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/hashes/md5.txt" + "value": "/fixture/object-tests/metadata/malformed-encoded-word.txt" } }, { @@ -70922,23 +106722,63 @@ "optional": false, "rule": { "is": "equal", - "value": "ZGVjbGFyZWQtYm9keQ==" + "value": "" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "binary/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-6c30b210f0a8\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-amz-meta-value": "=?UTF-8?Q?caf=ZZ?=" + }, + "body": { + "encoding": "base64", + "data": "MQ==" + } + } + }, + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" } }, { - "at": "/headers/content-md5", + "at": "/path", "optional": false, "rule": { "is": "equal", - "value": "N6YZkbg+Lyfxtskwn8iRCg==" + "value": "/fixture/object-tests/metadata/malformed-encoded-word.txt" } }, { - "at": "/headers/x-ms-blob-type", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "BlockBlob" + "value": "" + } + }, + { + "at": "/headers/range", + "optional": false, + "rule": { + "is": "matches", + "pattern": "bytes=0-[1-9][0-9]{2,}" } } ], @@ -70947,20 +106787,20 @@ ], "allow_query": [], "response": { - "status": 201, + "status": 206, "headers": { - "content-md5": "N6YZkbg+Lyfxtskwn8iRCg==", + "content-range": "bytes 0-0/1", + "content-type": "binary/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-15ae0acd3480\"", + "etag": "\"fixture-6c30b210f0a8\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true" + "x-amz-meta-value": "=?UTF-8?Q?caf=ZZ?=" }, "body": { "encoding": "base64", - "data": "" + "data": "MQ==" } } } @@ -70981,7 +106821,23 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-15ae0acd3480\"" + "value": "\"fixture-6c30b210f0a8\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "binary/octet-stream" } }, { @@ -70994,21 +106850,39 @@ "" ] } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MQ==" + } + }, + { + "at": "/value/metadata", + "optional": false, + "rule": { + "is": "equal", + "value": { + "value": "=?UTF-8?Q?caf=ZZ?=" + } + } } ], "refusal": null }, { - "id": "operations/azure-hns/snapshot", - "profile": "azure-hns", + "id": "operations/s3/get-metadata-replaced", + "profile": "s3", "lane": "core", - "purpose": "snapshot", + "purpose": "get metadata replaced", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/snapshots/object.txt", - "op": "azure.snapshot" + "key": "object-tests/metadata/replaced.txt", + "op": "get" }, "exchanges": [ { @@ -71020,7 +106894,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -71028,7 +106902,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/snapshots/object.txt" + "value": "/fixture/object-tests/metadata/replaced.txt" } }, { @@ -71038,14 +106912,6 @@ "is": "equal", "value": "" } - }, - { - "at": "/query/comp", - "optional": false, - "rule": { - "is": "equal", - "value": "snapshot" - } } ], "allow_headers": [ @@ -71053,68 +106919,21 @@ ], "allow_query": [], "response": { - "status": 409, + "status": 200, "headers": { - "content-type": "application/xml", + "content-type": "binary/octet-stream", "date": { "from": "now" }, - "x-ms-error-code": "FeatureNotYetSupportedForHierarchicalNamespaceAccounts" + "etag": "\"fixture-ea4c238956b1\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "FeatureNotYetSupportedForHierarchicalNamespaceAccountsFixture error" + "encoding": "base64", + "data": "Mg==" } } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 409 - } - }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "equal", - "value": "FeatureNotYetSupportedForHierarchicalNamespaceAccounts" - } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/stage-empty", - "profile": "azure-hns", - "lane": "core", - "purpose": "stage empty", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "block_id_base64": "MDAwMDAz", - "body_base64": "", - "key": "object-tests/multipart/staged.bin", - "op": "azure.stage_block" - }, - "exchanges": [ - { - "alternatives": [ + }, { "request": [ { @@ -71122,7 +106941,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -71130,7 +106949,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/staged.bin" + "value": "/fixture/object-tests/metadata/replaced.txt" } }, { @@ -71142,19 +106961,11 @@ } }, { - "at": "/query/comp", - "optional": false, - "rule": { - "is": "equal", - "value": "block" - } - }, - { - "at": "/query/blockid", + "at": "/headers/range", "optional": false, "rule": { - "is": "equal", - "value": "MDAwMDAz" + "is": "matches", + "pattern": "bytes=0-[1-9][0-9]{2,}" } } ], @@ -71163,17 +106974,19 @@ ], "allow_query": [], "response": { - "status": 400, + "status": 206, "headers": { - "content-type": "application/xml", + "content-range": "bytes 0-0/1", + "content-type": "binary/octet-stream", "date": { "from": "now" }, - "x-ms-error-code": "InvalidHeaderValue" + "etag": "\"fixture-ea4c238956b1\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "InvalidHeaderValueFixture error" + "encoding": "base64", + "data": "Mg==" } } } @@ -71186,41 +106999,66 @@ "optional": false, "rule": { "is": "equal", - "value": "error" + "value": "ok" } }, { - "at": "/status", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": 400 + "value": "\"fixture-ea4c238956b1\"" } }, { - "at": "/code", + "at": "/value/size", "optional": false, "rule": { "is": "equal", - "value": "InvalidHeaderValue" + "value": 1 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "binary/octet-stream" + } + }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "Mg==" } } ], "refusal": null }, { - "id": "operations/azure-hns/stage-escaped-id", - "profile": "azure-hns", + "id": "operations/s3/get-metadata", + "profile": "s3", "lane": "core", - "purpose": "stage escaped id", + "purpose": "get metadata", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "block_id_base64": "+/8=", - "body_base64": "b25l", - "key": "object-tests/multipart/escaped.bin", - "op": "azure.stage_block" + "key": "object-tests/metadata/object.txt", + "op": "get" }, "exchanges": [ { @@ -71232,7 +107070,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -71240,7 +107078,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/escaped.bin" + "value": "/fixture/object-tests/metadata/object.txt" } }, { @@ -71248,23 +107086,7 @@ "optional": false, "rule": { "is": "equal", - "value": "b25l" - } - }, - { - "at": "/query/comp", - "optional": false, - "rule": { - "is": "equal", - "value": "block" - } - }, - { - "at": "/query/blockid", - "optional": false, - "rule": { - "is": "equal", - "value": "+/8=" + "value": "" } } ], @@ -71273,64 +107095,23 @@ ], "allow_query": [], "response": { - "status": 201, + "status": 200, "headers": { + "content-type": "binary/octet-stream", "date": { "from": "now" }, + "etag": "\"fixture-6c30b210f0a8\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true" + "x-amz-meta-name": "value", + "x-amz-meta-second": "2" }, "body": { "encoding": "base64", - "data": "" + "data": "MQ==" } } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/etag", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/stage-id-too-long", - "profile": "azure-hns", - "lane": "core", - "purpose": "stage id too long", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "block_id_base64": "eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHg=", - "body_base64": "dGhpcmQ=", - "key": "object-tests/multipart/staged.bin", - "op": "azure.stage_block" - }, - "exchanges": [ - { - "alternatives": [ + }, { "request": [ { @@ -71338,7 +107119,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -71346,7 +107127,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/staged.bin" + "value": "/fixture/object-tests/metadata/object.txt" } }, { @@ -71354,23 +107135,15 @@ "optional": false, "rule": { "is": "equal", - "value": "dGhpcmQ=" - } - }, - { - "at": "/query/comp", - "optional": false, - "rule": { - "is": "equal", - "value": "block" + "value": "" } }, { - "at": "/query/blockid", + "at": "/headers/range", "optional": false, "rule": { - "is": "equal", - "value": "eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHg=" + "is": "matches", + "pattern": "bytes=0-[1-9][0-9]{2,}" } } ], @@ -71379,17 +107152,21 @@ ], "allow_query": [], "response": { - "status": 400, + "status": 206, "headers": { - "content-type": "application/xml", + "content-range": "bytes 0-0/1", + "content-type": "binary/octet-stream", "date": { "from": "now" }, - "x-ms-error-code": "OutOfRangeInput" + "etag": "\"fixture-6c30b210f0a8\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-amz-meta-name": "value", + "x-amz-meta-second": "2" }, "body": { - "encoding": "utf8", - "data": "OutOfRangeInputBlock ID exceeds 64 decoded bytes." + "encoding": "base64", + "data": "MQ==" } } } @@ -71402,82 +107179,77 @@ "optional": false, "rule": { "is": "equal", - "value": "error" + "value": "ok" } }, { - "at": "/status", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": 400 + "value": "\"fixture-6c30b210f0a8\"" } }, { - "at": "/code", + "at": "/value/size", "optional": false, "rule": { "is": "equal", - "value": "OutOfRangeInput" + "value": 1 } - } - ], - "refusal": [ + }, { - "at": "/outcome", + "at": "/value/content_type", "optional": false, "rule": { "is": "equal", - "value": "refused" + "value": "binary/octet-stream" } }, { - "at": "/kind", - "optional": false, + "at": "/value/version", + "optional": true, "rule": { - "is": "matches", - "pattern": ".+" + "is": "one_of", + "values": [ + null, + "" + ] } }, { - "at": "/parameter", + "at": "/value/body_base64", "optional": false, "rule": { "is": "equal", - "value": "block_id_base64" - } - }, - { - "at": "/status", - "optional": true, - "rule": { - "is": "equal", - "value": 400 + "value": "MQ==" } }, { - "at": "/code", - "optional": true, + "at": "/value/metadata", + "optional": false, "rule": { "is": "equal", - "value": "OutOfRangeInput" + "value": { + "name": "value", + "second": "2" + } } } - ] + ], + "refusal": null }, { - "id": "operations/azure-hns/stage-mixed-length-id", - "profile": "azure-hns", + "id": "operations/s3/get-metadata-ignores-unknown-headers", + "profile": "s3", "lane": "core", - "purpose": "stage mixed length id", + "purpose": "Surface user metadata; unknown headers must not become metadata.", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html" ], "call": { - "block_id_base64": "YS1tdWNoLWxvbmdlci1ibG9jay1pZGVudGlmaWVy", - "body_base64": "dGhpcmQ=", - "key": "object-tests/multipart/staged.bin", - "op": "azure.stage_block" + "key": "object", + "op": "get" }, "exchanges": [ { @@ -71489,7 +107261,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -71497,7 +107269,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/staged.bin" + "value": "/fixture/object" } }, { @@ -71505,42 +107277,109 @@ "optional": false, "rule": { "is": "equal", - "value": "dGhpcmQ=" + "value": "" } }, { - "at": "/query/comp", + "at": "/headers/content-type", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + "application/xml", + "application/octet-stream", + "binary/octet-stream" + ] + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-amz-meta-author": "Ada", + "x-amz-request-id": "fixture-request-id", + "x-unrelated": "not metadata" + }, + "body": { + "encoding": "base64", + "data": "aGVsbG8=" + } + } + }, + { + "request": [ + { + "at": "/method", "optional": false, "rule": { "is": "equal", - "value": "block" + "value": "GET" } }, { - "at": "/query/blockid", + "at": "/path", "optional": false, "rule": { "is": "equal", - "value": "YS1tdWNoLWxvbmdlci1ibG9jay1pZGVudGlmaWVy" + "value": "/fixture/object" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/content-type", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + "application/xml", + "application/octet-stream", + "binary/octet-stream" + ] + } + }, + { + "at": "/headers/range", + "optional": false, + "rule": { + "is": "matches", + "pattern": "bytes=0-[1-9][0-9]{2,}" } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 400, + "status": 206, "headers": { - "content-type": "application/xml", + "content-range": "bytes 0-4/5", + "content-type": "application/octet-stream", "date": { "from": "now" }, - "x-ms-error-code": "InvalidBlobOrBlock" + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-amz-meta-author": "Ada", + "x-amz-request-id": "fixture-request-id", + "x-unrelated": "not metadata" }, "body": { - "encoding": "utf8", - "data": "InvalidBlobOrBlockFixture error" + "encoding": "base64", + "data": "aGVsbG8=" } } } @@ -71553,44 +107392,41 @@ "optional": false, "rule": { "is": "equal", - "value": "error" + "value": "ok" } }, { - "at": "/status", + "at": "/value/body_base64", "optional": false, "rule": { "is": "equal", - "value": 400 + "value": "aGVsbG8=" } }, { - "at": "/code", + "at": "/value/metadata", "optional": false, "rule": { "is": "equal", - "value": "InvalidBlobOrBlock" + "value": { + "author": "Ada" + } } } ], "refusal": null }, { - "id": "operations/azure-hns/stage-mixed-length-id-code-in-body", - "profile": "azure-hns", + "id": "operations/s3/get-missing", + "profile": "s3", "lane": "core", - "purpose": "stage mixed length id, with the error code only in the XML body", + "purpose": "get missing. A client reports it as not_found: the object is absent", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp", - "https://learn.microsoft.com/en-us/rest/api/storageservices/common-rest-api-error-codes", - "https://learn.microsoft.com/en-us/rest/api/storageservices/blob-service-error-codes" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], - "origin": "constructed", "call": { - "block_id_base64": "YS1tdWNoLWxvbmdlci1ibG9jay1pZGVudGlmaWVy", - "body_base64": "dGhpcmQ=", - "key": "object-tests/multipart/staged.bin", - "op": "azure.stage_block" + "key": "object-tests/read/absent.txt", + "op": "get" }, "exchanges": [ { @@ -71602,7 +107438,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -71610,7 +107446,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/staged.bin" + "value": "/fixture/object-tests/read/absent.txt" } }, { @@ -71618,23 +107454,61 @@ "optional": false, "rule": { "is": "equal", - "value": "dGhpcmQ=" + "value": "" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 404, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" } }, + "body": { + "encoding": "utf8", + "data": "\nNoSuchKeyFixture error" + }, + "framing": "chunked" + } + }, + { + "request": [ { - "at": "/query/comp", + "at": "/method", "optional": false, "rule": { "is": "equal", - "value": "block" + "value": "GET" } }, { - "at": "/query/blockid", + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/read/absent.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/range", "optional": false, "rule": { - "is": "equal", - "value": "YS1tdWNoLWxvbmdlci1ibG9jay1pZGVudGlmaWVy" + "is": "matches", + "pattern": "bytes=0-[1-9][0-9]{2,}" } } ], @@ -71643,7 +107517,7 @@ ], "allow_query": [], "response": { - "status": 400, + "status": 404, "headers": { "content-type": "application/xml", "date": { @@ -71652,8 +107526,9 @@ }, "body": { "encoding": "utf8", - "data": "InvalidBlobOrBlockFixture error" - } + "data": "\nNoSuchKeyFixture error" + }, + "framing": "chunked" } } ] @@ -71673,7 +107548,7 @@ "optional": false, "rule": { "is": "equal", - "value": 400 + "value": 404 } }, { @@ -71681,25 +107556,32 @@ "optional": false, "rule": { "is": "equal", - "value": "InvalidBlobOrBlock" + "value": "NoSuchKey" + } + }, + { + "at": "/kind", + "optional": false, + "rule": { + "is": "equal", + "value": "not_found" } } ], "refusal": null }, { - "id": "operations/azure-hns/stage-unauthenticated", - "profile": "azure-hns", + "id": "operations/s3/get-not-modified", + "profile": "s3", "lane": "core", - "purpose": "Report the service authorization error for this operation; signature acceptance is tested separately.", + "purpose": "get not modified", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "block_id_base64": "MDAwMDAx", - "body_base64": "Zmlyc3Q=", - "key": "object-tests/multipart/staged.bin", - "op": "azure.stage_block" + "if_none_match": "\"fixture-ad03f2ab332a\"", + "key": "object-tests/read/object.txt", + "op": "get" }, "exchanges": [ { @@ -71711,7 +107593,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -71719,7 +107601,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/staged.bin" + "value": "/fixture/object-tests/read/object.txt" } }, { @@ -71727,23 +107609,15 @@ "optional": false, "rule": { "is": "equal", - "value": "Zmlyc3Q=" - } - }, - { - "at": "/query/comp", - "optional": false, - "rule": { - "is": "equal", - "value": "block" + "value": "" } }, { - "at": "/query/blockid", + "at": "/headers/if-none-match", "optional": false, "rule": { "is": "equal", - "value": "MDAwMDAx" + "value": "\"fixture-ad03f2ab332a\"" } } ], @@ -71752,68 +107626,19 @@ ], "allow_query": [], "response": { - "status": 401, + "status": 304, "headers": { - "content-type": "application/xml", "date": { "from": "now" }, - "x-ms-error-code": "InvalidAuthenticationInfo" + "etag": "\"fixture-ad03f2ab332a\"" }, "body": { - "encoding": "utf8", - "data": "InvalidAuthenticationInfoFixture error" + "encoding": "base64", + "data": "" } } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 401 - } - }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "equal", - "value": "InvalidAuthenticationInfo" - } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/stage", - "profile": "azure-hns", - "lane": "core", - "purpose": "stage", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "block_id_base64": "MDAwMDAy", - "body_base64": "c2Vjb25k", - "key": "object-tests/multipart/staged.bin", - "op": "azure.stage_block" - }, - "exchanges": [ - { - "alternatives": [ + }, { "request": [ { @@ -71821,7 +107646,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -71829,7 +107654,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/staged.bin" + "value": "/fixture/object-tests/read/object.txt" } }, { @@ -71837,23 +107662,23 @@ "optional": false, "rule": { "is": "equal", - "value": "c2Vjb25k" + "value": "" } }, { - "at": "/query/comp", + "at": "/headers/if-none-match", "optional": false, "rule": { "is": "equal", - "value": "block" + "value": "\"fixture-ad03f2ab332a\"" } }, { - "at": "/query/blockid", + "at": "/headers/range", "optional": false, "rule": { - "is": "equal", - "value": "MDAwMDAy" + "is": "matches", + "pattern": "bytes=0-[1-9][0-9]{2,}" } } ], @@ -71862,14 +107687,12 @@ ], "allow_query": [], "response": { - "status": 201, + "status": 304, "headers": { "date": { "from": "now" }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true" + "etag": "\"fixture-ad03f2ab332a\"" }, "body": { "encoding": "base64", @@ -71886,36 +107709,32 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "error" } }, { - "at": "/value/etag", - "optional": true, + "at": "/status", + "optional": false, "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "is": "equal", + "value": 304 } } ], "refusal": null }, { - "id": "operations/azure-hns/stage-id-64-bytes", - "profile": "azure-hns", + "id": "operations/s3/get-precondition-failed", + "profile": "s3", "lane": "core", - "purpose": "A block ID decodes to at most 64 bytes, and Azure stages a block whose ID decodes to exactly 64. Send it; only a longer ID may be refused.", + "purpose": "get precondition failed", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "block_id_base64": "eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eA==", - "body_base64": "c2Vjb25k", - "key": "object-tests/multipart/staged.bin", - "op": "azure.stage_block" + "if_match": "\"fixture-db71b2c0257c\"", + "key": "object-tests/read/object.txt", + "op": "get" }, "exchanges": [ { @@ -71927,7 +107746,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -71935,7 +107754,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/staged.bin" + "value": "/fixture/object-tests/read/object.txt" } }, { @@ -71943,23 +107762,15 @@ "optional": false, "rule": { "is": "equal", - "value": "c2Vjb25k" - } - }, - { - "at": "/query/comp", - "optional": false, - "rule": { - "is": "equal", - "value": "block" + "value": "" } }, { - "at": "/query/blockid", + "at": "/headers/if-match", "optional": false, "rule": { "is": "equal", - "value": "eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eA==" + "value": "\"fixture-db71b2c0257c\"" } } ], @@ -71968,64 +107779,20 @@ ], "allow_query": [], "response": { - "status": 201, + "status": 412, "headers": { + "content-type": "application/xml", "date": { "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true" + } }, "body": { - "encoding": "base64", - "data": "" - } + "encoding": "utf8", + "data": "\nPreconditionFailedFixture error" + }, + "framing": "chunked" } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/etag", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/stage-key-question", - "profile": "azure-hns", - "lane": "core", - "purpose": "stage, with the key \"question?mark.txt\"", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "block_id_base64": "MDAwMDAy", - "body_base64": "c2Vjb25k", - "key": "object-tests/keys/question?mark.txt", - "op": "azure.stage_block" - }, - "exchanges": [ - { - "alternatives": [ + }, { "request": [ { @@ -72033,7 +107800,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -72041,7 +107808,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/question?mark.txt" + "value": "/fixture/object-tests/read/object.txt" } }, { @@ -72049,23 +107816,23 @@ "optional": false, "rule": { "is": "equal", - "value": "c2Vjb25k" + "value": "" } }, { - "at": "/query/comp", + "at": "/headers/if-match", "optional": false, "rule": { "is": "equal", - "value": "block" + "value": "\"fixture-db71b2c0257c\"" } }, { - "at": "/query/blockid", + "at": "/headers/range", "optional": false, "rule": { - "is": "equal", - "value": "MDAwMDAy" + "is": "matches", + "pattern": "bytes=0-[1-9][0-9]{2,}" } } ], @@ -72074,19 +107841,18 @@ ], "allow_query": [], "response": { - "status": 201, + "status": 412, "headers": { + "content-type": "application/xml", "date": { "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true" + } }, "body": { - "encoding": "base64", - "data": "" - } + "encoding": "utf8", + "data": "\nPreconditionFailedFixture error" + }, + "framing": "chunked" } } ] @@ -72098,36 +107864,43 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "error" } }, { - "at": "/value/etag", - "optional": true, + "at": "/status", + "optional": false, "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "is": "equal", + "value": 412 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "PreconditionFailed" } } ], "refusal": null }, { - "id": "operations/azure-hns/stage-key-hash", - "profile": "azure-hns", + "id": "operations/s3/get-range-inverted", + "profile": "s3", "lane": "core", - "purpose": "stage, with the key \"hash#tag.txt\"", + "purpose": "get range inverted", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "block_id_base64": "MDAwMDAy", - "body_base64": "c2Vjb25k", - "key": "object-tests/keys/hash#tag.txt", - "op": "azure.stage_block" + "key": "object-tests/read/object.txt", + "op": "get", + "range": { + "end": 2, + "start": 6 + } }, "exchanges": [ { @@ -72139,7 +107912,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -72147,7 +107920,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/hash#tag.txt" + "value": "/fixture/object-tests/read/object.txt" } }, { @@ -72155,23 +107928,15 @@ "optional": false, "rule": { "is": "equal", - "value": "c2Vjb25k" - } - }, - { - "at": "/query/comp", - "optional": false, - "rule": { - "is": "equal", - "value": "block" + "value": "" } }, { - "at": "/query/blockid", + "at": "/headers/range", "optional": false, "rule": { "is": "equal", - "value": "MDAwMDAy" + "value": "bytes=6-1" } } ], @@ -72180,18 +107945,18 @@ ], "allow_query": [], "response": { - "status": 201, + "status": 200, "headers": { + "content-type": "binary/octet-stream", "date": { "from": "now" }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true" + "etag": "\"fixture-ad03f2ab332a\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "base64", - "data": "" + "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" } } } @@ -72209,6 +107974,30 @@ }, { "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-ad03f2ab332a\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 30 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "binary/octet-stream" + } + }, + { + "at": "/value/version", "optional": true, "rule": { "is": "one_of", @@ -72217,23 +108006,59 @@ "" ] } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + } } ], - "refusal": null + "refusal": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "refused" + } + }, + { + "at": "/kind", + "optional": false, + "rule": { + "is": "matches", + "pattern": ".+" + } + }, + { + "at": "/parameter", + "optional": false, + "rule": { + "is": "equal", + "value": "range" + } + } + ], + "decline_permitted": true }, { - "id": "operations/azure-hns/stage-key-percent", - "profile": "azure-hns", + "id": "operations/s3/get-range-empty", + "profile": "s3", "lane": "core", - "purpose": "stage, with the key \"percent%20.txt\"", + "purpose": "Read a range of no bytes, whose start equals its end. HTTP has no form for it: bytes=5-4 is inverted, and the service ignores it and sends the whole object. A client may refuse it instead", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "block_id_base64": "MDAwMDAy", - "body_base64": "c2Vjb25k", - "key": "object-tests/keys/percent%20.txt", - "op": "azure.stage_block" + "key": "object-tests/read/object.txt", + "op": "get", + "range": { + "end": 5, + "start": 5 + } }, "exchanges": [ { @@ -72245,7 +108070,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -72253,7 +108078,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/percent%20.txt" + "value": "/fixture/object-tests/read/object.txt" } }, { @@ -72261,23 +108086,15 @@ "optional": false, "rule": { "is": "equal", - "value": "c2Vjb25k" - } - }, - { - "at": "/query/comp", - "optional": false, - "rule": { - "is": "equal", - "value": "block" + "value": "" } }, { - "at": "/query/blockid", + "at": "/headers/range", "optional": false, "rule": { "is": "equal", - "value": "MDAwMDAy" + "value": "bytes=5-4" } } ], @@ -72286,18 +108103,18 @@ ], "allow_query": [], "response": { - "status": 201, + "status": 200, "headers": { + "content-type": "binary/octet-stream", "date": { "from": "now" }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true" + "etag": "\"fixture-ad03f2ab332a\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "base64", - "data": "" + "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" } } } @@ -72315,6 +108132,30 @@ }, { "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-ad03f2ab332a\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 30 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "binary/octet-stream" + } + }, + { + "at": "/value/version", "optional": true, "rule": { "is": "one_of", @@ -72323,23 +108164,58 @@ "" ] } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + } } ], - "refusal": null + "refusal": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "refused" + } + }, + { + "at": "/kind", + "optional": false, + "rule": { + "is": "matches", + "pattern": ".+" + } + }, + { + "at": "/parameter", + "optional": false, + "rule": { + "is": "equal", + "value": "range" + } + } + ], + "decline_permitted": true }, { - "id": "operations/azure-hns/stage-key-plus", - "profile": "azure-hns", + "id": "operations/s3/get-range-not-satisfiable", + "profile": "s3", "lane": "core", - "purpose": "stage, with the key \"plus+plus.txt\"", + "purpose": "get range not satisfiable", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "block_id_base64": "MDAwMDAy", - "body_base64": "c2Vjb25k", - "key": "object-tests/keys/plus+plus.txt", - "op": "azure.stage_block" + "key": "object-tests/read/object.txt", + "op": "get", + "range": { + "start": 40 + } }, "exchanges": [ { @@ -72351,7 +108227,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -72359,7 +108235,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/plus+plus.txt" + "value": "/fixture/object-tests/read/object.txt" } }, { @@ -72367,23 +108243,15 @@ "optional": false, "rule": { "is": "equal", - "value": "c2Vjb25k" - } - }, - { - "at": "/query/comp", - "optional": false, - "rule": { - "is": "equal", - "value": "block" + "value": "" } }, { - "at": "/query/blockid", + "at": "/headers/range", "optional": false, "rule": { "is": "equal", - "value": "MDAwMDAy" + "value": "bytes=40-" } } ], @@ -72392,64 +108260,20 @@ ], "allow_query": [], "response": { - "status": 201, + "status": 416, "headers": { + "content-type": "application/xml", "date": { "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true" + } }, "body": { - "encoding": "base64", - "data": "" - } + "encoding": "utf8", + "data": "\nInvalidRangeFixture error" + }, + "framing": "chunked" } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/etag", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/stage-key-space", - "profile": "azure-hns", - "lane": "core", - "purpose": "stage, with the key \"space name.txt\"", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "block_id_base64": "MDAwMDAy", - "body_base64": "c2Vjb25k", - "key": "object-tests/keys/space name.txt", - "op": "azure.stage_block" - }, - "exchanges": [ - { - "alternatives": [ + }, { "request": [ { @@ -72457,7 +108281,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -72465,7 +108289,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/space name.txt" + "value": "/fixture/object-tests/read/object.txt" } }, { @@ -72473,23 +108297,15 @@ "optional": false, "rule": { "is": "equal", - "value": "c2Vjb25k" - } - }, - { - "at": "/query/comp", - "optional": false, - "rule": { - "is": "equal", - "value": "block" + "value": "" } }, { - "at": "/query/blockid", + "at": "/headers/range", "optional": false, "rule": { - "is": "equal", - "value": "MDAwMDAy" + "is": "matches", + "pattern": "bytes=40-[1-9][0-9]{2,}" } } ], @@ -72498,19 +108314,18 @@ ], "allow_query": [], "response": { - "status": 201, + "status": 416, "headers": { + "content-type": "application/xml", "date": { "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true" + } }, "body": { - "encoding": "base64", - "data": "" - } + "encoding": "utf8", + "data": "\nInvalidRangeFixture error" + }, + "framing": "chunked" } } ] @@ -72522,36 +108337,43 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "error" } }, { - "at": "/value/etag", - "optional": true, + "at": "/status", + "optional": false, "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "is": "equal", + "value": 416 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "InvalidRange" } } ], "refusal": null }, { - "id": "operations/azure-hns/stage-key-non-ascii", - "profile": "azure-hns", + "id": "operations/s3/get-range-past-the-end", + "profile": "s3", "lane": "core", - "purpose": "stage, with the key \"café/雪.txt\"", + "purpose": "Read a range that ends past the object, which the service clips to the object's end. Report the window it served from Content-Range, bytes 28-29/30, so that the caller sees the range was clipped", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "block_id_base64": "MDAwMDAy", - "body_base64": "c2Vjb25k", - "key": "object-tests/keys/café/雪.txt", - "op": "azure.stage_block" + "key": "object-tests/read/object.txt", + "op": "get", + "range": { + "end": 64, + "start": 28 + } }, "exchanges": [ { @@ -72563,7 +108385,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -72571,7 +108393,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/café/雪.txt" + "value": "/fixture/object-tests/read/object.txt" } }, { @@ -72579,23 +108401,15 @@ "optional": false, "rule": { "is": "equal", - "value": "c2Vjb25k" - } - }, - { - "at": "/query/comp", - "optional": false, - "rule": { - "is": "equal", - "value": "block" + "value": "" } }, { - "at": "/query/blockid", + "at": "/headers/range", "optional": false, "rule": { "is": "equal", - "value": "MDAwMDAy" + "value": "bytes=28-63" } } ], @@ -72604,18 +108418,19 @@ ], "allow_query": [], "response": { - "status": 201, + "status": 206, "headers": { + "content-range": "bytes 28-29/30", + "content-type": "binary/octet-stream", "date": { "from": "now" }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true" + "etag": "\"fixture-ad03f2ab332a\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "base64", - "data": "" + "data": "Y3Q=" } } } @@ -72633,6 +108448,30 @@ }, { "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-ad03f2ab332a\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 2 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "binary/octet-stream" + } + }, + { + "at": "/value/version", "optional": true, "rule": { "is": "one_of", @@ -72641,23 +108480,41 @@ "" ] } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "Y3Q=" + } + }, + { + "at": "/value/content_range", + "optional": false, + "rule": { + "is": "equal", + "value": "bytes 28-29/30" + } } ], "refusal": null }, { - "id": "operations/azure-hns/stage-key-double-slash", - "profile": "azure-hns", + "id": "operations/s3/get-range-single-byte", + "profile": "s3", "lane": "core", - "purpose": "stage, with the key \"double//slash.txt\"", + "purpose": "get range single byte", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "block_id_base64": "MDAwMDAy", - "body_base64": "c2Vjb25k", - "key": "object-tests/keys/double//slash.txt", - "op": "azure.stage_block" + "key": "object-tests/read/object.txt", + "op": "get", + "range": { + "end": 1, + "start": 0 + } }, "exchanges": [ { @@ -72669,7 +108526,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -72677,7 +108534,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/double//slash.txt" + "value": "/fixture/object-tests/read/object.txt" } }, { @@ -72685,23 +108542,15 @@ "optional": false, "rule": { "is": "equal", - "value": "c2Vjb25k" - } - }, - { - "at": "/query/comp", - "optional": false, - "rule": { - "is": "equal", - "value": "block" + "value": "" } }, { - "at": "/query/blockid", + "at": "/headers/range", "optional": false, "rule": { "is": "equal", - "value": "MDAwMDAy" + "value": "bytes=0-0" } } ], @@ -72710,18 +108559,19 @@ ], "allow_query": [], "response": { - "status": 201, + "status": 206, "headers": { + "content-range": "bytes 0-0/30", + "content-type": "binary/octet-stream", "date": { "from": "now" }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-request-server-encrypted": "true" + "etag": "\"fixture-ad03f2ab332a\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "base64", - "data": "" + "data": "MA==" } } } @@ -72739,6 +108589,30 @@ }, { "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-ad03f2ab332a\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "binary/octet-stream" + } + }, + { + "at": "/value/version", "optional": true, "rule": { "is": "one_of", @@ -72747,23 +108621,33 @@ "" ] } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MA==" + } } ], "refusal": null }, { - "id": "operations/azure-hns/stage-key-trailing-slash", - "profile": "azure-hns", + "id": "operations/s3/get-range", + "profile": "s3", "lane": "core", - "purpose": "stage, with the key \"trailing-slash/\"", + "purpose": "get range", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "block_id_base64": "MDAwMDAy", - "body_base64": "c2Vjb25k", - "key": "object-tests/keys/trailing-slash/", - "op": "azure.stage_block" + "key": "object-tests/read/object.txt", + "op": "get", + "range": { + "end": 6, + "start": 2 + } }, "exchanges": [ { @@ -72775,7 +108659,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -72783,7 +108667,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/trailing-slash/" + "value": "/fixture/object-tests/read/object.txt" } }, { @@ -72791,23 +108675,15 @@ "optional": false, "rule": { "is": "equal", - "value": "c2Vjb25k" - } - }, - { - "at": "/query/comp", - "optional": false, - "rule": { - "is": "equal", - "value": "block" + "value": "" } }, { - "at": "/query/blockid", + "at": "/headers/range", "optional": false, "rule": { "is": "equal", - "value": "MDAwMDAy" + "value": "bytes=2-5" } } ], @@ -72816,17 +108692,19 @@ ], "allow_query": [], "response": { - "status": 400, + "status": 206, "headers": { - "content-type": "application/xml", + "content-range": "bytes 2-5/30", + "content-type": "binary/octet-stream", "date": { "from": "now" }, - "x-ms-error-code": "InvalidUri" + "etag": "\"fixture-ad03f2ab332a\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "InvalidUriFixture error" + "encoding": "base64", + "data": "MjM0NQ==" } } } @@ -72839,40 +108717,69 @@ "optional": false, "rule": { "is": "equal", - "value": "error" + "value": "ok" } }, { - "at": "/status", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": 400 + "value": "\"fixture-ad03f2ab332a\"" } }, { - "at": "/code", + "at": "/value/size", "optional": false, "rule": { "is": "equal", - "value": "InvalidUri" + "value": 4 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "binary/octet-stream" + } + }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MjM0NQ==" } } ], "refusal": null }, { - "id": "operations/azure-hns/staged-absent", - "profile": "azure-hns", + "id": "operations/s3/get-range-open", + "profile": "s3", "lane": "core", - "purpose": "staged absent", + "purpose": "get range open", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html" ], "call": { - "key": "object-tests/multipart/absent.bin", - "kind": "all", - "op": "azure.list_blocks" + "key": "object", + "op": "get", + "range": { + "start": 3 + } }, "exchanges": [ { @@ -72892,7 +108799,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/absent.bin" + "value": "/fixture/object" } }, { @@ -72904,89 +108811,46 @@ } }, { - "at": "/query/comp", + "at": "/headers/range", "optional": false, "rule": { "is": "equal", - "value": "blocklist" + "value": "bytes=3-" } }, { - "at": "/query/blocklisttype", - "optional": false, + "at": "/headers/content-type", + "optional": true, "rule": { - "is": "equal", - "value": "all" + "is": "one_of", + "values": [ + "application/xml", + "application/octet-stream", + "binary/octet-stream" + ] } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 404, + "status": 206, "headers": { - "content-type": "application/xml", + "content-range": "bytes 3-4/5", + "content-type": "application/octet-stream", "date": { "from": "now" }, - "x-ms-error-code": "BlobNotFound" + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-amz-request-id": "fixture-request-id" }, "body": { - "encoding": "utf8", - "data": "BlobNotFoundFixture error" + "encoding": "base64", + "data": "bG8=" } } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 404 - } - }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "equal", - "value": "BlobNotFound" - } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/staged-absent-code-in-body", - "profile": "azure-hns", - "lane": "core", - "purpose": "staged absent, with the error code only in the XML body", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp", - "https://learn.microsoft.com/en-us/rest/api/storageservices/common-rest-api-error-codes", - "https://learn.microsoft.com/en-us/rest/api/storageservices/blob-service-error-codes" - ], - "origin": "constructed", - "call": { - "key": "object-tests/multipart/absent.bin", - "kind": "all", - "op": "azure.list_blocks" - }, - "exchanges": [ - { - "alternatives": [ + }, { "request": [ { @@ -73002,7 +108866,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/absent.bin" + "value": "/fixture/object" } }, { @@ -73014,35 +108878,43 @@ } }, { - "at": "/query/comp", - "optional": false, + "at": "/headers/content-type", + "optional": true, "rule": { - "is": "equal", - "value": "blocklist" + "is": "one_of", + "values": [ + "application/xml", + "application/octet-stream", + "binary/octet-stream" + ] } }, { - "at": "/query/blocklisttype", + "at": "/headers/range", "optional": false, "rule": { - "is": "equal", - "value": "all" + "is": "matches", + "pattern": "bytes=3-[1-9][0-9]{2,}" } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 404, + "status": 206, "headers": { - "content-type": "application/xml", + "content-range": "bytes 3-4/5", + "content-type": "application/octet-stream", "date": { "from": "now" - } + }, + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-amz-request-id": "fixture-request-id" }, "body": { - "encoding": "utf8", - "data": "BlobNotFoundFixture error" + "encoding": "base64", + "data": "bG8=" } } } @@ -73055,40 +108927,31 @@ "optional": false, "rule": { "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 404 + "value": "ok" } }, { - "at": "/code", + "at": "/value/body_base64", "optional": false, "rule": { "is": "equal", - "value": "BlobNotFound" + "value": "bG8=" } } ], "refusal": null }, { - "id": "operations/azure-hns/staged-after-commit", - "profile": "azure-hns", + "id": "operations/s3/get-replaced", + "profile": "s3", "lane": "core", - "purpose": "staged after commit", + "purpose": "get replaced", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/multipart/committed.bin", - "kind": "all", - "op": "azure.list_blocks" + "key": "object-tests/multipart/replaced.bin", + "op": "get" }, "exchanges": [ { @@ -73108,7 +108971,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/committed.bin" + "value": "/fixture/object-tests/multipart/replaced.bin" } }, { @@ -73118,42 +108981,82 @@ "is": "equal", "value": "" } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "binary/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-8631a8b6edf7\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, + "body": { + "encoding": "base64", + "data": "Yg==" + } + } + }, + { + "request": [ { - "at": "/query/comp", + "at": "/method", "optional": false, "rule": { "is": "equal", - "value": "blocklist" + "value": "GET" } }, { - "at": "/query/blocklisttype", + "at": "/path", "optional": false, "rule": { "is": "equal", - "value": "all" + "value": "/fixture/object-tests/multipart/replaced.bin" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/range", + "optional": false, + "rule": { + "is": "matches", + "pattern": "bytes=0-[1-9][0-9]{2,}" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 200, + "status": 206, "headers": { - "content-type": "application/xml", + "content-range": "bytes 0-0/1", + "content-type": "binary/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-8ec031f3abfa\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + "etag": "\"fixture-8631a8b6edf7\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "MDAwMDAx5MDAwMDAy6" - }, - "framing": "chunked" + "encoding": "base64", + "data": "Yg==" + } } } ] @@ -73169,68 +109072,62 @@ } }, { - "at": "/value/committed/0/id_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "MDAwMDAx" - } - }, - { - "at": "/value/committed/0/size", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": 5 + "value": "\"fixture-8631a8b6edf7\"" } }, { - "at": "/value/committed/1/id_base64", + "at": "/value/size", "optional": false, "rule": { "is": "equal", - "value": "MDAwMDAy" + "value": 1 } }, { - "at": "/value/committed/1/size", + "at": "/value/content_type", "optional": false, "rule": { "is": "equal", - "value": 6 + "value": "binary/octet-stream" } }, { - "at": "/value/committed", - "optional": false, + "at": "/value/version", + "optional": true, "rule": { - "is": "array_length", - "value": 2 + "is": "one_of", + "values": [ + null, + "" + ] } }, { - "at": "/value/uncommitted", + "at": "/value/body_base64", "optional": false, "rule": { - "is": "array_length", - "value": 0 + "is": "equal", + "value": "Yg==" } } ], "refusal": null }, { - "id": "operations/azure-hns/staged-after-replacement", - "profile": "azure-hns", + "id": "operations/s3/get-single-part", + "profile": "s3", "lane": "core", - "purpose": "staged after replacement", + "purpose": "get single part", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/multipart/replaced.bin", - "kind": "all", - "op": "azure.list_blocks" + "key": "object-tests/multipart/single.bin", + "op": "get" }, "exchanges": [ { @@ -73250,7 +109147,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/replaced.bin" + "value": "/fixture/object-tests/multipart/single.bin" } }, { @@ -73260,42 +109157,82 @@ "is": "equal", "value": "" } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "binary/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-69ebdafc497f\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, + "body": { + "encoding": "base64", + "data": "b25seQ==" + } + } + }, + { + "request": [ { - "at": "/query/comp", + "at": "/method", "optional": false, "rule": { "is": "equal", - "value": "blocklist" + "value": "GET" } }, { - "at": "/query/blocklisttype", + "at": "/path", "optional": false, "rule": { "is": "equal", - "value": "all" + "value": "/fixture/object-tests/multipart/single.bin" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/range", + "optional": false, + "rule": { + "is": "matches", + "pattern": "bytes=0-[1-9][0-9]{2,}" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 200, + "status": 206, "headers": { - "content-type": "application/xml", + "content-range": "bytes 0-3/4", + "content-type": "binary/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-9c5e55ff559c\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + "etag": "\"fixture-69ebdafc497f\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "MDAwMDAx5" - }, - "framing": "chunked" + "encoding": "base64", + "data": "b25seQ==" + } } } ] @@ -73311,52 +109248,65 @@ } }, { - "at": "/value/committed/0/id_base64", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": "MDAwMDAx" + "value": "\"fixture-69ebdafc497f\"" } }, { - "at": "/value/committed/0/size", + "at": "/value/size", "optional": false, "rule": { "is": "equal", - "value": 5 + "value": 4 } }, { - "at": "/value/committed", + "at": "/value/content_type", "optional": false, "rule": { - "is": "array_length", - "value": 1 + "is": "equal", + "value": "binary/octet-stream" } }, { - "at": "/value/uncommitted", + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/body_base64", "optional": false, "rule": { - "is": "array_length", - "value": 0 + "is": "equal", + "value": "b25seQ==" } } ], "refusal": null }, { - "id": "operations/azure-hns/staged-after-whole-write", - "profile": "azure-hns", + "id": "operations/s3/get-suffix-longer-than-object", + "profile": "s3", "lane": "core", - "purpose": "staged after whole write", + "purpose": "get suffix longer than object", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/multipart/whole.bin", - "kind": "all", - "op": "azure.list_blocks" + "key": "object-tests/read/object.txt", + "op": "get", + "range": { + "suffix": 100 + } }, "exchanges": [ { @@ -73376,7 +109326,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/whole.bin" + "value": "/fixture/object-tests/read/object.txt" } }, { @@ -73388,105 +109338,43 @@ } }, { - "at": "/query/comp", - "optional": false, - "rule": { - "is": "equal", - "value": "blocklist" - } - }, - { - "at": "/query/blocklisttype", + "at": "/headers/range", "optional": false, "rule": { "is": "equal", - "value": "all" + "value": "bytes=-100" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 200, + "status": 206, "headers": { - "content-type": "application/xml", + "content-range": "bytes 0-29/30", + "content-type": "binary/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-09c6ba50f443\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + "etag": "\"fixture-ad03f2ab332a\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "" - }, - "framing": "chunked" + "encoding": "base64", + "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + } } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/committed", - "optional": false, - "rule": { - "is": "array_length", - "value": 0 - } - }, - { - "at": "/value/uncommitted", - "optional": false, - "rule": { - "is": "array_length", - "value": 0 - } - } - ], - "refusal": null - }, - { - "id": "operations/azure-hns/staged-committed-empty", - "profile": "azure-hns", - "lane": "core", - "purpose": "staged committed empty", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "key": "object-tests/multipart/staged.bin", - "kind": "committed", - "op": "azure.list_blocks" - }, - "exchanges": [ - { - "alternatives": [ + }, { "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, { "at": "/path", "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/staged.bin" + "value": "/fixture/object-tests/read/object.txt" } }, { @@ -73498,39 +109386,111 @@ } }, { - "at": "/query/comp", + "at": "/headers/range", "optional": false, "rule": { "is": "equal", - "value": "blocklist" + "value": "bytes=-100" } }, { - "at": "/query/blocklisttype", + "at": "/method", "optional": false, "rule": { "is": "equal", - "value": "committed" + "value": "HEAD" } } ], - "allow_headers": [], + "then": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/read/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/range", + "optional": false, + "rule": { + "is": "equal", + "value": "bytes=0-29" + } + }, + { + "at": "/headers/if-match", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-ad03f2ab332a\"" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 206, + "headers": { + "content-range": "bytes 0-29/30", + "content-type": "binary/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-ad03f2ab332a\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "base64", + "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + } + } + } + ] + } + ], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 200, + "status": 206, "headers": { - "content-type": "application/xml", + "content-length": "30", + "content-range": "bytes 0-29/30", + "content-type": "binary/octet-stream", "date": { "from": "now" }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + "etag": "\"fixture-ad03f2ab332a\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "" - }, - "framing": "chunked" + "encoding": "empty" + } } } ] @@ -73546,36 +109506,65 @@ } }, { - "at": "/value/committed", + "at": "/value/etag", "optional": false, "rule": { - "is": "array_length", - "value": 0 + "is": "equal", + "value": "\"fixture-ad03f2ab332a\"" } }, { - "at": "/value/uncommitted", + "at": "/value/size", "optional": false, "rule": { - "is": "array_length", - "value": 0 + "is": "equal", + "value": 30 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "binary/octet-stream" + } + }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" } } ], "refusal": null }, { - "id": "operations/azure-hns/staged-committed-nothing", - "profile": "azure-hns", + "id": "operations/s3/get-suffix", + "profile": "s3", "lane": "core", - "purpose": "staged committed nothing", + "purpose": "get suffix", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/multipart/empty.bin", - "kind": "all", - "op": "azure.list_blocks" + "key": "object-tests/read/object.txt", + "op": "get", + "range": { + "suffix": 6 + } }, "exchanges": [ { @@ -73595,7 +109584,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/empty.bin" + "value": "/fixture/object-tests/read/object.txt" } }, { @@ -73607,40 +109596,159 @@ } }, { - "at": "/query/comp", + "at": "/headers/range", "optional": false, "rule": { "is": "equal", - "value": "blocklist" + "value": "bytes=-6" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 206, + "headers": { + "content-range": "bytes 24-29/30", + "content-type": "binary/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-ad03f2ab332a\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "base64", + "data": "b2JqZWN0" + } + } + }, + { + "request": [ + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/read/object.txt" } }, { - "at": "/query/blocklisttype", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "all" + "value": "" + } + }, + { + "at": "/headers/range", + "optional": false, + "rule": { + "is": "equal", + "value": "bytes=-6" + } + }, + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "HEAD" } } ], - "allow_headers": [], + "then": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/read/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/range", + "optional": false, + "rule": { + "is": "equal", + "value": "bytes=24-29" + } + }, + { + "at": "/headers/if-match", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-ad03f2ab332a\"" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 206, + "headers": { + "content-range": "bytes 24-29/30", + "content-type": "binary/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-ad03f2ab332a\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "base64", + "data": "b2JqZWN0" + } + } + } + ] + } + ], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 200, + "status": 206, "headers": { - "content-type": "application/xml", + "content-length": "6", + "content-range": "bytes 24-29/30", + "content-type": "binary/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-072bed78cc6a\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + "etag": "\"fixture-ad03f2ab332a\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "" - }, - "framing": "chunked" + "encoding": "empty" + } } } ] @@ -73656,36 +109764,62 @@ } }, { - "at": "/value/committed", + "at": "/value/etag", "optional": false, "rule": { - "is": "array_length", - "value": 0 + "is": "equal", + "value": "\"fixture-ad03f2ab332a\"" } }, { - "at": "/value/uncommitted", + "at": "/value/size", "optional": false, "rule": { - "is": "array_length", - "value": 0 + "is": "equal", + "value": 6 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "binary/octet-stream" + } + }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "b2JqZWN0" } } ], "refusal": null }, { - "id": "operations/azure-hns/staged-escaped-id", - "profile": "azure-hns", + "id": "operations/s3/get-unauthenticated", + "profile": "s3", "lane": "core", - "purpose": "staged escaped id", + "purpose": "Report the service authorization error for this operation; signature acceptance is tested separately.", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/multipart/escaped.bin", - "kind": "all", - "op": "azure.list_blocks" + "key": "object-tests/read/object.txt", + "op": "get" }, "exchanges": [ { @@ -73705,7 +109839,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/escaped.bin" + "value": "/fixture/object-tests/read/object.txt" } }, { @@ -73715,39 +109849,77 @@ "is": "equal", "value": "" } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 403, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + } }, + "body": { + "encoding": "utf8", + "data": "\nInvalidAccessKeyIdFixture error" + }, + "framing": "chunked" + } + }, + { + "request": [ { - "at": "/query/comp", + "at": "/method", "optional": false, "rule": { "is": "equal", - "value": "blocklist" + "value": "GET" } }, { - "at": "/query/blocklisttype", + "at": "/path", "optional": false, "rule": { "is": "equal", - "value": "all" + "value": "/fixture/object-tests/read/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/range", + "optional": false, + "rule": { + "is": "matches", + "pattern": "bytes=0-[1-9][0-9]{2,}" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 200, + "status": 403, "headers": { "content-type": "application/xml", "date": { "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { "encoding": "utf8", - "data": "+/8=3" + "data": "\nInvalidAccessKeyIdFixture error" }, "framing": "chunked" } @@ -73761,56 +109933,39 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/committed", - "optional": false, - "rule": { - "is": "array_length", - "value": 0 + "value": "error" } }, { - "at": "/value/uncommitted/0/id_base64", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "+/8=" + "value": 403 } }, { - "at": "/value/uncommitted/0/size", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": 3 - } - }, - { - "at": "/value/uncommitted", - "optional": false, - "rule": { - "is": "array_length", - "value": 1 + "value": "InvalidAccessKeyId" } } ], "refusal": null }, { - "id": "operations/azure-hns/staged-replacement", - "profile": "azure-hns", + "id": "operations/s3/get-whole", + "profile": "s3", "lane": "core", - "purpose": "staged replacement", + "purpose": "get whole", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/multipart/pending.bin", - "kind": "all", - "op": "azure.list_blocks" + "key": "object-tests/read/object.txt", + "op": "get" }, "exchanges": [ { @@ -73830,7 +109985,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/pending.bin" + "value": "/fixture/object-tests/read/object.txt" } }, { @@ -73840,42 +109995,82 @@ "is": "equal", "value": "" } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "binary/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-ad03f2ab332a\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "base64", + "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + } + } + }, + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } }, { - "at": "/query/comp", + "at": "/path", "optional": false, "rule": { "is": "equal", - "value": "blocklist" + "value": "/fixture/object-tests/read/object.txt" } }, { - "at": "/query/blocklisttype", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "all" + "value": "" + } + }, + { + "at": "/headers/range", + "optional": false, + "rule": { + "is": "matches", + "pattern": "bytes=0-[1-9][0-9]{2,}" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 200, + "status": 206, "headers": { - "content-type": "application/xml", + "content-range": "bytes 0-29/30", + "content-type": "binary/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-ce92c4d48b08\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + "etag": "\"fixture-ad03f2ab332a\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "MDAwMDAx5MDAwMDAy6MDAwMDAx5" - }, - "framing": "chunked" + "encoding": "base64", + "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + } } } ] @@ -73891,84 +110086,62 @@ } }, { - "at": "/value/committed/0/id_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "MDAwMDAx" - } - }, - { - "at": "/value/committed/0/size", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": 5 + "value": "\"fixture-ad03f2ab332a\"" } }, { - "at": "/value/committed/1/id_base64", + "at": "/value/size", "optional": false, "rule": { "is": "equal", - "value": "MDAwMDAy" + "value": 30 } }, { - "at": "/value/committed/1/size", + "at": "/value/content_type", "optional": false, "rule": { "is": "equal", - "value": 6 - } - }, - { - "at": "/value/committed", - "optional": false, - "rule": { - "is": "array_length", - "value": 2 + "value": "binary/octet-stream" } }, { - "at": "/value/uncommitted/0/id_base64", - "optional": false, + "at": "/value/version", + "optional": true, "rule": { - "is": "equal", - "value": "MDAwMDAx" + "is": "one_of", + "values": [ + null, + "" + ] } }, { - "at": "/value/uncommitted/0/size", + "at": "/value/body_base64", "optional": false, "rule": { "is": "equal", - "value": 5 - } - }, - { - "at": "/value/uncommitted", - "optional": false, - "rule": { - "is": "array_length", - "value": 1 + "value": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" } } ], "refusal": null }, { - "id": "operations/azure-hns/staged-uncommitted-only", - "profile": "azure-hns", + "id": "operations/s3/get-xml-looking", + "profile": "s3", "lane": "core", - "purpose": "staged uncommitted only", + "purpose": "get xml looking", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html" ], "call": { - "key": "object-tests/multipart/staged.bin", - "kind": "all", - "op": "azure.list_blocks" + "key": "object", + "op": "get" }, "exchanges": [ { @@ -73988,7 +110161,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/staged.bin" + "value": "/fixture/object" } }, { @@ -74000,39 +110173,102 @@ } }, { - "at": "/query/comp", + "at": "/headers/content-type", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + "application/xml", + "application/octet-stream", + "binary/octet-stream" + ] + } + } + ], + "allow_headers": [], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-amz-request-id": "fixture-request-id" + }, + "body": { + "encoding": "base64", + "data": "PEVycm9yPnN0aWxsIG9iamVjdCBieXRlczwvRXJyb3I+" + } + } + }, + { + "request": [ + { + "at": "/method", "optional": false, "rule": { "is": "equal", - "value": "blocklist" + "value": "GET" } }, { - "at": "/query/blocklisttype", + "at": "/path", "optional": false, "rule": { "is": "equal", - "value": "all" + "value": "/fixture/object" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/content-type", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + "application/xml", + "application/octet-stream", + "binary/octet-stream" + ] + } + }, + { + "at": "/headers/range", + "optional": false, + "rule": { + "is": "matches", + "pattern": "bytes=0-[1-9][0-9]{2,}" } } ], "allow_headers": [], "allow_query": [], "response": { - "status": 200, + "status": 206, "headers": { - "content-type": "application/xml", + "content-range": "bytes 0-32/33", + "content-type": "application/octet-stream", "date": { "from": "now" }, + "etag": "\"fixture-etag\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + "x-amz-request-id": "fixture-request-id" }, "body": { - "encoding": "utf8", - "data": "MDAwMDAx5MDAwMDAy6" - }, - "framing": "chunked" + "encoding": "base64", + "data": "PEVycm9yPnN0aWxsIG9iamVjdCBieXRlczwvRXJyb3I+" + } } } ] @@ -74048,68 +110284,28 @@ } }, { - "at": "/value/committed", - "optional": false, - "rule": { - "is": "array_length", - "value": 0 - } - }, - { - "at": "/value/uncommitted/0/id_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "MDAwMDAx" - } - }, - { - "at": "/value/uncommitted/0/size", - "optional": false, - "rule": { - "is": "equal", - "value": 5 - } - }, - { - "at": "/value/uncommitted/1/id_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "MDAwMDAy" - } - }, - { - "at": "/value/uncommitted/1/size", + "at": "/value/body_base64", "optional": false, "rule": { "is": "equal", - "value": 6 - } - }, - { - "at": "/value/uncommitted", - "optional": false, - "rule": { - "is": "array_length", - "value": 2 + "value": "PEVycm9yPnN0aWxsIG9iamVjdCBieXRlczwvRXJyb3I+" } } ], "refusal": null }, { - "id": "operations/azure-hns/staged-uncommitted", - "profile": "azure-hns", + "id": "operations/s3/get-noise-tolerance", + "profile": "s3", "lane": "core", - "purpose": "staged uncommitted", + "purpose": "get noise tolerance", "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html" ], + "origin": "constructed", "call": { - "key": "object-tests/multipart/staged.bin", - "kind": "uncommitted", - "op": "azure.list_blocks" + "key": "object", + "op": "get" }, "exchanges": [ { @@ -74129,7 +110325,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/staged.bin" + "value": "/fixture/object" } }, { @@ -74141,19 +110337,15 @@ } }, { - "at": "/query/comp", - "optional": false, - "rule": { - "is": "equal", - "value": "blocklist" - } - }, - { - "at": "/query/blocklisttype", - "optional": false, + "at": "/headers/content-type", + "optional": true, "rule": { - "is": "equal", - "value": "uncommitted" + "is": "one_of", + "values": [ + "application/xml", + "application/octet-stream", + "binary/octet-stream" + ] } } ], @@ -74162,99 +110354,21 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", + "content-type": "application/octet-stream", "date": { "from": "now" }, + "etag": "\"a-different-etag\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-ms-creation-time": "Mon, 01 Jan 2024 00:00:00 GMT" + "x-amz-request-id": "another-id", + "x-fixture-unknown": "ignored" }, "body": { - "encoding": "utf8", - "data": "MDAwMDAx5MDAwMDAy6" - }, - "framing": "chunked" + "encoding": "base64", + "data": "aGVsbG8=" + } } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/committed", - "optional": false, - "rule": { - "is": "array_length", - "value": 0 - } - }, - { - "at": "/value/uncommitted/0/id_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "MDAwMDAx" - } - }, - { - "at": "/value/uncommitted/0/size", - "optional": false, - "rule": { - "is": "equal", - "value": 5 - } - }, - { - "at": "/value/uncommitted/1/id_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "MDAwMDAy" - } - }, - { - "at": "/value/uncommitted/1/size", - "optional": false, - "rule": { - "is": "equal", - "value": 6 - } - }, - { - "at": "/value/uncommitted", - "optional": false, - "rule": { - "is": "array_length", - "value": 2 - } - } - ], - "refusal": null - }, - { - "id": "operations/s3/abort-after-commit", - "profile": "s3", - "lane": "core", - "purpose": "abort after commit", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "key": "object-tests/multipart/object.bin", - "op": "s3.abort_multipart", - "upload_id": "fixture-upload+/276ca18046f9=" - }, - "exchanges": [ - { - "alternatives": [ + }, { "request": [ { @@ -74262,7 +110376,7 @@ "optional": false, "rule": { "is": "equal", - "value": "DELETE" + "value": "GET" } }, { @@ -74270,7 +110384,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/object.bin" + "value": "/fixture/object" } }, { @@ -74282,29 +110396,44 @@ } }, { - "at": "/query/uploadId", + "at": "/headers/content-type", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + "application/xml", + "application/octet-stream", + "binary/octet-stream" + ] + } + }, + { + "at": "/headers/range", "optional": false, "rule": { - "is": "equal", - "value": "fixture-upload+/276ca18046f9=" + "is": "matches", + "pattern": "bytes=0-[1-9][0-9]{2,}" } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 204, + "status": 206, "headers": { + "content-range": "bytes 0-4/5", + "content-type": "application/octet-stream", "date": { "from": "now" }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + "etag": "\"a-different-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-amz-request-id": "another-id", + "x-fixture-unknown": "ignored" }, "body": { "encoding": "base64", - "data": "" + "data": "aGVsbG8=" } } } @@ -74319,22 +110448,30 @@ "is": "equal", "value": "ok" } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "aGVsbG8=" + } } ], "refusal": null }, { - "id": "operations/s3/abort-unknown-upload", + "id": "operations/s3/get-version", "profile": "s3", "lane": "core", - "purpose": "abort unknown upload", + "purpose": "get version", "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html" ], "call": { - "key": "object-tests/multipart/object.bin", - "op": "s3.abort_multipart", - "upload_id": "fixture-upload+/4d0d5ccc4993=" + "key": "object", + "op": "get", + "version": "opaque+/version=" }, "exchanges": [ { @@ -74346,7 +110483,7 @@ "optional": false, "rule": { "is": "equal", - "value": "DELETE" + "value": "GET" } }, { @@ -74354,7 +110491,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/object.bin" + "value": "/fixture/object" } }, { @@ -74366,80 +110503,46 @@ } }, { - "at": "/query/uploadId", + "at": "/query/versionId", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/4d0d5ccc4993=" + "value": "opaque+/version=" + } + }, + { + "at": "/headers/content-type", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + "application/xml", + "application/octet-stream", + "binary/octet-stream" + ] } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 404, + "status": 200, "headers": { - "content-type": "application/xml", + "content-type": "application/octet-stream", "date": { "from": "now" - } + }, + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-amz-request-id": "fixture-request-id", + "x-amz-version-id": "opaque+/version=" }, "body": { - "encoding": "utf8", - "data": "\nNoSuchUploadFixture error" - }, - "framing": "chunked" + "encoding": "base64", + "data": "aGVsbG8=" + } } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 404 - } - }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "equal", - "value": "NoSuchUpload" - } - } - ], - "refusal": null - }, - { - "id": "operations/s3/abort", - "profile": "s3", - "lane": "core", - "purpose": "abort", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "key": "object-tests/multipart/aborted.bin", - "op": "s3.abort_multipart", - "upload_id": "fixture-upload+/f85cf0cd3a3f=" - }, - "exchanges": [ - { - "alternatives": [ + }, { "request": [ { @@ -74447,7 +110550,7 @@ "optional": false, "rule": { "is": "equal", - "value": "DELETE" + "value": "GET" } }, { @@ -74455,7 +110558,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/aborted.bin" + "value": "/fixture/object" } }, { @@ -74467,29 +110570,52 @@ } }, { - "at": "/query/uploadId", + "at": "/query/versionId", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/f85cf0cd3a3f=" + "value": "opaque+/version=" + } + }, + { + "at": "/headers/content-type", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + "application/xml", + "application/octet-stream", + "binary/octet-stream" + ] + } + }, + { + "at": "/headers/range", + "optional": false, + "rule": { + "is": "matches", + "pattern": "bytes=0-[1-9][0-9]{2,}" } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 204, + "status": 206, "headers": { + "content-range": "bytes 0-4/5", + "content-type": "application/octet-stream", "date": { "from": "now" }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-amz-request-id": "fixture-request-id", + "x-amz-version-id": "opaque+/version=" }, "body": { "encoding": "base64", - "data": "" + "data": "aGVsbG8=" } } } @@ -74504,28 +110630,38 @@ "is": "equal", "value": "ok" } + }, + { + "at": "/value/version", + "optional": false, + "rule": { + "is": "equal", + "value": "opaque+/version=" + } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "aGVsbG8=" + } } ], "refusal": null }, { - "id": "operations/s3/commit-after-abort", + "id": "operations/s3/get-temporary-redirect", "profile": "s3", "lane": "core", - "purpose": "commit after abort", + "purpose": "Report a 307 TemporaryRedirect as an error", "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + "https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html" ], + "origin": "transient", "call": { - "key": "object-tests/multipart/aborted.bin", - "op": "s3.complete_multipart", - "parts": [ - { - "etag": "\"fixture-db71b2c0257c\"", - "number": 1 - } - ], - "upload_id": "fixture-upload+/f85cf0cd3a3f=" + "key": "object-tests/read/object.txt", + "op": "get" }, "exchanges": [ { @@ -74537,7 +110673,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "GET" } }, { @@ -74545,23 +110681,15 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/aborted.bin" - } - }, - { - "at": "/body_text", - "optional": false, - "rule": { - "is": "xml", - "value": "1\"fixture-db71b2c0257c\"" + "value": "/fixture/object-tests/read/object.txt" } }, { - "at": "/query/uploadId", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/f85cf0cd3a3f=" + "value": "" } } ], @@ -74570,16 +110698,17 @@ ], "allow_query": [], "response": { - "status": 404, + "status": 307, "headers": { "content-type": "application/xml", "date": { "from": "now" - } + }, + "location": "https://fixture.s3.eu-central-1.amazonaws.com/object-tests/read/object.txt" }, "body": { "encoding": "utf8", - "data": "\nNoSuchUploadFixture error" + "data": "\nTemporaryRedirectPlease re-send this request to the specified temporary endpoint. Continue to use the original request endpoint for future requests.fixture.s3.eu-central-1.amazonaws.comfixturefixture" }, "framing": "chunked" } @@ -74591,7 +110720,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "GET" } }, { @@ -74599,23 +110728,23 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/aborted.bin" + "value": "/fixture/object-tests/read/object.txt" } }, { - "at": "/body_text", + "at": "/body_base64", "optional": false, "rule": { - "is": "xml", - "value": "\"fixture-db71b2c0257c\"1" + "is": "equal", + "value": "" } }, { - "at": "/query/uploadId", + "at": "/headers/range", "optional": false, "rule": { - "is": "equal", - "value": "fixture-upload+/f85cf0cd3a3f=" + "is": "matches", + "pattern": "bytes=0-[1-9][0-9]{2,}" } } ], @@ -74624,16 +110753,17 @@ ], "allow_query": [], "response": { - "status": 404, + "status": 307, "headers": { "content-type": "application/xml", "date": { "from": "now" - } + }, + "location": "https://fixture.s3.eu-central-1.amazonaws.com/object-tests/read/object.txt" }, "body": { "encoding": "utf8", - "data": "\nNoSuchUploadFixture error" + "data": "\nTemporaryRedirectPlease re-send this request to the specified temporary endpoint. Continue to use the original request endpoint for future requests.fixture.s3.eu-central-1.amazonaws.comfixturefixture" }, "framing": "chunked" } @@ -74655,7 +110785,7 @@ "optional": false, "rule": { "is": "equal", - "value": 404 + "value": 307 } }, { @@ -74663,31 +110793,23 @@ "optional": false, "rule": { "is": "equal", - "value": "NoSuchUpload" + "value": "TemporaryRedirect" } } ], "refusal": null }, { - "id": "operations/s3/commit-lost-the-race-to-create", + "id": "operations/s3/get-wrong-region", "profile": "s3", "lane": "core", - "purpose": "commit lost the race to create", + "purpose": "Report a 301 PermanentRedirect from an endpoint in another region as an error", "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + "https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html" ], "call": { - "if_none_match": "*", - "key": "object-tests/multipart/guarded.bin", - "op": "s3.complete_multipart", - "parts": [ - { - "etag": "\"fixture-cd3c4834c1cd\"", - "number": 1 - } - ], - "upload_id": "fixture-upload+/9cd6f716dbf9=" + "key": "object-tests/read/object.txt", + "op": "get" }, "exchanges": [ { @@ -74699,7 +110821,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "GET" } }, { @@ -74707,31 +110829,15 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/guarded.bin" - } - }, - { - "at": "/body_text", - "optional": false, - "rule": { - "is": "xml", - "value": "1\"fixture-cd3c4834c1cd\"" - } - }, - { - "at": "/headers/if-none-match", - "optional": false, - "rule": { - "is": "equal", - "value": "*" + "value": "/fixture/object-tests/read/object.txt" } }, { - "at": "/query/uploadId", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/9cd6f716dbf9=" + "value": "" } } ], @@ -74740,16 +110846,17 @@ ], "allow_query": [], "response": { - "status": 412, + "status": 301, "headers": { "content-type": "application/xml", "date": { "from": "now" - } + }, + "x-amz-bucket-region": "eu-central-1" }, "body": { "encoding": "utf8", - "data": "\nPreconditionFailedFixture error" + "data": "\nPermanentRedirectThe bucket you are attempting to access must be addressed using the specified endpoint. Please send all future requests to this endpoint.fixture.s3.eu-central-1.amazonaws.comfixturefixture" }, "framing": "chunked" } @@ -74761,7 +110868,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "GET" } }, { @@ -74769,31 +110876,23 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/guarded.bin" - } - }, - { - "at": "/body_text", - "optional": false, - "rule": { - "is": "xml", - "value": "\"fixture-cd3c4834c1cd\"1" + "value": "/fixture/object-tests/read/object.txt" } }, { - "at": "/headers/if-none-match", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "*" + "value": "" } }, { - "at": "/query/uploadId", + "at": "/headers/range", "optional": false, "rule": { - "is": "equal", - "value": "fixture-upload+/9cd6f716dbf9=" + "is": "matches", + "pattern": "bytes=0-[1-9][0-9]{2,}" } } ], @@ -74802,16 +110901,17 @@ ], "allow_query": [], "response": { - "status": 412, + "status": 301, "headers": { "content-type": "application/xml", "date": { "from": "now" - } + }, + "x-amz-bucket-region": "eu-central-1" }, "body": { "encoding": "utf8", - "data": "\nPreconditionFailedFixture error" + "data": "\nPermanentRedirectThe bucket you are attempting to access must be addressed using the specified endpoint. Please send all future requests to this endpoint.fixture.s3.eu-central-1.amazonaws.comfixturefixture" }, "framing": "chunked" } @@ -74833,7 +110933,7 @@ "optional": false, "rule": { "is": "equal", - "value": 412 + "value": 301 } }, { @@ -74841,32 +110941,25 @@ "optional": false, "rule": { "is": "equal", - "value": "PreconditionFailed" + "value": "PermanentRedirect" } } ], "refusal": null }, { - "id": "operations/s3/commit-conditional-conflict", + "id": "operations/s3/get-body-cut-short", "profile": "s3", "lane": "core", - "purpose": "Report a 409 ConditionalRequestConflict to a conditional completion as an error, without sending the completion again: AWS advises a new upload with every part staged again", + "purpose": "Report a body that ends before its Content-Length as an error, or resume it, but never return the short body", "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + "https://www.rfc-editor.org/rfc/rfc9112#section-8", + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_client.cpp" ], "origin": "transient", "call": { - "if_none_match": "*", - "key": "object-tests/multipart/guarded.bin", - "op": "s3.complete_multipart", - "parts": [ - { - "etag": "\"fixture-cd3c4834c1cd\"", - "number": 1 - } - ], - "upload_id": "fixture-upload+/9cd6f716dbf9=" + "key": "object-tests/read/object.txt", + "op": "get" }, "exchanges": [ { @@ -74878,7 +110971,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "GET" } }, { @@ -74886,31 +110979,15 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/guarded.bin" - } - }, - { - "at": "/body_text", - "optional": false, - "rule": { - "is": "xml", - "value": "1\"fixture-cd3c4834c1cd\"" - } - }, - { - "at": "/headers/if-none-match", - "optional": false, - "rule": { - "is": "equal", - "value": "*" + "value": "/fixture/object-tests/read/object.txt" } }, { - "at": "/query/uploadId", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/9cd6f716dbf9=" + "value": "" } } ], @@ -74919,18 +110996,20 @@ ], "allow_query": [], "response": { - "status": 409, + "status": 200, "headers": { - "content-type": "application/xml", + "content-type": "binary/octet-stream", "date": { "from": "now" - } + }, + "etag": "\"fixture-ad03f2ab332a\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nConditionalRequestConflictA conflicting operation occurred. If using PutObject you can retry the request. If using multipart upload you should initiate another CreateMultipartUpload request and re-upload each part.fixturefixture" + "encoding": "base64", + "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" }, - "framing": "chunked" + "truncate_body_after": 15 } }, { @@ -74940,7 +111019,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "GET" } }, { @@ -74948,31 +111027,23 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/guarded.bin" - } - }, - { - "at": "/body_text", - "optional": false, - "rule": { - "is": "xml", - "value": "\"fixture-cd3c4834c1cd\"1" + "value": "/fixture/object-tests/read/object.txt" } }, { - "at": "/headers/if-none-match", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "*" + "value": "" } }, { - "at": "/query/uploadId", + "at": "/headers/range", "optional": false, "rule": { - "is": "equal", - "value": "fixture-upload+/9cd6f716dbf9=" + "is": "matches", + "pattern": "bytes=0-[1-9][0-9]{2,}" } } ], @@ -74981,66 +111052,25 @@ ], "allow_query": [], "response": { - "status": 409, + "status": 206, "headers": { - "content-type": "application/xml", + "content-range": "bytes 0-29/30", + "content-type": "binary/octet-stream", "date": { "from": "now" - } + }, + "etag": "\"fixture-ad03f2ab332a\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nConditionalRequestConflictA conflicting operation occurred. If using PutObject you can retry the request. If using multipart upload you should initiate another CreateMultipartUpload request and re-upload each part.fixturefixture" + "encoding": "base64", + "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" }, - "framing": "chunked" + "truncate_body_after": 15 } } ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 409 - } }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "equal", - "value": "ConditionalRequestConflict" - } - } - ], - "refusal": null - }, - { - "id": "operations/s3/commit-nothing", - "profile": "s3", - "lane": "core", - "purpose": "commit nothing", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "key": "object-tests/multipart/guarded.bin", - "op": "s3.complete_multipart", - "parts": [], - "upload_id": "fixture-upload+/9cd6f716dbf9=" - }, - "exchanges": [ { "alternatives": [ { @@ -75050,7 +111080,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "GET" } }, { @@ -75058,43 +111088,37 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/guarded.bin" - } - }, - { - "at": "/body_text", - "optional": false, - "rule": { - "is": "xml", - "value": "" + "value": "/fixture/object-tests/read/object.txt" } }, { - "at": "/query/uploadId", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/9cd6f716dbf9=" + "value": "" } } ], "allow_headers": [ + "content-type", "content-type" ], "allow_query": [], "response": { - "status": 400, + "status": 200, "headers": { - "content-type": "application/xml", + "content-type": "binary/octet-stream", "date": { "from": "now" - } + }, + "etag": "\"fixture-ad03f2ab332a\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nMalformedXMLFixture error" - }, - "framing": "chunked" + "encoding": "base64", + "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + } } }, { @@ -75104,7 +111128,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "GET" } }, { @@ -75112,43 +111136,46 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/guarded.bin" + "value": "/fixture/object-tests/read/object.txt" } }, { - "at": "/body_text", + "at": "/body_base64", "optional": false, "rule": { - "is": "xml", - "value": "" + "is": "equal", + "value": "" } }, { - "at": "/query/uploadId", + "at": "/headers/range", "optional": false, "rule": { - "is": "equal", - "value": "fixture-upload+/9cd6f716dbf9=" + "is": "matches", + "pattern": "bytes=0-[1-9][0-9]{2,}" } } ], "allow_headers": [ + "content-type", "content-type" ], "allow_query": [], "response": { - "status": 400, + "status": 206, "headers": { - "content-type": "application/xml", + "content-range": "bytes 0-29/30", + "content-type": "binary/octet-stream", "date": { "from": "now" - } + }, + "etag": "\"fixture-ad03f2ab332a\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nMalformedXMLFixture error" - }, - "framing": "chunked" + "encoding": "base64", + "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + } } }, { @@ -75158,7 +111185,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "GET" } }, { @@ -75166,145 +111193,92 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/guarded.bin" + "value": "/fixture/object-tests/read/object.txt" } }, { - "at": "/query/uploadId", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/9cd6f716dbf9=" + "value": "" } }, { - "at": "/body_base64", + "at": "/headers/range", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "bytes=15-" + } + }, + { + "at": "/headers/if-match", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-ad03f2ab332a\"" } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 400, + "status": 206, "headers": { - "content-type": "application/xml", + "content-range": "bytes 15-29/30", + "content-type": "binary/octet-stream", "date": { "from": "now" - } + }, + "etag": "\"fixture-ad03f2ab332a\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nMalformedXMLFixture error" - }, - "framing": "chunked" + "encoding": "base64", + "data": "Y3QtdGVzdHMtb2JqZWN0" + } } } - ] + ], + "optional": true } ], "expect": [ { "at": "/outcome", "optional": false, - "rule": { - "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 400 - } - }, - { - "at": "/code", - "optional": false, "rule": { "is": "one_of", "values": [ - "MalformedXML", - "InvalidRequest" + "error", + "ok" ] } - } - ], - "refusal": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "refused" - } - }, - { - "at": "/kind", - "optional": false, - "rule": { - "is": "matches", - "pattern": ".+" - } - }, - { - "at": "/parameter", - "optional": false, - "rule": { - "is": "equal", - "value": "parts" - } }, { - "at": "/status", + "at": "/value/body_base64", "optional": true, "rule": { "is": "equal", - "value": 400 - } - }, - { - "at": "/code", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - "MalformedXML", - "InvalidRequest" - ] + "value": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" } } - ] + ], + "refusal": null }, { - "id": "operations/s3/commit-out-of-order", + "id": "operations/s3/get-slow-down", "profile": "s3", "lane": "core", - "purpose": "commit out of order", + "purpose": "Report a 503 SlowDown answer as an error, after at most 5 retries", "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + "https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html" ], + "origin": "transient", "call": { - "key": "object-tests/multipart/object.bin", - "op": "s3.complete_multipart", - "parts": [ - { - "etag": "\"fixture-32b70ae425ac\"", - "number": 2 - }, - { - "etag": "\"fixture-6d60d5bbaa47\"", - "number": 1 - } - ], - "upload_id": "fixture-upload+/276ca18046f9=" + "key": "object-tests/read/object.txt", + "op": "get" }, "exchanges": [ { @@ -75316,7 +111290,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "GET" } }, { @@ -75324,23 +111298,15 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/object.bin" - } - }, - { - "at": "/body_text", - "optional": false, - "rule": { - "is": "xml", - "value": "2\"fixture-32b70ae425ac\"1\"fixture-6d60d5bbaa47\"" + "value": "/fixture/object-tests/read/object.txt" } }, { - "at": "/query/uploadId", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/276ca18046f9=" + "value": "" } } ], @@ -75349,7 +111315,7 @@ ], "allow_query": [], "response": { - "status": 400, + "status": 503, "headers": { "content-type": "application/xml", "date": { @@ -75358,7 +111324,7 @@ }, "body": { "encoding": "utf8", - "data": "\nInvalidPartOrderFixture error" + "data": "\nSlowDownPlease reduce your request rate.fixture" }, "framing": "chunked" } @@ -75370,7 +111336,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "GET" } }, { @@ -75378,23 +111344,23 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/object.bin" + "value": "/fixture/object-tests/read/object.txt" } }, { - "at": "/body_text", + "at": "/body_base64", "optional": false, "rule": { - "is": "xml", - "value": "\"fixture-32b70ae425ac\"2\"fixture-6d60d5bbaa47\"1" + "is": "equal", + "value": "" } }, { - "at": "/query/uploadId", + "at": "/headers/range", "optional": false, "rule": { - "is": "equal", - "value": "fixture-upload+/276ca18046f9=" + "is": "matches", + "pattern": "bytes=0-[1-9][0-9]{2,}" } } ], @@ -75403,7 +111369,7 @@ ], "allow_query": [], "response": { - "status": 400, + "status": 503, "headers": { "content-type": "application/xml", "date": { @@ -75412,107 +111378,13 @@ }, "body": { "encoding": "utf8", - "data": "\nInvalidPartOrderFixture error" + "data": "\nSlowDownPlease reduce your request rate.fixture" }, "framing": "chunked" } } ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 400 - } - }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "equal", - "value": "InvalidPartOrder" - } - } - ], - "refusal": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "refused" - } - }, - { - "at": "/kind", - "optional": false, - "rule": { - "is": "matches", - "pattern": ".+" - } - }, - { - "at": "/parameter", - "optional": false, - "rule": { - "is": "equal", - "value": "parts" - } - }, - { - "at": "/status", - "optional": true, - "rule": { - "is": "equal", - "value": 400 - } }, - { - "at": "/code", - "optional": true, - "rule": { - "is": "equal", - "value": "InvalidPartOrder" - } - } - ] - }, - { - "id": "operations/s3/commit-part-too-small", - "profile": "s3", - "lane": "core", - "purpose": "commit part too small", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "key": "object-tests/multipart/small.bin", - "op": "s3.complete_multipart", - "parts": [ - { - "etag": "\"fixture-7bce379c0d8f\"", - "number": 1 - }, - { - "etag": "\"fixture-32b70ae425ac\"", - "number": 2 - } - ], - "upload_id": "fixture-upload+/cd2fdba21d3f=" - }, - "exchanges": [ { "alternatives": [ { @@ -75522,7 +111394,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "GET" } }, { @@ -75530,23 +111402,15 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/small.bin" - } - }, - { - "at": "/body_text", - "optional": false, - "rule": { - "is": "xml", - "value": "1\"fixture-7bce379c0d8f\"2\"fixture-32b70ae425ac\"" + "value": "/fixture/object-tests/read/object.txt" } }, { - "at": "/query/uploadId", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/cd2fdba21d3f=" + "value": "" } } ], @@ -75555,7 +111419,7 @@ ], "allow_query": [], "response": { - "status": 400, + "status": 503, "headers": { "content-type": "application/xml", "date": { @@ -75564,7 +111428,7 @@ }, "body": { "encoding": "utf8", - "data": "\nEntityTooSmallFixture error" + "data": "\nSlowDownPlease reduce your request rate.fixture" }, "framing": "chunked" } @@ -75576,7 +111440,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "GET" } }, { @@ -75584,23 +111448,23 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/small.bin" + "value": "/fixture/object-tests/read/object.txt" } }, { - "at": "/body_text", + "at": "/body_base64", "optional": false, "rule": { - "is": "xml", - "value": "\"fixture-7bce379c0d8f\"1\"fixture-32b70ae425ac\"2" + "is": "equal", + "value": "" } }, { - "at": "/query/uploadId", + "at": "/headers/range", "optional": false, "rule": { - "is": "equal", - "value": "fixture-upload+/cd2fdba21d3f=" + "is": "matches", + "pattern": "bytes=0-[1-9][0-9]{2,}" } } ], @@ -75609,7 +111473,7 @@ ], "allow_query": [], "response": { - "status": 400, + "status": 503, "headers": { "content-type": "application/xml", "date": { @@ -75618,63 +111482,14 @@ }, "body": { "encoding": "utf8", - "data": "\nEntityTooSmallFixture error" + "data": "\nSlowDownPlease reduce your request rate.fixture" }, "framing": "chunked" } } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 400 - } + ], + "optional": true }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "equal", - "value": "EntityTooSmall" - } - } - ], - "refusal": null - }, - { - "id": "operations/s3/commit-precondition-failed", - "profile": "s3", - "lane": "core", - "purpose": "commit precondition failed", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "if_match": "\"fixture-db71b2c0257c\"", - "key": "object-tests/multipart/guarded.bin", - "op": "s3.complete_multipart", - "parts": [ - { - "etag": "\"fixture-cd3c4834c1cd\"", - "number": 1 - } - ], - "upload_id": "fixture-upload+/9cd6f716dbf9=" - }, - "exchanges": [ { "alternatives": [ { @@ -75684,7 +111499,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "GET" } }, { @@ -75692,31 +111507,15 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/guarded.bin" - } - }, - { - "at": "/body_text", - "optional": false, - "rule": { - "is": "xml", - "value": "1\"fixture-cd3c4834c1cd\"" - } - }, - { - "at": "/headers/if-match", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-db71b2c0257c\"" + "value": "/fixture/object-tests/read/object.txt" } }, { - "at": "/query/uploadId", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/9cd6f716dbf9=" + "value": "" } } ], @@ -75725,7 +111524,7 @@ ], "allow_query": [], "response": { - "status": 412, + "status": 503, "headers": { "content-type": "application/xml", "date": { @@ -75734,7 +111533,7 @@ }, "body": { "encoding": "utf8", - "data": "\nPreconditionFailedFixture error" + "data": "\nSlowDownPlease reduce your request rate.fixture" }, "framing": "chunked" } @@ -75746,7 +111545,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "GET" } }, { @@ -75754,31 +111553,23 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/guarded.bin" - } - }, - { - "at": "/body_text", - "optional": false, - "rule": { - "is": "xml", - "value": "\"fixture-cd3c4834c1cd\"1" + "value": "/fixture/object-tests/read/object.txt" } }, { - "at": "/headers/if-match", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-db71b2c0257c\"" + "value": "" } }, { - "at": "/query/uploadId", + "at": "/headers/range", "optional": false, "rule": { - "is": "equal", - "value": "fixture-upload+/9cd6f716dbf9=" + "is": "matches", + "pattern": "bytes=0-[1-9][0-9]{2,}" } } ], @@ -75787,7 +111578,7 @@ ], "allow_query": [], "response": { - "status": 412, + "status": 503, "headers": { "content-type": "application/xml", "date": { @@ -75796,62 +111587,14 @@ }, "body": { "encoding": "utf8", - "data": "\nPreconditionFailedFixture error" + "data": "\nSlowDownPlease reduce your request rate.fixture" }, "framing": "chunked" } } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 412 - } + ], + "optional": true }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "equal", - "value": "PreconditionFailed" - } - } - ], - "refusal": null - }, - { - "id": "operations/s3/commit-single-small-part", - "profile": "s3", - "lane": "core", - "purpose": "commit single small part", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "key": "object-tests/multipart/single.bin", - "op": "s3.complete_multipart", - "parts": [ - { - "etag": "\"fixture-3841a4d594c0\"", - "number": 1 - } - ], - "upload_id": "fixture-upload+/2b2c71a6ce04=" - }, - "exchanges": [ { "alternatives": [ { @@ -75861,7 +111604,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "GET" } }, { @@ -75869,23 +111612,15 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/single.bin" - } - }, - { - "at": "/body_text", - "optional": false, - "rule": { - "is": "xml", - "value": "1\"fixture-3841a4d594c0\"" + "value": "/fixture/object-tests/read/object.txt" } }, { - "at": "/query/uploadId", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/2b2c71a6ce04=" + "value": "" } } ], @@ -75894,17 +111629,16 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 503, "headers": { "content-type": "application/xml", "date": { "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { "encoding": "utf8", - "data": "\nhttps://fixture.invalid/fixture/object-tests/multipart/single.binfixtureobject-tests/multipart/single.bin"fixture-69ebdafc497f"rzsmsrcRLcM=FULL_OBJECT" + "data": "\nSlowDownPlease reduce your request rate.fixture" }, "framing": "chunked" } @@ -75916,7 +111650,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "GET" } }, { @@ -75924,23 +111658,23 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/single.bin" + "value": "/fixture/object-tests/read/object.txt" } }, { - "at": "/body_text", + "at": "/body_base64", "optional": false, "rule": { - "is": "xml", - "value": "\"fixture-3841a4d594c0\"1" + "is": "equal", + "value": "" } }, { - "at": "/query/uploadId", + "at": "/headers/range", "optional": false, "rule": { - "is": "equal", - "value": "fixture-upload+/2b2c71a6ce04=" + "is": "matches", + "pattern": "bytes=0-[1-9][0-9]{2,}" } } ], @@ -75949,76 +111683,23 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 503, "headers": { "content-type": "application/xml", "date": { "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { "encoding": "utf8", - "data": "\nhttps://fixture.invalid/fixture/object-tests/multipart/single.binfixtureobject-tests/multipart/single.bin"fixture-69ebdafc497f"rzsmsrcRLcM=FULL_OBJECT" + "data": "\nSlowDownPlease reduce your request rate.fixture" }, "framing": "chunked" } } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-69ebdafc497f\"" - } + ], + "optional": true }, - { - "at": "/value/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - } - ], - "refusal": null - }, - { - "id": "operations/s3/commit-object-size-mismatch", - "profile": "s3", - "lane": "core", - "purpose": "Report S3's refusal of a completion whose parts do not add up to the object size stated in x-amz-mp-object-size", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "key": "object-tests/multipart/commit-object-size-mismatch.bin", - "object_size": 4, - "op": "s3.complete_multipart", - "parts": [ - { - "etag": "\"fixture-3841a4d594c0\"", - "number": 1 - } - ], - "upload_id": "fixture-upload+/2b2c71a6ce04=" - }, - "exchanges": [ { "alternatives": [ { @@ -76028,7 +111709,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "GET" } }, { @@ -76036,31 +111717,15 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/commit-object-size-mismatch.bin" - } - }, - { - "at": "/body_text", - "optional": false, - "rule": { - "is": "xml", - "value": "1\"fixture-3841a4d594c0\"" - } - }, - { - "at": "/query/uploadId", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-upload+/2b2c71a6ce04=" + "value": "/fixture/object-tests/read/object.txt" } }, { - "at": "/headers/x-amz-mp-object-size", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "4" + "value": "" } } ], @@ -76069,7 +111734,7 @@ ], "allow_query": [], "response": { - "status": 400, + "status": 503, "headers": { "content-type": "application/xml", "date": { @@ -76078,7 +111743,7 @@ }, "body": { "encoding": "utf8", - "data": "\nInvalidRequestThe provided x-amz-mp-object-size header value 4 does not match what was computed: 3fixturefixture" + "data": "\nSlowDownPlease reduce your request rate.fixture" }, "framing": "chunked" } @@ -76090,7 +111755,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "GET" } }, { @@ -76098,31 +111763,23 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/commit-object-size-mismatch.bin" - } - }, - { - "at": "/body_text", - "optional": false, - "rule": { - "is": "xml", - "value": "\"fixture-3841a4d594c0\"1" + "value": "/fixture/object-tests/read/object.txt" } }, { - "at": "/query/uploadId", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/2b2c71a6ce04=" + "value": "" } }, { - "at": "/headers/x-amz-mp-object-size", + "at": "/headers/range", "optional": false, "rule": { - "is": "equal", - "value": "4" + "is": "matches", + "pattern": "bytes=0-[1-9][0-9]{2,}" } } ], @@ -76131,7 +111788,7 @@ ], "allow_query": [], "response": { - "status": 400, + "status": 503, "headers": { "content-type": "application/xml", "date": { @@ -76140,63 +111797,14 @@ }, "body": { "encoding": "utf8", - "data": "\nInvalidRequestThe provided x-amz-mp-object-size header value 4 does not match what was computed: 3fixturefixture" + "data": "\nSlowDownPlease reduce your request rate.fixture" }, "framing": "chunked" } } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 400 - } + ], + "optional": true }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "equal", - "value": "InvalidRequest" - } - } - ], - "refusal": null - }, - { - "id": "operations/s3/commit-object-size", - "profile": "s3", - "lane": "core", - "purpose": "Send the object size the caller expects in x-amz-mp-object-size; a completion whose parts add up to it succeeds", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "key": "object-tests/multipart/commit-object-size.bin", - "object_size": 3, - "op": "s3.complete_multipart", - "parts": [ - { - "etag": "\"fixture-3841a4d594c0\"", - "number": 1 - } - ], - "upload_id": "fixture-upload+/2b2c71a6ce04=" - }, - "exchanges": [ { "alternatives": [ { @@ -76206,7 +111814,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "GET" } }, { @@ -76214,31 +111822,15 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/commit-object-size.bin" - } - }, - { - "at": "/body_text", - "optional": false, - "rule": { - "is": "xml", - "value": "1\"fixture-3841a4d594c0\"" - } - }, - { - "at": "/query/uploadId", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-upload+/2b2c71a6ce04=" + "value": "/fixture/object-tests/read/object.txt" } }, { - "at": "/headers/x-amz-mp-object-size", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "3" + "value": "" } } ], @@ -76247,17 +111839,16 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 503, "headers": { "content-type": "application/xml", "date": { "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { "encoding": "utf8", - "data": "\nhttps://fixture.invalid/fixture/object-tests/multipart/commit-object-size.binfixtureobject-tests/multipart/commit-object-size.bin"fixture-69ebdafc497f"rzsmsrcRLcM=FULL_OBJECT" + "data": "\nSlowDownPlease reduce your request rate.fixture" }, "framing": "chunked" } @@ -76269,7 +111860,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "GET" } }, { @@ -76277,31 +111868,23 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/commit-object-size.bin" - } - }, - { - "at": "/body_text", - "optional": false, - "rule": { - "is": "xml", - "value": "\"fixture-3841a4d594c0\"1" + "value": "/fixture/object-tests/read/object.txt" } }, { - "at": "/query/uploadId", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/2b2c71a6ce04=" + "value": "" } }, { - "at": "/headers/x-amz-mp-object-size", + "at": "/headers/range", "optional": false, "rule": { - "is": "equal", - "value": "3" + "is": "matches", + "pattern": "bytes=0-[1-9][0-9]{2,}" } } ], @@ -76310,22 +111893,22 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 503, "headers": { "content-type": "application/xml", "date": { "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { "encoding": "utf8", - "data": "\nhttps://fixture.invalid/fixture/object-tests/multipart/commit-object-size.binfixtureobject-tests/multipart/commit-object-size.bin"fixture-69ebdafc497f"rzsmsrcRLcM=FULL_OBJECT" + "data": "\nSlowDownPlease reduce your request rate.fixture" }, "framing": "chunked" } } - ] + ], + "optional": true } ], "expect": [ @@ -76334,49 +111917,40 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "error" } }, { - "at": "/value/etag", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-69ebdafc497f\"" + "value": 503 } }, { - "at": "/value/version", - "optional": true, + "at": "/code", + "optional": false, "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "is": "equal", + "value": "SlowDown" } } ], "refusal": null }, { - "id": "operations/s3/commit-one-empty-part", + "id": "operations/s3/get-if-unmodified-since-past", "profile": "s3", "lane": "core", - "purpose": "Complete an upload of one empty part, which writes an empty object; a client that refuses a completion of no parts writes an empty object this way", + "purpose": "Refuse a read with 412 when the object changed after If-Unmodified-Since", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/multipart/empty.bin", - "op": "s3.complete_multipart", - "parts": [ - { - "etag": "\"fixture-3841a4d594c0\"", - "number": 1 - } - ], - "upload_id": "fixture-upload+/2b2c71a6ce04=" + "if_unmodified_since": "Sat, 01 Jan 2000 00:00:00 GMT", + "key": "object-tests/read/object.txt", + "op": "get" }, "exchanges": [ { @@ -76388,7 +111962,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "GET" } }, { @@ -76396,23 +111970,23 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/empty.bin" + "value": "/fixture/object-tests/read/object.txt" } }, { - "at": "/body_text", + "at": "/body_base64", "optional": false, "rule": { - "is": "xml", - "value": "1\"fixture-3841a4d594c0\"" + "is": "equal", + "value": "" } }, { - "at": "/query/uploadId", + "at": "/headers/if-unmodified-since", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/2b2c71a6ce04=" + "value": "Sat, 01 Jan 2000 00:00:00 GMT" } } ], @@ -76421,17 +111995,16 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 412, "headers": { "content-type": "application/xml", "date": { "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { "encoding": "utf8", - "data": "\nhttps://fixture.invalid/fixture/object-tests/multipart/empty.binfixtureobject-tests/multipart/empty.bin"fixture-69ebdafc497f"rzsmsrcRLcM=FULL_OBJECT" + "data": "\nPreconditionFailedFixture error" }, "framing": "chunked" } @@ -76443,7 +112016,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "GET" } }, { @@ -76451,23 +112024,31 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/empty.bin" + "value": "/fixture/object-tests/read/object.txt" } }, { - "at": "/body_text", + "at": "/body_base64", "optional": false, "rule": { - "is": "xml", - "value": "\"fixture-3841a4d594c0\"1" + "is": "equal", + "value": "" } }, { - "at": "/query/uploadId", + "at": "/headers/range", + "optional": false, + "rule": { + "is": "matches", + "pattern": "bytes=0-[1-9][0-9]{2,}" + } + }, + { + "at": "/headers/if-unmodified-since", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/2b2c71a6ce04=" + "value": "Sat, 01 Jan 2000 00:00:00 GMT" } } ], @@ -76476,17 +112057,16 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 412, "headers": { "content-type": "application/xml", "date": { "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { "encoding": "utf8", - "data": "\nhttps://fixture.invalid/fixture/object-tests/multipart/empty.binfixtureobject-tests/multipart/empty.bin"fixture-69ebdafc497f"rzsmsrcRLcM=FULL_OBJECT" + "data": "\nPreconditionFailedFixture error" }, "framing": "chunked" } @@ -76500,49 +112080,40 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "error" } }, { - "at": "/value/etag", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-69ebdafc497f\"" + "value": 412 } }, { - "at": "/value/version", - "optional": true, + "at": "/code", + "optional": false, "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "is": "equal", + "value": "PreconditionFailed" } } ], "refusal": null }, { - "id": "operations/s3/commit-subset", + "id": "operations/s3/get-if-modified-since-future", "profile": "s3", "lane": "core", - "purpose": "commit subset", + "purpose": "Read an object when If-Modified-Since names a future date", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/multipart/replaced.bin", - "op": "s3.complete_multipart", - "parts": [ - { - "etag": "\"fixture-5945c592bad7\"", - "number": 1 - } - ], - "upload_id": "fixture-upload+/6ba3c5e480a2=" + "if_modified_since": "Fri, 01 Jan 2100 00:00:00 GMT", + "key": "object-tests/read/object.txt", + "op": "get" }, "exchanges": [ { @@ -76554,7 +112125,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "GET" } }, { @@ -76562,23 +112133,23 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/replaced.bin" + "value": "/fixture/object-tests/read/object.txt" } }, { - "at": "/body_text", + "at": "/body_base64", "optional": false, "rule": { - "is": "xml", - "value": "1\"fixture-5945c592bad7\"" + "is": "equal", + "value": "" } }, { - "at": "/query/uploadId", + "at": "/headers/if-modified-since", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/6ba3c5e480a2=" + "value": "Fri, 01 Jan 2100 00:00:00 GMT" } } ], @@ -76589,17 +112160,17 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", + "content-type": "binary/octet-stream", "date": { "from": "now" }, + "etag": "\"fixture-ad03f2ab332a\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nhttps://fixture.invalid/fixture/object-tests/multipart/replaced.binfixtureobject-tests/multipart/replaced.bin"fixture-8631a8b6edf7"DZyVHeSVZ7c=FULL_OBJECT" - }, - "framing": "chunked" + "encoding": "base64", + "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + } } }, { @@ -76609,7 +112180,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "GET" } }, { @@ -76617,23 +112188,31 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/replaced.bin" + "value": "/fixture/object-tests/read/object.txt" } }, { - "at": "/body_text", + "at": "/body_base64", "optional": false, "rule": { - "is": "xml", - "value": "\"fixture-5945c592bad7\"1" + "is": "equal", + "value": "" } }, { - "at": "/query/uploadId", + "at": "/headers/range", + "optional": false, + "rule": { + "is": "matches", + "pattern": "bytes=0-[1-9][0-9]{2,}" + } + }, + { + "at": "/headers/if-modified-since", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/6ba3c5e480a2=" + "value": "Fri, 01 Jan 2100 00:00:00 GMT" } } ], @@ -76642,19 +112221,20 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 206, "headers": { - "content-type": "application/xml", + "content-range": "bytes 0-29/30", + "content-type": "binary/octet-stream", "date": { "from": "now" }, + "etag": "\"fixture-ad03f2ab332a\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nhttps://fixture.invalid/fixture/object-tests/multipart/replaced.binfixtureobject-tests/multipart/replaced.bin"fixture-8631a8b6edf7"DZyVHeSVZ7c=FULL_OBJECT" - }, - "framing": "chunked" + "encoding": "base64", + "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + } } } ] @@ -76674,7 +112254,23 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-8631a8b6edf7\"" + "value": "\"fixture-ad03f2ab332a\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 30 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "binary/octet-stream" } }, { @@ -76687,32 +112283,30 @@ "" ] } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + } } ], "refusal": null }, { - "id": "operations/s3/commit-unstaged-part", + "id": "operations/s3/get-if-modified-since-past", "profile": "s3", "lane": "core", - "purpose": "commit unstaged part", + "purpose": "Read an object modified since a past date", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/multipart/object.bin", - "op": "s3.complete_multipart", - "parts": [ - { - "etag": "\"fixture-6d60d5bbaa47\"", - "number": 1 - }, - { - "etag": "\"fixture-db71b2c0257c\"", - "number": 3 - } - ], - "upload_id": "fixture-upload+/276ca18046f9=" + "if_modified_since": "Sat, 01 Jan 2000 00:00:00 GMT", + "key": "object-tests/read/object.txt", + "op": "get" }, "exchanges": [ { @@ -76724,7 +112318,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "GET" } }, { @@ -76732,23 +112326,23 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/object.bin" + "value": "/fixture/object-tests/read/object.txt" } }, { - "at": "/body_text", + "at": "/body_base64", "optional": false, "rule": { - "is": "xml", - "value": "1\"fixture-6d60d5bbaa47\"3\"fixture-db71b2c0257c\"" + "is": "equal", + "value": "" } }, { - "at": "/query/uploadId", + "at": "/headers/if-modified-since", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/276ca18046f9=" + "value": "Sat, 01 Jan 2000 00:00:00 GMT" } } ], @@ -76757,18 +112351,19 @@ ], "allow_query": [], "response": { - "status": 400, + "status": 200, "headers": { - "content-type": "application/xml", + "content-type": "binary/octet-stream", "date": { "from": "now" - } + }, + "etag": "\"fixture-ad03f2ab332a\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nInvalidPartFixture error" - }, - "framing": "chunked" + "encoding": "base64", + "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + } } }, { @@ -76778,7 +112373,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "GET" } }, { @@ -76786,23 +112381,31 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/object.bin" + "value": "/fixture/object-tests/read/object.txt" } }, { - "at": "/body_text", + "at": "/body_base64", "optional": false, "rule": { - "is": "xml", - "value": "\"fixture-6d60d5bbaa47\"1\"fixture-db71b2c0257c\"3" + "is": "equal", + "value": "" } }, { - "at": "/query/uploadId", + "at": "/headers/range", + "optional": false, + "rule": { + "is": "matches", + "pattern": "bytes=0-[1-9][0-9]{2,}" + } + }, + { + "at": "/headers/if-modified-since", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/276ca18046f9=" + "value": "Sat, 01 Jan 2000 00:00:00 GMT" } } ], @@ -76811,18 +112414,20 @@ ], "allow_query": [], "response": { - "status": 400, + "status": 206, "headers": { - "content-type": "application/xml", + "content-range": "bytes 0-29/30", + "content-type": "binary/octet-stream", "date": { "from": "now" - } + }, + "etag": "\"fixture-ad03f2ab332a\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nInvalidPartFixture error" - }, - "framing": "chunked" + "encoding": "base64", + "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + } } } ] @@ -76834,50 +112439,67 @@ "optional": false, "rule": { "is": "equal", - "value": "error" + "value": "ok" } }, { - "at": "/status", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": 400 + "value": "\"fixture-ad03f2ab332a\"" } }, { - "at": "/code", + "at": "/value/size", "optional": false, "rule": { "is": "equal", - "value": "InvalidPart" + "value": 30 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "binary/octet-stream" + } + }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" } } ], "refusal": null }, { - "id": "operations/s3/commit-wrong-etag", + "id": "operations/s3/get-if-modified-since-unchanged", "profile": "s3", "lane": "core", - "purpose": "commit wrong etag", + "purpose": "Report an object not changed since the If-Modified-Since date as 304 Not Modified, not as an error of the service or an empty object", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/multipart/object.bin", - "op": "s3.complete_multipart", - "parts": [ - { - "etag": "\"fixture-db71b2c0257c\"", - "number": 1 - }, - { - "etag": "\"fixture-32b70ae425ac\"", - "number": 2 - } - ], - "upload_id": "fixture-upload+/276ca18046f9=" + "if_modified_since": "Mon, 01 Jan 2024 00:00:00 GMT", + "key": "object-tests/read/object.txt", + "op": "get" }, "exchanges": [ { @@ -76889,7 +112511,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "GET" } }, { @@ -76897,23 +112519,23 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/object.bin" + "value": "/fixture/object-tests/read/object.txt" } }, { - "at": "/body_text", + "at": "/body_base64", "optional": false, "rule": { - "is": "xml", - "value": "1\"fixture-db71b2c0257c\"2\"fixture-32b70ae425ac\"" + "is": "equal", + "value": "" } }, { - "at": "/query/uploadId", + "at": "/headers/if-modified-since", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/276ca18046f9=" + "value": "Mon, 01 Jan 2024 00:00:00 GMT" } } ], @@ -76922,18 +112544,17 @@ ], "allow_query": [], "response": { - "status": 400, + "status": 304, "headers": { - "content-type": "application/xml", "date": { "from": "now" - } + }, + "etag": "\"fixture-ad03f2ab332a\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nInvalidPartFixture error" - }, - "framing": "chunked" + "encoding": "empty" + } } }, { @@ -76943,7 +112564,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "GET" } }, { @@ -76951,23 +112572,31 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/object.bin" + "value": "/fixture/object-tests/read/object.txt" } }, { - "at": "/body_text", + "at": "/body_base64", "optional": false, "rule": { - "is": "xml", - "value": "\"fixture-db71b2c0257c\"1\"fixture-32b70ae425ac\"2" + "is": "equal", + "value": "" } }, { - "at": "/query/uploadId", + "at": "/headers/range", + "optional": false, + "rule": { + "is": "matches", + "pattern": "bytes=0-[1-9][0-9]{2,}" + } + }, + { + "at": "/headers/if-modified-since", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/276ca18046f9=" + "value": "Mon, 01 Jan 2024 00:00:00 GMT" } } ], @@ -76976,18 +112605,17 @@ ], "allow_query": [], "response": { - "status": 400, + "status": 304, "headers": { - "content-type": "application/xml", "date": { "from": "now" - } + }, + "etag": "\"fixture-ad03f2ab332a\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nInvalidPartFixture error" - }, - "framing": "chunked" + "encoding": "empty" + } } } ] @@ -77007,42 +112635,24 @@ "optional": false, "rule": { "is": "equal", - "value": 400 - } - }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "equal", - "value": "InvalidPart" + "value": 304 } } ], "refusal": null }, { - "id": "operations/s3/commit", + "id": "operations/s3/get-if-modified-since-invalid", "profile": "s3", "lane": "core", - "purpose": "commit", + "purpose": "Read an object when If-Modified-Since is not an HTTP date, which S3 ignores. A client may refuse the date instead", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/multipart/object.bin", - "op": "s3.complete_multipart", - "parts": [ - { - "etag": "\"fixture-6d60d5bbaa47\"", - "number": 1 - }, - { - "etag": "\"fixture-32b70ae425ac\"", - "number": 2 - } - ], - "upload_id": "fixture-upload+/276ca18046f9=" + "if_modified_since": "not a date", + "key": "object-tests/read/object.txt", + "op": "get" }, "exchanges": [ { @@ -77054,7 +112664,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "GET" } }, { @@ -77062,23 +112672,23 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/object.bin" + "value": "/fixture/object-tests/read/object.txt" } }, { - "at": "/body_text", + "at": "/body_base64", "optional": false, "rule": { - "is": "xml", - "value": "1\"fixture-6d60d5bbaa47\"2\"fixture-32b70ae425ac\"" + "is": "equal", + "value": "" } }, { - "at": "/query/uploadId", + "at": "/headers/if-modified-since", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/276ca18046f9=" + "value": "not a date" } } ], @@ -77089,17 +112699,17 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", + "content-type": "binary/octet-stream", "date": { "from": "now" }, + "etag": "\"fixture-ad03f2ab332a\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nhttps://fixture.invalid/fixture/object-tests/multipart/object.binfixtureobject-tests/multipart/object.bin"fixture-ae1b6d1d32ce"E0gM19kR9Fk=FULL_OBJECT" - }, - "framing": "chunked" + "encoding": "base64", + "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + } } }, { @@ -77109,7 +112719,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "GET" } }, { @@ -77117,23 +112727,31 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/object.bin" + "value": "/fixture/object-tests/read/object.txt" } }, { - "at": "/body_text", + "at": "/body_base64", "optional": false, "rule": { - "is": "xml", - "value": "\"fixture-6d60d5bbaa47\"1\"fixture-32b70ae425ac\"2" + "is": "equal", + "value": "" } }, { - "at": "/query/uploadId", + "at": "/headers/range", + "optional": false, + "rule": { + "is": "matches", + "pattern": "bytes=0-[1-9][0-9]{2,}" + } + }, + { + "at": "/headers/if-modified-since", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/276ca18046f9=" + "value": "not a date" } } ], @@ -77142,19 +112760,20 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 206, "headers": { - "content-type": "application/xml", + "content-range": "bytes 0-29/30", + "content-type": "binary/octet-stream", "date": { "from": "now" }, + "etag": "\"fixture-ad03f2ab332a\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nhttps://fixture.invalid/fixture/object-tests/multipart/object.binfixtureobject-tests/multipart/object.bin"fixture-ae1b6d1d32ce"E0gM19kR9Fk=FULL_OBJECT" - }, - "framing": "chunked" + "encoding": "base64", + "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + } } } ] @@ -77174,7 +112793,23 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-ae1b6d1d32ce\"" + "value": "\"fixture-ad03f2ab332a\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 30 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "binary/octet-stream" } }, { @@ -77187,35 +112822,55 @@ "" ] } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + } } ], - "refusal": null - }, - { - "id": "operations/s3/commit-200-internal-error", - "profile": "s3", - "lane": "core", - "purpose": "Report a completion answered 200 with an InternalError in the body as an error, never as a success. A client may retry up to 5 times first, and need not retry", - "sources": [ - "https://repost.aws/knowledge-center/s3-resolve-200-internalerror", - "https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html", - "https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html" - ], - "origin": "transient", - "call": { - "key": "object-tests/multipart/object.bin", - "op": "s3.complete_multipart", - "parts": [ - { - "etag": "\"fixture-6d60d5bbaa47\"", - "number": 1 - }, - { - "etag": "\"fixture-32b70ae425ac\"", - "number": 2 + "refusal": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "refused" } - ], - "upload_id": "fixture-upload+/276ca18046f9=" + }, + { + "at": "/kind", + "optional": false, + "rule": { + "is": "matches", + "pattern": ".+" + } + }, + { + "at": "/parameter", + "optional": false, + "rule": { + "is": "equal", + "value": "if_modified_since" + } + } + ], + "decline_permitted": true + }, + { + "id": "operations/s3/get-content-encoding-gzip", + "profile": "s3", + "lane": "core", + "purpose": "Return the stored gzip bytes and Content-Encoding: gzip without decoding them", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "key": "object-tests/read/object.txt", + "op": "get" }, "exchanges": [ { @@ -77227,7 +112882,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "GET" } }, { @@ -77235,23 +112890,15 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/object.bin" - } - }, - { - "at": "/body_text", - "optional": false, - "rule": { - "is": "xml", - "value": "1\"fixture-6d60d5bbaa47\"2\"fixture-32b70ae425ac\"" + "value": "/fixture/object-tests/read/object.txt" } }, { - "at": "/query/uploadId", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/276ca18046f9=" + "value": "" } } ], @@ -77262,16 +112909,18 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", + "content-encoding": "gzip", + "content-type": "binary/octet-stream", "date": { "from": "now" - } + }, + "etag": "\"fixture-ad03f2ab332a\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nInternalErrorWe encountered an internal error. Please try again.fixturefixture" - }, - "framing": "chunked" + "encoding": "base64", + "data": "H4sIAAAAAAACA0vOzy0oSi0uTk1RyM9TKCgtKsgvTuUCAAHVPIcWAAAA" + } } }, { @@ -77281,7 +112930,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "GET" } }, { @@ -77289,23 +112938,23 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/object.bin" + "value": "/fixture/object-tests/read/object.txt" } }, { - "at": "/body_text", + "at": "/body_base64", "optional": false, "rule": { - "is": "xml", - "value": "\"fixture-6d60d5bbaa47\"1\"fixture-32b70ae425ac\"2" + "is": "equal", + "value": "" } }, { - "at": "/query/uploadId", + "at": "/headers/range", "optional": false, "rule": { - "is": "equal", - "value": "fixture-upload+/276ca18046f9=" + "is": "matches", + "pattern": "bytes=0-[1-9][0-9]{2,}" } } ], @@ -77314,22 +112963,102 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 206, "headers": { - "content-type": "application/xml", + "content-encoding": "gzip", + "content-range": "bytes 0-41/42", + "content-type": "binary/octet-stream", "date": { "from": "now" - } + }, + "etag": "\"fixture-ad03f2ab332a\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nInternalErrorWe encountered an internal error. Please try again.fixturefixture" - }, - "framing": "chunked" + "encoding": "base64", + "data": "H4sIAAAAAAACA0vOzy0oSi0uTk1RyM9TKCgtKsgvTuUCAAHVPIcWAAAA" + } } } ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-ad03f2ab332a\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 42 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "binary/octet-stream" + } + }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "H4sIAAAAAAACA0vOzy0oSi0uTk1RyM9TKCgtKsgvTuUCAAHVPIcWAAAA" + } }, + { + "at": "/value/content_encoding", + "optional": false, + "rule": { + "is": "equal", + "value": "gzip" + } + } + ], + "refusal": null + }, + { + "id": "operations/s3/get-content-properties", + "profile": "s3", + "lane": "core", + "purpose": "Return the stored content properties from a GET", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "key": "object-tests/read/object.txt", + "op": "get" + }, + "exchanges": [ { "alternatives": [ { @@ -77339,7 +113068,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "GET" } }, { @@ -77347,23 +113076,15 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/object.bin" - } - }, - { - "at": "/body_text", - "optional": false, - "rule": { - "is": "xml", - "value": "1\"fixture-6d60d5bbaa47\"2\"fixture-32b70ae425ac\"" + "value": "/fixture/object-tests/read/object.txt" } }, { - "at": "/query/uploadId", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/276ca18046f9=" + "value": "" } } ], @@ -77374,16 +113095,20 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", + "cache-control": "max-age=3600", + "content-disposition": "attachment; filename=\"report.txt\"", + "content-language": "nl-NL", + "content-type": "text/plain; charset=utf-8", "date": { "from": "now" - } + }, + "etag": "\"fixture-ad03f2ab332a\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nInternalErrorWe encountered an internal error. Please try again.fixturefixture" - }, - "framing": "chunked" + "encoding": "base64", + "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + } } }, { @@ -77393,7 +113118,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "GET" } }, { @@ -77401,23 +113126,23 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/object.bin" + "value": "/fixture/object-tests/read/object.txt" } }, { - "at": "/body_text", + "at": "/body_base64", "optional": false, "rule": { - "is": "xml", - "value": "\"fixture-6d60d5bbaa47\"1\"fixture-32b70ae425ac\"2" + "is": "equal", + "value": "" } }, { - "at": "/query/uploadId", + "at": "/headers/range", "optional": false, "rule": { - "is": "equal", - "value": "fixture-upload+/276ca18046f9=" + "is": "matches", + "pattern": "bytes=0-[1-9][0-9]{2,}" } } ], @@ -77426,23 +113151,120 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 206, "headers": { - "content-type": "application/xml", + "cache-control": "max-age=3600", + "content-disposition": "attachment; filename=\"report.txt\"", + "content-language": "nl-NL", + "content-range": "bytes 0-29/30", + "content-type": "text/plain; charset=utf-8", "date": { "from": "now" - } + }, + "etag": "\"fixture-ad03f2ab332a\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nInternalErrorWe encountered an internal error. Please try again.fixturefixture" - }, - "framing": "chunked" + "encoding": "base64", + "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + } } } - ], - "optional": true + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-ad03f2ab332a\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 30 + } + }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "text/plain; charset=utf-8" + } + }, + { + "at": "/value/content_language", + "optional": false, + "rule": { + "is": "equal", + "value": "nl-NL" + } + }, + { + "at": "/value/content_disposition", + "optional": false, + "rule": { + "is": "equal", + "value": "attachment; filename=\"report.txt\"" + } }, + { + "at": "/value/cache_control", + "optional": false, + "rule": { + "is": "equal", + "value": "max-age=3600" + } + } + ], + "refusal": null + }, + { + "id": "operations/s3/head-committed", + "profile": "s3", + "lane": "core", + "purpose": "head committed", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "key": "object-tests/multipart/object.bin", + "op": "head" + }, + "exchanges": [ { "alternatives": [ { @@ -77452,7 +113274,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "HEAD" } }, { @@ -77464,19 +113286,11 @@ } }, { - "at": "/body_text", - "optional": false, - "rule": { - "is": "xml", - "value": "1\"fixture-6d60d5bbaa47\"2\"fixture-32b70ae425ac\"" - } - }, - { - "at": "/query/uploadId", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/276ca18046f9=" + "value": "" } } ], @@ -77487,75 +113301,83 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", + "content-length": "5242886", + "content-type": "binary/octet-stream", "date": { "from": "now" - } + }, + "etag": "\"fixture-ae1b6d1d32ce\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nInternalErrorWe encountered an internal error. Please try again.fixturefixture" - }, - "framing": "chunked" - } - }, - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "POST" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/multipart/object.bin" - } - }, - { - "at": "/body_text", - "optional": false, - "rule": { - "is": "xml", - "value": "\"fixture-6d60d5bbaa47\"1\"fixture-32b70ae425ac\"2" - } - }, - { - "at": "/query/uploadId", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-upload+/276ca18046f9=" - } + "encoding": "base64", + "data": "" } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - } - }, - "body": { - "encoding": "utf8", - "data": "\nInternalErrorWe encountered an internal error. Please try again.fixturefixture" - }, - "framing": "chunked" } } - ], - "optional": true + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-ae1b6d1d32ce\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 5242886 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "binary/octet-stream" + } }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + } + ], + "refusal": null + }, + { + "id": "operations/s3/head-metadata", + "profile": "s3", + "lane": "core", + "purpose": "head metadata", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "key": "object-tests/metadata/object.txt", + "op": "head" + }, + "exchanges": [ { "alternatives": [ { @@ -77565,7 +113387,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "HEAD" } }, { @@ -77573,23 +113395,15 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/object.bin" - } - }, - { - "at": "/body_text", - "optional": false, - "rule": { - "is": "xml", - "value": "1\"fixture-6d60d5bbaa47\"2\"fixture-32b70ae425ac\"" + "value": "/fixture/object-tests/metadata/object.txt" } }, { - "at": "/query/uploadId", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/276ca18046f9=" + "value": "" } } ], @@ -77600,18 +113414,98 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", + "content-length": "1", + "content-type": "binary/octet-stream", "date": { "from": "now" - } + }, + "etag": "\"fixture-6c30b210f0a8\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-amz-meta-name": "value", + "x-amz-meta-second": "2" }, "body": { - "encoding": "utf8", - "data": "\nInternalErrorWe encountered an internal error. Please try again.fixturefixture" - }, - "framing": "chunked" + "encoding": "base64", + "data": "" + } } - }, + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-6c30b210f0a8\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "binary/octet-stream" + } + }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/metadata", + "optional": false, + "rule": { + "is": "equal", + "value": { + "name": "value", + "second": "2" + } + } + } + ], + "refusal": null + }, + { + "id": "operations/s3/head-missing", + "profile": "s3", + "lane": "core", + "purpose": "Report a HEAD answered 404 as not_found or missing. Its answer has no body, so it cannot say whether the object or the bucket is absent", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "key": "object-tests/read/absent.txt", + "op": "head" + }, + "exchanges": [ + { + "alternatives": [ { "request": [ { @@ -77619,7 +113513,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "HEAD" } }, { @@ -77627,23 +113521,15 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/object.bin" - } - }, - { - "at": "/body_text", - "optional": false, - "rule": { - "is": "xml", - "value": "\"fixture-6d60d5bbaa47\"1\"fixture-32b70ae425ac\"2" + "value": "/fixture/object-tests/read/absent.txt" } }, { - "at": "/query/uploadId", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/276ca18046f9=" + "value": "" } } ], @@ -77652,7 +113538,7 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 404, "headers": { "content-type": "application/xml", "date": { @@ -77660,15 +113546,58 @@ } }, "body": { - "encoding": "utf8", - "data": "\nInternalErrorWe encountered an internal error. Please try again.fixturefixture" - }, - "framing": "chunked" + "encoding": "base64", + "data": "" + } } } - ], - "optional": true + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 404 + } }, + { + "at": "/kind", + "optional": false, + "rule": { + "is": "one_of", + "values": [ + "not_found", + "missing" + ] + } + } + ], + "refusal": null + }, + { + "id": "operations/s3/head", + "profile": "s3", + "lane": "core", + "purpose": "head", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "key": "object-tests/read/object.txt", + "op": "head" + }, + "exchanges": [ { "alternatives": [ { @@ -77678,7 +113607,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "HEAD" } }, { @@ -77686,23 +113615,15 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/object.bin" - } - }, - { - "at": "/body_text", - "optional": false, - "rule": { - "is": "xml", - "value": "1\"fixture-6d60d5bbaa47\"2\"fixture-32b70ae425ac\"" + "value": "/fixture/object-tests/read/object.txt" } }, { - "at": "/query/uploadId", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/276ca18046f9=" + "value": "" } } ], @@ -77713,18 +113634,85 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", + "content-length": "30", + "content-type": "binary/octet-stream", "date": { "from": "now" - } + }, + "etag": "\"fixture-ad03f2ab332a\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nInternalErrorWe encountered an internal error. Please try again.fixturefixture" - }, - "framing": "chunked" + "encoding": "base64", + "data": "" + } } - }, + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-ad03f2ab332a\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 30 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "binary/octet-stream" + } + }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + } + ], + "refusal": null + }, + { + "id": "operations/s3/head-content-properties", + "profile": "s3", + "lane": "core", + "purpose": "Return the stored content properties from a HEAD", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "key": "object-tests/read/object.txt", + "op": "head" + }, + "exchanges": [ + { + "alternatives": [ { "request": [ { @@ -77732,7 +113720,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "HEAD" } }, { @@ -77740,23 +113728,15 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/object.bin" - } - }, - { - "at": "/body_text", - "optional": false, - "rule": { - "is": "xml", - "value": "\"fixture-6d60d5bbaa47\"1\"fixture-32b70ae425ac\"2" + "value": "/fixture/object-tests/read/object.txt" } }, { - "at": "/query/uploadId", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/276ca18046f9=" + "value": "" } } ], @@ -77767,21 +113747,111 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", + "cache-control": "max-age=3600", + "content-disposition": "attachment; filename=\"report.txt\"", + "content-language": "nl-NL", + "content-length": "30", + "content-type": "text/plain; charset=utf-8", "date": { "from": "now" - } + }, + "etag": "\"fixture-ad03f2ab332a\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nInternalErrorWe encountered an internal error. Please try again.fixturefixture" - }, - "framing": "chunked" + "encoding": "base64", + "data": "" + } } } - ], - "optional": true + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-ad03f2ab332a\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 30 + } + }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "text/plain; charset=utf-8" + } + }, + { + "at": "/value/content_language", + "optional": false, + "rule": { + "is": "equal", + "value": "nl-NL" + } + }, + { + "at": "/value/content_disposition", + "optional": false, + "rule": { + "is": "equal", + "value": "attachment; filename=\"report.txt\"" + } }, + { + "at": "/value/cache_control", + "optional": false, + "rule": { + "is": "equal", + "value": "max-age=3600" + } + } + ], + "refusal": null + }, + { + "id": "operations/s3/head-if-unmodified-since-past", + "profile": "s3", + "lane": "core", + "purpose": "Refuse a HEAD with 412 when the object changed after If-Unmodified-Since", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "if_unmodified_since": "Sat, 01 Jan 2000 00:00:00 GMT", + "key": "object-tests/read/object.txt", + "op": "head" + }, + "exchanges": [ { "alternatives": [ { @@ -77791,7 +113861,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "HEAD" } }, { @@ -77799,23 +113869,23 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/object.bin" + "value": "/fixture/object-tests/read/object.txt" } }, { - "at": "/body_text", + "at": "/body_base64", "optional": false, "rule": { - "is": "xml", - "value": "1\"fixture-6d60d5bbaa47\"2\"fixture-32b70ae425ac\"" + "is": "equal", + "value": "" } }, { - "at": "/query/uploadId", + "at": "/headers/if-unmodified-since", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/276ca18046f9=" + "value": "Sat, 01 Jan 2000 00:00:00 GMT" } } ], @@ -77824,20 +113894,55 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 412, "headers": { - "content-type": "application/xml", "date": { "from": "now" } }, "body": { - "encoding": "utf8", - "data": "\nInternalErrorWe encountered an internal error. Please try again.fixturefixture" - }, - "framing": "chunked" + "encoding": "empty" + } } - }, + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 412 + } + } + ], + "refusal": null + }, + { + "id": "operations/s3/head-storage-class", + "profile": "s3", + "lane": "core", + "purpose": "Read the storage class of an object", + "sources": [ + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html" + ], + "call": { + "key": "object-tests/classes/object.txt", + "op": "head" + }, + "exchanges": [ + { + "alternatives": [ { "request": [ { @@ -77845,7 +113950,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "HEAD" } }, { @@ -77853,23 +113958,15 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/object.bin" - } - }, - { - "at": "/body_text", - "optional": false, - "rule": { - "is": "xml", - "value": "\"fixture-6d60d5bbaa47\"1\"fixture-32b70ae425ac\"2" + "value": "/fixture/object-tests/classes/object.txt" } }, { - "at": "/query/uploadId", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/276ca18046f9=" + "value": "" } } ], @@ -77880,20 +113977,20 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", + "content-length": "5", "date": { "from": "now" - } + }, + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-amz-storage-class": "STANDARD_IA" }, "body": { - "encoding": "utf8", - "data": "\nInternalErrorWe encountered an internal error. Please try again.fixturefixture" - }, - "framing": "chunked" + "encoding": "empty" + } } } - ], - "optional": true + ] } ], "expect": [ @@ -77902,39 +113999,31 @@ "optional": false, "rule": { "is": "equal", - "value": "error" + "value": "ok" } }, { - "at": "/code", + "at": "/value/storage_class", "optional": false, "rule": { "is": "equal", - "value": "InternalError" + "value": "STANDARD_IA" } } ], "refusal": null }, { - "id": "operations/s3/complete-multipart-200-error", + "id": "operations/s3/head-key-question", "profile": "s3", "lane": "core", - "purpose": "complete multipart 200 error", + "purpose": "head, with the key \"question?mark.txt\"", "sources": [ - "https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], - "origin": "transient", "call": { - "key": "object", - "op": "s3.complete_multipart", - "parts": [ - { - "etag": "\"part\"", - "number": 1 - } - ], - "upload_id": "upload+/=" + "key": "object-tests/keys/question?mark.txt", + "op": "head" }, "exchanges": [ { @@ -77946,7 +114035,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "HEAD" } }, { @@ -77954,23 +114043,15 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object" + "value": "/fixture/object-tests/keys/question?mark.txt" } }, { - "at": "/query/uploadId", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "upload+/=" - } - }, - { - "at": "/body_text", - "optional": false, - "rule": { - "is": "xml", - "value": "1\"part\"" + "value": "" } } ], @@ -77981,21 +114062,85 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", + "content-length": "30", + "content-type": "binary/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-etag\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-amz-request-id": "fixture-request-id" + "etag": "\"fixture-ad03f2ab332a\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "base64", - "data": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPEVycm9yPjxDb2RlPkludmFsaWRQYXJ0PC9Db2RlPjxNZXNzYWdlPmZpeHR1cmUgZXJyb3I8L01lc3NhZ2U+PC9FcnJvcj4=" - }, - "framing": "chunked" + "data": "" + } } - }, + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-ad03f2ab332a\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 30 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "binary/octet-stream" + } + }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + } + ], + "refusal": null + }, + { + "id": "operations/s3/head-key-hash", + "profile": "s3", + "lane": "core", + "purpose": "head, with the key \"hash#tag.txt\"", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "key": "object-tests/keys/hash#tag.txt", + "op": "head" + }, + "exchanges": [ + { + "alternatives": [ { "request": [ { @@ -78003,7 +114148,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "HEAD" } }, { @@ -78011,23 +114156,15 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object" + "value": "/fixture/object-tests/keys/hash#tag.txt" } }, { - "at": "/query/uploadId", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "upload+/=" - } - }, - { - "at": "/body_text", - "optional": false, - "rule": { - "is": "xml", - "value": "\"part\"1" + "value": "" } } ], @@ -78038,19 +114175,18 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", + "content-length": "30", + "content-type": "binary/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-etag\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-amz-request-id": "fixture-request-id" + "etag": "\"fixture-ad03f2ab332a\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "base64", - "data": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPEVycm9yPjxDb2RlPkludmFsaWRQYXJ0PC9Db2RlPjxNZXNzYWdlPmZpeHR1cmUgZXJyb3I8L01lc3NhZ2U+PC9FcnJvcj4=" - }, - "framing": "chunked" + "data": "" + } } } ] @@ -78062,42 +114198,58 @@ "optional": false, "rule": { "is": "equal", - "value": "error" + "value": "ok" } }, { - "at": "/code", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": "InvalidPart" + "value": "\"fixture-ad03f2ab332a\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 30 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "binary/octet-stream" + } + }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] } } ], "refusal": null }, { - "id": "operations/s3/commit-key-question", + "id": "operations/s3/head-key-percent", "profile": "s3", "lane": "core", - "purpose": "commit, with the key \"question?mark.txt\"", + "purpose": "head, with the key \"percent%20.txt\"", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/keys/question?mark.txt", - "op": "s3.complete_multipart", - "parts": [ - { - "etag": "\"fixture-6d60d5bbaa47\"", - "number": 1 - }, - { - "etag": "\"fixture-32b70ae425ac\"", - "number": 2 - } - ], - "upload_id": "fixture-upload+/276ca18046f9=" + "key": "object-tests/keys/percent%20.txt", + "op": "head" }, "exchanges": [ { @@ -78109,7 +114261,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "HEAD" } }, { @@ -78117,23 +114269,15 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/question?mark.txt" - } - }, - { - "at": "/body_text", - "optional": false, - "rule": { - "is": "xml", - "value": "1\"fixture-6d60d5bbaa47\"2\"fixture-32b70ae425ac\"" + "value": "/fixture/object-tests/keys/percent%20.txt" } }, { - "at": "/query/uploadId", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/276ca18046f9=" + "value": "" } } ], @@ -78144,19 +114288,85 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", + "content-length": "30", + "content-type": "binary/octet-stream", "date": { "from": "now" }, + "etag": "\"fixture-ad03f2ab332a\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nhttps://fixture.invalid/fixture/object-tests/keys/question?mark.txtfixtureobject-tests/keys/question?mark.txt"fixture-ae1b6d1d32ce"E0gM19kR9Fk=FULL_OBJECT" - }, - "framing": "chunked" + "encoding": "base64", + "data": "" + } } - }, + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-ad03f2ab332a\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 30 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "binary/octet-stream" + } + }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + } + ], + "refusal": null + }, + { + "id": "operations/s3/head-key-plus", + "profile": "s3", + "lane": "core", + "purpose": "head, with the key \"plus+plus.txt\"", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "key": "object-tests/keys/plus+plus.txt", + "op": "head" + }, + "exchanges": [ + { + "alternatives": [ { "request": [ { @@ -78164,7 +114374,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "HEAD" } }, { @@ -78172,23 +114382,15 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/question?mark.txt" - } - }, - { - "at": "/body_text", - "optional": false, - "rule": { - "is": "xml", - "value": "\"fixture-6d60d5bbaa47\"1\"fixture-32b70ae425ac\"2" + "value": "/fixture/object-tests/keys/plus+plus.txt" } }, { - "at": "/query/uploadId", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/276ca18046f9=" + "value": "" } } ], @@ -78199,17 +114401,18 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", + "content-length": "30", + "content-type": "binary/octet-stream", "date": { "from": "now" }, + "etag": "\"fixture-ad03f2ab332a\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nhttps://fixture.invalid/fixture/object-tests/keys/question?mark.txtfixtureobject-tests/keys/question?mark.txt"fixture-ae1b6d1d32ce"E0gM19kR9Fk=FULL_OBJECT" - }, - "framing": "chunked" + "encoding": "base64", + "data": "" + } } } ] @@ -78229,7 +114432,23 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-ae1b6d1d32ce\"" + "value": "\"fixture-ad03f2ab332a\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 30 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "binary/octet-stream" } }, { @@ -78247,27 +114466,16 @@ "refusal": null }, { - "id": "operations/s3/commit-key-hash", + "id": "operations/s3/head-key-space", "profile": "s3", "lane": "core", - "purpose": "commit, with the key \"hash#tag.txt\"", + "purpose": "head, with the key \"space name.txt\"", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/keys/hash#tag.txt", - "op": "s3.complete_multipart", - "parts": [ - { - "etag": "\"fixture-6d60d5bbaa47\"", - "number": 1 - }, - { - "etag": "\"fixture-32b70ae425ac\"", - "number": 2 - } - ], - "upload_id": "fixture-upload+/276ca18046f9=" + "key": "object-tests/keys/space name.txt", + "op": "head" }, "exchanges": [ { @@ -78279,7 +114487,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "HEAD" } }, { @@ -78287,23 +114495,15 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/hash#tag.txt" - } - }, - { - "at": "/body_text", - "optional": false, - "rule": { - "is": "xml", - "value": "1\"fixture-6d60d5bbaa47\"2\"fixture-32b70ae425ac\"" + "value": "/fixture/object-tests/keys/space name.txt" } }, { - "at": "/query/uploadId", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/276ca18046f9=" + "value": "" } } ], @@ -78314,19 +114514,85 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", + "content-length": "30", + "content-type": "binary/octet-stream", "date": { "from": "now" }, + "etag": "\"fixture-ad03f2ab332a\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nhttps://fixture.invalid/fixture/object-tests/keys/hash#tag.txtfixtureobject-tests/keys/hash#tag.txt"fixture-ae1b6d1d32ce"E0gM19kR9Fk=FULL_OBJECT" - }, - "framing": "chunked" + "encoding": "base64", + "data": "" + } } - }, + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-ad03f2ab332a\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 30 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "binary/octet-stream" + } + }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + } + ], + "refusal": null + }, + { + "id": "operations/s3/head-key-non-ascii", + "profile": "s3", + "lane": "core", + "purpose": "head, with the key \"café/雪.txt\"", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "key": "object-tests/keys/café/雪.txt", + "op": "head" + }, + "exchanges": [ + { + "alternatives": [ { "request": [ { @@ -78334,7 +114600,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "HEAD" } }, { @@ -78342,23 +114608,15 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/hash#tag.txt" - } - }, - { - "at": "/body_text", - "optional": false, - "rule": { - "is": "xml", - "value": "\"fixture-6d60d5bbaa47\"1\"fixture-32b70ae425ac\"2" + "value": "/fixture/object-tests/keys/café/雪.txt" } }, { - "at": "/query/uploadId", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/276ca18046f9=" + "value": "" } } ], @@ -78369,17 +114627,18 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", + "content-length": "30", + "content-type": "binary/octet-stream", "date": { "from": "now" }, + "etag": "\"fixture-ad03f2ab332a\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nhttps://fixture.invalid/fixture/object-tests/keys/hash#tag.txtfixtureobject-tests/keys/hash#tag.txt"fixture-ae1b6d1d32ce"E0gM19kR9Fk=FULL_OBJECT" - }, - "framing": "chunked" + "encoding": "base64", + "data": "" + } } } ] @@ -78399,7 +114658,23 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-ae1b6d1d32ce\"" + "value": "\"fixture-ad03f2ab332a\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 30 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "binary/octet-stream" } }, { @@ -78417,27 +114692,16 @@ "refusal": null }, { - "id": "operations/s3/commit-key-percent", + "id": "operations/s3/head-key-double-slash", "profile": "s3", "lane": "core", - "purpose": "commit, with the key \"percent%20.txt\"", + "purpose": "head, with the key \"double//slash.txt\"", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/keys/percent%20.txt", - "op": "s3.complete_multipart", - "parts": [ - { - "etag": "\"fixture-6d60d5bbaa47\"", - "number": 1 - }, - { - "etag": "\"fixture-32b70ae425ac\"", - "number": 2 - } - ], - "upload_id": "fixture-upload+/276ca18046f9=" + "key": "object-tests/keys/double//slash.txt", + "op": "head" }, "exchanges": [ { @@ -78449,7 +114713,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "HEAD" } }, { @@ -78457,23 +114721,15 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/percent%20.txt" - } - }, - { - "at": "/body_text", - "optional": false, - "rule": { - "is": "xml", - "value": "1\"fixture-6d60d5bbaa47\"2\"fixture-32b70ae425ac\"" + "value": "/fixture/object-tests/keys/double//slash.txt" } }, { - "at": "/query/uploadId", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/276ca18046f9=" + "value": "" } } ], @@ -78484,19 +114740,85 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", + "content-length": "30", + "content-type": "binary/octet-stream", "date": { "from": "now" }, + "etag": "\"fixture-ad03f2ab332a\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nhttps://fixture.invalid/fixture/object-tests/keys/percent%20.txtfixtureobject-tests/keys/percent%20.txt"fixture-ae1b6d1d32ce"E0gM19kR9Fk=FULL_OBJECT" - }, - "framing": "chunked" + "encoding": "base64", + "data": "" + } } - }, + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-ad03f2ab332a\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 30 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "binary/octet-stream" + } + }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + } + ], + "refusal": null + }, + { + "id": "operations/s3/head-key-trailing-slash", + "profile": "s3", + "lane": "core", + "purpose": "head, with the key \"trailing-slash/\"", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "key": "object-tests/keys/trailing-slash/", + "op": "head" + }, + "exchanges": [ + { + "alternatives": [ { "request": [ { @@ -78504,7 +114826,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "HEAD" } }, { @@ -78512,23 +114834,15 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/percent%20.txt" - } - }, - { - "at": "/body_text", - "optional": false, - "rule": { - "is": "xml", - "value": "\"fixture-6d60d5bbaa47\"1\"fixture-32b70ae425ac\"2" + "value": "/fixture/object-tests/keys/trailing-slash/" } }, { - "at": "/query/uploadId", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/276ca18046f9=" + "value": "" } } ], @@ -78539,17 +114853,18 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", + "content-length": "30", + "content-type": "binary/octet-stream", "date": { "from": "now" }, + "etag": "\"fixture-ad03f2ab332a\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nhttps://fixture.invalid/fixture/object-tests/keys/percent%20.txtfixtureobject-tests/keys/percent%20.txt"fixture-ae1b6d1d32ce"E0gM19kR9Fk=FULL_OBJECT" - }, - "framing": "chunked" + "encoding": "base64", + "data": "" + } } } ] @@ -78569,7 +114884,23 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-ae1b6d1d32ce\"" + "value": "\"fixture-ad03f2ab332a\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 30 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "binary/octet-stream" } }, { @@ -78587,27 +114918,17 @@ "refusal": null }, { - "id": "operations/s3/commit-key-plus", + "id": "operations/s3/list-bad-marker", "profile": "s3", "lane": "core", - "purpose": "commit, with the key \"plus+plus.txt\"", + "purpose": "Report S3's 400 InvalidArgument for a continuation token it did not issue", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/keys/plus+plus.txt", - "op": "s3.complete_multipart", - "parts": [ - { - "etag": "\"fixture-6d60d5bbaa47\"", - "number": 1 - }, - { - "etag": "\"fixture-32b70ae425ac\"", - "number": 2 - } - ], - "upload_id": "fixture-upload+/276ca18046f9=" + "continuation_token": "fixture-marker+/ce6f21ae951d=", + "op": "list_page", + "prefix": "object-tests/board/" }, "exchanges": [ { @@ -78619,7 +114940,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "GET" } }, { @@ -78627,23 +114948,39 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/plus+plus.txt" + "value": "/fixture" } }, { - "at": "/body_text", + "at": "/body_base64", "optional": false, "rule": { - "is": "xml", - "value": "1\"fixture-6d60d5bbaa47\"2\"fixture-32b70ae425ac\"" + "is": "equal", + "value": "" } }, { - "at": "/query/uploadId", + "at": "/query/list-type", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/276ca18046f9=" + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/" + } + }, + { + "at": "/query/continuation-token", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-marker+/ce6f21ae951d=" } } ], @@ -78652,17 +114989,16 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 400, "headers": { "content-type": "application/xml", "date": { "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { "encoding": "utf8", - "data": "\nhttps://fixture.invalid/fixture/object-tests/keys/plus+plus.txtfixtureobject-tests/keys/plus+plus.txt"fixture-ae1b6d1d32ce"E0gM19kR9Fk=FULL_OBJECT" + "data": "\nInvalidArgumentFixture error" }, "framing": "chunked" } @@ -78674,7 +115010,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "GET" } }, { @@ -78682,23 +115018,47 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/plus+plus.txt" + "value": "/fixture" } }, { - "at": "/body_text", + "at": "/body_base64", "optional": false, "rule": { - "is": "xml", - "value": "\"fixture-6d60d5bbaa47\"1\"fixture-32b70ae425ac\"2" + "is": "equal", + "value": "" } }, { - "at": "/query/uploadId", + "at": "/query/list-type", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/276ca18046f9=" + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/" + } + }, + { + "at": "/query/continuation-token", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-marker+/ce6f21ae951d=" + } + }, + { + "at": "/query/encoding-type", + "optional": false, + "rule": { + "is": "equal", + "value": "url" } } ], @@ -78707,17 +115067,16 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 400, "headers": { "content-type": "application/xml", "date": { "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { "encoding": "utf8", - "data": "\nhttps://fixture.invalid/fixture/object-tests/keys/plus+plus.txtfixtureobject-tests/keys/plus+plus.txt"fixture-ae1b6d1d32ce"E0gM19kR9Fk=FULL_OBJECT" + "data": "\nInvalidArgumentThe continuation token provided is incorrectcontinuation-tokenNQMNJ1VWXJVB4568Xe4ibV4/CeMc0lPl/vnTn1PlV2EEGNHZ+ST6o8IyEOh1TYXGMx01Jf1TkbwfTtRpHhsL/Tjn/tA=" }, "framing": "chunked" } @@ -78731,53 +115090,39 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "error" } }, { - "at": "/value/etag", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-ae1b6d1d32ce\"" + "value": 400 } }, { - "at": "/value/version", - "optional": true, + "at": "/code", + "optional": false, "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "is": "equal", + "value": "InvalidArgument" } } ], "refusal": null }, { - "id": "operations/s3/commit-key-space", + "id": "operations/s3/list-bucket-missing", "profile": "s3", "lane": "core", - "purpose": "commit, with the key \"space name.txt\"", + "purpose": "Report 404 NoSuchBucket for a bucket that does not exist. A client reports it as container_not_found: the bucket or container is absent, not the object", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/keys/space name.txt", - "op": "s3.complete_multipart", - "parts": [ - { - "etag": "\"fixture-6d60d5bbaa47\"", - "number": 1 - }, - { - "etag": "\"fixture-32b70ae425ac\"", - "number": 2 - } - ], - "upload_id": "fixture-upload+/276ca18046f9=" + "op": "list_page", + "prefix": "" }, "exchanges": [ { @@ -78789,7 +115134,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "GET" } }, { @@ -78797,23 +115142,31 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/space name.txt" + "value": "/fixture" } }, { - "at": "/body_text", + "at": "/body_base64", "optional": false, "rule": { - "is": "xml", - "value": "1\"fixture-6d60d5bbaa47\"2\"fixture-32b70ae425ac\"" + "is": "equal", + "value": "" } }, { - "at": "/query/uploadId", + "at": "/query/list-type", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/276ca18046f9=" + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": true, + "rule": { + "is": "equal", + "value": "" } } ], @@ -78822,17 +115175,16 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 404, "headers": { "content-type": "application/xml", "date": { "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { "encoding": "utf8", - "data": "\nhttps://fixture.invalid/fixture/object-tests/keys/space name.txtfixtureobject-tests/keys/space name.txt"fixture-ae1b6d1d32ce"E0gM19kR9Fk=FULL_OBJECT" + "data": "\nNoSuchBucketFixture error" }, "framing": "chunked" } @@ -78844,7 +115196,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "GET" } }, { @@ -78852,23 +115204,39 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/space name.txt" + "value": "/fixture" } }, { - "at": "/body_text", + "at": "/body_base64", "optional": false, "rule": { - "is": "xml", - "value": "\"fixture-6d60d5bbaa47\"1\"fixture-32b70ae425ac\"2" + "is": "equal", + "value": "" } }, { - "at": "/query/uploadId", + "at": "/query/list-type", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/276ca18046f9=" + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": true, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/encoding-type", + "optional": false, + "rule": { + "is": "equal", + "value": "url" } } ], @@ -78877,17 +115245,16 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 404, "headers": { "content-type": "application/xml", "date": { "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { "encoding": "utf8", - "data": "\nhttps://fixture.invalid/fixture/object-tests/keys/space name.txtfixtureobject-tests/keys/space name.txt"fixture-ae1b6d1d32ce"E0gM19kR9Fk=FULL_OBJECT" + "data": "\nNoSuchBucketThe specified bucket does not existno-such-bucket-object-testsD3APHS8Y67RT769N4yxkwV/1e8tBe6qQpZ/nVXK6SoorCzIGPjfs539Nq5RPVrfpF9lCuc/OPebqgIzKjrXkTAgalEM=" }, "framing": "chunked" } @@ -78901,53 +115268,48 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "error" } }, { - "at": "/value/etag", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-ae1b6d1d32ce\"" + "value": 404 } }, { - "at": "/value/version", - "optional": true, + "at": "/code", + "optional": false, "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "is": "equal", + "value": "NoSuchBucket" + } + }, + { + "at": "/kind", + "optional": false, + "rule": { + "is": "equal", + "value": "container_not_found" } } ], "refusal": null }, { - "id": "operations/s3/commit-key-non-ascii", + "id": "operations/s3/list-delimited", "profile": "s3", "lane": "core", - "purpose": "commit, with the key \"café/雪.txt\"", + "purpose": "Send the delimiter, and report the keys it groups as common prefixes, not as entries", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/keys/café/雪.txt", - "op": "s3.complete_multipart", - "parts": [ - { - "etag": "\"fixture-6d60d5bbaa47\"", - "number": 1 - }, - { - "etag": "\"fixture-32b70ae425ac\"", - "number": 2 - } - ], - "upload_id": "fixture-upload+/276ca18046f9=" + "delimiter": "/", + "op": "list_page", + "prefix": "object-tests/board/" }, "exchanges": [ { @@ -78959,7 +115321,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "GET" } }, { @@ -78967,23 +115329,39 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/café/雪.txt" + "value": "/fixture" } }, { - "at": "/body_text", + "at": "/body_base64", "optional": false, "rule": { - "is": "xml", - "value": "1\"fixture-6d60d5bbaa47\"2\"fixture-32b70ae425ac\"" + "is": "equal", + "value": "" } }, { - "at": "/query/uploadId", + "at": "/query/list-type", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/276ca18046f9=" + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/" + } + }, + { + "at": "/query/delimiter", + "optional": false, + "rule": { + "is": "equal", + "value": "/" } } ], @@ -79002,7 +115380,7 @@ }, "body": { "encoding": "utf8", - "data": "\nhttps://fixture.invalid/fixture/object-tests/keys/café/雪.txtfixtureobject-tests/keys/café/雪.txt"fixture-ae1b6d1d32ce"E0gM19kR9Fk=FULL_OBJECT" + "data": "\nfixtureobject-tests/board/31000/falseobject-tests/board/a.txt2024-01-01T00:00:00.000Z"fixture-1d83e6eb69df"CRC64NVMEFULL_OBJECT8STANDARDobject-tests/board/z.txt2024-01-01T00:00:00.000Z"fixture-4d347fee6a7b"CRC64NVMEFULL_OBJECT2STANDARDobject-tests/board/nested/" }, "framing": "chunked" } @@ -79014,7 +115392,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "GET" } }, { @@ -79022,23 +115400,47 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/café/雪.txt" + "value": "/fixture" } }, { - "at": "/body_text", + "at": "/body_base64", "optional": false, "rule": { - "is": "xml", - "value": "\"fixture-6d60d5bbaa47\"1\"fixture-32b70ae425ac\"2" + "is": "equal", + "value": "" } }, { - "at": "/query/uploadId", + "at": "/query/list-type", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/276ca18046f9=" + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/" + } + }, + { + "at": "/query/delimiter", + "optional": false, + "rule": { + "is": "equal", + "value": "/" + } + }, + { + "at": "/query/encoding-type", + "optional": false, + "rule": { + "is": "equal", + "value": "url" } } ], @@ -79057,7 +115459,7 @@ }, "body": { "encoding": "utf8", - "data": "\nhttps://fixture.invalid/fixture/object-tests/keys/café/雪.txtfixtureobject-tests/keys/café/雪.txt"fixture-ae1b6d1d32ce"E0gM19kR9Fk=FULL_OBJECT" + "data": "\nfixtureobject-tests/board/31000/urlfalseobject-tests/board/a.txt2024-01-01T00:00:00.000Z"fixture-1d83e6eb69df"CRC64NVMEFULL_OBJECT8STANDARDobject-tests/board/z.txt2024-01-01T00:00:00.000Z"fixture-4d347fee6a7b"CRC64NVMEFULL_OBJECT2STANDARDobject-tests/board/nested/" }, "framing": "chunked" } @@ -79067,57 +115469,173 @@ ], "expect": [ { - "at": "/outcome", + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/entries/0/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/a.txt" + } + }, + { + "at": "/value/entries/0/size", + "optional": false, + "rule": { + "is": "equal", + "value": 8 + } + }, + { + "at": "/value/entries/0/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-1d83e6eb69df\"" + } + }, + { + "at": "/value/entries/0/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/1/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/z.txt" + } + }, + { + "at": "/value/entries/1/size", + "optional": false, + "rule": { + "is": "equal", + "value": 2 + } + }, + { + "at": "/value/entries/1/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-4d347fee6a7b\"" + } + }, + { + "at": "/value/entries/1/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/1/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/1/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries", "optional": false, "rule": { - "is": "equal", - "value": "ok" + "is": "array_length", + "value": 2 } }, { - "at": "/value/etag", + "at": "/value/prefixes/0", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-ae1b6d1d32ce\"" + "value": "object-tests/board/nested/" } }, { - "at": "/value/version", - "optional": true, + "at": "/value/prefixes", + "optional": false, "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "is": "array_length", + "value": 1 + } + }, + { + "at": "/value/continuation_token", + "optional": false, + "rule": { + "is": "equal", + "value": "" } } ], "refusal": null }, { - "id": "operations/s3/commit-key-double-slash", + "id": "operations/s3/list-empty", "profile": "s3", "lane": "core", - "purpose": "commit, with the key \"double//slash.txt\"", + "purpose": "Report a prefix with no objects as no entries, no prefixes and an empty continuation token", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/keys/double//slash.txt", - "op": "s3.complete_multipart", - "parts": [ - { - "etag": "\"fixture-6d60d5bbaa47\"", - "number": 1 - }, - { - "etag": "\"fixture-32b70ae425ac\"", - "number": 2 - } - ], - "upload_id": "fixture-upload+/276ca18046f9=" + "op": "list_page", + "prefix": "object-tests/nothing/" }, "exchanges": [ { @@ -79129,7 +115647,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "GET" } }, { @@ -79137,23 +115655,31 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/double//slash.txt" + "value": "/fixture" } }, { - "at": "/body_text", + "at": "/body_base64", "optional": false, "rule": { - "is": "xml", - "value": "1\"fixture-6d60d5bbaa47\"2\"fixture-32b70ae425ac\"" + "is": "equal", + "value": "" } }, { - "at": "/query/uploadId", + "at": "/query/list-type", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/276ca18046f9=" + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/nothing/" } } ], @@ -79172,7 +115698,7 @@ }, "body": { "encoding": "utf8", - "data": "\nhttps://fixture.invalid/fixture/object-tests/keys/double//slash.txtfixtureobject-tests/keys/double//slash.txt"fixture-ae1b6d1d32ce"E0gM19kR9Fk=FULL_OBJECT" + "data": "\nfixtureobject-tests/nothing/01000false" }, "framing": "chunked" } @@ -79184,7 +115710,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "GET" } }, { @@ -79192,23 +115718,39 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/double//slash.txt" + "value": "/fixture" } }, { - "at": "/body_text", + "at": "/body_base64", "optional": false, "rule": { - "is": "xml", - "value": "\"fixture-6d60d5bbaa47\"1\"fixture-32b70ae425ac\"2" + "is": "equal", + "value": "" } }, { - "at": "/query/uploadId", + "at": "/query/list-type", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/276ca18046f9=" + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/nothing/" + } + }, + { + "at": "/query/encoding-type", + "optional": false, + "rule": { + "is": "equal", + "value": "url" } } ], @@ -79227,7 +115769,7 @@ }, "body": { "encoding": "utf8", - "data": "\nhttps://fixture.invalid/fixture/object-tests/keys/double//slash.txtfixtureobject-tests/keys/double//slash.txt"fixture-ae1b6d1d32ce"E0gM19kR9Fk=FULL_OBJECT" + "data": "\nfixtureobject-tests/nothing/01000urlfalse" }, "framing": "chunked" } @@ -79245,49 +115787,43 @@ } }, { - "at": "/value/etag", + "at": "/value/entries", "optional": false, "rule": { - "is": "equal", - "value": "\"fixture-ae1b6d1d32ce\"" + "is": "array_length", + "value": 0 } }, { - "at": "/value/version", - "optional": true, + "at": "/value/prefixes", + "optional": false, "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "is": "array_length", + "value": 0 + } + }, + { + "at": "/value/continuation_token", + "optional": false, + "rule": { + "is": "equal", + "value": "" } } ], "refusal": null }, { - "id": "operations/s3/commit-key-trailing-slash", + "id": "operations/s3/list-all-empty", "profile": "s3", "lane": "core", - "purpose": "commit, with the key \"trailing-slash/\"", + "purpose": "Report an empty bucket as an empty listing", "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html" ], "call": { - "key": "object-tests/keys/trailing-slash/", - "op": "s3.complete_multipart", - "parts": [ - { - "etag": "\"fixture-6d60d5bbaa47\"", - "number": 1 - }, - { - "etag": "\"fixture-32b70ae425ac\"", - "number": 2 - } - ], - "upload_id": "fixture-upload+/276ca18046f9=" + "op": "list", + "prefix": "" }, "exchanges": [ { @@ -79299,7 +115835,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "GET" } }, { @@ -79307,29 +115843,47 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/trailing-slash/" + "value": "/fixture" } }, { - "at": "/body_text", + "at": "/body_base64", "optional": false, "rule": { - "is": "xml", - "value": "1\"fixture-6d60d5bbaa47\"2\"fixture-32b70ae425ac\"" + "is": "equal", + "value": "" } }, { - "at": "/query/uploadId", + "at": "/query/list-type", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/276ca18046f9=" + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": true, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/content-type", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + "application/xml", + "application/octet-stream", + "binary/octet-stream" + ] } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { "status": 200, @@ -79338,11 +115892,13 @@ "date": { "from": "now" }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-amz-request-id": "fixture-request-id" }, "body": { - "encoding": "utf8", - "data": "\nhttps://fixture.invalid/fixture/object-tests/keys/trailing-slash/fixtureobject-tests/keys/trailing-slash/"fixture-ae1b6d1d32ce"E0gM19kR9Fk=FULL_OBJECT" + "encoding": "base64", + "data": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Zml4dHVyZTwvTmFtZT48UHJlZml4PjwvUHJlZml4PjxNYXhLZXlzPjEwMDA8L01heEtleXM+PEtleUNvdW50PjA8L0tleUNvdW50PjxJc1RydW5jYXRlZD5mYWxzZTwvSXNUcnVuY2F0ZWQ+PC9MaXN0QnVja2V0UmVzdWx0Pg==" }, "framing": "chunked" } @@ -79354,7 +115910,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "GET" } }, { @@ -79362,29 +115918,55 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/trailing-slash/" + "value": "/fixture" } }, { - "at": "/body_text", + "at": "/body_base64", "optional": false, "rule": { - "is": "xml", - "value": "\"fixture-6d60d5bbaa47\"1\"fixture-32b70ae425ac\"2" + "is": "equal", + "value": "" } }, { - "at": "/query/uploadId", + "at": "/query/list-type", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/276ca18046f9=" + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": true, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/content-type", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + "application/xml", + "application/octet-stream", + "binary/octet-stream" + ] + } + }, + { + "at": "/query/encoding-type", + "optional": false, + "rule": { + "is": "equal", + "value": "url" } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { "status": 200, @@ -79393,11 +115975,13 @@ "date": { "from": "now" }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-amz-request-id": "fixture-request-id" }, "body": { - "encoding": "utf8", - "data": "\nhttps://fixture.invalid/fixture/object-tests/keys/trailing-slash/fixtureobject-tests/keys/trailing-slash/"fixture-ae1b6d1d32ce"E0gM19kR9Fk=FULL_OBJECT" + "encoding": "base64", + "data": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Zml4dHVyZTwvTmFtZT48UHJlZml4PjwvUHJlZml4PjxNYXhLZXlzPjEwMDA8L01heEtleXM+PEtleUNvdW50PjA8L0tleUNvdW50PjxFbmNvZGluZ1R5cGU+dXJsPC9FbmNvZGluZ1R5cGU+PElzVHJ1bmNhdGVkPmZhbHNlPC9Jc1RydW5jYXRlZD48L0xpc3RCdWNrZXRSZXN1bHQ+" }, "framing": "chunked" } @@ -79415,38 +115999,27 @@ } }, { - "at": "/value/etag", + "at": "/value/keys", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-ae1b6d1d32ce\"" - } - }, - { - "at": "/value/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "value": [] } } ], "refusal": null }, { - "id": "operations/s3/delete-accepted", + "id": "operations/s3/list-xml-escaped", "profile": "s3", "lane": "core", - "purpose": "delete accepted", + "purpose": "Read XML character references in listed names, such as & and <, or ask for encoding-type=url and decode the names", "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html" ], "call": { - "key": "object-tests/remove/present.txt", - "op": "delete" + "op": "list", + "prefix": "" }, "exchanges": [ { @@ -79458,7 +116031,7 @@ "optional": false, "rule": { "is": "equal", - "value": "DELETE" + "value": "GET" } }, { @@ -79466,7 +116039,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/remove/present.txt" + "value": "/fixture" } }, { @@ -79476,56 +116049,56 @@ "is": "equal", "value": "" } + }, + { + "at": "/query/list-type", + "optional": false, + "rule": { + "is": "equal", + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": true, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/content-type", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + "application/xml", + "application/octet-stream", + "binary/octet-stream" + ] + } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 204, + "status": 200, "headers": { + "content-type": "application/xml", "date": { "from": "now" }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-amz-request-id": "fixture-request-id" }, "body": { "encoding": "base64", - "data": "" - } + "data": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Zml4dHVyZTwvTmFtZT48UHJlZml4PjwvUHJlZml4PjxNYXhLZXlzPjEwMDA8L01heEtleXM+PEtleUNvdW50PjI8L0tleUNvdW50PjxJc1RydW5jYXRlZD5mYWxzZTwvSXNUcnVuY2F0ZWQ+PENvbnRlbnRzPjxLZXk+YSZhbXA7YjwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNC0wMS0wMVQwMDowMDowMC4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7Zml4dHVyZSZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb250ZW50cz48S2V5PmMmbHQ7ZDwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNC0wMS0wMVQwMDowMDowMC4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7Zml4dHVyZSZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjwvTGlzdEJ1Y2tldFJlc3VsdD4=" + }, + "framing": "chunked" } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - } - ], - "refusal": null - }, - { - "id": "operations/s3/delete-accepted-key-question", - "profile": "s3", - "lane": "core", - "purpose": "delete accepted, with the key \"question?mark.txt\"", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "key": "object-tests/keys/question?mark.txt", - "op": "delete" - }, - "exchanges": [ - { - "alternatives": [ + }, { "request": [ { @@ -79533,7 +116106,7 @@ "optional": false, "rule": { "is": "equal", - "value": "DELETE" + "value": "GET" } }, { @@ -79541,7 +116114,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/question?mark.txt" + "value": "/fixture" } }, { @@ -79551,24 +116124,62 @@ "is": "equal", "value": "" } + }, + { + "at": "/query/list-type", + "optional": false, + "rule": { + "is": "equal", + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": true, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/content-type", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + "application/xml", + "application/octet-stream", + "binary/octet-stream" + ] + } + }, + { + "at": "/query/encoding-type", + "optional": false, + "rule": { + "is": "equal", + "value": "url" + } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 204, + "status": 200, "headers": { + "content-type": "application/xml", "date": { "from": "now" }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-amz-request-id": "fixture-request-id" }, "body": { "encoding": "base64", - "data": "" - } + "data": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Zml4dHVyZTwvTmFtZT48UHJlZml4PjwvUHJlZml4PjxNYXhLZXlzPjEwMDA8L01heEtleXM+PEtleUNvdW50PjI8L0tleUNvdW50PjxFbmNvZGluZ1R5cGU+dXJsPC9FbmNvZGluZ1R5cGU+PElzVHJ1bmNhdGVkPmZhbHNlPC9Jc1RydW5jYXRlZD48Q29udGVudHM+PEtleT5hJTI2YjwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNC0wMS0wMVQwMDowMDowMC4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7Zml4dHVyZSZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb250ZW50cz48S2V5PmMlM0NkPC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTAxLTAxVDAwOjAwOjAwLjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDtmaXh0dXJlJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PC9MaXN0QnVja2V0UmVzdWx0Pg==" + }, + "framing": "chunked" } } ] @@ -79582,21 +116193,32 @@ "is": "equal", "value": "ok" } + }, + { + "at": "/value/keys", + "optional": false, + "rule": { + "is": "equal", + "value": [ + "a&b", + "c\nfixtureobject-tests/names/101000falseobject-tests/names/100%-name.txt2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/names/a&b.txt2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/names/back\\slash.txt2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/names/café.txt2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/names/ctrl.txt2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/names/hash#tag.txt2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/names/percent%20.txt2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/names/plus+plus.txt2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/names/q?mark.txt2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/names/space name.txt2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARD" + }, + "framing": "chunked" } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - } - ], - "refusal": null - }, - { - "id": "operations/s3/delete-accepted-key-percent", - "profile": "s3", - "lane": "core", - "purpose": "delete accepted, with the key \"percent%20.txt\"", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "key": "object-tests/keys/percent%20.txt", - "op": "delete" - }, - "exchanges": [ - { - "alternatives": [ + }, { "request": [ { @@ -79683,7 +116293,7 @@ "optional": false, "rule": { "is": "equal", - "value": "DELETE" + "value": "GET" } }, { @@ -79691,7 +116301,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/percent%20.txt" + "value": "/fixture" } }, { @@ -79701,6 +116311,30 @@ "is": "equal", "value": "" } + }, + { + "at": "/query/list-type", + "optional": false, + "rule": { + "is": "equal", + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/names/" + } + }, + { + "at": "/query/encoding-type", + "optional": false, + "rule": { + "is": "equal", + "value": "url" + } } ], "allow_headers": [ @@ -79708,17 +116342,19 @@ ], "allow_query": [], "response": { - "status": 204, + "status": 200, "headers": { + "content-type": "application/xml", "date": { "from": "now" }, "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "" - } + "encoding": "utf8", + "data": "\nfixtureobject-tests/names/101000urlfalseobject-tests/names/100%25-name.txt2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/names/a%26b.txt2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/names/back%5Cslash.txt2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/names/caf%C3%A9.txt2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/names/ctrl%01.txt2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/names/hash%23tag.txt2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/names/percent%2520.txt2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/names/plus%2Bplus.txt2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/names/q%3Fmark.txt2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/names/space+name.txt2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARD" + }, + "framing": "chunked" } } ] @@ -79726,252 +116362,622 @@ ], "expect": [ { - "at": "/outcome", + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/entries/0/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/names/100%-name.txt" + } + }, + { + "at": "/value/entries/0/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/0/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-6c30b210f0a8\"" + } + }, + { + "at": "/value/entries/0/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/1/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/names/a&b.txt" + } + }, + { + "at": "/value/entries/1/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/1/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-6c30b210f0a8\"" + } + }, + { + "at": "/value/entries/1/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/1/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/1/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/2/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/names/back\\slash.txt" + } + }, + { + "at": "/value/entries/2/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/2/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-6c30b210f0a8\"" + } + }, + { + "at": "/value/entries/2/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/2/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/2/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/3/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/names/café.txt" + } + }, + { + "at": "/value/entries/3/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/3/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-6c30b210f0a8\"" + } + }, + { + "at": "/value/entries/3/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/3/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/3/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/4/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/names/ctrl\u0001.txt" + } + }, + { + "at": "/value/entries/4/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/4/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-6c30b210f0a8\"" + } + }, + { + "at": "/value/entries/4/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/4/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/4/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/5/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/names/hash#tag.txt" + } + }, + { + "at": "/value/entries/5/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/5/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-6c30b210f0a8\"" + } + }, + { + "at": "/value/entries/5/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/5/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/5/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/6/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/names/percent%20.txt" + } + }, + { + "at": "/value/entries/6/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/6/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-6c30b210f0a8\"" + } + }, + { + "at": "/value/entries/6/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/6/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/6/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/7/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/names/plus+plus.txt" + } + }, + { + "at": "/value/entries/7/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/7/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-6c30b210f0a8\"" + } + }, + { + "at": "/value/entries/7/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/7/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/7/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/8/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/names/q?mark.txt" + } + }, + { + "at": "/value/entries/8/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/8/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-6c30b210f0a8\"" + } + }, + { + "at": "/value/entries/8/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/8/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/8/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/9/key", "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "object-tests/names/space name.txt" } - } - ], - "refusal": null - }, - { - "id": "operations/s3/delete-accepted-key-plus", - "profile": "s3", - "lane": "core", - "purpose": "delete accepted, with the key \"plus+plus.txt\"", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "key": "object-tests/keys/plus+plus.txt", - "op": "delete" - }, - "exchanges": [ + }, { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "DELETE" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/keys/plus+plus.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 204, - "headers": { - "date": { - "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" - }, - "body": { - "encoding": "base64", - "data": "" - } - } - } - ] - } - ], - "expect": [ + "at": "/value/entries/9/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, { - "at": "/outcome", + "at": "/value/entries/9/etag", "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "\"fixture-6c30b210f0a8\"" } - } - ], - "refusal": null - }, - { - "id": "operations/s3/delete-accepted-key-space", - "profile": "s3", - "lane": "core", - "purpose": "delete accepted, with the key \"space name.txt\"", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "key": "object-tests/keys/space name.txt", - "op": "delete" - }, - "exchanges": [ + }, { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "DELETE" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/keys/space name.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 204, - "headers": { - "date": { - "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" - }, - "body": { - "encoding": "base64", - "data": "" - } - } - } - ] - } - ], - "expect": [ + "at": "/value/entries/9/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, { - "at": "/outcome", + "at": "/value/entries/9/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/9/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries", "optional": false, "rule": { - "is": "equal", - "value": "ok" + "is": "array_length", + "value": 10 } - } - ], - "refusal": null - }, - { - "id": "operations/s3/delete-accepted-key-non-ascii", - "profile": "s3", - "lane": "core", - "purpose": "delete accepted, with the key \"café/雪.txt\"", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "key": "object-tests/keys/café/雪.txt", - "op": "delete" - }, - "exchanges": [ + }, { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "DELETE" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/keys/café/雪.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 204, - "headers": { - "date": { - "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" - }, - "body": { - "encoding": "base64", - "data": "" - } - } - } - ] - } - ], - "expect": [ + "at": "/value/prefixes", + "optional": false, + "rule": { + "is": "array_length", + "value": 0 + } + }, { - "at": "/outcome", + "at": "/value/continuation_token", "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "" } } ], "refusal": null }, { - "id": "operations/s3/delete-accepted-key-double-slash", + "id": "operations/s3/list-first-page", "profile": "s3", "lane": "core", - "purpose": "delete accepted, with the key \"double//slash.txt\"", + "purpose": "Send page_size as max-keys, and report a truncated page's NextContinuationToken as the continuation token", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/keys/double//slash.txt", - "op": "delete" + "op": "list_page", + "page_size": 2, + "prefix": "object-tests/board/" }, "exchanges": [ { @@ -79983,7 +116989,7 @@ "optional": false, "rule": { "is": "equal", - "value": "DELETE" + "value": "GET" } }, { @@ -79991,7 +116997,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/double//slash.txt" + "value": "/fixture" } }, { @@ -80001,80 +117007,29 @@ "is": "equal", "value": "" } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 204, - "headers": { - "date": { - "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, - "body": { - "encoding": "base64", - "data": "" - } - } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - } - ], - "refusal": null - }, - { - "id": "operations/s3/delete-accepted-key-trailing-slash", - "profile": "s3", - "lane": "core", - "purpose": "delete accepted, with the key \"trailing-slash/\"", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "key": "object-tests/keys/trailing-slash/", - "op": "delete" - }, - "exchanges": [ - { - "alternatives": [ - { - "request": [ { - "at": "/method", + "at": "/query/list-type", "optional": false, "rule": { "is": "equal", - "value": "DELETE" + "value": "2" } }, { - "at": "/path", + "at": "/query/prefix", "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/trailing-slash/" + "value": "object-tests/board/" } }, { - "at": "/body_base64", + "at": "/query/max-keys", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "2" } } ], @@ -80083,49 +117038,21 @@ ], "allow_query": [], "response": { - "status": 204, + "status": 200, "headers": { + "content-type": "application/xml", "date": { "from": "now" }, "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "" - } + "encoding": "utf8", + "data": "\nfixtureobject-tests/board/fixture-marker+/e389f71e4c3c=22trueobject-tests/board/a.txt2024-01-01T00:00:00.000Z"fixture-1d83e6eb69df"CRC64NVMEFULL_OBJECT8STANDARDobject-tests/board/nested/c.txt2024-01-01T00:00:00.000Z"fixture-a1cfb9bcbc61"CRC64NVMEFULL_OBJECT1STANDARD" + }, + "framing": "chunked" } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - } - ], - "refusal": null - }, - { - "id": "operations/s3/delete-bucket", - "profile": "s3", - "lane": "core", - "purpose": "Delete an empty bucket", - "sources": [ - "https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucket.html" - ], - "call": { - "bucket": "object-tests-deleted", - "op": "s3.delete_bucket" - }, - "exchanges": [ - { - "alternatives": [ + }, { "request": [ { @@ -80133,7 +117060,7 @@ "optional": false, "rule": { "is": "equal", - "value": "DELETE" + "value": "GET" } }, { @@ -80141,7 +117068,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests-deleted" + "value": "/fixture" } }, { @@ -80151,98 +117078,37 @@ "is": "equal", "value": "" } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 204, - "headers": { - "date": { - "from": "now" - } }, - "body": { - "encoding": "empty" - } - } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - } - ], - "refusal": null - }, - { - "id": "operations/s3/delete-many", - "profile": "s3", - "lane": "core", - "purpose": "Delete several objects in one request and report each result", - "sources": [ - "https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjects.html" - ], - "call": { - "keys": [ - "object-tests/batch/a.txt", - "object-tests/batch/b.txt", - "object-tests/batch/absent.txt" - ], - "op": "delete_many" - }, - "exchanges": [ - { - "alternatives": [ - { - "request": [ { - "at": "/method", + "at": "/query/list-type", "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "2" } }, { - "at": "/path", + "at": "/query/prefix", "optional": false, "rule": { "is": "equal", - "value": "/fixture" - } - }, - { - "at": "/body_text", - "optional": false, - "rule": { - "is": "xml", - "value": "object-tests/batch/a.txtobject-tests/batch/b.txtobject-tests/batch/absent.txt" + "value": "object-tests/board/" } }, { - "at": "/query/delete", + "at": "/query/max-keys", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "2" } }, { - "at": "/headers/x-amz-checksum-crc64nvme", + "at": "/query/encoding-type", "optional": false, "rule": { - "is": "matches", - "pattern": "[A-Za-z0-9+/]{11}=" + "is": "equal", + "value": "url" } } ], @@ -80256,11 +117122,12 @@ "content-type": "application/xml", "date": { "from": "now" - } + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "utf8", - "data": "\nobject-tests/batch/a.txtobject-tests/batch/b.txtobject-tests/batch/absent.txt" + "data": "\nfixtureobject-tests/board/fixture-marker+/e389f71e4c3c=22urltrueobject-tests/board/a.txt2024-01-01T00:00:00.000Z"fixture-1d83e6eb69df"CRC64NVMEFULL_OBJECT8STANDARDobject-tests/board/nested/c.txt2024-01-01T00:00:00.000Z"fixture-a1cfb9bcbc61"CRC64NVMEFULL_OBJECT1STANDARD" }, "framing": "chunked" } @@ -80278,387 +117145,159 @@ } }, { - "at": "/value/deleted", + "at": "/value/entries/0/key", "optional": false, "rule": { "is": "equal", - "value": [ - "object-tests/batch/a.txt", - "object-tests/batch/b.txt", - "object-tests/batch/absent.txt" - ] + "value": "object-tests/board/a.txt" } }, { - "at": "/value/errors", + "at": "/value/entries/0/size", "optional": false, "rule": { "is": "equal", - "value": [] + "value": 8 } - } - ], - "refusal": null - }, - { - "id": "operations/s3/delete-slow-down", - "profile": "s3", - "lane": "core", - "purpose": "Report a 503 SlowDown answer as an error, after at most 5 retries", - "sources": [ - "https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html" - ], - "origin": "transient", - "call": { - "key": "object-tests/remove/present.txt", - "op": "delete" - }, - "exchanges": [ - { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "DELETE" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/remove/present.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 503, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - } - }, - "body": { - "encoding": "utf8", - "data": "\nSlowDownPlease reduce your request rate.fixture" - }, - "framing": "chunked" - } - } - ] }, { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "DELETE" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/remove/present.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 503, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - } - }, - "body": { - "encoding": "utf8", - "data": "\nSlowDownPlease reduce your request rate.fixture" - }, - "framing": "chunked" - } - } - ], - "optional": true + "at": "/value/entries/0/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-1d83e6eb69df\"" + } }, { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "DELETE" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/remove/present.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 503, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - } - }, - "body": { - "encoding": "utf8", - "data": "\nSlowDownPlease reduce your request rate.fixture" - }, - "framing": "chunked" - } - } - ], - "optional": true + "at": "/value/entries/0/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } }, { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "DELETE" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/remove/present.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 503, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - } - }, - "body": { - "encoding": "utf8", - "data": "\nSlowDownPlease reduce your request rate.fixture" - }, - "framing": "chunked" - } - } - ], - "optional": true + "at": "/value/entries/0/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } }, { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "DELETE" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/remove/present.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 503, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - } - }, - "body": { - "encoding": "utf8", - "data": "\nSlowDownPlease reduce your request rate.fixture" - }, - "framing": "chunked" - } - } - ], - "optional": true + "at": "/value/entries/0/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } }, { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "DELETE" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/remove/present.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 503, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - } - }, - "body": { - "encoding": "utf8", - "data": "\nSlowDownPlease reduce your request rate.fixture" - }, - "framing": "chunked" - } - } - ], - "optional": true - } - ], - "expect": [ + "at": "/value/entries/1/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/nested/c.txt" + } + }, { - "at": "/outcome", + "at": "/value/entries/1/size", "optional": false, "rule": { "is": "equal", - "value": "error" + "value": 1 } }, { - "at": "/status", + "at": "/value/entries/1/etag", "optional": false, "rule": { "is": "equal", - "value": 503 + "value": "\"fixture-a1cfb9bcbc61\"" } }, { - "at": "/code", + "at": "/value/entries/1/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/1/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/1/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries", + "optional": false, + "rule": { + "is": "array_length", + "value": 2 + } + }, + { + "at": "/value/prefixes", + "optional": false, + "rule": { + "is": "array_length", + "value": 0 + } + }, + { + "at": "/value/continuation_token", "optional": false, "rule": { "is": "equal", - "value": "SlowDown" + "value": "fixture-marker+/e389f71e4c3c=" } } ], "refusal": null }, { - "id": "operations/s3/delete-bucket-missing", + "id": "operations/s3/list-service-unavailable", "profile": "s3", "lane": "core", - "purpose": "delete bucket missing", + "purpose": "Report a 503 ServiceUnavailable answer as an error, after at most 5 retries", "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + "https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html" ], + "origin": "transient", "call": { - "key": "object.txt", - "op": "delete" + "op": "list_page", + "page_size": 2, + "prefix": "object-tests/board/" }, "exchanges": [ { @@ -80670,7 +117309,7 @@ "optional": false, "rule": { "is": "equal", - "value": "DELETE" + "value": "GET" } }, { @@ -80678,7 +117317,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object.txt" + "value": "/fixture" } }, { @@ -80688,6 +117327,30 @@ "is": "equal", "value": "" } + }, + { + "at": "/query/list-type", + "optional": false, + "rule": { + "is": "equal", + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/" + } + }, + { + "at": "/query/max-keys", + "optional": false, + "rule": { + "is": "equal", + "value": "2" + } } ], "allow_headers": [ @@ -80695,67 +117358,20 @@ ], "allow_query": [], "response": { - "status": 404, + "status": 503, "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - } - }, - "body": { - "encoding": "utf8", - "data": "\nNoSuchBucketFixture error" - }, - "framing": "chunked" - } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 404 - } - }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "equal", - "value": "NoSuchBucket" - } - } - ], - "refusal": null - }, - { - "id": "operations/s3/delete-if-match-current", - "profile": "s3", - "lane": "core", - "purpose": "delete if match current", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "if_match": "\"fixture-6c30b210f0a8\"", - "key": "object-tests/remove/conditional.txt", - "op": "delete" - }, - "exchanges": [ - { - "alternatives": [ + "content-type": "application/xml", + "date": { + "from": "now" + } + }, + "body": { + "encoding": "utf8", + "data": "\nServiceUnavailablePlease reduce your request rate.fixture" + }, + "framing": "chunked" + } + }, { "request": [ { @@ -80763,7 +117379,7 @@ "optional": false, "rule": { "is": "equal", - "value": "DELETE" + "value": "GET" } }, { @@ -80771,7 +117387,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/remove/conditional.txt" + "value": "/fixture" } }, { @@ -80783,86 +117399,35 @@ } }, { - "at": "/headers/if-match", + "at": "/query/list-type", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-6c30b210f0a8\"" + "value": "2" } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 204, - "headers": { - "date": { - "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, - "body": { - "encoding": "base64", - "data": "" - } - } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - } - ], - "refusal": null - }, - { - "id": "operations/s3/delete-missing", - "profile": "s3", - "lane": "core", - "purpose": "delete missing", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "key": "object-tests/remove/absent.txt", - "op": "delete" - }, - "exchanges": [ - { - "alternatives": [ - { - "request": [ { - "at": "/method", + "at": "/query/prefix", "optional": false, "rule": { "is": "equal", - "value": "DELETE" + "value": "object-tests/board/" } }, { - "at": "/path", + "at": "/query/max-keys", "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/remove/absent.txt" + "value": "2" } }, { - "at": "/body_base64", + "at": "/query/encoding-type", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "url" } } ], @@ -80871,48 +117436,22 @@ ], "allow_query": [], "response": { - "status": 204, + "status": 503, "headers": { + "content-type": "application/xml", "date": { "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { - "encoding": "base64", - "data": "" - } + "encoding": "utf8", + "data": "\nServiceUnavailablePlease reduce your request rate.fixture" + }, + "framing": "chunked" } } ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - } - ], - "refusal": null - }, - { - "id": "operations/s3/delete-precondition-failed", - "profile": "s3", - "lane": "core", - "purpose": "delete precondition failed", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "if_match": "\"fixture-db71b2c0257c\"", - "key": "object-tests/remove/conditional.txt", - "op": "delete" - }, - "exchanges": [ + }, { "alternatives": [ { @@ -80922,7 +117461,7 @@ "optional": false, "rule": { "is": "equal", - "value": "DELETE" + "value": "GET" } }, { @@ -80930,7 +117469,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/remove/conditional.txt" + "value": "/fixture" } }, { @@ -80942,11 +117481,27 @@ } }, { - "at": "/headers/if-match", + "at": "/query/list-type", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-db71b2c0257c\"" + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/" + } + }, + { + "at": "/query/max-keys", + "optional": false, + "rule": { + "is": "equal", + "value": "2" } } ], @@ -80955,7 +117510,7 @@ ], "allow_query": [], "response": { - "status": 412, + "status": 503, "headers": { "content-type": "application/xml", "date": { @@ -80964,57 +117519,11 @@ }, "body": { "encoding": "utf8", - "data": "\nPreconditionFailedFixture error" + "data": "\nServiceUnavailablePlease reduce your request rate.fixture" }, "framing": "chunked" } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 412 - } - }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "equal", - "value": "PreconditionFailed" - } - } - ], - "refusal": null - }, - { - "id": "operations/s3/delete-unauthenticated", - "profile": "s3", - "lane": "core", - "purpose": "Report the service authorization error for this operation; signature acceptance is tested separately.", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "key": "object-tests/remove/absent.txt", - "op": "delete" - }, - "exchanges": [ - { - "alternatives": [ + }, { "request": [ { @@ -81022,7 +117531,7 @@ "optional": false, "rule": { "is": "equal", - "value": "DELETE" + "value": "GET" } }, { @@ -81030,7 +117539,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/remove/absent.txt" + "value": "/fixture" } }, { @@ -81040,6 +117549,38 @@ "is": "equal", "value": "" } + }, + { + "at": "/query/list-type", + "optional": false, + "rule": { + "is": "equal", + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/" + } + }, + { + "at": "/query/max-keys", + "optional": false, + "rule": { + "is": "equal", + "value": "2" + } + }, + { + "at": "/query/encoding-type", + "optional": false, + "rule": { + "is": "equal", + "value": "url" + } } ], "allow_headers": [ @@ -81047,7 +117588,7 @@ ], "allow_query": [], "response": { - "status": 403, + "status": 503, "headers": { "content-type": "application/xml", "date": { @@ -81056,55 +117597,14 @@ }, "body": { "encoding": "utf8", - "data": "\nInvalidAccessKeyIdFixture error" + "data": "\nServiceUnavailablePlease reduce your request rate.fixture" }, "framing": "chunked" } } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 403 - } + ], + "optional": true }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "equal", - "value": "InvalidAccessKeyId" - } - } - ], - "refusal": null - }, - { - "id": "operations/s3/get-before-commit", - "profile": "s3", - "lane": "core", - "purpose": "get before commit", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "key": "object-tests/multipart/object.bin", - "op": "get" - }, - "exchanges": [ { "alternatives": [ { @@ -81122,7 +117622,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/object.bin" + "value": "/fixture" } }, { @@ -81132,6 +117632,30 @@ "is": "equal", "value": "" } + }, + { + "at": "/query/list-type", + "optional": false, + "rule": { + "is": "equal", + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/" + } + }, + { + "at": "/query/max-keys", + "optional": false, + "rule": { + "is": "equal", + "value": "2" + } } ], "allow_headers": [ @@ -81139,7 +117663,7 @@ ], "allow_query": [], "response": { - "status": 404, + "status": 503, "headers": { "content-type": "application/xml", "date": { @@ -81148,7 +117672,7 @@ }, "body": { "encoding": "utf8", - "data": "\nNoSuchKeyFixture error" + "data": "\nServiceUnavailablePlease reduce your request rate.fixture" }, "framing": "chunked" } @@ -81168,7 +117692,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/object.bin" + "value": "/fixture" } }, { @@ -81180,11 +117704,35 @@ } }, { - "at": "/headers/range", + "at": "/query/list-type", "optional": false, "rule": { - "is": "matches", - "pattern": "bytes=0-[1-9][0-9]{2,}" + "is": "equal", + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/" + } + }, + { + "at": "/query/max-keys", + "optional": false, + "rule": { + "is": "equal", + "value": "2" + } + }, + { + "at": "/query/encoding-type", + "optional": false, + "rule": { + "is": "equal", + "value": "url" } } ], @@ -81193,7 +117741,7 @@ ], "allow_query": [], "response": { - "status": 404, + "status": 503, "headers": { "content-type": "application/xml", "date": { @@ -81202,55 +117750,14 @@ }, "body": { "encoding": "utf8", - "data": "\nNoSuchKeyFixture error" + "data": "\nServiceUnavailablePlease reduce your request rate.fixture" }, "framing": "chunked" } } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 404 - } + ], + "optional": true }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "equal", - "value": "NoSuchKey" - } - } - ], - "refusal": null - }, - { - "id": "operations/s3/get-bucket-missing", - "profile": "s3", - "lane": "core", - "purpose": "get bucket missing", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "key": "object.txt", - "op": "get" - }, - "exchanges": [ { "alternatives": [ { @@ -81268,7 +117775,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object.txt" + "value": "/fixture" } }, { @@ -81278,6 +117785,30 @@ "is": "equal", "value": "" } + }, + { + "at": "/query/list-type", + "optional": false, + "rule": { + "is": "equal", + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/" + } + }, + { + "at": "/query/max-keys", + "optional": false, + "rule": { + "is": "equal", + "value": "2" + } } ], "allow_headers": [ @@ -81285,7 +117816,7 @@ ], "allow_query": [], "response": { - "status": 404, + "status": 503, "headers": { "content-type": "application/xml", "date": { @@ -81294,7 +117825,7 @@ }, "body": { "encoding": "utf8", - "data": "\nNoSuchBucketFixture error" + "data": "\nServiceUnavailablePlease reduce your request rate.fixture" }, "framing": "chunked" } @@ -81314,7 +117845,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object.txt" + "value": "/fixture" } }, { @@ -81326,11 +117857,35 @@ } }, { - "at": "/headers/range", + "at": "/query/list-type", "optional": false, "rule": { - "is": "matches", - "pattern": "bytes=0-[1-9][0-9]{2,}" + "is": "equal", + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/" + } + }, + { + "at": "/query/max-keys", + "optional": false, + "rule": { + "is": "equal", + "value": "2" + } + }, + { + "at": "/query/encoding-type", + "optional": false, + "rule": { + "is": "equal", + "value": "url" } } ], @@ -81339,7 +117894,7 @@ ], "allow_query": [], "response": { - "status": 404, + "status": 503, "headers": { "content-type": "application/xml", "date": { @@ -81348,58 +117903,14 @@ }, "body": { "encoding": "utf8", - "data": "\nNoSuchBucketFixture error" + "data": "\nServiceUnavailablePlease reduce your request rate.fixture" }, "framing": "chunked" } } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 404 - } + ], + "optional": true }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "equal", - "value": "NoSuchBucket" - } - } - ], - "refusal": null - }, - { - "id": "operations/s3/get-committed-tail", - "profile": "s3", - "lane": "core", - "purpose": "get committed tail", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "key": "object-tests/multipart/object.bin", - "op": "get", - "range": { - "suffix": 10 - } - }, - "exchanges": [ { "alternatives": [ { @@ -81417,7 +117928,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/object.bin" + "value": "/fixture" } }, { @@ -81429,11 +117940,27 @@ } }, { - "at": "/headers/range", + "at": "/query/list-type", "optional": false, "rule": { "is": "equal", - "value": "bytes=-10" + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/" + } + }, + { + "at": "/query/max-keys", + "optional": false, + "rule": { + "is": "equal", + "value": "2" } } ], @@ -81442,30 +117969,36 @@ ], "allow_query": [], "response": { - "status": 206, + "status": 503, "headers": { - "content-range": "bytes 5242876-5242885/5242886", - "content-type": "binary/octet-stream", + "content-type": "application/xml", "date": { "from": "now" - }, - "etag": "\"fixture-ae1b6d1d32ce\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { - "encoding": "base64", - "data": "Y2RlZnNlY29uZA==" - } + "encoding": "utf8", + "data": "\nServiceUnavailablePlease reduce your request rate.fixture" + }, + "framing": "chunked" } }, { "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, { "at": "/path", "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/object.bin" + "value": "/fixture" } }, { @@ -81477,90 +118010,36 @@ } }, { - "at": "/headers/range", + "at": "/query/list-type", "optional": false, "rule": { "is": "equal", - "value": "bytes=-10" + "value": "2" } }, { - "at": "/method", + "at": "/query/prefix", "optional": false, "rule": { "is": "equal", - "value": "HEAD" + "value": "object-tests/board/" } - } - ], - "then": [ + }, { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/multipart/object.bin" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/headers/range", - "optional": false, - "rule": { - "is": "equal", - "value": "bytes=5242876-5242885" - } - }, - { - "at": "/headers/if-match", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-ae1b6d1d32ce\"" - } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 206, - "headers": { - "content-range": "bytes 5242876-5242885/5242886", - "content-type": "binary/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-ae1b6d1d32ce\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" - }, - "body": { - "encoding": "base64", - "data": "Y2RlZnNlY29uZA==" - } - } - } - ] + "at": "/query/max-keys", + "optional": false, + "rule": { + "is": "equal", + "value": "2" + } + }, + { + "at": "/query/encoding-type", + "optional": false, + "rule": { + "is": "equal", + "value": "url" + } } ], "allow_headers": [ @@ -81568,93 +118047,23 @@ ], "allow_query": [], "response": { - "status": 206, + "status": 503, "headers": { - "content-length": "10", - "content-range": "bytes 5242876-5242885/5242886", - "content-type": "binary/octet-stream", + "content-type": "application/xml", "date": { "from": "now" - }, - "etag": "\"fixture-ae1b6d1d32ce\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { - "encoding": "empty" - } + "encoding": "utf8", + "data": "\nServiceUnavailablePlease reduce your request rate.fixture" + }, + "framing": "chunked" } } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-ae1b6d1d32ce\"" - } - }, - { - "at": "/value/size", - "optional": false, - "rule": { - "is": "equal", - "value": 10 - } - }, - { - "at": "/value/content_type", - "optional": false, - "rule": { - "is": "equal", - "value": "binary/octet-stream" - } - }, - { - "at": "/value/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } + ], + "optional": true }, - { - "at": "/value/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "Y2RlZnNlY29uZA==" - } - } - ], - "refusal": null - }, - { - "id": "operations/s3/get-empty", - "profile": "s3", - "lane": "core", - "purpose": "get empty", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "key": "object-tests/write/empty.bin", - "op": "get" - }, - "exchanges": [ { "alternatives": [ { @@ -81672,7 +118081,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/write/empty.bin" + "value": "/fixture" } }, { @@ -81682,189 +118091,47 @@ "is": "equal", "value": "" } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-type": "binary/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-7d64e1430626\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, - "body": { - "encoding": "base64", - "data": "" - } - } - }, - { - "request": [ { - "at": "/method", + "at": "/query/list-type", "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "2" } }, { - "at": "/path", + "at": "/query/prefix", "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/write/empty.bin" + "value": "object-tests/board/" } }, { - "at": "/body_base64", + "at": "/query/max-keys", "optional": false, "rule": { "is": "equal", - "value": "" - } - }, - { - "at": "/headers/range", - "optional": false, - "rule": { - "is": "matches", - "pattern": "bytes=0-[1-9][0-9]{2,}" + "value": "2" } } ], - "then": [ - { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/write/empty.bin" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-type": "binary/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-7d64e1430626\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" - }, - "body": { - "encoding": "base64", - "data": "" - } - } - }, - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/write/empty.bin" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/query/partNumber", - "optional": false, - "rule": { - "is": "equal", - "value": "1" - } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-type": "binary/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-7d64e1430626\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" - }, - "body": { - "encoding": "base64", - "data": "" - } - } - } - ] - } - ], "allow_headers": [ "content-type" ], "allow_query": [], "response": { - "status": 416, + "status": 503, "headers": { - "content-range": "bytes */0", "content-type": "application/xml", "date": { "from": "now" - }, - "etag": "\"fixture-7d64e1430626\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { "encoding": "utf8", - "data": "\nInvalidRangeEmpty object0" + "data": "\nServiceUnavailablePlease reduce your request rate.fixture" }, "framing": "chunked" } @@ -81884,7 +118151,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/write/empty.bin" + "value": "/fixture" } }, { @@ -81896,11 +118163,35 @@ } }, { - "at": "/query/partNumber", + "at": "/query/list-type", "optional": false, "rule": { "is": "equal", - "value": "1" + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/" + } + }, + { + "at": "/query/max-keys", + "optional": false, + "rule": { + "is": "equal", + "value": "2" + } + }, + { + "at": "/query/encoding-type", + "optional": false, + "rule": { + "is": "equal", + "value": "url" } } ], @@ -81909,22 +118200,22 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 503, "headers": { - "content-type": "binary/octet-stream", + "content-type": "application/xml", "date": { "from": "now" - }, - "etag": "\"fixture-7d64e1430626\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { - "encoding": "base64", - "data": "" - } + "encoding": "utf8", + "data": "\nServiceUnavailablePlease reduce your request rate.fixture" + }, + "framing": "chunked" } } - ] + ], + "optional": true } ], "expect": [ @@ -81933,67 +118224,40 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-7d64e1430626\"" - } - }, - { - "at": "/value/size", - "optional": false, - "rule": { - "is": "equal", - "value": 0 + "value": "error" } }, { - "at": "/value/content_type", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "binary/octet-stream" - } - }, - { - "at": "/value/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "value": 503 } }, { - "at": "/value/body_base64", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "ServiceUnavailable" } } ], "refusal": null }, { - "id": "operations/s3/get-if-match-current", + "id": "operations/s3/list-key-equal-to-prefix-delimited", "profile": "s3", "lane": "core", - "purpose": "get if match current", + "purpose": "Report a key that equals the prefix as an entry, and the keys under it as a common prefix", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "if_match": "\"fixture-ad03f2ab332a\"", - "key": "object-tests/read/object.txt", - "op": "get" + "delimiter": "/", + "op": "list_page", + "prefix": "object-tests/exact" }, "exchanges": [ { @@ -82013,7 +118277,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "/fixture" } }, { @@ -82025,11 +118289,27 @@ } }, { - "at": "/headers/if-match", + "at": "/query/list-type", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-ad03f2ab332a\"" + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/exact" + } + }, + { + "at": "/query/delimiter", + "optional": false, + "rule": { + "is": "equal", + "value": "/" } } ], @@ -82040,17 +118320,17 @@ "response": { "status": 200, "headers": { - "content-type": "binary/octet-stream", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-ad03f2ab332a\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, - "body": { - "encoding": "base64", - "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" - } + "body": { + "encoding": "utf8", + "data": "\nfixtureobject-tests/exact21000/falseobject-tests/exact2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/exact/" + }, + "framing": "chunked" } }, { @@ -82068,7 +118348,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "/fixture" } }, { @@ -82080,19 +118360,35 @@ } }, { - "at": "/headers/if-match", + "at": "/query/list-type", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-ad03f2ab332a\"" + "value": "2" } }, { - "at": "/headers/range", + "at": "/query/prefix", "optional": false, "rule": { - "is": "matches", - "pattern": "bytes=0-[1-9][0-9]{2,}" + "is": "equal", + "value": "object-tests/exact" + } + }, + { + "at": "/query/delimiter", + "optional": false, + "rule": { + "is": "equal", + "value": "/" + } + }, + { + "at": "/query/encoding-type", + "optional": false, + "rule": { + "is": "equal", + "value": "url" } } ], @@ -82101,20 +118397,19 @@ ], "allow_query": [], "response": { - "status": 206, + "status": 200, "headers": { - "content-range": "bytes 0-29/30", - "content-type": "binary/octet-stream", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-ad03f2ab332a\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" - } + "encoding": "utf8", + "data": "\nfixtureobject-tests/exact21000/urlfalseobject-tests/exact2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/exact/" + }, + "framing": "chunked" } } ] @@ -82130,31 +118425,31 @@ } }, { - "at": "/value/etag", + "at": "/value/entries/0/key", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-ad03f2ab332a\"" + "value": "object-tests/exact" } }, { - "at": "/value/size", + "at": "/value/entries/0/size", "optional": false, "rule": { "is": "equal", - "value": 30 + "value": 1 } }, { - "at": "/value/content_type", + "at": "/value/entries/0/etag", "optional": false, "rule": { "is": "equal", - "value": "binary/octet-stream" + "value": "\"fixture-6c30b210f0a8\"" } }, { - "at": "/value/version", + "at": "/value/entries/0/snapshot", "optional": true, "rule": { "is": "one_of", @@ -82165,28 +118460,73 @@ } }, { - "at": "/value/body_base64", + "at": "/value/entries/0/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries", + "optional": false, + "rule": { + "is": "array_length", + "value": 1 + } + }, + { + "at": "/value/prefixes/0", "optional": false, "rule": { "is": "equal", - "value": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + "value": "object-tests/exact/" + } + }, + { + "at": "/value/prefixes", + "optional": false, + "rule": { + "is": "array_length", + "value": 1 + } + }, + { + "at": "/value/continuation_token", + "optional": false, + "rule": { + "is": "equal", + "value": "" } } ], "refusal": null }, { - "id": "operations/s3/get-if-none-match-other", + "id": "operations/s3/list-key-equal-to-prefix", "profile": "s3", "lane": "core", - "purpose": "get if none match other", + "purpose": "Report a key that equals the prefix as an entry", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "if_none_match": "\"fixture-db71b2c0257c\"", - "key": "object-tests/read/object.txt", - "op": "get" + "op": "list_page", + "prefix": "object-tests/exact" }, "exchanges": [ { @@ -82206,7 +118546,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "/fixture" } }, { @@ -82218,11 +118558,19 @@ } }, { - "at": "/headers/if-none-match", + "at": "/query/list-type", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-db71b2c0257c\"" + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/exact" } } ], @@ -82233,17 +118581,17 @@ "response": { "status": 200, "headers": { - "content-type": "binary/octet-stream", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-ad03f2ab332a\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" - } + "encoding": "utf8", + "data": "\nfixtureobject-tests/exact21000falseobject-tests/exact2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/exact/child2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARD" + }, + "framing": "chunked" } }, { @@ -82261,7 +118609,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "/fixture" } }, { @@ -82273,19 +118621,27 @@ } }, { - "at": "/headers/if-none-match", + "at": "/query/list-type", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-db71b2c0257c\"" + "value": "2" } }, { - "at": "/headers/range", + "at": "/query/prefix", "optional": false, "rule": { - "is": "matches", - "pattern": "bytes=0-[1-9][0-9]{2,}" + "is": "equal", + "value": "object-tests/exact" + } + }, + { + "at": "/query/encoding-type", + "optional": false, + "rule": { + "is": "equal", + "value": "url" } } ], @@ -82294,20 +118650,19 @@ ], "allow_query": [], "response": { - "status": 206, + "status": 200, "headers": { - "content-range": "bytes 0-29/30", - "content-type": "binary/octet-stream", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-ad03f2ab332a\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" - } + "encoding": "utf8", + "data": "\nfixtureobject-tests/exact21000urlfalseobject-tests/exact2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/exact/child2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARD" + }, + "framing": "chunked" } } ] @@ -82323,31 +118678,31 @@ } }, { - "at": "/value/etag", + "at": "/value/entries/0/key", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-ad03f2ab332a\"" + "value": "object-tests/exact" } }, { - "at": "/value/size", + "at": "/value/entries/0/size", "optional": false, "rule": { "is": "equal", - "value": 30 + "value": 1 } }, { - "at": "/value/content_type", + "at": "/value/entries/0/etag", "optional": false, "rule": { "is": "equal", - "value": "binary/octet-stream" + "value": "\"fixture-6c30b210f0a8\"" } }, { - "at": "/value/version", + "at": "/value/entries/0/snapshot", "optional": true, "rule": { "is": "one_of", @@ -82358,27 +118713,123 @@ } }, { - "at": "/value/body_base64", + "at": "/value/entries/0/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/1/key", "optional": false, "rule": { "is": "equal", - "value": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + "value": "object-tests/exact/child" + } + }, + { + "at": "/value/entries/1/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/1/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-6c30b210f0a8\"" + } + }, + { + "at": "/value/entries/1/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/1/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/1/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries", + "optional": false, + "rule": { + "is": "array_length", + "value": 2 + } + }, + { + "at": "/value/prefixes", + "optional": false, + "rule": { + "is": "array_length", + "value": 0 + } + }, + { + "at": "/value/continuation_token", + "optional": false, + "rule": { + "is": "equal", + "value": "" } } ], "refusal": null }, { - "id": "operations/s3/get-key-with-hash", + "id": "operations/s3/list-max-keys-zero", "profile": "s3", "lane": "core", - "purpose": "get key with hash", + "purpose": "Send page_size 0 as max-keys=0; S3 answers an empty page that is not truncated", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/names/hash#tag.txt", - "op": "get" + "op": "list_page", + "page_size": 0, + "prefix": "object-tests/board/" }, "exchanges": [ { @@ -82398,7 +118849,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/names/hash#tag.txt" + "value": "/fixture" } }, { @@ -82408,6 +118859,30 @@ "is": "equal", "value": "" } + }, + { + "at": "/query/list-type", + "optional": false, + "rule": { + "is": "equal", + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/" + } + }, + { + "at": "/query/max-keys", + "optional": false, + "rule": { + "is": "equal", + "value": "0" + } } ], "allow_headers": [ @@ -82417,17 +118892,17 @@ "response": { "status": 200, "headers": { - "content-type": "binary/octet-stream", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-6c30b210f0a8\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "MQ==" - } + "encoding": "utf8", + "data": "\nfixtureobject-tests/board/00false" + }, + "framing": "chunked" } }, { @@ -82445,7 +118920,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/names/hash#tag.txt" + "value": "/fixture" } }, { @@ -82457,11 +118932,35 @@ } }, { - "at": "/headers/range", + "at": "/query/list-type", "optional": false, "rule": { - "is": "matches", - "pattern": "bytes=0-[1-9][0-9]{2,}" + "is": "equal", + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/" + } + }, + { + "at": "/query/max-keys", + "optional": false, + "rule": { + "is": "equal", + "value": "0" + } + }, + { + "at": "/query/encoding-type", + "optional": false, + "rule": { + "is": "equal", + "value": "url" } } ], @@ -82470,20 +118969,19 @@ ], "allow_query": [], "response": { - "status": 206, + "status": 200, "headers": { - "content-range": "bytes 0-0/1", - "content-type": "binary/octet-stream", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-6c30b210f0a8\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "MQ==" - } + "encoding": "utf8", + "data": "\nfixtureobject-tests/board/00urlfalse" + }, + "framing": "chunked" } } ] @@ -82499,62 +118997,45 @@ } }, { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-6c30b210f0a8\"" - } - }, - { - "at": "/value/size", + "at": "/value/entries", "optional": false, "rule": { - "is": "equal", - "value": 1 + "is": "array_length", + "value": 0 } }, { - "at": "/value/content_type", + "at": "/value/prefixes", "optional": false, "rule": { - "is": "equal", - "value": "binary/octet-stream" - } - }, - { - "at": "/value/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "is": "array_length", + "value": 0 } }, { - "at": "/value/body_base64", + "at": "/value/continuation_token", "optional": false, "rule": { "is": "equal", - "value": "MQ==" + "value": "" } } ], "refusal": null }, { - "id": "operations/s3/get-key-with-percent", + "id": "operations/s3/list-next-page", "profile": "s3", "lane": "core", - "purpose": "get key with percent", + "purpose": "Send the continuation token as continuation-token, a + in it as %2B, and report an empty token for the last page", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/names/percent%20.txt", - "op": "get" + "continuation_token": "fixture-marker+/e389f71e4c3c=", + "op": "list_page", + "page_size": 2, + "prefix": "object-tests/board/" }, "exchanges": [ { @@ -82574,7 +119055,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/names/percent%20.txt" + "value": "/fixture" } }, { @@ -82584,6 +119065,38 @@ "is": "equal", "value": "" } + }, + { + "at": "/query/list-type", + "optional": false, + "rule": { + "is": "equal", + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/" + } + }, + { + "at": "/query/max-keys", + "optional": false, + "rule": { + "is": "equal", + "value": "2" + } + }, + { + "at": "/query/continuation-token", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-marker+/e389f71e4c3c=" + } } ], "allow_headers": [ @@ -82593,17 +119106,17 @@ "response": { "status": 200, "headers": { - "content-type": "binary/octet-stream", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-6c30b210f0a8\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "MQ==" - } + "encoding": "utf8", + "data": "\nfixtureobject-tests/board/fixture-marker+/e389f71e4c3c=12falseobject-tests/board/z.txt2024-01-01T00:00:00.000Z"fixture-4d347fee6a7b"CRC64NVMEFULL_OBJECT2STANDARD" + }, + "framing": "chunked" } }, { @@ -82621,7 +119134,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/names/percent%20.txt" + "value": "/fixture" } }, { @@ -82633,11 +119146,43 @@ } }, { - "at": "/headers/range", + "at": "/query/list-type", "optional": false, "rule": { - "is": "matches", - "pattern": "bytes=0-[1-9][0-9]{2,}" + "is": "equal", + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/" + } + }, + { + "at": "/query/max-keys", + "optional": false, + "rule": { + "is": "equal", + "value": "2" + } + }, + { + "at": "/query/continuation-token", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-marker+/e389f71e4c3c=" + } + }, + { + "at": "/query/encoding-type", + "optional": false, + "rule": { + "is": "equal", + "value": "url" } } ], @@ -82646,20 +119191,19 @@ ], "allow_query": [], "response": { - "status": 206, + "status": 200, "headers": { - "content-range": "bytes 0-0/1", - "content-type": "binary/octet-stream", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-6c30b210f0a8\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "MQ==" - } + "encoding": "utf8", + "data": "\nfixtureobject-tests/board/1Wq36E269xkU5vpIr/uygMR7VLsOKyVtFFrZWipPwts7vqVlbsEy3gO3B+OwtpoKO55bImoZ/vlKYSYk9sDrkkYTFp1MK3Yy/pV5VyzD7p/s=12urlfalseobject-tests/board/z.txt2024-01-01T00:00:00.000Z"fixture-4d347fee6a7b"CRC64NVMEFULL_OBJECT2STANDARD" + }, + "framing": "chunked" } } ] @@ -82675,31 +119219,31 @@ } }, { - "at": "/value/etag", + "at": "/value/entries/0/key", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-6c30b210f0a8\"" + "value": "object-tests/board/z.txt" } }, { - "at": "/value/size", + "at": "/value/entries/0/size", "optional": false, "rule": { "is": "equal", - "value": 1 + "value": 2 } }, { - "at": "/value/content_type", + "at": "/value/entries/0/etag", "optional": false, "rule": { "is": "equal", - "value": "binary/octet-stream" + "value": "\"fixture-4d347fee6a7b\"" } }, { - "at": "/value/version", + "at": "/value/entries/0/snapshot", "optional": true, "rule": { "is": "one_of", @@ -82710,27 +119254,66 @@ } }, { - "at": "/value/body_base64", + "at": "/value/entries/0/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries", + "optional": false, + "rule": { + "is": "array_length", + "value": 1 + } + }, + { + "at": "/value/prefixes", + "optional": false, + "rule": { + "is": "array_length", + "value": 0 + } + }, + { + "at": "/value/continuation_token", "optional": false, "rule": { "is": "equal", - "value": "MQ==" + "value": "" } } ], "refusal": null }, { - "id": "operations/s3/get-key-with-plus", + "id": "operations/s3/list-order-delimited", "profile": "s3", "lane": "core", - "purpose": "get key with plus", + "purpose": "Report the entries and the common prefixes in the order S3 sends them, each list on its own", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/names/plus+plus.txt", - "op": "get" + "delimiter": "/", + "op": "list_page", + "prefix": "object-tests/order/" }, "exchanges": [ { @@ -82750,7 +119333,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/names/plus+plus.txt" + "value": "/fixture" } }, { @@ -82760,6 +119343,30 @@ "is": "equal", "value": "" } + }, + { + "at": "/query/list-type", + "optional": false, + "rule": { + "is": "equal", + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/order/" + } + }, + { + "at": "/query/delimiter", + "optional": false, + "rule": { + "is": "equal", + "value": "/" + } } ], "allow_headers": [ @@ -82769,17 +119376,17 @@ "response": { "status": 200, "headers": { - "content-type": "binary/octet-stream", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-6c30b210f0a8\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "MQ==" - } + "encoding": "utf8", + "data": "\nfixtureobject-tests/order/81000/falseobject-tests/order/A2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/order/a2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/order/a-b2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/order/a.txt2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/order/a02024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/order/b2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/order/é2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/order/a/" + }, + "framing": "chunked" } }, { @@ -82797,7 +119404,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/names/plus+plus.txt" + "value": "/fixture" } }, { @@ -82809,11 +119416,35 @@ } }, { - "at": "/headers/range", + "at": "/query/list-type", "optional": false, "rule": { - "is": "matches", - "pattern": "bytes=0-[1-9][0-9]{2,}" + "is": "equal", + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/order/" + } + }, + { + "at": "/query/delimiter", + "optional": false, + "rule": { + "is": "equal", + "value": "/" + } + }, + { + "at": "/query/encoding-type", + "optional": false, + "rule": { + "is": "equal", + "value": "url" } } ], @@ -82822,20 +119453,19 @@ ], "allow_query": [], "response": { - "status": 206, + "status": 200, "headers": { - "content-range": "bytes 0-0/1", - "content-type": "binary/octet-stream", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-6c30b210f0a8\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "MQ==" - } + "encoding": "utf8", + "data": "\nfixtureobject-tests/order/81000/urlfalseobject-tests/order/A2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/order/a2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/order/a-b2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/order/a.txt2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/order/a02024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/order/b2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/order/%C3%A92024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/order/a/" + }, + "framing": "chunked" } } ] @@ -82851,7 +119481,365 @@ } }, { - "at": "/value/etag", + "at": "/value/entries/0/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/order/A" + } + }, + { + "at": "/value/entries/0/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/0/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-6c30b210f0a8\"" + } + }, + { + "at": "/value/entries/0/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/1/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/order/a" + } + }, + { + "at": "/value/entries/1/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/1/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-6c30b210f0a8\"" + } + }, + { + "at": "/value/entries/1/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/1/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/1/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/2/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/order/a-b" + } + }, + { + "at": "/value/entries/2/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/2/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-6c30b210f0a8\"" + } + }, + { + "at": "/value/entries/2/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/2/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/2/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/3/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/order/a.txt" + } + }, + { + "at": "/value/entries/3/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/3/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-6c30b210f0a8\"" + } + }, + { + "at": "/value/entries/3/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/3/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/3/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/4/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/order/a0" + } + }, + { + "at": "/value/entries/4/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/4/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-6c30b210f0a8\"" + } + }, + { + "at": "/value/entries/4/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/4/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/4/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/5/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/order/b" + } + }, + { + "at": "/value/entries/5/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/5/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-6c30b210f0a8\"" + } + }, + { + "at": "/value/entries/5/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/5/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/5/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/6/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/order/é" + } + }, + { + "at": "/value/entries/6/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/6/etag", "optional": false, "rule": { "is": "equal", @@ -82859,54 +119847,84 @@ } }, { - "at": "/value/size", - "optional": false, + "at": "/value/entries/6/snapshot", + "optional": true, "rule": { - "is": "equal", - "value": 1 + "is": "one_of", + "values": [ + null, + "" + ] } }, { - "at": "/value/content_type", - "optional": false, + "at": "/value/entries/6/version", + "optional": true, "rule": { - "is": "equal", - "value": "binary/octet-stream" + "is": "one_of", + "values": [ + null, + "" + ] } }, { - "at": "/value/version", + "at": "/value/entries/6/is_current_version", "optional": true, "rule": { "is": "one_of", "values": [ null, - "" + false ] } }, { - "at": "/value/body_base64", + "at": "/value/entries", + "optional": false, + "rule": { + "is": "array_length", + "value": 7 + } + }, + { + "at": "/value/prefixes/0", "optional": false, "rule": { "is": "equal", - "value": "MQ==" + "value": "object-tests/order/a/" + } + }, + { + "at": "/value/prefixes", + "optional": false, + "rule": { + "is": "array_length", + "value": 1 + } + }, + { + "at": "/value/continuation_token", + "optional": false, + "rule": { + "is": "equal", + "value": "" } } ], "refusal": null }, { - "id": "operations/s3/get-key-with-space", + "id": "operations/s3/list-order", "profile": "s3", "lane": "core", - "purpose": "get key with space", + "purpose": "Report the entries in the order S3 sends them, without sorting them again", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/names/space name.txt", - "op": "get" + "op": "list_page", + "prefix": "object-tests/order/" }, "exchanges": [ { @@ -82926,7 +119944,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/names/space name.txt" + "value": "/fixture" } }, { @@ -82936,6 +119954,22 @@ "is": "equal", "value": "" } + }, + { + "at": "/query/list-type", + "optional": false, + "rule": { + "is": "equal", + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/order/" + } } ], "allow_headers": [ @@ -82945,17 +119979,17 @@ "response": { "status": 200, "headers": { - "content-type": "binary/octet-stream", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-6c30b210f0a8\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "MQ==" - } + "encoding": "utf8", + "data": "\nfixtureobject-tests/order/81000falseobject-tests/order/A2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/order/a2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/order/a-b2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/order/a.txt2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/order/a/b2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/order/a02024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/order/b2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/order/é2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARD" + }, + "framing": "chunked" } }, { @@ -82973,7 +120007,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/names/space name.txt" + "value": "/fixture" } }, { @@ -82985,11 +120019,27 @@ } }, { - "at": "/headers/range", + "at": "/query/list-type", "optional": false, "rule": { - "is": "matches", - "pattern": "bytes=0-[1-9][0-9]{2,}" + "is": "equal", + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/order/" + } + }, + { + "at": "/query/encoding-type", + "optional": false, + "rule": { + "is": "equal", + "value": "url" } } ], @@ -82998,20 +120048,19 @@ ], "allow_query": [], "response": { - "status": 206, + "status": 200, "headers": { - "content-range": "bytes 0-0/1", - "content-type": "binary/octet-stream", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-6c30b210f0a8\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "MQ==" - } + "encoding": "utf8", + "data": "\nfixtureobject-tests/order/81000urlfalseobject-tests/order/A2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/order/a2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/order/a-b2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/order/a.txt2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/order/a/b2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/order/a02024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/order/b2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/order/%C3%A92024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARD" + }, + "framing": "chunked" } } ] @@ -83027,7 +120076,23 @@ } }, { - "at": "/value/etag", + "at": "/value/entries/0/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/order/A" + } + }, + { + "at": "/value/entries/0/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/0/etag", "optional": false, "rule": { "is": "equal", @@ -83035,7 +120100,48 @@ } }, { - "at": "/value/size", + "at": "/value/entries/0/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/1/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/order/a" + } + }, + { + "at": "/value/entries/1/size", "optional": false, "rule": { "is": "equal", @@ -83043,15 +120149,15 @@ } }, { - "at": "/value/content_type", + "at": "/value/entries/1/etag", "optional": false, "rule": { "is": "equal", - "value": "binary/octet-stream" + "value": "\"fixture-6c30b210f0a8\"" } }, { - "at": "/value/version", + "at": "/value/entries/1/snapshot", "optional": true, "rule": { "is": "one_of", @@ -83062,516 +120168,407 @@ } }, { - "at": "/value/body_base64", + "at": "/value/entries/1/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/1/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/2/key", "optional": false, "rule": { "is": "equal", - "value": "MQ==" + "value": "object-tests/order/a-b" } - } - ], - "refusal": null - }, - { - "id": "operations/s3/get-key-with-question", - "profile": "s3", - "lane": "core", - "purpose": "get key question", - "sources": [ - "https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html" - ], - "call": { - "key": "a?b", - "op": "get" - }, - "exchanges": [ + }, { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/a?b" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/headers/content-type", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - "application/xml", - "application/octet-stream", - "binary/octet-stream" - ] - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-type": "application/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-etag\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-amz-request-id": "fixture-request-id" - }, - "body": { - "encoding": "base64", - "data": "aGVsbG8=" - } - } - }, - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/a?b" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/headers/content-type", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - "application/xml", - "application/octet-stream", - "binary/octet-stream" - ] - } - }, - { - "at": "/headers/range", - "optional": false, - "rule": { - "is": "matches", - "pattern": "bytes=0-[1-9][0-9]{2,}" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 206, - "headers": { - "content-range": "bytes 0-4/5", - "content-type": "application/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-etag\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-amz-request-id": "fixture-request-id" - }, - "body": { - "encoding": "base64", - "data": "aGVsbG8=" - } - } - } - ] - } - ], - "expect": [ + "at": "/value/entries/2/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, { - "at": "/outcome", + "at": "/value/entries/2/etag", "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "\"fixture-6c30b210f0a8\"" } }, { - "at": "/value/body_base64", + "at": "/value/entries/2/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/2/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/2/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/3/key", "optional": false, "rule": { "is": "equal", - "value": "aGVsbG8=" + "value": "object-tests/order/a.txt" } - } - ], - "refusal": null - }, - { - "id": "operations/s3/get-key-with-non-ascii", - "profile": "s3", - "lane": "core", - "purpose": "get key unicode", - "sources": [ - "https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html" - ], - "call": { - "key": "café/雪", - "op": "get" - }, - "exchanges": [ + }, { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/café/雪" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/headers/content-type", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - "application/xml", - "application/octet-stream", - "binary/octet-stream" - ] - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-type": "application/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-etag\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-amz-request-id": "fixture-request-id" - }, - "body": { - "encoding": "base64", - "data": "aGVsbG8=" - } - } - }, - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/café/雪" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/headers/content-type", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - "application/xml", - "application/octet-stream", - "binary/octet-stream" - ] - } - }, - { - "at": "/headers/range", - "optional": false, - "rule": { - "is": "matches", - "pattern": "bytes=0-[1-9][0-9]{2,}" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 206, - "headers": { - "content-range": "bytes 0-4/5", - "content-type": "application/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-etag\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-amz-request-id": "fixture-request-id" - }, - "body": { - "encoding": "base64", - "data": "aGVsbG8=" - } - } - } - ] - } - ], - "expect": [ + "at": "/value/entries/3/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, { - "at": "/outcome", + "at": "/value/entries/3/etag", "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "\"fixture-6c30b210f0a8\"" } }, { - "at": "/value/body_base64", + "at": "/value/entries/3/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/3/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/3/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/4/key", "optional": false, "rule": { "is": "equal", - "value": "aGVsbG8=" + "value": "object-tests/order/a/b" } - } - ], - "refusal": null - }, - { - "id": "operations/s3/get-key-with-separators", - "profile": "s3", - "lane": "core", - "purpose": "get key separators", - "sources": [ - "https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html" - ], - "call": { - "key": "a//b/", - "op": "get" - }, - "exchanges": [ + }, { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/a//b/" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/headers/content-type", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - "application/xml", - "application/octet-stream", - "binary/octet-stream" - ] - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-type": "application/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-etag\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-amz-request-id": "fixture-request-id" - }, - "body": { - "encoding": "base64", - "data": "aGVsbG8=" - } - } - }, - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/a//b/" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/headers/content-type", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - "application/xml", - "application/octet-stream", - "binary/octet-stream" - ] - } - }, - { - "at": "/headers/range", - "optional": false, - "rule": { - "is": "matches", - "pattern": "bytes=0-[1-9][0-9]{2,}" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 206, - "headers": { - "content-range": "bytes 0-4/5", - "content-type": "application/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-etag\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-amz-request-id": "fixture-request-id" - }, - "body": { - "encoding": "base64", - "data": "aGVsbG8=" - } - } - } - ] - } - ], - "expect": [ + "at": "/value/entries/4/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, { - "at": "/outcome", + "at": "/value/entries/4/etag", "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "\"fixture-6c30b210f0a8\"" } }, { - "at": "/value/body_base64", + "at": "/value/entries/4/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/4/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/4/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/5/key", "optional": false, "rule": { "is": "equal", - "value": "aGVsbG8=" + "value": "object-tests/order/a0" + } + }, + { + "at": "/value/entries/5/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/5/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-6c30b210f0a8\"" + } + }, + { + "at": "/value/entries/5/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/5/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/5/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/6/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/order/b" + } + }, + { + "at": "/value/entries/6/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/6/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-6c30b210f0a8\"" + } + }, + { + "at": "/value/entries/6/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/6/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/6/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/7/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/order/é" + } + }, + { + "at": "/value/entries/7/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/7/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-6c30b210f0a8\"" + } + }, + { + "at": "/value/entries/7/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/7/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/7/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries", + "optional": false, + "rule": { + "is": "array_length", + "value": 8 + } + }, + { + "at": "/value/prefixes", + "optional": false, + "rule": { + "is": "array_length", + "value": 0 + } + }, + { + "at": "/value/continuation_token", + "optional": false, + "rule": { + "is": "equal", + "value": "" } } ], "refusal": null }, { - "id": "operations/s3/get-metadata-empty-value", + "id": "operations/s3/list-page", "profile": "s3", "lane": "core", - "purpose": "get metadata empty value", + "purpose": "List a prefix with ListObjectsV2 (list-type=2), and report each entry's key, size and ETag, quotes included", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/metadata/empty-value.txt", - "op": "get" + "op": "list_page", + "prefix": "object-tests/board/" }, "exchanges": [ { @@ -83591,7 +120588,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/metadata/empty-value.txt" + "value": "/fixture" } }, { @@ -83599,7 +120596,23 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "" + } + }, + { + "at": "/query/list-type", + "optional": false, + "rule": { + "is": "equal", + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/" } } ], @@ -83610,18 +120623,17 @@ "response": { "status": 200, "headers": { - "content-type": "binary/octet-stream", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-6c30b210f0a8\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-amz-meta-empty": "" + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "MQ==" - } + "encoding": "utf8", + "data": "\nfixtureobject-tests/board/31000falseobject-tests/board/a.txt2024-01-01T00:00:00.000Z"fixture-1d83e6eb69df"CRC64NVMEFULL_OBJECT8STANDARDobject-tests/board/nested/c.txt2024-01-01T00:00:00.000Z"fixture-a1cfb9bcbc61"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/board/z.txt2024-01-01T00:00:00.000Z"fixture-4d347fee6a7b"CRC64NVMEFULL_OBJECT2STANDARD" + }, + "framing": "chunked" } }, { @@ -83639,7 +120651,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/metadata/empty-value.txt" + "value": "/fixture" } }, { @@ -83651,11 +120663,27 @@ } }, { - "at": "/headers/range", + "at": "/query/list-type", "optional": false, "rule": { - "is": "matches", - "pattern": "bytes=0-[1-9][0-9]{2,}" + "is": "equal", + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/" + } + }, + { + "at": "/query/encoding-type", + "optional": false, + "rule": { + "is": "equal", + "value": "url" } } ], @@ -83664,21 +120692,19 @@ ], "allow_query": [], "response": { - "status": 206, + "status": 200, "headers": { - "content-range": "bytes 0-0/1", - "content-type": "binary/octet-stream", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-6c30b210f0a8\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-amz-meta-empty": "" + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "MQ==" - } + "encoding": "utf8", + "data": "\nfixtureobject-tests/board/31000urlfalseobject-tests/board/a.txt2024-01-01T00:00:00.000Z"fixture-1d83e6eb69df"CRC64NVMEFULL_OBJECT8STANDARDobject-tests/board/nested/c.txt2024-01-01T00:00:00.000Z"fixture-a1cfb9bcbc61"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/board/z.txt2024-01-01T00:00:00.000Z"fixture-4d347fee6a7b"CRC64NVMEFULL_OBJECT2STANDARD" + }, + "framing": "chunked" } } ] @@ -83694,15 +120720,72 @@ } }, { - "at": "/value/etag", + "at": "/value/entries/0/key", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-6c30b210f0a8\"" + "value": "object-tests/board/a.txt" } }, { - "at": "/value/size", + "at": "/value/entries/0/size", + "optional": false, + "rule": { + "is": "equal", + "value": 8 + } + }, + { + "at": "/value/entries/0/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-1d83e6eb69df\"" + } + }, + { + "at": "/value/entries/0/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/1/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/nested/c.txt" + } + }, + { + "at": "/value/entries/1/size", "optional": false, "rule": { "is": "equal", @@ -83710,15 +120793,15 @@ } }, { - "at": "/value/content_type", + "at": "/value/entries/1/etag", "optional": false, "rule": { "is": "equal", - "value": "binary/octet-stream" + "value": "\"fixture-a1cfb9bcbc61\"" } }, { - "at": "/value/version", + "at": "/value/entries/1/snapshot", "optional": true, "rule": { "is": "one_of", @@ -83729,37 +120812,122 @@ } }, { - "at": "/value/body_base64", + "at": "/value/entries/1/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/1/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/2/key", "optional": false, "rule": { "is": "equal", - "value": "MQ==" + "value": "object-tests/board/z.txt" } }, { - "at": "/value/metadata", + "at": "/value/entries/2/size", "optional": false, "rule": { "is": "equal", - "value": { - "empty": "" - } + "value": 2 + } + }, + { + "at": "/value/entries/2/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-4d347fee6a7b\"" + } + }, + { + "at": "/value/entries/2/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/2/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/2/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries", + "optional": false, + "rule": { + "is": "array_length", + "value": 3 + } + }, + { + "at": "/value/prefixes", + "optional": false, + "rule": { + "is": "array_length", + "value": 0 + } + }, + { + "at": "/value/continuation_token", + "optional": false, + "rule": { + "is": "equal", + "value": "" } } ], "refusal": null }, { - "id": "operations/s3/get-metadata-hyphen-name", + "id": "operations/s3/list-prefix-without-slash", "profile": "s3", "lane": "core", - "purpose": "get metadata hyphen name", + "purpose": "Match the prefix as the start of the key, not as a directory: object-tests/boa matches object-tests/board/", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/metadata/hyphen-name.txt", - "op": "get" + "op": "list_page", + "prefix": "object-tests/boa" }, "exchanges": [ { @@ -83779,7 +120947,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/metadata/hyphen-name.txt" + "value": "/fixture" } }, { @@ -83789,6 +120957,22 @@ "is": "equal", "value": "" } + }, + { + "at": "/query/list-type", + "optional": false, + "rule": { + "is": "equal", + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/boa" + } } ], "allow_headers": [ @@ -83798,18 +120982,17 @@ "response": { "status": 200, "headers": { - "content-type": "binary/octet-stream", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-6c30b210f0a8\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-amz-meta-not-valid": "1" + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "MQ==" - } + "encoding": "utf8", + "data": "\nfixtureobject-tests/boa31000falseobject-tests/board/a.txt2024-01-01T00:00:00.000Z"fixture-1d83e6eb69df"CRC64NVMEFULL_OBJECT8STANDARDobject-tests/board/nested/c.txt2024-01-01T00:00:00.000Z"fixture-a1cfb9bcbc61"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/board/z.txt2024-01-01T00:00:00.000Z"fixture-4d347fee6a7b"CRC64NVMEFULL_OBJECT2STANDARD" + }, + "framing": "chunked" } }, { @@ -83827,7 +121010,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/metadata/hyphen-name.txt" + "value": "/fixture" } }, { @@ -83839,11 +121022,27 @@ } }, { - "at": "/headers/range", + "at": "/query/list-type", "optional": false, "rule": { - "is": "matches", - "pattern": "bytes=0-[1-9][0-9]{2,}" + "is": "equal", + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/boa" + } + }, + { + "at": "/query/encoding-type", + "optional": false, + "rule": { + "is": "equal", + "value": "url" } } ], @@ -83852,21 +121051,19 @@ ], "allow_query": [], "response": { - "status": 206, + "status": 200, "headers": { - "content-range": "bytes 0-0/1", - "content-type": "binary/octet-stream", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-6c30b210f0a8\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-amz-meta-not-valid": "1" + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "MQ==" - } + "encoding": "utf8", + "data": "\nfixtureobject-tests/boa31000urlfalseobject-tests/board/a.txt2024-01-01T00:00:00.000Z"fixture-1d83e6eb69df"CRC64NVMEFULL_OBJECT8STANDARDobject-tests/board/nested/c.txt2024-01-01T00:00:00.000Z"fixture-a1cfb9bcbc61"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/board/z.txt2024-01-01T00:00:00.000Z"fixture-4d347fee6a7b"CRC64NVMEFULL_OBJECT2STANDARD" + }, + "framing": "chunked" } } ] @@ -83882,15 +121079,72 @@ } }, { - "at": "/value/etag", + "at": "/value/entries/0/key", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-6c30b210f0a8\"" + "value": "object-tests/board/a.txt" } }, { - "at": "/value/size", + "at": "/value/entries/0/size", + "optional": false, + "rule": { + "is": "equal", + "value": 8 + } + }, + { + "at": "/value/entries/0/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-1d83e6eb69df\"" + } + }, + { + "at": "/value/entries/0/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/1/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/nested/c.txt" + } + }, + { + "at": "/value/entries/1/size", "optional": false, "rule": { "is": "equal", @@ -83898,15 +121152,15 @@ } }, { - "at": "/value/content_type", + "at": "/value/entries/1/etag", "optional": false, "rule": { "is": "equal", - "value": "binary/octet-stream" + "value": "\"fixture-a1cfb9bcbc61\"" } }, { - "at": "/value/version", + "at": "/value/entries/1/snapshot", "optional": true, "rule": { "is": "one_of", @@ -83917,37 +121171,123 @@ } }, { - "at": "/value/body_base64", + "at": "/value/entries/1/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/1/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/2/key", "optional": false, "rule": { "is": "equal", - "value": "MQ==" + "value": "object-tests/board/z.txt" } }, { - "at": "/value/metadata", + "at": "/value/entries/2/size", "optional": false, "rule": { "is": "equal", - "value": { - "not-valid": "1" - } + "value": 2 + } + }, + { + "at": "/value/entries/2/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-4d347fee6a7b\"" + } + }, + { + "at": "/value/entries/2/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/2/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/2/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries", + "optional": false, + "rule": { + "is": "array_length", + "value": 3 + } + }, + { + "at": "/value/prefixes", + "optional": false, + "rule": { + "is": "array_length", + "value": 0 + } + }, + { + "at": "/value/continuation_token", + "optional": false, + "rule": { + "is": "equal", + "value": "" } } ], "refusal": null }, { - "id": "operations/s3/get-metadata-punctuation-name", + "id": "operations/s3/list-separator-keys-delimited", "profile": "s3", "lane": "core", - "purpose": "Report a metadata name that holds any character of an HTTP token.", + "purpose": "Group each key at the first delimiter after the prefix, even where the key repeats it or ends with it", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/metadata/punctuation-name.txt", - "op": "get" + "delimiter": "/", + "op": "list_page", + "prefix": "object-tests/separators/" }, "exchanges": [ { @@ -83967,7 +121307,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/metadata/punctuation-name.txt" + "value": "/fixture" } }, { @@ -83977,6 +121317,30 @@ "is": "equal", "value": "" } + }, + { + "at": "/query/list-type", + "optional": false, + "rule": { + "is": "equal", + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/separators/" + } + }, + { + "at": "/query/delimiter", + "optional": false, + "rule": { + "is": "equal", + "value": "/" + } } ], "allow_headers": [ @@ -83986,18 +121350,17 @@ "response": { "status": 200, "headers": { - "content-type": "binary/octet-stream", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-6c30b210f0a8\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-amz-meta-1a!#$%&'*+.^_`|~b": "1" + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "MQ==" - } + "encoding": "utf8", + "data": "\nfixtureobject-tests/separators/61000/falseobject-tests/separators/..leading2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/separators/dot.2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/separators/a.b/object-tests/separators/double/object-tests/separators/space /object-tests/separators/trailing/" + }, + "framing": "chunked" } }, { @@ -84015,7 +121378,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/metadata/punctuation-name.txt" + "value": "/fixture" } }, { @@ -84027,11 +121390,35 @@ } }, { - "at": "/headers/range", + "at": "/query/list-type", "optional": false, "rule": { - "is": "matches", - "pattern": "bytes=0-[1-9][0-9]{2,}" + "is": "equal", + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/separators/" + } + }, + { + "at": "/query/delimiter", + "optional": false, + "rule": { + "is": "equal", + "value": "/" + } + }, + { + "at": "/query/encoding-type", + "optional": false, + "rule": { + "is": "equal", + "value": "url" } } ], @@ -84040,21 +121427,19 @@ ], "allow_query": [], "response": { - "status": 206, + "status": 200, "headers": { - "content-range": "bytes 0-0/1", - "content-type": "binary/octet-stream", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-6c30b210f0a8\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-amz-meta-1a!#$%&'*+.^_`|~b": "1" + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "MQ==" - } + "encoding": "utf8", + "data": "\nfixtureobject-tests/separators/61000/urlfalseobject-tests/separators/..leading2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/separators/dot.2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/separators/a.b/object-tests/separators/double/object-tests/separators/space+/object-tests/separators/trailing/" + }, + "framing": "chunked" } } ] @@ -84070,7 +121455,23 @@ } }, { - "at": "/value/etag", + "at": "/value/entries/0/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/separators/..leading" + } + }, + { + "at": "/value/entries/0/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/0/etag", "optional": false, "rule": { "is": "equal", @@ -84078,7 +121479,48 @@ } }, { - "at": "/value/size", + "at": "/value/entries/0/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/1/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/separators/dot." + } + }, + { + "at": "/value/entries/1/size", "optional": false, "rule": { "is": "equal", @@ -84086,15 +121528,15 @@ } }, { - "at": "/value/content_type", + "at": "/value/entries/1/etag", "optional": false, "rule": { "is": "equal", - "value": "binary/octet-stream" + "value": "\"fixture-6c30b210f0a8\"" } }, { - "at": "/value/version", + "at": "/value/entries/1/snapshot", "optional": true, "rule": { "is": "one_of", @@ -84105,37 +121547,97 @@ } }, { - "at": "/value/body_base64", + "at": "/value/entries/1/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/1/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries", + "optional": false, + "rule": { + "is": "array_length", + "value": 2 + } + }, + { + "at": "/value/prefixes/0", "optional": false, "rule": { "is": "equal", - "value": "MQ==" + "value": "object-tests/separators/a.b/" } }, { - "at": "/value/metadata", + "at": "/value/prefixes/1", "optional": false, "rule": { "is": "equal", - "value": { - "1a!#$%&'*+.^_`|~b": "1" - } + "value": "object-tests/separators/double/" + } + }, + { + "at": "/value/prefixes/2", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/separators/space /" + } + }, + { + "at": "/value/prefixes/3", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/separators/trailing/" + } + }, + { + "at": "/value/prefixes", + "optional": false, + "rule": { + "is": "array_length", + "value": 4 + } + }, + { + "at": "/value/continuation_token", + "optional": false, + "rule": { + "is": "equal", + "value": "" } } ], "refusal": null }, { - "id": "operations/s3/get-metadata-non-ascii-value", + "id": "operations/s3/list-separator-keys", "profile": "s3", "lane": "core", - "purpose": "A general-purpose bucket returns a value outside ASCII as an RFC 2047 encoded word. Decode it, so é reads back as é.", + "purpose": "Report keys with leading dots, repeated slashes, a space and a trailing slash exactly as stored", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/metadata/non-ascii.txt", - "op": "get" + "op": "list_page", + "prefix": "object-tests/separators/" }, "exchanges": [ { @@ -84155,7 +121657,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/metadata/non-ascii.txt" + "value": "/fixture" } }, { @@ -84165,6 +121667,22 @@ "is": "equal", "value": "" } + }, + { + "at": "/query/list-type", + "optional": false, + "rule": { + "is": "equal", + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/separators/" + } } ], "allow_headers": [ @@ -84174,18 +121692,17 @@ "response": { "status": 200, "headers": { - "content-type": "binary/octet-stream", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-6c30b210f0a8\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-amz-meta-value": "=?UTF-8?Q?caf=C3=A9?=" + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "MQ==" - } + "encoding": "utf8", + "data": "\nfixtureobject-tests/separators/61000falseobject-tests/separators/..leading2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/separators/a.b/c2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/separators/dot.2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/separators/double//slash2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/separators/space /x2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/separators/trailing/2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARD" + }, + "framing": "chunked" } }, { @@ -84203,7 +121720,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/metadata/non-ascii.txt" + "value": "/fixture" } }, { @@ -84215,11 +121732,27 @@ } }, { - "at": "/headers/range", + "at": "/query/list-type", "optional": false, "rule": { - "is": "matches", - "pattern": "bytes=0-[1-9][0-9]{2,}" + "is": "equal", + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/separators/" + } + }, + { + "at": "/query/encoding-type", + "optional": false, + "rule": { + "is": "equal", + "value": "url" } } ], @@ -84228,21 +121761,19 @@ ], "allow_query": [], "response": { - "status": 206, + "status": 200, "headers": { - "content-range": "bytes 0-0/1", - "content-type": "binary/octet-stream", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-6c30b210f0a8\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-amz-meta-value": "=?UTF-8?Q?caf=C3=A9?=" + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "MQ==" - } + "encoding": "utf8", + "data": "\nfixtureobject-tests/separators/61000urlfalseobject-tests/separators/..leading2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/separators/a.b/c2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/separators/dot.2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/separators/double//slash2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/separators/space+/x2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/separators/trailing/2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARD" + }, + "framing": "chunked" } } ] @@ -84254,11 +121785,255 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "ok" + } + }, + { + "at": "/value/entries/0/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/separators/..leading" + } + }, + { + "at": "/value/entries/0/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/0/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-6c30b210f0a8\"" + } + }, + { + "at": "/value/entries/0/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/1/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/separators/a.b/c" + } + }, + { + "at": "/value/entries/1/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/1/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-6c30b210f0a8\"" + } + }, + { + "at": "/value/entries/1/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/1/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/1/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/2/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/separators/dot." + } + }, + { + "at": "/value/entries/2/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/2/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-6c30b210f0a8\"" + } + }, + { + "at": "/value/entries/2/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/2/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/2/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/3/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/separators/double//slash" + } + }, + { + "at": "/value/entries/3/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/3/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-6c30b210f0a8\"" + } + }, + { + "at": "/value/entries/3/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/3/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/3/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/4/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/separators/space /x" + } + }, + { + "at": "/value/entries/4/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 } }, { - "at": "/value/etag", + "at": "/value/entries/4/etag", "optional": false, "rule": { "is": "equal", @@ -84266,7 +122041,48 @@ } }, { - "at": "/value/size", + "at": "/value/entries/4/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/4/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/4/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/5/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/separators/trailing/" + } + }, + { + "at": "/value/entries/5/size", "optional": false, "rule": { "is": "equal", @@ -84274,15 +122090,15 @@ } }, { - "at": "/value/content_type", + "at": "/value/entries/5/etag", "optional": false, "rule": { "is": "equal", - "value": "binary/octet-stream" + "value": "\"fixture-6c30b210f0a8\"" } }, { - "at": "/value/version", + "at": "/value/entries/5/snapshot", "optional": true, "rule": { "is": "one_of", @@ -84293,37 +122109,65 @@ } }, { - "at": "/value/body_base64", + "at": "/value/entries/5/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/5/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries", "optional": false, "rule": { - "is": "equal", - "value": "MQ==" + "is": "array_length", + "value": 6 } }, { - "at": "/value/metadata", + "at": "/value/prefixes", + "optional": false, + "rule": { + "is": "array_length", + "value": 0 + } + }, + { + "at": "/value/continuation_token", "optional": false, "rule": { "is": "equal", - "value": { - "value": "café" - } + "value": "" } } ], "refusal": null }, { - "id": "operations/s3/get-metadata-outside-latin-1", + "id": "operations/s3/list-unauthenticated", "profile": "s3", "lane": "core", - "purpose": "Decode a base64 RFC 2047 encoded word, which S3 returns for text that is mostly outside ASCII.", + "purpose": "Report the service authorization error for this operation; signature acceptance is tested separately.", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/metadata/outside-latin-1.txt", - "op": "get" + "op": "list_page", + "prefix": "object-tests/" }, "exchanges": [ { @@ -84343,7 +122187,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/metadata/outside-latin-1.txt" + "value": "/fixture" } }, { @@ -84353,6 +122197,22 @@ "is": "equal", "value": "" } + }, + { + "at": "/query/list-type", + "optional": false, + "rule": { + "is": "equal", + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/" + } } ], "allow_headers": [ @@ -84360,20 +122220,18 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 403, "headers": { - "content-type": "binary/octet-stream", + "content-type": "application/xml", "date": { "from": "now" - }, - "etag": "\"fixture-6c30b210f0a8\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-amz-meta-value": "=?UTF-8?B?6Zuq?=" + } }, "body": { - "encoding": "base64", - "data": "MQ==" - } + "encoding": "utf8", + "data": "\nInvalidAccessKeyIdFixture error" + }, + "framing": "chunked" } }, { @@ -84391,7 +122249,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/metadata/outside-latin-1.txt" + "value": "/fixture" } }, { @@ -84403,11 +122261,27 @@ } }, { - "at": "/headers/range", + "at": "/query/list-type", "optional": false, "rule": { - "is": "matches", - "pattern": "bytes=0-[1-9][0-9]{2,}" + "is": "equal", + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/" + } + }, + { + "at": "/query/encoding-type", + "optional": false, + "rule": { + "is": "equal", + "value": "url" } } ], @@ -84416,21 +122290,18 @@ ], "allow_query": [], "response": { - "status": 206, + "status": 403, "headers": { - "content-range": "bytes 0-0/1", - "content-type": "binary/octet-stream", + "content-type": "application/xml", "date": { "from": "now" - }, - "etag": "\"fixture-6c30b210f0a8\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-amz-meta-value": "=?UTF-8?B?6Zuq?=" + } }, "body": { - "encoding": "base64", - "data": "MQ==" - } + "encoding": "utf8", + "data": "\nInvalidAccessKeyIdThe AWS Access Key Id you provided does not exist in our records.not-a-tokenD3AWMCZ2CJYZX2K4iNmdT7uJWoHQA6IHwWhIKos452Xw9yuRP9vkj83JKvDa5ZUSTJ5lBFHsh3LIS/1DkVBgdHG6g50=" + }, + "framing": "chunked" } } ] @@ -84442,76 +122313,40 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-6c30b210f0a8\"" - } - }, - { - "at": "/value/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/content_type", - "optional": false, - "rule": { - "is": "equal", - "value": "binary/octet-stream" - } - }, - { - "at": "/value/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "value": "error" } }, { - "at": "/value/body_base64", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "MQ==" + "value": 403 } }, { - "at": "/value/metadata", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": { - "value": "雪" - } + "value": "InvalidAccessKeyId" } } ], "refusal": null }, { - "id": "operations/s3/get-metadata-split-encoded-words", + "id": "operations/s3/list-all-pages", "profile": "s3", "lane": "core", - "purpose": "S3 returns a long value as several RFC 2047 encoded words, separated by spaces. Decode each and join them without the spaces.", + "purpose": "Follow each page's continuation token until a page is not truncated", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/metadata/split-encoded-words.txt", - "op": "get" + "op": "list", + "page_size": 1, + "prefix": "object-tests/board/" }, "exchanges": [ { @@ -84531,7 +122366,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/metadata/split-encoded-words.txt" + "value": "/fixture" } }, { @@ -84541,6 +122376,30 @@ "is": "equal", "value": "" } + }, + { + "at": "/query/list-type", + "optional": false, + "rule": { + "is": "equal", + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/" + } + }, + { + "at": "/query/max-keys", + "optional": false, + "rule": { + "is": "equal", + "value": "1" + } } ], "allow_headers": [ @@ -84550,18 +122409,17 @@ "response": { "status": 200, "headers": { - "content-type": "binary/octet-stream", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-6c30b210f0a8\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-amz-meta-value": "=?UTF-8?B?6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq?= =?UTF-8?B?6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq?=" + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "MQ==" - } + "encoding": "utf8", + "data": "\nfixtureobject-tests/board/fixture-marker+/a11ba9e5001=11trueobject-tests/board/a.txt2024-01-01T00:00:00.000Z"fixture-626f61720000"CRC64NVMEFULL_OBJECT8STANDARD" + }, + "framing": "chunked" } }, { @@ -84579,7 +122437,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/metadata/split-encoded-words.txt" + "value": "/fixture" } }, { @@ -84591,11 +122449,35 @@ } }, { - "at": "/headers/range", + "at": "/query/list-type", "optional": false, "rule": { - "is": "matches", - "pattern": "bytes=0-[1-9][0-9]{2,}" + "is": "equal", + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/" + } + }, + { + "at": "/query/max-keys", + "optional": false, + "rule": { + "is": "equal", + "value": "1" + } + }, + { + "at": "/query/encoding-type", + "optional": false, + "rule": { + "is": "equal", + "value": "url" } } ], @@ -84604,104 +122486,23 @@ ], "allow_query": [], "response": { - "status": 206, + "status": 200, "headers": { - "content-range": "bytes 0-0/1", - "content-type": "binary/octet-stream", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-6c30b210f0a8\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-amz-meta-value": "=?UTF-8?B?6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq?= =?UTF-8?B?6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq?=" + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "MQ==" - } + "encoding": "utf8", + "data": "\nfixtureobject-tests/board/fixture-marker+/a11ba9e5001=11urltrueobject-tests/board/a.txt2024-01-01T00:00:00.000Z"fixture-626f61720000"CRC64NVMEFULL_OBJECT8STANDARD" + }, + "framing": "chunked" } } ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-6c30b210f0a8\"" - } - }, - { - "at": "/value/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/content_type", - "optional": false, - "rule": { - "is": "equal", - "value": "binary/octet-stream" - } - }, - { - "at": "/value/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "MQ==" - } }, - { - "at": "/value/metadata", - "optional": false, - "rule": { - "is": "equal", - "value": { - "value": "雪雪雪雪雪雪雪雪雪雪雪雪雪雪雪雪雪雪雪雪雪雪雪雪雪雪雪雪雪雪" - } - } - } - ], - "refusal": null - }, - { - "id": "operations/s3/get-metadata-malformed-encoded-word", - "profile": "s3", - "lane": "core", - "purpose": "Leave a value that only looks like an RFC 2047 encoded word as it is: =ZZ is no hexadecimal byte.", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "key": "object-tests/metadata/malformed-encoded-word.txt", - "op": "get" - }, - "exchanges": [ { "alternatives": [ { @@ -84719,7 +122520,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/metadata/malformed-encoded-word.txt" + "value": "/fixture" } }, { @@ -84729,6 +122530,38 @@ "is": "equal", "value": "" } + }, + { + "at": "/query/list-type", + "optional": false, + "rule": { + "is": "equal", + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/" + } + }, + { + "at": "/query/max-keys", + "optional": false, + "rule": { + "is": "equal", + "value": "1" + } + }, + { + "at": "/query/continuation-token", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-marker+/a11ba9e5001=" + } } ], "allow_headers": [ @@ -84738,18 +122571,17 @@ "response": { "status": 200, "headers": { - "content-type": "binary/octet-stream", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-6c30b210f0a8\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-amz-meta-value": "=?UTF-8?Q?caf=ZZ?=" + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "MQ==" - } + "encoding": "utf8", + "data": "\nfixtureobject-tests/board/fixture-marker+/a11ba9e5001=fixture-marker+/a11ba9e5002=11trueobject-tests/board/nested/c.txt2024-01-01T00:00:00.000Z"fixture-626f61720001"CRC64NVMEFULL_OBJECT1STANDARD" + }, + "framing": "chunked" } }, { @@ -84767,7 +122599,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/metadata/malformed-encoded-word.txt" + "value": "/fixture" } }, { @@ -84779,11 +122611,43 @@ } }, { - "at": "/headers/range", + "at": "/query/list-type", "optional": false, "rule": { - "is": "matches", - "pattern": "bytes=0-[1-9][0-9]{2,}" + "is": "equal", + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/" + } + }, + { + "at": "/query/max-keys", + "optional": false, + "rule": { + "is": "equal", + "value": "1" + } + }, + { + "at": "/query/continuation-token", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-marker+/a11ba9e5001=" + } + }, + { + "at": "/query/encoding-type", + "optional": false, + "rule": { + "is": "equal", + "value": "url" } } ], @@ -84792,104 +122656,23 @@ ], "allow_query": [], "response": { - "status": 206, + "status": 200, "headers": { - "content-range": "bytes 0-0/1", - "content-type": "binary/octet-stream", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-6c30b210f0a8\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-amz-meta-value": "=?UTF-8?Q?caf=ZZ?=" + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "MQ==" - } + "encoding": "utf8", + "data": "\nfixtureobject-tests/board/fixture-marker+/a11ba9e5001=fixture-marker+/a11ba9e5002=11urltrueobject-tests/board/nested/c.txt2024-01-01T00:00:00.000Z"fixture-626f61720001"CRC64NVMEFULL_OBJECT1STANDARD" + }, + "framing": "chunked" } } ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-6c30b210f0a8\"" - } - }, - { - "at": "/value/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/content_type", - "optional": false, - "rule": { - "is": "equal", - "value": "binary/octet-stream" - } - }, - { - "at": "/value/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "MQ==" - } }, - { - "at": "/value/metadata", - "optional": false, - "rule": { - "is": "equal", - "value": { - "value": "=?UTF-8?Q?caf=ZZ?=" - } - } - } - ], - "refusal": null - }, - { - "id": "operations/s3/get-metadata-replaced", - "profile": "s3", - "lane": "core", - "purpose": "get metadata replaced", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "key": "object-tests/metadata/replaced.txt", - "op": "get" - }, - "exchanges": [ { "alternatives": [ { @@ -84907,7 +122690,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/metadata/replaced.txt" + "value": "/fixture" } }, { @@ -84917,6 +122700,38 @@ "is": "equal", "value": "" } + }, + { + "at": "/query/list-type", + "optional": false, + "rule": { + "is": "equal", + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/" + } + }, + { + "at": "/query/max-keys", + "optional": false, + "rule": { + "is": "equal", + "value": "1" + } + }, + { + "at": "/query/continuation-token", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-marker+/a11ba9e5002=" + } } ], "allow_headers": [ @@ -84926,17 +122741,17 @@ "response": { "status": 200, "headers": { - "content-type": "binary/octet-stream", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-ea4c238956b1\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "Mg==" - } + "encoding": "utf8", + "data": "\nfixtureobject-tests/board/fixture-marker+/a11ba9e5002=11falseobject-tests/board/z.txt2024-01-01T00:00:00.000Z"fixture-626f61720002"CRC64NVMEFULL_OBJECT2STANDARD" + }, + "framing": "chunked" } }, { @@ -84954,7 +122769,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/metadata/replaced.txt" + "value": "/fixture" } }, { @@ -84966,11 +122781,43 @@ } }, { - "at": "/headers/range", + "at": "/query/list-type", "optional": false, "rule": { - "is": "matches", - "pattern": "bytes=0-[1-9][0-9]{2,}" + "is": "equal", + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/" + } + }, + { + "at": "/query/max-keys", + "optional": false, + "rule": { + "is": "equal", + "value": "1" + } + }, + { + "at": "/query/continuation-token", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-marker+/a11ba9e5002=" + } + }, + { + "at": "/query/encoding-type", + "optional": false, + "rule": { + "is": "equal", + "value": "url" } } ], @@ -84979,20 +122826,19 @@ ], "allow_query": [], "response": { - "status": 206, + "status": 200, "headers": { - "content-range": "bytes 0-0/1", - "content-type": "binary/octet-stream", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-ea4c238956b1\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "Mg==" - } + "encoding": "utf8", + "data": "\nfixtureobject-tests/board/fixture-marker+/a11ba9e5002=11urlfalseobject-tests/board/z.txt2024-01-01T00:00:00.000Z"fixture-626f61720002"CRC64NVMEFULL_OBJECT2STANDARD" + }, + "framing": "chunked" } } ] @@ -85008,62 +122854,31 @@ } }, { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-ea4c238956b1\"" - } - }, - { - "at": "/value/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/content_type", + "at": "/value/keys", "optional": false, "rule": { "is": "equal", - "value": "binary/octet-stream" - } - }, - { - "at": "/value/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" + "value": [ + "object-tests/board/a.txt", + "object-tests/board/nested/c.txt", + "object-tests/board/z.txt" ] } - }, - { - "at": "/value/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "Mg==" - } } ], "refusal": null }, { - "id": "operations/s3/get-metadata", + "id": "operations/s3/list-entry-properties", "profile": "s3", "lane": "core", - "purpose": "get metadata", + "purpose": "Report each listed object's last-modified time as RFC 3339 in UTC, and its storage class", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/metadata/object.txt", - "op": "get" + "op": "list_page", + "prefix": "object-tests/properties/" }, "exchanges": [ { @@ -85083,7 +122898,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/metadata/object.txt" + "value": "/fixture" } }, { @@ -85093,6 +122908,22 @@ "is": "equal", "value": "" } + }, + { + "at": "/query/list-type", + "optional": false, + "rule": { + "is": "equal", + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/properties/" + } } ], "allow_headers": [ @@ -85102,19 +122933,17 @@ "response": { "status": 200, "headers": { - "content-type": "binary/octet-stream", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-6c30b210f0a8\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-amz-meta-name": "value", - "x-amz-meta-second": "2" + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "MQ==" - } + "encoding": "utf8", + "data": "\nfixtureobject-tests/properties/21000falseobject-tests/properties/infrequent.txt2024-01-02T03:04:05.000Z"fixture-5070726f0000"CRC64NVMEFULL_OBJECT2STANDARD_IAobject-tests/properties/standard.txt2024-02-03T04:05:06.000Z"fixture-5070726f0001"CRC64NVMEFULL_OBJECT3STANDARD" + }, + "framing": "chunked" } }, { @@ -85132,7 +122961,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/metadata/object.txt" + "value": "/fixture" } }, { @@ -85144,11 +122973,27 @@ } }, { - "at": "/headers/range", + "at": "/query/list-type", "optional": false, "rule": { - "is": "matches", - "pattern": "bytes=0-[1-9][0-9]{2,}" + "is": "equal", + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/properties/" + } + }, + { + "at": "/query/encoding-type", + "optional": false, + "rule": { + "is": "equal", + "value": "url" } } ], @@ -85157,22 +123002,19 @@ ], "allow_query": [], "response": { - "status": 206, + "status": 200, "headers": { - "content-range": "bytes 0-0/1", - "content-type": "binary/octet-stream", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-6c30b210f0a8\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-amz-meta-name": "value", - "x-amz-meta-second": "2" + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "MQ==" - } + "encoding": "utf8", + "data": "\nfixtureobject-tests/properties/21000urlfalseobject-tests/properties/infrequent.txt2024-01-02T03:04:05.000Z"fixture-5070726f0000"CRC64NVMEFULL_OBJECT2STANDARD_IAobject-tests/properties/standard.txt2024-02-03T04:05:06.000Z"fixture-5070726f0001"CRC64NVMEFULL_OBJECT3STANDARD" + }, + "framing": "chunked" } } ] @@ -85188,31 +123030,47 @@ } }, { - "at": "/value/etag", + "at": "/value/entries/0/key", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-6c30b210f0a8\"" + "value": "object-tests/properties/infrequent.txt" } }, { - "at": "/value/size", + "at": "/value/entries/0/size", "optional": false, "rule": { "is": "equal", - "value": 1 + "value": 2 } }, { - "at": "/value/content_type", + "at": "/value/entries/0/etag", "optional": false, "rule": { "is": "equal", - "value": "binary/octet-stream" + "value": "\"fixture-5070726f0000\"" } }, { - "at": "/value/version", + "at": "/value/entries/0/last_modified", + "optional": false, + "rule": { + "is": "equal", + "value": "2024-01-02T03:04:05Z" + } + }, + { + "at": "/value/entries/0/storage_class", + "optional": false, + "rule": { + "is": "equal", + "value": "STANDARD_IA" + } + }, + { + "at": "/value/entries/0/snapshot", "optional": true, "rule": { "is": "one_of", @@ -85223,215 +123081,139 @@ } }, { - "at": "/value/body_base64", + "at": "/value/entries/0/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/1/key", "optional": false, "rule": { "is": "equal", - "value": "MQ==" + "value": "object-tests/properties/standard.txt" } }, { - "at": "/value/metadata", + "at": "/value/entries/1/size", "optional": false, "rule": { "is": "equal", - "value": { - "name": "value", - "second": "2" - } + "value": 3 } - } - ], - "refusal": null - }, - { - "id": "operations/s3/get-metadata-ignores-unknown-headers", - "profile": "s3", - "lane": "core", - "purpose": "Surface user metadata; unknown headers must not become metadata.", - "sources": [ - "https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html" - ], - "call": { - "key": "object", - "op": "get" - }, - "exchanges": [ + }, { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/headers/content-type", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - "application/xml", - "application/octet-stream", - "binary/octet-stream" - ] - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-type": "application/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-etag\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-amz-meta-author": "Ada", - "x-amz-request-id": "fixture-request-id", - "x-unrelated": "not metadata" - }, - "body": { - "encoding": "base64", - "data": "aGVsbG8=" - } - } - }, - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/headers/content-type", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - "application/xml", - "application/octet-stream", - "binary/octet-stream" - ] - } - }, - { - "at": "/headers/range", - "optional": false, - "rule": { - "is": "matches", - "pattern": "bytes=0-[1-9][0-9]{2,}" - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 206, - "headers": { - "content-range": "bytes 0-4/5", - "content-type": "application/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-etag\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-amz-meta-author": "Ada", - "x-amz-request-id": "fixture-request-id", - "x-unrelated": "not metadata" - }, - "body": { - "encoding": "base64", - "data": "aGVsbG8=" - } - } - } - ] - } - ], - "expect": [ + "at": "/value/entries/1/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-5070726f0001\"" + } + }, { - "at": "/outcome", + "at": "/value/entries/1/last_modified", "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "2024-02-03T04:05:06Z" } }, { - "at": "/value/body_base64", + "at": "/value/entries/1/storage_class", "optional": false, "rule": { "is": "equal", - "value": "aGVsbG8=" + "value": "STANDARD" } }, { - "at": "/value/metadata", + "at": "/value/entries/1/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/1/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/1/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries", + "optional": false, + "rule": { + "is": "array_length", + "value": 2 + } + }, + { + "at": "/value/prefixes", + "optional": false, + "rule": { + "is": "array_length", + "value": 0 + } + }, + { + "at": "/value/continuation_token", "optional": false, "rule": { "is": "equal", - "value": { - "author": "Ada" - } + "value": "" } } ], "refusal": null }, { - "id": "operations/s3/get-missing", + "id": "operations/s3/list-checksum-algorithm", "profile": "s3", "lane": "core", - "purpose": "get missing", + "purpose": "Report each listed object's checksum algorithm as one name; S3 keeps one checksum per object, the one a write sent or else CRC64NVME, and lists one ChecksumAlgorithm", "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html", + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html" ], "call": { - "key": "object-tests/read/absent.txt", - "op": "get" + "op": "list_page", + "prefix": "object-tests/checksum-listing/" }, "exchanges": [ { @@ -85451,7 +123233,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/absent.txt" + "value": "/fixture" } }, { @@ -85461,6 +123243,22 @@ "is": "equal", "value": "" } + }, + { + "at": "/query/list-type", + "optional": false, + "rule": { + "is": "equal", + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/checksum-listing/" + } } ], "allow_headers": [ @@ -85468,16 +123266,17 @@ ], "allow_query": [], "response": { - "status": 404, + "status": 200, "headers": { "content-type": "application/xml", "date": { "from": "now" - } + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "utf8", - "data": "\nNoSuchKeyFixture error" + "data": "\nfixtureobject-tests/checksum-listing/21000falseobject-tests/checksum-listing/crc32.txt2024-01-01T00:00:00.000Z"fixture-636b736c0000"CRC32FULL_OBJECT3STANDARDobject-tests/checksum-listing/none.txt2024-01-01T00:00:00.000Z"fixture-636b736c0001"CRC64NVMEFULL_OBJECT4STANDARD" }, "framing": "chunked" } @@ -85497,7 +123296,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/absent.txt" + "value": "/fixture" } }, { @@ -85509,11 +123308,27 @@ } }, { - "at": "/headers/range", + "at": "/query/list-type", "optional": false, "rule": { - "is": "matches", - "pattern": "bytes=0-[1-9][0-9]{2,}" + "is": "equal", + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/checksum-listing/" + } + }, + { + "at": "/query/encoding-type", + "optional": false, + "rule": { + "is": "equal", + "value": "url" } } ], @@ -85522,16 +123337,17 @@ ], "allow_query": [], "response": { - "status": 404, + "status": 200, "headers": { "content-type": "application/xml", "date": { "from": "now" - } + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "utf8", - "data": "\nNoSuchKeyFixture error" + "data": "\nfixtureobject-tests/checksum-listing/21000urlfalseobject-tests/checksum-listing/crc32.txt2024-01-01T00:00:00.000Z"fixture-636b736c0000"CRC32FULL_OBJECT3STANDARDobject-tests/checksum-listing/none.txt2024-01-01T00:00:00.000Z"fixture-636b736c0001"CRC64NVMEFULL_OBJECT4STANDARD" }, "framing": "chunked" } @@ -85545,40 +123361,178 @@ "optional": false, "rule": { "is": "equal", - "value": "error" + "value": "ok" } }, { - "at": "/status", + "at": "/value/entries/0/key", "optional": false, "rule": { "is": "equal", - "value": 404 + "value": "object-tests/checksum-listing/crc32.txt" } }, { - "at": "/code", + "at": "/value/entries/0/size", "optional": false, "rule": { "is": "equal", - "value": "NoSuchKey" + "value": 3 + } + }, + { + "at": "/value/entries/0/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-636b736c0000\"" + } + }, + { + "at": "/value/entries/0/checksum_algorithm", + "optional": false, + "rule": { + "is": "equal", + "value": "CRC32" + } + }, + { + "at": "/value/entries/0/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/1/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/checksum-listing/none.txt" + } + }, + { + "at": "/value/entries/1/size", + "optional": false, + "rule": { + "is": "equal", + "value": 4 + } + }, + { + "at": "/value/entries/1/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-636b736c0001\"" + } + }, + { + "at": "/value/entries/1/checksum_algorithm", + "optional": false, + "rule": { + "is": "equal", + "value": "CRC64NVME" + } + }, + { + "at": "/value/entries/1/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/1/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/1/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries", + "optional": false, + "rule": { + "is": "array_length", + "value": 2 + } + }, + { + "at": "/value/prefixes", + "optional": false, + "rule": { + "is": "array_length", + "value": 0 + } + }, + { + "at": "/value/continuation_token", + "optional": false, + "rule": { + "is": "equal", + "value": "" } } ], "refusal": null }, { - "id": "operations/s3/get-not-modified", + "id": "operations/s3/list-other-delimiter", "profile": "s3", "lane": "core", - "purpose": "get not modified", + "purpose": "Send the delimiter the caller names. A general-purpose bucket groups keys at any delimiter, not only /; here a- groups a-1.txt and a-2.txt", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "if_none_match": "\"fixture-ad03f2ab332a\"", - "key": "object-tests/read/object.txt", - "op": "get" + "delimiter": "-", + "op": "list_page", + "prefix": "object-tests/dashes/" }, "exchanges": [ { @@ -85598,7 +123552,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "/fixture" } }, { @@ -85610,11 +123564,27 @@ } }, { - "at": "/headers/if-none-match", + "at": "/query/list-type", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-ad03f2ab332a\"" + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/dashes/" + } + }, + { + "at": "/query/delimiter", + "optional": false, + "rule": { + "is": "equal", + "value": "-" } } ], @@ -85623,17 +123593,19 @@ ], "allow_query": [], "response": { - "status": 304, + "status": 200, "headers": { + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-ad03f2ab332a\"" + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "" - } + "encoding": "utf8", + "data": "\nfixtureobject-tests/dashes/21000-falseobject-tests/dashes/b.txt2024-01-01T00:00:00.000Z"fixture-646173680000"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/dashes/a-" + }, + "framing": "chunked" } }, { @@ -85651,7 +123623,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "/fixture" } }, { @@ -85663,19 +123635,35 @@ } }, { - "at": "/headers/if-none-match", + "at": "/query/list-type", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-ad03f2ab332a\"" + "value": "2" } }, { - "at": "/headers/range", + "at": "/query/prefix", "optional": false, "rule": { - "is": "matches", - "pattern": "bytes=0-[1-9][0-9]{2,}" + "is": "equal", + "value": "object-tests/dashes/" + } + }, + { + "at": "/query/delimiter", + "optional": false, + "rule": { + "is": "equal", + "value": "-" + } + }, + { + "at": "/query/encoding-type", + "optional": false, + "rule": { + "is": "equal", + "value": "url" } } ], @@ -85684,17 +123672,19 @@ ], "allow_query": [], "response": { - "status": 304, + "status": 200, "headers": { + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-ad03f2ab332a\"" + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "" - } + "encoding": "utf8", + "data": "\nfixtureobject-tests/dashes/21000-urlfalseobject-tests/dashes/b.txt2024-01-01T00:00:00.000Z"fixture-646173680000"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/dashes/a-" + }, + "framing": "chunked" } } ] @@ -85706,32 +123696,113 @@ "optional": false, "rule": { "is": "equal", - "value": "error" + "value": "ok" } }, { - "at": "/status", + "at": "/value/entries/0/key", "optional": false, "rule": { "is": "equal", - "value": 304 + "value": "object-tests/dashes/b.txt" + } + }, + { + "at": "/value/entries/0/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/0/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-646173680000\"" + } + }, + { + "at": "/value/entries/0/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries", + "optional": false, + "rule": { + "is": "array_length", + "value": 1 + } + }, + { + "at": "/value/prefixes/0", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/dashes/a-" + } + }, + { + "at": "/value/prefixes", + "optional": false, + "rule": { + "is": "array_length", + "value": 1 + } + }, + { + "at": "/value/continuation_token", + "optional": false, + "rule": { + "is": "equal", + "value": "" } } ], "refusal": null }, { - "id": "operations/s3/get-precondition-failed", + "id": "operations/s3/list-prefix-special-characters", "profile": "s3", "lane": "core", - "purpose": "get precondition failed", + "purpose": "Percent-encode the prefix in the query, a space as %20 and a plus as %2B, and decode the common prefixes of a URL-encoded listing as well as the keys", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "if_match": "\"fixture-db71b2c0257c\"", - "key": "object-tests/read/object.txt", - "op": "get" + "delimiter": "/", + "op": "list_page", + "prefix": "object-tests/odd a+b&c=d%é/" }, "exchanges": [ { @@ -85751,7 +123822,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "/fixture" } }, { @@ -85763,11 +123834,27 @@ } }, { - "at": "/headers/if-match", + "at": "/query/list-type", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-db71b2c0257c\"" + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/odd a+b&c=d%é/" + } + }, + { + "at": "/query/delimiter", + "optional": false, + "rule": { + "is": "equal", + "value": "/" } } ], @@ -85776,16 +123863,17 @@ ], "allow_query": [], "response": { - "status": 412, + "status": 200, "headers": { "content-type": "application/xml", "date": { "from": "now" - } + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "utf8", - "data": "\nPreconditionFailedFixture error" + "data": "\nfixtureobject-tests/odd a+b&c=d%é/21000/falseobject-tests/odd a+b&c=d%é/x.txt2024-01-01T00:00:00.000Z"fixture-6f6464200000"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/odd a+b&c=d%é/sub dir+/" }, "framing": "chunked" } @@ -85805,7 +123893,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "/fixture" } }, { @@ -85817,123 +123905,35 @@ } }, { - "at": "/headers/if-match", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-db71b2c0257c\"" - } - }, - { - "at": "/headers/range", - "optional": false, - "rule": { - "is": "matches", - "pattern": "bytes=0-[1-9][0-9]{2,}" - } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 412, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - } - }, - "body": { - "encoding": "utf8", - "data": "\nPreconditionFailedFixture error" - }, - "framing": "chunked" - } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 412 - } - }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "equal", - "value": "PreconditionFailed" - } - } - ], - "refusal": null - }, - { - "id": "operations/s3/get-range-inverted", - "profile": "s3", - "lane": "core", - "purpose": "get range inverted", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "key": "object-tests/read/object.txt", - "op": "get", - "range": { - "end": 2, - "start": 6 - } - }, - "exchanges": [ - { - "alternatives": [ - { - "request": [ - { - "at": "/method", + "at": "/query/list-type", "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "2" } }, { - "at": "/path", + "at": "/query/prefix", "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "object-tests/odd a+b&c=d%é/" } }, { - "at": "/body_base64", + "at": "/query/delimiter", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "/" } }, { - "at": "/headers/range", + "at": "/query/encoding-type", "optional": false, "rule": { "is": "equal", - "value": "bytes=6-1" + "value": "url" } } ], @@ -85944,17 +123944,17 @@ "response": { "status": 200, "headers": { - "content-type": "binary/octet-stream", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-ad03f2ab332a\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" - } + "encoding": "utf8", + "data": "\nfixtureobject-tests/odd+a%2Bb%26c%3Dd%25%C3%A9/21000/urlfalseobject-tests/odd+a%2Bb%26c%3Dd%25%C3%A9/x.txt2024-01-01T00:00:00.000Z"fixture-6f6464200000"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/odd+a%2Bb%26c%3Dd%25%C3%A9/sub+dir%2B/" + }, + "framing": "chunked" } } ] @@ -85970,31 +123970,31 @@ } }, { - "at": "/value/etag", + "at": "/value/entries/0/key", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-ad03f2ab332a\"" + "value": "object-tests/odd a+b&c=d%é/x.txt" } }, { - "at": "/value/size", + "at": "/value/entries/0/size", "optional": false, "rule": { "is": "equal", - "value": 30 + "value": 1 } }, { - "at": "/value/content_type", + "at": "/value/entries/0/etag", "optional": false, "rule": { "is": "equal", - "value": "binary/octet-stream" + "value": "\"fixture-6f6464200000\"" } }, { - "at": "/value/version", + "at": "/value/entries/0/snapshot", "optional": true, "rule": { "is": "one_of", @@ -86005,56 +124005,74 @@ } }, { - "at": "/value/body_base64", + "at": "/value/entries/0/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries", "optional": false, "rule": { - "is": "equal", - "value": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + "is": "array_length", + "value": 1 } - } - ], - "refusal": [ + }, { - "at": "/outcome", + "at": "/value/prefixes/0", "optional": false, "rule": { "is": "equal", - "value": "refused" + "value": "object-tests/odd a+b&c=d%é/sub dir+/" } }, { - "at": "/kind", + "at": "/value/prefixes", "optional": false, "rule": { - "is": "matches", - "pattern": ".+" + "is": "array_length", + "value": 1 } }, { - "at": "/parameter", + "at": "/value/continuation_token", "optional": false, "rule": { "is": "equal", - "value": "range" + "value": "" } } ], - "decline_permitted": true + "refusal": null }, { - "id": "operations/s3/get-range-not-satisfiable", + "id": "operations/s3/list-fetch-owner", "profile": "s3", "lane": "core", - "purpose": "get range not satisfiable", + "purpose": "Ask for owners with fetch-owner=true, and report each listed object's owner ID", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/read/object.txt", - "op": "get", - "range": { - "start": 40 - } + "fetch_owner": true, + "op": "list_page", + "prefix": "object-tests/owner/" }, "exchanges": [ { @@ -86074,7 +124092,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "/fixture" } }, { @@ -86086,11 +124104,27 @@ } }, { - "at": "/headers/range", + "at": "/query/list-type", "optional": false, "rule": { "is": "equal", - "value": "bytes=40-" + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/owner/" + } + }, + { + "at": "/query/fetch-owner", + "optional": false, + "rule": { + "is": "equal", + "value": "true" } } ], @@ -86099,16 +124133,17 @@ ], "allow_query": [], "response": { - "status": 416, + "status": 200, "headers": { "content-type": "application/xml", "date": { "from": "now" - } + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "utf8", - "data": "\nInvalidRangeFixture error" + "data": "\nfixtureobject-tests/owner/11000falseobject-tests/owner/a.txt2024-01-01T00:00:00.000Z"fixture-6f776e650000"CRC64NVMEFULL_OBJECT1fixture-owner-idSTANDARD" }, "framing": "chunked" } @@ -86128,7 +124163,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "/fixture" } }, { @@ -86140,115 +124175,35 @@ } }, { - "at": "/headers/range", - "optional": false, - "rule": { - "is": "matches", - "pattern": "bytes=40-[1-9][0-9]{2,}" - } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 416, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - } - }, - "body": { - "encoding": "utf8", - "data": "\nInvalidRangeFixture error" - }, - "framing": "chunked" - } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 416 - } - }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "equal", - "value": "InvalidRange" - } - } - ], - "refusal": null - }, - { - "id": "operations/s3/get-range-past-the-end", - "profile": "s3", - "lane": "core", - "purpose": "get range past the end", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "key": "object-tests/read/object.txt", - "op": "get", - "range": { - "end": 64, - "start": 28 - } - }, - "exchanges": [ - { - "alternatives": [ - { - "request": [ - { - "at": "/method", + "at": "/query/list-type", "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "2" } }, { - "at": "/path", + "at": "/query/prefix", "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "object-tests/owner/" } }, { - "at": "/body_base64", + "at": "/query/fetch-owner", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "true" } }, { - "at": "/headers/range", + "at": "/query/encoding-type", "optional": false, "rule": { "is": "equal", - "value": "bytes=28-63" + "value": "url" } } ], @@ -86257,20 +124212,19 @@ ], "allow_query": [], "response": { - "status": 206, + "status": 200, "headers": { - "content-range": "bytes 28-29/30", - "content-type": "binary/octet-stream", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-ad03f2ab332a\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "Y3Q=" - } + "encoding": "utf8", + "data": "\nfixtureobject-tests/owner/11000urlfalseobject-tests/owner/a.txt2024-01-01T00:00:00.000Z"fixture-6f776e650000"CRC64NVMEFULL_OBJECT1fixture-owner-idSTANDARD" + }, + "framing": "chunked" } } ] @@ -86286,31 +124240,39 @@ } }, { - "at": "/value/etag", + "at": "/value/entries/0/key", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-ad03f2ab332a\"" + "value": "object-tests/owner/a.txt" } }, { - "at": "/value/size", + "at": "/value/entries/0/size", "optional": false, "rule": { "is": "equal", - "value": 2 + "value": 1 } }, { - "at": "/value/content_type", + "at": "/value/entries/0/etag", "optional": false, "rule": { "is": "equal", - "value": "binary/octet-stream" + "value": "\"fixture-6f776e650000\"" } }, { - "at": "/value/version", + "at": "/value/entries/0/owner_id", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-owner-id" + } + }, + { + "at": "/value/entries/0/snapshot", "optional": true, "rule": { "is": "one_of", @@ -86321,31 +124283,65 @@ } }, { - "at": "/value/body_base64", + "at": "/value/entries/0/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries", + "optional": false, + "rule": { + "is": "array_length", + "value": 1 + } + }, + { + "at": "/value/prefixes", + "optional": false, + "rule": { + "is": "array_length", + "value": 0 + } + }, + { + "at": "/value/continuation_token", "optional": false, "rule": { "is": "equal", - "value": "Y3Q=" + "value": "" } } ], "refusal": null }, { - "id": "operations/s3/get-range-single-byte", + "id": "operations/s3/list-over-1000", "profile": "s3", "lane": "core", - "purpose": "get range single byte", + "purpose": "List more keys than the service's default page of 1,000 by following the continuation token", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/read/object.txt", - "op": "get", - "range": { - "end": 1, - "start": 0 - } + "op": "list", + "prefix": "object-tests/many/" }, "exchanges": [ { @@ -86365,7 +124361,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "/fixture" } }, { @@ -86377,11 +124373,19 @@ } }, { - "at": "/headers/range", + "at": "/query/list-type", "optional": false, "rule": { "is": "equal", - "value": "bytes=0-0" + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/many/" } } ], @@ -86390,99 +124394,21 @@ ], "allow_query": [], "response": { - "status": 206, + "status": 200, "headers": { - "content-range": "bytes 0-0/30", - "content-type": "binary/octet-stream", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-ad03f2ab332a\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "MA==" - } + "encoding": "utf8", + "data": "\nfixtureobject-tests/many/fixture-marker+/3a4e1000=10001000trueobject-tests/many/00002024-01-01T00:00:00.000Z"fixture-6d610000"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00012024-01-01T00:00:00.000Z"fixture-6d610001"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00022024-01-01T00:00:00.000Z"fixture-6d610002"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00032024-01-01T00:00:00.000Z"fixture-6d610003"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00042024-01-01T00:00:00.000Z"fixture-6d610004"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00052024-01-01T00:00:00.000Z"fixture-6d610005"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00062024-01-01T00:00:00.000Z"fixture-6d610006"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00072024-01-01T00:00:00.000Z"fixture-6d610007"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00082024-01-01T00:00:00.000Z"fixture-6d610008"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00092024-01-01T00:00:00.000Z"fixture-6d610009"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00102024-01-01T00:00:00.000Z"fixture-6d61000a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00112024-01-01T00:00:00.000Z"fixture-6d61000b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00122024-01-01T00:00:00.000Z"fixture-6d61000c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00132024-01-01T00:00:00.000Z"fixture-6d61000d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00142024-01-01T00:00:00.000Z"fixture-6d61000e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00152024-01-01T00:00:00.000Z"fixture-6d61000f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00162024-01-01T00:00:00.000Z"fixture-6d610010"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00172024-01-01T00:00:00.000Z"fixture-6d610011"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00182024-01-01T00:00:00.000Z"fixture-6d610012"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00192024-01-01T00:00:00.000Z"fixture-6d610013"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00202024-01-01T00:00:00.000Z"fixture-6d610014"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00212024-01-01T00:00:00.000Z"fixture-6d610015"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00222024-01-01T00:00:00.000Z"fixture-6d610016"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00232024-01-01T00:00:00.000Z"fixture-6d610017"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00242024-01-01T00:00:00.000Z"fixture-6d610018"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00252024-01-01T00:00:00.000Z"fixture-6d610019"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00262024-01-01T00:00:00.000Z"fixture-6d61001a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00272024-01-01T00:00:00.000Z"fixture-6d61001b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00282024-01-01T00:00:00.000Z"fixture-6d61001c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00292024-01-01T00:00:00.000Z"fixture-6d61001d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00302024-01-01T00:00:00.000Z"fixture-6d61001e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00312024-01-01T00:00:00.000Z"fixture-6d61001f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00322024-01-01T00:00:00.000Z"fixture-6d610020"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00332024-01-01T00:00:00.000Z"fixture-6d610021"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00342024-01-01T00:00:00.000Z"fixture-6d610022"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00352024-01-01T00:00:00.000Z"fixture-6d610023"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00362024-01-01T00:00:00.000Z"fixture-6d610024"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00372024-01-01T00:00:00.000Z"fixture-6d610025"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00382024-01-01T00:00:00.000Z"fixture-6d610026"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00392024-01-01T00:00:00.000Z"fixture-6d610027"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00402024-01-01T00:00:00.000Z"fixture-6d610028"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00412024-01-01T00:00:00.000Z"fixture-6d610029"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00422024-01-01T00:00:00.000Z"fixture-6d61002a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00432024-01-01T00:00:00.000Z"fixture-6d61002b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00442024-01-01T00:00:00.000Z"fixture-6d61002c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00452024-01-01T00:00:00.000Z"fixture-6d61002d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00462024-01-01T00:00:00.000Z"fixture-6d61002e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00472024-01-01T00:00:00.000Z"fixture-6d61002f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00482024-01-01T00:00:00.000Z"fixture-6d610030"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00492024-01-01T00:00:00.000Z"fixture-6d610031"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00502024-01-01T00:00:00.000Z"fixture-6d610032"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00512024-01-01T00:00:00.000Z"fixture-6d610033"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00522024-01-01T00:00:00.000Z"fixture-6d610034"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00532024-01-01T00:00:00.000Z"fixture-6d610035"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00542024-01-01T00:00:00.000Z"fixture-6d610036"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00552024-01-01T00:00:00.000Z"fixture-6d610037"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00562024-01-01T00:00:00.000Z"fixture-6d610038"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00572024-01-01T00:00:00.000Z"fixture-6d610039"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00582024-01-01T00:00:00.000Z"fixture-6d61003a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00592024-01-01T00:00:00.000Z"fixture-6d61003b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00602024-01-01T00:00:00.000Z"fixture-6d61003c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00612024-01-01T00:00:00.000Z"fixture-6d61003d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00622024-01-01T00:00:00.000Z"fixture-6d61003e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00632024-01-01T00:00:00.000Z"fixture-6d61003f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00642024-01-01T00:00:00.000Z"fixture-6d610040"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00652024-01-01T00:00:00.000Z"fixture-6d610041"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00662024-01-01T00:00:00.000Z"fixture-6d610042"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00672024-01-01T00:00:00.000Z"fixture-6d610043"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00682024-01-01T00:00:00.000Z"fixture-6d610044"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00692024-01-01T00:00:00.000Z"fixture-6d610045"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00702024-01-01T00:00:00.000Z"fixture-6d610046"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00712024-01-01T00:00:00.000Z"fixture-6d610047"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00722024-01-01T00:00:00.000Z"fixture-6d610048"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00732024-01-01T00:00:00.000Z"fixture-6d610049"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00742024-01-01T00:00:00.000Z"fixture-6d61004a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00752024-01-01T00:00:00.000Z"fixture-6d61004b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00762024-01-01T00:00:00.000Z"fixture-6d61004c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00772024-01-01T00:00:00.000Z"fixture-6d61004d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00782024-01-01T00:00:00.000Z"fixture-6d61004e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00792024-01-01T00:00:00.000Z"fixture-6d61004f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00802024-01-01T00:00:00.000Z"fixture-6d610050"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00812024-01-01T00:00:00.000Z"fixture-6d610051"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00822024-01-01T00:00:00.000Z"fixture-6d610052"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00832024-01-01T00:00:00.000Z"fixture-6d610053"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00842024-01-01T00:00:00.000Z"fixture-6d610054"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00852024-01-01T00:00:00.000Z"fixture-6d610055"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00862024-01-01T00:00:00.000Z"fixture-6d610056"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00872024-01-01T00:00:00.000Z"fixture-6d610057"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00882024-01-01T00:00:00.000Z"fixture-6d610058"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00892024-01-01T00:00:00.000Z"fixture-6d610059"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00902024-01-01T00:00:00.000Z"fixture-6d61005a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00912024-01-01T00:00:00.000Z"fixture-6d61005b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00922024-01-01T00:00:00.000Z"fixture-6d61005c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00932024-01-01T00:00:00.000Z"fixture-6d61005d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00942024-01-01T00:00:00.000Z"fixture-6d61005e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00952024-01-01T00:00:00.000Z"fixture-6d61005f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00962024-01-01T00:00:00.000Z"fixture-6d610060"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00972024-01-01T00:00:00.000Z"fixture-6d610061"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00982024-01-01T00:00:00.000Z"fixture-6d610062"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00992024-01-01T00:00:00.000Z"fixture-6d610063"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01002024-01-01T00:00:00.000Z"fixture-6d610064"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01012024-01-01T00:00:00.000Z"fixture-6d610065"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01022024-01-01T00:00:00.000Z"fixture-6d610066"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01032024-01-01T00:00:00.000Z"fixture-6d610067"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01042024-01-01T00:00:00.000Z"fixture-6d610068"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01052024-01-01T00:00:00.000Z"fixture-6d610069"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01062024-01-01T00:00:00.000Z"fixture-6d61006a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01072024-01-01T00:00:00.000Z"fixture-6d61006b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01082024-01-01T00:00:00.000Z"fixture-6d61006c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01092024-01-01T00:00:00.000Z"fixture-6d61006d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01102024-01-01T00:00:00.000Z"fixture-6d61006e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01112024-01-01T00:00:00.000Z"fixture-6d61006f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01122024-01-01T00:00:00.000Z"fixture-6d610070"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01132024-01-01T00:00:00.000Z"fixture-6d610071"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01142024-01-01T00:00:00.000Z"fixture-6d610072"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01152024-01-01T00:00:00.000Z"fixture-6d610073"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01162024-01-01T00:00:00.000Z"fixture-6d610074"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01172024-01-01T00:00:00.000Z"fixture-6d610075"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01182024-01-01T00:00:00.000Z"fixture-6d610076"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01192024-01-01T00:00:00.000Z"fixture-6d610077"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01202024-01-01T00:00:00.000Z"fixture-6d610078"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01212024-01-01T00:00:00.000Z"fixture-6d610079"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01222024-01-01T00:00:00.000Z"fixture-6d61007a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01232024-01-01T00:00:00.000Z"fixture-6d61007b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01242024-01-01T00:00:00.000Z"fixture-6d61007c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01252024-01-01T00:00:00.000Z"fixture-6d61007d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01262024-01-01T00:00:00.000Z"fixture-6d61007e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01272024-01-01T00:00:00.000Z"fixture-6d61007f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01282024-01-01T00:00:00.000Z"fixture-6d610080"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01292024-01-01T00:00:00.000Z"fixture-6d610081"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01302024-01-01T00:00:00.000Z"fixture-6d610082"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01312024-01-01T00:00:00.000Z"fixture-6d610083"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01322024-01-01T00:00:00.000Z"fixture-6d610084"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01332024-01-01T00:00:00.000Z"fixture-6d610085"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01342024-01-01T00:00:00.000Z"fixture-6d610086"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01352024-01-01T00:00:00.000Z"fixture-6d610087"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01362024-01-01T00:00:00.000Z"fixture-6d610088"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01372024-01-01T00:00:00.000Z"fixture-6d610089"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01382024-01-01T00:00:00.000Z"fixture-6d61008a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01392024-01-01T00:00:00.000Z"fixture-6d61008b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01402024-01-01T00:00:00.000Z"fixture-6d61008c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01412024-01-01T00:00:00.000Z"fixture-6d61008d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01422024-01-01T00:00:00.000Z"fixture-6d61008e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01432024-01-01T00:00:00.000Z"fixture-6d61008f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01442024-01-01T00:00:00.000Z"fixture-6d610090"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01452024-01-01T00:00:00.000Z"fixture-6d610091"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01462024-01-01T00:00:00.000Z"fixture-6d610092"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01472024-01-01T00:00:00.000Z"fixture-6d610093"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01482024-01-01T00:00:00.000Z"fixture-6d610094"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01492024-01-01T00:00:00.000Z"fixture-6d610095"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01502024-01-01T00:00:00.000Z"fixture-6d610096"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01512024-01-01T00:00:00.000Z"fixture-6d610097"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01522024-01-01T00:00:00.000Z"fixture-6d610098"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01532024-01-01T00:00:00.000Z"fixture-6d610099"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01542024-01-01T00:00:00.000Z"fixture-6d61009a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01552024-01-01T00:00:00.000Z"fixture-6d61009b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01562024-01-01T00:00:00.000Z"fixture-6d61009c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01572024-01-01T00:00:00.000Z"fixture-6d61009d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01582024-01-01T00:00:00.000Z"fixture-6d61009e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01592024-01-01T00:00:00.000Z"fixture-6d61009f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01602024-01-01T00:00:00.000Z"fixture-6d6100a0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01612024-01-01T00:00:00.000Z"fixture-6d6100a1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01622024-01-01T00:00:00.000Z"fixture-6d6100a2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01632024-01-01T00:00:00.000Z"fixture-6d6100a3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01642024-01-01T00:00:00.000Z"fixture-6d6100a4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01652024-01-01T00:00:00.000Z"fixture-6d6100a5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01662024-01-01T00:00:00.000Z"fixture-6d6100a6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01672024-01-01T00:00:00.000Z"fixture-6d6100a7"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01682024-01-01T00:00:00.000Z"fixture-6d6100a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01692024-01-01T00:00:00.000Z"fixture-6d6100a9"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01702024-01-01T00:00:00.000Z"fixture-6d6100aa"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01712024-01-01T00:00:00.000Z"fixture-6d6100ab"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01722024-01-01T00:00:00.000Z"fixture-6d6100ac"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01732024-01-01T00:00:00.000Z"fixture-6d6100ad"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01742024-01-01T00:00:00.000Z"fixture-6d6100ae"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01752024-01-01T00:00:00.000Z"fixture-6d6100af"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01762024-01-01T00:00:00.000Z"fixture-6d6100b0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01772024-01-01T00:00:00.000Z"fixture-6d6100b1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01782024-01-01T00:00:00.000Z"fixture-6d6100b2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01792024-01-01T00:00:00.000Z"fixture-6d6100b3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01802024-01-01T00:00:00.000Z"fixture-6d6100b4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01812024-01-01T00:00:00.000Z"fixture-6d6100b5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01822024-01-01T00:00:00.000Z"fixture-6d6100b6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01832024-01-01T00:00:00.000Z"fixture-6d6100b7"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01842024-01-01T00:00:00.000Z"fixture-6d6100b8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01852024-01-01T00:00:00.000Z"fixture-6d6100b9"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01862024-01-01T00:00:00.000Z"fixture-6d6100ba"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01872024-01-01T00:00:00.000Z"fixture-6d6100bb"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01882024-01-01T00:00:00.000Z"fixture-6d6100bc"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01892024-01-01T00:00:00.000Z"fixture-6d6100bd"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01902024-01-01T00:00:00.000Z"fixture-6d6100be"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01912024-01-01T00:00:00.000Z"fixture-6d6100bf"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01922024-01-01T00:00:00.000Z"fixture-6d6100c0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01932024-01-01T00:00:00.000Z"fixture-6d6100c1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01942024-01-01T00:00:00.000Z"fixture-6d6100c2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01952024-01-01T00:00:00.000Z"fixture-6d6100c3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01962024-01-01T00:00:00.000Z"fixture-6d6100c4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01972024-01-01T00:00:00.000Z"fixture-6d6100c5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01982024-01-01T00:00:00.000Z"fixture-6d6100c6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01992024-01-01T00:00:00.000Z"fixture-6d6100c7"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02002024-01-01T00:00:00.000Z"fixture-6d6100c8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02012024-01-01T00:00:00.000Z"fixture-6d6100c9"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02022024-01-01T00:00:00.000Z"fixture-6d6100ca"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02032024-01-01T00:00:00.000Z"fixture-6d6100cb"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02042024-01-01T00:00:00.000Z"fixture-6d6100cc"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02052024-01-01T00:00:00.000Z"fixture-6d6100cd"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02062024-01-01T00:00:00.000Z"fixture-6d6100ce"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02072024-01-01T00:00:00.000Z"fixture-6d6100cf"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02082024-01-01T00:00:00.000Z"fixture-6d6100d0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02092024-01-01T00:00:00.000Z"fixture-6d6100d1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02102024-01-01T00:00:00.000Z"fixture-6d6100d2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02112024-01-01T00:00:00.000Z"fixture-6d6100d3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02122024-01-01T00:00:00.000Z"fixture-6d6100d4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02132024-01-01T00:00:00.000Z"fixture-6d6100d5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02142024-01-01T00:00:00.000Z"fixture-6d6100d6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02152024-01-01T00:00:00.000Z"fixture-6d6100d7"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02162024-01-01T00:00:00.000Z"fixture-6d6100d8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02172024-01-01T00:00:00.000Z"fixture-6d6100d9"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02182024-01-01T00:00:00.000Z"fixture-6d6100da"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02192024-01-01T00:00:00.000Z"fixture-6d6100db"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02202024-01-01T00:00:00.000Z"fixture-6d6100dc"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02212024-01-01T00:00:00.000Z"fixture-6d6100dd"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02222024-01-01T00:00:00.000Z"fixture-6d6100de"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02232024-01-01T00:00:00.000Z"fixture-6d6100df"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02242024-01-01T00:00:00.000Z"fixture-6d6100e0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02252024-01-01T00:00:00.000Z"fixture-6d6100e1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02262024-01-01T00:00:00.000Z"fixture-6d6100e2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02272024-01-01T00:00:00.000Z"fixture-6d6100e3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02282024-01-01T00:00:00.000Z"fixture-6d6100e4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02292024-01-01T00:00:00.000Z"fixture-6d6100e5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02302024-01-01T00:00:00.000Z"fixture-6d6100e6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02312024-01-01T00:00:00.000Z"fixture-6d6100e7"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02322024-01-01T00:00:00.000Z"fixture-6d6100e8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02332024-01-01T00:00:00.000Z"fixture-6d6100e9"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02342024-01-01T00:00:00.000Z"fixture-6d6100ea"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02352024-01-01T00:00:00.000Z"fixture-6d6100eb"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02362024-01-01T00:00:00.000Z"fixture-6d6100ec"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02372024-01-01T00:00:00.000Z"fixture-6d6100ed"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02382024-01-01T00:00:00.000Z"fixture-6d6100ee"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02392024-01-01T00:00:00.000Z"fixture-6d6100ef"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02402024-01-01T00:00:00.000Z"fixture-6d6100f0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02412024-01-01T00:00:00.000Z"fixture-6d6100f1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02422024-01-01T00:00:00.000Z"fixture-6d6100f2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02432024-01-01T00:00:00.000Z"fixture-6d6100f3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02442024-01-01T00:00:00.000Z"fixture-6d6100f4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02452024-01-01T00:00:00.000Z"fixture-6d6100f5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02462024-01-01T00:00:00.000Z"fixture-6d6100f6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02472024-01-01T00:00:00.000Z"fixture-6d6100f7"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02482024-01-01T00:00:00.000Z"fixture-6d6100f8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02492024-01-01T00:00:00.000Z"fixture-6d6100f9"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02502024-01-01T00:00:00.000Z"fixture-6d6100fa"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02512024-01-01T00:00:00.000Z"fixture-6d6100fb"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02522024-01-01T00:00:00.000Z"fixture-6d6100fc"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02532024-01-01T00:00:00.000Z"fixture-6d6100fd"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02542024-01-01T00:00:00.000Z"fixture-6d6100fe"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02552024-01-01T00:00:00.000Z"fixture-6d6100ff"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02562024-01-01T00:00:00.000Z"fixture-6d610100"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02572024-01-01T00:00:00.000Z"fixture-6d610101"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02582024-01-01T00:00:00.000Z"fixture-6d610102"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02592024-01-01T00:00:00.000Z"fixture-6d610103"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02602024-01-01T00:00:00.000Z"fixture-6d610104"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02612024-01-01T00:00:00.000Z"fixture-6d610105"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02622024-01-01T00:00:00.000Z"fixture-6d610106"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02632024-01-01T00:00:00.000Z"fixture-6d610107"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02642024-01-01T00:00:00.000Z"fixture-6d610108"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02652024-01-01T00:00:00.000Z"fixture-6d610109"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02662024-01-01T00:00:00.000Z"fixture-6d61010a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02672024-01-01T00:00:00.000Z"fixture-6d61010b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02682024-01-01T00:00:00.000Z"fixture-6d61010c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02692024-01-01T00:00:00.000Z"fixture-6d61010d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02702024-01-01T00:00:00.000Z"fixture-6d61010e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02712024-01-01T00:00:00.000Z"fixture-6d61010f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02722024-01-01T00:00:00.000Z"fixture-6d610110"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02732024-01-01T00:00:00.000Z"fixture-6d610111"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02742024-01-01T00:00:00.000Z"fixture-6d610112"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02752024-01-01T00:00:00.000Z"fixture-6d610113"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02762024-01-01T00:00:00.000Z"fixture-6d610114"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02772024-01-01T00:00:00.000Z"fixture-6d610115"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02782024-01-01T00:00:00.000Z"fixture-6d610116"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02792024-01-01T00:00:00.000Z"fixture-6d610117"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02802024-01-01T00:00:00.000Z"fixture-6d610118"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02812024-01-01T00:00:00.000Z"fixture-6d610119"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02822024-01-01T00:00:00.000Z"fixture-6d61011a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02832024-01-01T00:00:00.000Z"fixture-6d61011b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02842024-01-01T00:00:00.000Z"fixture-6d61011c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02852024-01-01T00:00:00.000Z"fixture-6d61011d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02862024-01-01T00:00:00.000Z"fixture-6d61011e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02872024-01-01T00:00:00.000Z"fixture-6d61011f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02882024-01-01T00:00:00.000Z"fixture-6d610120"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02892024-01-01T00:00:00.000Z"fixture-6d610121"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02902024-01-01T00:00:00.000Z"fixture-6d610122"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02912024-01-01T00:00:00.000Z"fixture-6d610123"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02922024-01-01T00:00:00.000Z"fixture-6d610124"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02932024-01-01T00:00:00.000Z"fixture-6d610125"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02942024-01-01T00:00:00.000Z"fixture-6d610126"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02952024-01-01T00:00:00.000Z"fixture-6d610127"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02962024-01-01T00:00:00.000Z"fixture-6d610128"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02972024-01-01T00:00:00.000Z"fixture-6d610129"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02982024-01-01T00:00:00.000Z"fixture-6d61012a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02992024-01-01T00:00:00.000Z"fixture-6d61012b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03002024-01-01T00:00:00.000Z"fixture-6d61012c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03012024-01-01T00:00:00.000Z"fixture-6d61012d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03022024-01-01T00:00:00.000Z"fixture-6d61012e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03032024-01-01T00:00:00.000Z"fixture-6d61012f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03042024-01-01T00:00:00.000Z"fixture-6d610130"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03052024-01-01T00:00:00.000Z"fixture-6d610131"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03062024-01-01T00:00:00.000Z"fixture-6d610132"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03072024-01-01T00:00:00.000Z"fixture-6d610133"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03082024-01-01T00:00:00.000Z"fixture-6d610134"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03092024-01-01T00:00:00.000Z"fixture-6d610135"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03102024-01-01T00:00:00.000Z"fixture-6d610136"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03112024-01-01T00:00:00.000Z"fixture-6d610137"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03122024-01-01T00:00:00.000Z"fixture-6d610138"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03132024-01-01T00:00:00.000Z"fixture-6d610139"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03142024-01-01T00:00:00.000Z"fixture-6d61013a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03152024-01-01T00:00:00.000Z"fixture-6d61013b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03162024-01-01T00:00:00.000Z"fixture-6d61013c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03172024-01-01T00:00:00.000Z"fixture-6d61013d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03182024-01-01T00:00:00.000Z"fixture-6d61013e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03192024-01-01T00:00:00.000Z"fixture-6d61013f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03202024-01-01T00:00:00.000Z"fixture-6d610140"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03212024-01-01T00:00:00.000Z"fixture-6d610141"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03222024-01-01T00:00:00.000Z"fixture-6d610142"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03232024-01-01T00:00:00.000Z"fixture-6d610143"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03242024-01-01T00:00:00.000Z"fixture-6d610144"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03252024-01-01T00:00:00.000Z"fixture-6d610145"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03262024-01-01T00:00:00.000Z"fixture-6d610146"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03272024-01-01T00:00:00.000Z"fixture-6d610147"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03282024-01-01T00:00:00.000Z"fixture-6d610148"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03292024-01-01T00:00:00.000Z"fixture-6d610149"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03302024-01-01T00:00:00.000Z"fixture-6d61014a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03312024-01-01T00:00:00.000Z"fixture-6d61014b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03322024-01-01T00:00:00.000Z"fixture-6d61014c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03332024-01-01T00:00:00.000Z"fixture-6d61014d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03342024-01-01T00:00:00.000Z"fixture-6d61014e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03352024-01-01T00:00:00.000Z"fixture-6d61014f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03362024-01-01T00:00:00.000Z"fixture-6d610150"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03372024-01-01T00:00:00.000Z"fixture-6d610151"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03382024-01-01T00:00:00.000Z"fixture-6d610152"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03392024-01-01T00:00:00.000Z"fixture-6d610153"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03402024-01-01T00:00:00.000Z"fixture-6d610154"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03412024-01-01T00:00:00.000Z"fixture-6d610155"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03422024-01-01T00:00:00.000Z"fixture-6d610156"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03432024-01-01T00:00:00.000Z"fixture-6d610157"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03442024-01-01T00:00:00.000Z"fixture-6d610158"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03452024-01-01T00:00:00.000Z"fixture-6d610159"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03462024-01-01T00:00:00.000Z"fixture-6d61015a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03472024-01-01T00:00:00.000Z"fixture-6d61015b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03482024-01-01T00:00:00.000Z"fixture-6d61015c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03492024-01-01T00:00:00.000Z"fixture-6d61015d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03502024-01-01T00:00:00.000Z"fixture-6d61015e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03512024-01-01T00:00:00.000Z"fixture-6d61015f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03522024-01-01T00:00:00.000Z"fixture-6d610160"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03532024-01-01T00:00:00.000Z"fixture-6d610161"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03542024-01-01T00:00:00.000Z"fixture-6d610162"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03552024-01-01T00:00:00.000Z"fixture-6d610163"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03562024-01-01T00:00:00.000Z"fixture-6d610164"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03572024-01-01T00:00:00.000Z"fixture-6d610165"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03582024-01-01T00:00:00.000Z"fixture-6d610166"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03592024-01-01T00:00:00.000Z"fixture-6d610167"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03602024-01-01T00:00:00.000Z"fixture-6d610168"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03612024-01-01T00:00:00.000Z"fixture-6d610169"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03622024-01-01T00:00:00.000Z"fixture-6d61016a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03632024-01-01T00:00:00.000Z"fixture-6d61016b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03642024-01-01T00:00:00.000Z"fixture-6d61016c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03652024-01-01T00:00:00.000Z"fixture-6d61016d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03662024-01-01T00:00:00.000Z"fixture-6d61016e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03672024-01-01T00:00:00.000Z"fixture-6d61016f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03682024-01-01T00:00:00.000Z"fixture-6d610170"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03692024-01-01T00:00:00.000Z"fixture-6d610171"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03702024-01-01T00:00:00.000Z"fixture-6d610172"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03712024-01-01T00:00:00.000Z"fixture-6d610173"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03722024-01-01T00:00:00.000Z"fixture-6d610174"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03732024-01-01T00:00:00.000Z"fixture-6d610175"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03742024-01-01T00:00:00.000Z"fixture-6d610176"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03752024-01-01T00:00:00.000Z"fixture-6d610177"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03762024-01-01T00:00:00.000Z"fixture-6d610178"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03772024-01-01T00:00:00.000Z"fixture-6d610179"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03782024-01-01T00:00:00.000Z"fixture-6d61017a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03792024-01-01T00:00:00.000Z"fixture-6d61017b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03802024-01-01T00:00:00.000Z"fixture-6d61017c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03812024-01-01T00:00:00.000Z"fixture-6d61017d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03822024-01-01T00:00:00.000Z"fixture-6d61017e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03832024-01-01T00:00:00.000Z"fixture-6d61017f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03842024-01-01T00:00:00.000Z"fixture-6d610180"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03852024-01-01T00:00:00.000Z"fixture-6d610181"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03862024-01-01T00:00:00.000Z"fixture-6d610182"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03872024-01-01T00:00:00.000Z"fixture-6d610183"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03882024-01-01T00:00:00.000Z"fixture-6d610184"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03892024-01-01T00:00:00.000Z"fixture-6d610185"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03902024-01-01T00:00:00.000Z"fixture-6d610186"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03912024-01-01T00:00:00.000Z"fixture-6d610187"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03922024-01-01T00:00:00.000Z"fixture-6d610188"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03932024-01-01T00:00:00.000Z"fixture-6d610189"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03942024-01-01T00:00:00.000Z"fixture-6d61018a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03952024-01-01T00:00:00.000Z"fixture-6d61018b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03962024-01-01T00:00:00.000Z"fixture-6d61018c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03972024-01-01T00:00:00.000Z"fixture-6d61018d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03982024-01-01T00:00:00.000Z"fixture-6d61018e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03992024-01-01T00:00:00.000Z"fixture-6d61018f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04002024-01-01T00:00:00.000Z"fixture-6d610190"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04012024-01-01T00:00:00.000Z"fixture-6d610191"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04022024-01-01T00:00:00.000Z"fixture-6d610192"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04032024-01-01T00:00:00.000Z"fixture-6d610193"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04042024-01-01T00:00:00.000Z"fixture-6d610194"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04052024-01-01T00:00:00.000Z"fixture-6d610195"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04062024-01-01T00:00:00.000Z"fixture-6d610196"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04072024-01-01T00:00:00.000Z"fixture-6d610197"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04082024-01-01T00:00:00.000Z"fixture-6d610198"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04092024-01-01T00:00:00.000Z"fixture-6d610199"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04102024-01-01T00:00:00.000Z"fixture-6d61019a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04112024-01-01T00:00:00.000Z"fixture-6d61019b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04122024-01-01T00:00:00.000Z"fixture-6d61019c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04132024-01-01T00:00:00.000Z"fixture-6d61019d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04142024-01-01T00:00:00.000Z"fixture-6d61019e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04152024-01-01T00:00:00.000Z"fixture-6d61019f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04162024-01-01T00:00:00.000Z"fixture-6d6101a0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04172024-01-01T00:00:00.000Z"fixture-6d6101a1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04182024-01-01T00:00:00.000Z"fixture-6d6101a2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04192024-01-01T00:00:00.000Z"fixture-6d6101a3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04202024-01-01T00:00:00.000Z"fixture-6d6101a4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04212024-01-01T00:00:00.000Z"fixture-6d6101a5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04222024-01-01T00:00:00.000Z"fixture-6d6101a6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04232024-01-01T00:00:00.000Z"fixture-6d6101a7"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04242024-01-01T00:00:00.000Z"fixture-6d6101a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04252024-01-01T00:00:00.000Z"fixture-6d6101a9"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04262024-01-01T00:00:00.000Z"fixture-6d6101aa"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04272024-01-01T00:00:00.000Z"fixture-6d6101ab"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04282024-01-01T00:00:00.000Z"fixture-6d6101ac"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04292024-01-01T00:00:00.000Z"fixture-6d6101ad"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04302024-01-01T00:00:00.000Z"fixture-6d6101ae"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04312024-01-01T00:00:00.000Z"fixture-6d6101af"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04322024-01-01T00:00:00.000Z"fixture-6d6101b0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04332024-01-01T00:00:00.000Z"fixture-6d6101b1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04342024-01-01T00:00:00.000Z"fixture-6d6101b2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04352024-01-01T00:00:00.000Z"fixture-6d6101b3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04362024-01-01T00:00:00.000Z"fixture-6d6101b4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04372024-01-01T00:00:00.000Z"fixture-6d6101b5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04382024-01-01T00:00:00.000Z"fixture-6d6101b6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04392024-01-01T00:00:00.000Z"fixture-6d6101b7"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04402024-01-01T00:00:00.000Z"fixture-6d6101b8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04412024-01-01T00:00:00.000Z"fixture-6d6101b9"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04422024-01-01T00:00:00.000Z"fixture-6d6101ba"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04432024-01-01T00:00:00.000Z"fixture-6d6101bb"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04442024-01-01T00:00:00.000Z"fixture-6d6101bc"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04452024-01-01T00:00:00.000Z"fixture-6d6101bd"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04462024-01-01T00:00:00.000Z"fixture-6d6101be"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04472024-01-01T00:00:00.000Z"fixture-6d6101bf"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04482024-01-01T00:00:00.000Z"fixture-6d6101c0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04492024-01-01T00:00:00.000Z"fixture-6d6101c1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04502024-01-01T00:00:00.000Z"fixture-6d6101c2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04512024-01-01T00:00:00.000Z"fixture-6d6101c3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04522024-01-01T00:00:00.000Z"fixture-6d6101c4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04532024-01-01T00:00:00.000Z"fixture-6d6101c5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04542024-01-01T00:00:00.000Z"fixture-6d6101c6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04552024-01-01T00:00:00.000Z"fixture-6d6101c7"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04562024-01-01T00:00:00.000Z"fixture-6d6101c8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04572024-01-01T00:00:00.000Z"fixture-6d6101c9"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04582024-01-01T00:00:00.000Z"fixture-6d6101ca"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04592024-01-01T00:00:00.000Z"fixture-6d6101cb"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04602024-01-01T00:00:00.000Z"fixture-6d6101cc"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04612024-01-01T00:00:00.000Z"fixture-6d6101cd"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04622024-01-01T00:00:00.000Z"fixture-6d6101ce"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04632024-01-01T00:00:00.000Z"fixture-6d6101cf"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04642024-01-01T00:00:00.000Z"fixture-6d6101d0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04652024-01-01T00:00:00.000Z"fixture-6d6101d1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04662024-01-01T00:00:00.000Z"fixture-6d6101d2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04672024-01-01T00:00:00.000Z"fixture-6d6101d3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04682024-01-01T00:00:00.000Z"fixture-6d6101d4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04692024-01-01T00:00:00.000Z"fixture-6d6101d5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04702024-01-01T00:00:00.000Z"fixture-6d6101d6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04712024-01-01T00:00:00.000Z"fixture-6d6101d7"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04722024-01-01T00:00:00.000Z"fixture-6d6101d8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04732024-01-01T00:00:00.000Z"fixture-6d6101d9"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04742024-01-01T00:00:00.000Z"fixture-6d6101da"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04752024-01-01T00:00:00.000Z"fixture-6d6101db"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04762024-01-01T00:00:00.000Z"fixture-6d6101dc"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04772024-01-01T00:00:00.000Z"fixture-6d6101dd"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04782024-01-01T00:00:00.000Z"fixture-6d6101de"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04792024-01-01T00:00:00.000Z"fixture-6d6101df"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04802024-01-01T00:00:00.000Z"fixture-6d6101e0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04812024-01-01T00:00:00.000Z"fixture-6d6101e1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04822024-01-01T00:00:00.000Z"fixture-6d6101e2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04832024-01-01T00:00:00.000Z"fixture-6d6101e3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04842024-01-01T00:00:00.000Z"fixture-6d6101e4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04852024-01-01T00:00:00.000Z"fixture-6d6101e5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04862024-01-01T00:00:00.000Z"fixture-6d6101e6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04872024-01-01T00:00:00.000Z"fixture-6d6101e7"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04882024-01-01T00:00:00.000Z"fixture-6d6101e8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04892024-01-01T00:00:00.000Z"fixture-6d6101e9"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04902024-01-01T00:00:00.000Z"fixture-6d6101ea"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04912024-01-01T00:00:00.000Z"fixture-6d6101eb"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04922024-01-01T00:00:00.000Z"fixture-6d6101ec"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04932024-01-01T00:00:00.000Z"fixture-6d6101ed"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04942024-01-01T00:00:00.000Z"fixture-6d6101ee"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04952024-01-01T00:00:00.000Z"fixture-6d6101ef"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04962024-01-01T00:00:00.000Z"fixture-6d6101f0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04972024-01-01T00:00:00.000Z"fixture-6d6101f1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04982024-01-01T00:00:00.000Z"fixture-6d6101f2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04992024-01-01T00:00:00.000Z"fixture-6d6101f3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05002024-01-01T00:00:00.000Z"fixture-6d6101f4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05012024-01-01T00:00:00.000Z"fixture-6d6101f5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05022024-01-01T00:00:00.000Z"fixture-6d6101f6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05032024-01-01T00:00:00.000Z"fixture-6d6101f7"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05042024-01-01T00:00:00.000Z"fixture-6d6101f8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05052024-01-01T00:00:00.000Z"fixture-6d6101f9"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05062024-01-01T00:00:00.000Z"fixture-6d6101fa"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05072024-01-01T00:00:00.000Z"fixture-6d6101fb"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05082024-01-01T00:00:00.000Z"fixture-6d6101fc"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05092024-01-01T00:00:00.000Z"fixture-6d6101fd"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05102024-01-01T00:00:00.000Z"fixture-6d6101fe"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05112024-01-01T00:00:00.000Z"fixture-6d6101ff"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05122024-01-01T00:00:00.000Z"fixture-6d610200"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05132024-01-01T00:00:00.000Z"fixture-6d610201"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05142024-01-01T00:00:00.000Z"fixture-6d610202"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05152024-01-01T00:00:00.000Z"fixture-6d610203"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05162024-01-01T00:00:00.000Z"fixture-6d610204"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05172024-01-01T00:00:00.000Z"fixture-6d610205"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05182024-01-01T00:00:00.000Z"fixture-6d610206"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05192024-01-01T00:00:00.000Z"fixture-6d610207"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05202024-01-01T00:00:00.000Z"fixture-6d610208"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05212024-01-01T00:00:00.000Z"fixture-6d610209"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05222024-01-01T00:00:00.000Z"fixture-6d61020a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05232024-01-01T00:00:00.000Z"fixture-6d61020b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05242024-01-01T00:00:00.000Z"fixture-6d61020c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05252024-01-01T00:00:00.000Z"fixture-6d61020d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05262024-01-01T00:00:00.000Z"fixture-6d61020e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05272024-01-01T00:00:00.000Z"fixture-6d61020f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05282024-01-01T00:00:00.000Z"fixture-6d610210"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05292024-01-01T00:00:00.000Z"fixture-6d610211"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05302024-01-01T00:00:00.000Z"fixture-6d610212"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05312024-01-01T00:00:00.000Z"fixture-6d610213"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05322024-01-01T00:00:00.000Z"fixture-6d610214"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05332024-01-01T00:00:00.000Z"fixture-6d610215"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05342024-01-01T00:00:00.000Z"fixture-6d610216"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05352024-01-01T00:00:00.000Z"fixture-6d610217"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05362024-01-01T00:00:00.000Z"fixture-6d610218"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05372024-01-01T00:00:00.000Z"fixture-6d610219"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05382024-01-01T00:00:00.000Z"fixture-6d61021a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05392024-01-01T00:00:00.000Z"fixture-6d61021b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05402024-01-01T00:00:00.000Z"fixture-6d61021c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05412024-01-01T00:00:00.000Z"fixture-6d61021d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05422024-01-01T00:00:00.000Z"fixture-6d61021e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05432024-01-01T00:00:00.000Z"fixture-6d61021f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05442024-01-01T00:00:00.000Z"fixture-6d610220"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05452024-01-01T00:00:00.000Z"fixture-6d610221"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05462024-01-01T00:00:00.000Z"fixture-6d610222"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05472024-01-01T00:00:00.000Z"fixture-6d610223"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05482024-01-01T00:00:00.000Z"fixture-6d610224"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05492024-01-01T00:00:00.000Z"fixture-6d610225"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05502024-01-01T00:00:00.000Z"fixture-6d610226"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05512024-01-01T00:00:00.000Z"fixture-6d610227"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05522024-01-01T00:00:00.000Z"fixture-6d610228"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05532024-01-01T00:00:00.000Z"fixture-6d610229"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05542024-01-01T00:00:00.000Z"fixture-6d61022a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05552024-01-01T00:00:00.000Z"fixture-6d61022b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05562024-01-01T00:00:00.000Z"fixture-6d61022c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05572024-01-01T00:00:00.000Z"fixture-6d61022d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05582024-01-01T00:00:00.000Z"fixture-6d61022e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05592024-01-01T00:00:00.000Z"fixture-6d61022f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05602024-01-01T00:00:00.000Z"fixture-6d610230"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05612024-01-01T00:00:00.000Z"fixture-6d610231"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05622024-01-01T00:00:00.000Z"fixture-6d610232"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05632024-01-01T00:00:00.000Z"fixture-6d610233"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05642024-01-01T00:00:00.000Z"fixture-6d610234"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05652024-01-01T00:00:00.000Z"fixture-6d610235"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05662024-01-01T00:00:00.000Z"fixture-6d610236"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05672024-01-01T00:00:00.000Z"fixture-6d610237"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05682024-01-01T00:00:00.000Z"fixture-6d610238"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05692024-01-01T00:00:00.000Z"fixture-6d610239"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05702024-01-01T00:00:00.000Z"fixture-6d61023a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05712024-01-01T00:00:00.000Z"fixture-6d61023b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05722024-01-01T00:00:00.000Z"fixture-6d61023c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05732024-01-01T00:00:00.000Z"fixture-6d61023d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05742024-01-01T00:00:00.000Z"fixture-6d61023e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05752024-01-01T00:00:00.000Z"fixture-6d61023f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05762024-01-01T00:00:00.000Z"fixture-6d610240"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05772024-01-01T00:00:00.000Z"fixture-6d610241"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05782024-01-01T00:00:00.000Z"fixture-6d610242"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05792024-01-01T00:00:00.000Z"fixture-6d610243"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05802024-01-01T00:00:00.000Z"fixture-6d610244"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05812024-01-01T00:00:00.000Z"fixture-6d610245"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05822024-01-01T00:00:00.000Z"fixture-6d610246"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05832024-01-01T00:00:00.000Z"fixture-6d610247"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05842024-01-01T00:00:00.000Z"fixture-6d610248"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05852024-01-01T00:00:00.000Z"fixture-6d610249"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05862024-01-01T00:00:00.000Z"fixture-6d61024a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05872024-01-01T00:00:00.000Z"fixture-6d61024b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05882024-01-01T00:00:00.000Z"fixture-6d61024c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05892024-01-01T00:00:00.000Z"fixture-6d61024d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05902024-01-01T00:00:00.000Z"fixture-6d61024e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05912024-01-01T00:00:00.000Z"fixture-6d61024f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05922024-01-01T00:00:00.000Z"fixture-6d610250"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05932024-01-01T00:00:00.000Z"fixture-6d610251"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05942024-01-01T00:00:00.000Z"fixture-6d610252"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05952024-01-01T00:00:00.000Z"fixture-6d610253"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05962024-01-01T00:00:00.000Z"fixture-6d610254"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05972024-01-01T00:00:00.000Z"fixture-6d610255"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05982024-01-01T00:00:00.000Z"fixture-6d610256"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05992024-01-01T00:00:00.000Z"fixture-6d610257"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06002024-01-01T00:00:00.000Z"fixture-6d610258"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06012024-01-01T00:00:00.000Z"fixture-6d610259"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06022024-01-01T00:00:00.000Z"fixture-6d61025a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06032024-01-01T00:00:00.000Z"fixture-6d61025b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06042024-01-01T00:00:00.000Z"fixture-6d61025c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06052024-01-01T00:00:00.000Z"fixture-6d61025d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06062024-01-01T00:00:00.000Z"fixture-6d61025e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06072024-01-01T00:00:00.000Z"fixture-6d61025f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06082024-01-01T00:00:00.000Z"fixture-6d610260"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06092024-01-01T00:00:00.000Z"fixture-6d610261"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06102024-01-01T00:00:00.000Z"fixture-6d610262"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06112024-01-01T00:00:00.000Z"fixture-6d610263"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06122024-01-01T00:00:00.000Z"fixture-6d610264"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06132024-01-01T00:00:00.000Z"fixture-6d610265"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06142024-01-01T00:00:00.000Z"fixture-6d610266"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06152024-01-01T00:00:00.000Z"fixture-6d610267"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06162024-01-01T00:00:00.000Z"fixture-6d610268"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06172024-01-01T00:00:00.000Z"fixture-6d610269"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06182024-01-01T00:00:00.000Z"fixture-6d61026a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06192024-01-01T00:00:00.000Z"fixture-6d61026b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06202024-01-01T00:00:00.000Z"fixture-6d61026c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06212024-01-01T00:00:00.000Z"fixture-6d61026d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06222024-01-01T00:00:00.000Z"fixture-6d61026e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06232024-01-01T00:00:00.000Z"fixture-6d61026f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06242024-01-01T00:00:00.000Z"fixture-6d610270"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06252024-01-01T00:00:00.000Z"fixture-6d610271"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06262024-01-01T00:00:00.000Z"fixture-6d610272"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06272024-01-01T00:00:00.000Z"fixture-6d610273"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06282024-01-01T00:00:00.000Z"fixture-6d610274"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06292024-01-01T00:00:00.000Z"fixture-6d610275"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06302024-01-01T00:00:00.000Z"fixture-6d610276"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06312024-01-01T00:00:00.000Z"fixture-6d610277"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06322024-01-01T00:00:00.000Z"fixture-6d610278"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06332024-01-01T00:00:00.000Z"fixture-6d610279"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06342024-01-01T00:00:00.000Z"fixture-6d61027a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06352024-01-01T00:00:00.000Z"fixture-6d61027b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06362024-01-01T00:00:00.000Z"fixture-6d61027c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06372024-01-01T00:00:00.000Z"fixture-6d61027d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06382024-01-01T00:00:00.000Z"fixture-6d61027e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06392024-01-01T00:00:00.000Z"fixture-6d61027f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06402024-01-01T00:00:00.000Z"fixture-6d610280"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06412024-01-01T00:00:00.000Z"fixture-6d610281"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06422024-01-01T00:00:00.000Z"fixture-6d610282"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06432024-01-01T00:00:00.000Z"fixture-6d610283"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06442024-01-01T00:00:00.000Z"fixture-6d610284"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06452024-01-01T00:00:00.000Z"fixture-6d610285"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06462024-01-01T00:00:00.000Z"fixture-6d610286"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06472024-01-01T00:00:00.000Z"fixture-6d610287"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06482024-01-01T00:00:00.000Z"fixture-6d610288"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06492024-01-01T00:00:00.000Z"fixture-6d610289"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06502024-01-01T00:00:00.000Z"fixture-6d61028a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06512024-01-01T00:00:00.000Z"fixture-6d61028b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06522024-01-01T00:00:00.000Z"fixture-6d61028c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06532024-01-01T00:00:00.000Z"fixture-6d61028d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06542024-01-01T00:00:00.000Z"fixture-6d61028e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06552024-01-01T00:00:00.000Z"fixture-6d61028f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06562024-01-01T00:00:00.000Z"fixture-6d610290"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06572024-01-01T00:00:00.000Z"fixture-6d610291"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06582024-01-01T00:00:00.000Z"fixture-6d610292"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06592024-01-01T00:00:00.000Z"fixture-6d610293"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06602024-01-01T00:00:00.000Z"fixture-6d610294"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06612024-01-01T00:00:00.000Z"fixture-6d610295"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06622024-01-01T00:00:00.000Z"fixture-6d610296"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06632024-01-01T00:00:00.000Z"fixture-6d610297"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06642024-01-01T00:00:00.000Z"fixture-6d610298"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06652024-01-01T00:00:00.000Z"fixture-6d610299"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06662024-01-01T00:00:00.000Z"fixture-6d61029a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06672024-01-01T00:00:00.000Z"fixture-6d61029b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06682024-01-01T00:00:00.000Z"fixture-6d61029c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06692024-01-01T00:00:00.000Z"fixture-6d61029d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06702024-01-01T00:00:00.000Z"fixture-6d61029e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06712024-01-01T00:00:00.000Z"fixture-6d61029f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06722024-01-01T00:00:00.000Z"fixture-6d6102a0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06732024-01-01T00:00:00.000Z"fixture-6d6102a1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06742024-01-01T00:00:00.000Z"fixture-6d6102a2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06752024-01-01T00:00:00.000Z"fixture-6d6102a3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06762024-01-01T00:00:00.000Z"fixture-6d6102a4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06772024-01-01T00:00:00.000Z"fixture-6d6102a5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06782024-01-01T00:00:00.000Z"fixture-6d6102a6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06792024-01-01T00:00:00.000Z"fixture-6d6102a7"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06802024-01-01T00:00:00.000Z"fixture-6d6102a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06812024-01-01T00:00:00.000Z"fixture-6d6102a9"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06822024-01-01T00:00:00.000Z"fixture-6d6102aa"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06832024-01-01T00:00:00.000Z"fixture-6d6102ab"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06842024-01-01T00:00:00.000Z"fixture-6d6102ac"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06852024-01-01T00:00:00.000Z"fixture-6d6102ad"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06862024-01-01T00:00:00.000Z"fixture-6d6102ae"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06872024-01-01T00:00:00.000Z"fixture-6d6102af"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06882024-01-01T00:00:00.000Z"fixture-6d6102b0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06892024-01-01T00:00:00.000Z"fixture-6d6102b1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06902024-01-01T00:00:00.000Z"fixture-6d6102b2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06912024-01-01T00:00:00.000Z"fixture-6d6102b3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06922024-01-01T00:00:00.000Z"fixture-6d6102b4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06932024-01-01T00:00:00.000Z"fixture-6d6102b5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06942024-01-01T00:00:00.000Z"fixture-6d6102b6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06952024-01-01T00:00:00.000Z"fixture-6d6102b7"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06962024-01-01T00:00:00.000Z"fixture-6d6102b8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06972024-01-01T00:00:00.000Z"fixture-6d6102b9"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06982024-01-01T00:00:00.000Z"fixture-6d6102ba"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06992024-01-01T00:00:00.000Z"fixture-6d6102bb"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07002024-01-01T00:00:00.000Z"fixture-6d6102bc"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07012024-01-01T00:00:00.000Z"fixture-6d6102bd"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07022024-01-01T00:00:00.000Z"fixture-6d6102be"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07032024-01-01T00:00:00.000Z"fixture-6d6102bf"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07042024-01-01T00:00:00.000Z"fixture-6d6102c0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07052024-01-01T00:00:00.000Z"fixture-6d6102c1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07062024-01-01T00:00:00.000Z"fixture-6d6102c2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07072024-01-01T00:00:00.000Z"fixture-6d6102c3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07082024-01-01T00:00:00.000Z"fixture-6d6102c4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07092024-01-01T00:00:00.000Z"fixture-6d6102c5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07102024-01-01T00:00:00.000Z"fixture-6d6102c6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07112024-01-01T00:00:00.000Z"fixture-6d6102c7"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07122024-01-01T00:00:00.000Z"fixture-6d6102c8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07132024-01-01T00:00:00.000Z"fixture-6d6102c9"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07142024-01-01T00:00:00.000Z"fixture-6d6102ca"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07152024-01-01T00:00:00.000Z"fixture-6d6102cb"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07162024-01-01T00:00:00.000Z"fixture-6d6102cc"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07172024-01-01T00:00:00.000Z"fixture-6d6102cd"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07182024-01-01T00:00:00.000Z"fixture-6d6102ce"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07192024-01-01T00:00:00.000Z"fixture-6d6102cf"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07202024-01-01T00:00:00.000Z"fixture-6d6102d0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07212024-01-01T00:00:00.000Z"fixture-6d6102d1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07222024-01-01T00:00:00.000Z"fixture-6d6102d2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07232024-01-01T00:00:00.000Z"fixture-6d6102d3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07242024-01-01T00:00:00.000Z"fixture-6d6102d4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07252024-01-01T00:00:00.000Z"fixture-6d6102d5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07262024-01-01T00:00:00.000Z"fixture-6d6102d6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07272024-01-01T00:00:00.000Z"fixture-6d6102d7"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07282024-01-01T00:00:00.000Z"fixture-6d6102d8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07292024-01-01T00:00:00.000Z"fixture-6d6102d9"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07302024-01-01T00:00:00.000Z"fixture-6d6102da"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07312024-01-01T00:00:00.000Z"fixture-6d6102db"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07322024-01-01T00:00:00.000Z"fixture-6d6102dc"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07332024-01-01T00:00:00.000Z"fixture-6d6102dd"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07342024-01-01T00:00:00.000Z"fixture-6d6102de"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07352024-01-01T00:00:00.000Z"fixture-6d6102df"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07362024-01-01T00:00:00.000Z"fixture-6d6102e0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07372024-01-01T00:00:00.000Z"fixture-6d6102e1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07382024-01-01T00:00:00.000Z"fixture-6d6102e2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07392024-01-01T00:00:00.000Z"fixture-6d6102e3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07402024-01-01T00:00:00.000Z"fixture-6d6102e4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07412024-01-01T00:00:00.000Z"fixture-6d6102e5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07422024-01-01T00:00:00.000Z"fixture-6d6102e6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07432024-01-01T00:00:00.000Z"fixture-6d6102e7"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07442024-01-01T00:00:00.000Z"fixture-6d6102e8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07452024-01-01T00:00:00.000Z"fixture-6d6102e9"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07462024-01-01T00:00:00.000Z"fixture-6d6102ea"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07472024-01-01T00:00:00.000Z"fixture-6d6102eb"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07482024-01-01T00:00:00.000Z"fixture-6d6102ec"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07492024-01-01T00:00:00.000Z"fixture-6d6102ed"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07502024-01-01T00:00:00.000Z"fixture-6d6102ee"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07512024-01-01T00:00:00.000Z"fixture-6d6102ef"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07522024-01-01T00:00:00.000Z"fixture-6d6102f0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07532024-01-01T00:00:00.000Z"fixture-6d6102f1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07542024-01-01T00:00:00.000Z"fixture-6d6102f2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07552024-01-01T00:00:00.000Z"fixture-6d6102f3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07562024-01-01T00:00:00.000Z"fixture-6d6102f4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07572024-01-01T00:00:00.000Z"fixture-6d6102f5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07582024-01-01T00:00:00.000Z"fixture-6d6102f6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07592024-01-01T00:00:00.000Z"fixture-6d6102f7"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07602024-01-01T00:00:00.000Z"fixture-6d6102f8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07612024-01-01T00:00:00.000Z"fixture-6d6102f9"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07622024-01-01T00:00:00.000Z"fixture-6d6102fa"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07632024-01-01T00:00:00.000Z"fixture-6d6102fb"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07642024-01-01T00:00:00.000Z"fixture-6d6102fc"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07652024-01-01T00:00:00.000Z"fixture-6d6102fd"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07662024-01-01T00:00:00.000Z"fixture-6d6102fe"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07672024-01-01T00:00:00.000Z"fixture-6d6102ff"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07682024-01-01T00:00:00.000Z"fixture-6d610300"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07692024-01-01T00:00:00.000Z"fixture-6d610301"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07702024-01-01T00:00:00.000Z"fixture-6d610302"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07712024-01-01T00:00:00.000Z"fixture-6d610303"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07722024-01-01T00:00:00.000Z"fixture-6d610304"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07732024-01-01T00:00:00.000Z"fixture-6d610305"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07742024-01-01T00:00:00.000Z"fixture-6d610306"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07752024-01-01T00:00:00.000Z"fixture-6d610307"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07762024-01-01T00:00:00.000Z"fixture-6d610308"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07772024-01-01T00:00:00.000Z"fixture-6d610309"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07782024-01-01T00:00:00.000Z"fixture-6d61030a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07792024-01-01T00:00:00.000Z"fixture-6d61030b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07802024-01-01T00:00:00.000Z"fixture-6d61030c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07812024-01-01T00:00:00.000Z"fixture-6d61030d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07822024-01-01T00:00:00.000Z"fixture-6d61030e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07832024-01-01T00:00:00.000Z"fixture-6d61030f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07842024-01-01T00:00:00.000Z"fixture-6d610310"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07852024-01-01T00:00:00.000Z"fixture-6d610311"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07862024-01-01T00:00:00.000Z"fixture-6d610312"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07872024-01-01T00:00:00.000Z"fixture-6d610313"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07882024-01-01T00:00:00.000Z"fixture-6d610314"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07892024-01-01T00:00:00.000Z"fixture-6d610315"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07902024-01-01T00:00:00.000Z"fixture-6d610316"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07912024-01-01T00:00:00.000Z"fixture-6d610317"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07922024-01-01T00:00:00.000Z"fixture-6d610318"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07932024-01-01T00:00:00.000Z"fixture-6d610319"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07942024-01-01T00:00:00.000Z"fixture-6d61031a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07952024-01-01T00:00:00.000Z"fixture-6d61031b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07962024-01-01T00:00:00.000Z"fixture-6d61031c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07972024-01-01T00:00:00.000Z"fixture-6d61031d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07982024-01-01T00:00:00.000Z"fixture-6d61031e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07992024-01-01T00:00:00.000Z"fixture-6d61031f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08002024-01-01T00:00:00.000Z"fixture-6d610320"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08012024-01-01T00:00:00.000Z"fixture-6d610321"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08022024-01-01T00:00:00.000Z"fixture-6d610322"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08032024-01-01T00:00:00.000Z"fixture-6d610323"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08042024-01-01T00:00:00.000Z"fixture-6d610324"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08052024-01-01T00:00:00.000Z"fixture-6d610325"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08062024-01-01T00:00:00.000Z"fixture-6d610326"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08072024-01-01T00:00:00.000Z"fixture-6d610327"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08082024-01-01T00:00:00.000Z"fixture-6d610328"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08092024-01-01T00:00:00.000Z"fixture-6d610329"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08102024-01-01T00:00:00.000Z"fixture-6d61032a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08112024-01-01T00:00:00.000Z"fixture-6d61032b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08122024-01-01T00:00:00.000Z"fixture-6d61032c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08132024-01-01T00:00:00.000Z"fixture-6d61032d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08142024-01-01T00:00:00.000Z"fixture-6d61032e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08152024-01-01T00:00:00.000Z"fixture-6d61032f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08162024-01-01T00:00:00.000Z"fixture-6d610330"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08172024-01-01T00:00:00.000Z"fixture-6d610331"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08182024-01-01T00:00:00.000Z"fixture-6d610332"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08192024-01-01T00:00:00.000Z"fixture-6d610333"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08202024-01-01T00:00:00.000Z"fixture-6d610334"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08212024-01-01T00:00:00.000Z"fixture-6d610335"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08222024-01-01T00:00:00.000Z"fixture-6d610336"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08232024-01-01T00:00:00.000Z"fixture-6d610337"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08242024-01-01T00:00:00.000Z"fixture-6d610338"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08252024-01-01T00:00:00.000Z"fixture-6d610339"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08262024-01-01T00:00:00.000Z"fixture-6d61033a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08272024-01-01T00:00:00.000Z"fixture-6d61033b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08282024-01-01T00:00:00.000Z"fixture-6d61033c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08292024-01-01T00:00:00.000Z"fixture-6d61033d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08302024-01-01T00:00:00.000Z"fixture-6d61033e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08312024-01-01T00:00:00.000Z"fixture-6d61033f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08322024-01-01T00:00:00.000Z"fixture-6d610340"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08332024-01-01T00:00:00.000Z"fixture-6d610341"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08342024-01-01T00:00:00.000Z"fixture-6d610342"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08352024-01-01T00:00:00.000Z"fixture-6d610343"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08362024-01-01T00:00:00.000Z"fixture-6d610344"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08372024-01-01T00:00:00.000Z"fixture-6d610345"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08382024-01-01T00:00:00.000Z"fixture-6d610346"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08392024-01-01T00:00:00.000Z"fixture-6d610347"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08402024-01-01T00:00:00.000Z"fixture-6d610348"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08412024-01-01T00:00:00.000Z"fixture-6d610349"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08422024-01-01T00:00:00.000Z"fixture-6d61034a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08432024-01-01T00:00:00.000Z"fixture-6d61034b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08442024-01-01T00:00:00.000Z"fixture-6d61034c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08452024-01-01T00:00:00.000Z"fixture-6d61034d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08462024-01-01T00:00:00.000Z"fixture-6d61034e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08472024-01-01T00:00:00.000Z"fixture-6d61034f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08482024-01-01T00:00:00.000Z"fixture-6d610350"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08492024-01-01T00:00:00.000Z"fixture-6d610351"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08502024-01-01T00:00:00.000Z"fixture-6d610352"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08512024-01-01T00:00:00.000Z"fixture-6d610353"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08522024-01-01T00:00:00.000Z"fixture-6d610354"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08532024-01-01T00:00:00.000Z"fixture-6d610355"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08542024-01-01T00:00:00.000Z"fixture-6d610356"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08552024-01-01T00:00:00.000Z"fixture-6d610357"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08562024-01-01T00:00:00.000Z"fixture-6d610358"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08572024-01-01T00:00:00.000Z"fixture-6d610359"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08582024-01-01T00:00:00.000Z"fixture-6d61035a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08592024-01-01T00:00:00.000Z"fixture-6d61035b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08602024-01-01T00:00:00.000Z"fixture-6d61035c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08612024-01-01T00:00:00.000Z"fixture-6d61035d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08622024-01-01T00:00:00.000Z"fixture-6d61035e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08632024-01-01T00:00:00.000Z"fixture-6d61035f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08642024-01-01T00:00:00.000Z"fixture-6d610360"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08652024-01-01T00:00:00.000Z"fixture-6d610361"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08662024-01-01T00:00:00.000Z"fixture-6d610362"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08672024-01-01T00:00:00.000Z"fixture-6d610363"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08682024-01-01T00:00:00.000Z"fixture-6d610364"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08692024-01-01T00:00:00.000Z"fixture-6d610365"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08702024-01-01T00:00:00.000Z"fixture-6d610366"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08712024-01-01T00:00:00.000Z"fixture-6d610367"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08722024-01-01T00:00:00.000Z"fixture-6d610368"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08732024-01-01T00:00:00.000Z"fixture-6d610369"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08742024-01-01T00:00:00.000Z"fixture-6d61036a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08752024-01-01T00:00:00.000Z"fixture-6d61036b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08762024-01-01T00:00:00.000Z"fixture-6d61036c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08772024-01-01T00:00:00.000Z"fixture-6d61036d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08782024-01-01T00:00:00.000Z"fixture-6d61036e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08792024-01-01T00:00:00.000Z"fixture-6d61036f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08802024-01-01T00:00:00.000Z"fixture-6d610370"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08812024-01-01T00:00:00.000Z"fixture-6d610371"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08822024-01-01T00:00:00.000Z"fixture-6d610372"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08832024-01-01T00:00:00.000Z"fixture-6d610373"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08842024-01-01T00:00:00.000Z"fixture-6d610374"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08852024-01-01T00:00:00.000Z"fixture-6d610375"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08862024-01-01T00:00:00.000Z"fixture-6d610376"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08872024-01-01T00:00:00.000Z"fixture-6d610377"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08882024-01-01T00:00:00.000Z"fixture-6d610378"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08892024-01-01T00:00:00.000Z"fixture-6d610379"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08902024-01-01T00:00:00.000Z"fixture-6d61037a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08912024-01-01T00:00:00.000Z"fixture-6d61037b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08922024-01-01T00:00:00.000Z"fixture-6d61037c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08932024-01-01T00:00:00.000Z"fixture-6d61037d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08942024-01-01T00:00:00.000Z"fixture-6d61037e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08952024-01-01T00:00:00.000Z"fixture-6d61037f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08962024-01-01T00:00:00.000Z"fixture-6d610380"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08972024-01-01T00:00:00.000Z"fixture-6d610381"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08982024-01-01T00:00:00.000Z"fixture-6d610382"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08992024-01-01T00:00:00.000Z"fixture-6d610383"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09002024-01-01T00:00:00.000Z"fixture-6d610384"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09012024-01-01T00:00:00.000Z"fixture-6d610385"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09022024-01-01T00:00:00.000Z"fixture-6d610386"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09032024-01-01T00:00:00.000Z"fixture-6d610387"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09042024-01-01T00:00:00.000Z"fixture-6d610388"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09052024-01-01T00:00:00.000Z"fixture-6d610389"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09062024-01-01T00:00:00.000Z"fixture-6d61038a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09072024-01-01T00:00:00.000Z"fixture-6d61038b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09082024-01-01T00:00:00.000Z"fixture-6d61038c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09092024-01-01T00:00:00.000Z"fixture-6d61038d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09102024-01-01T00:00:00.000Z"fixture-6d61038e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09112024-01-01T00:00:00.000Z"fixture-6d61038f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09122024-01-01T00:00:00.000Z"fixture-6d610390"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09132024-01-01T00:00:00.000Z"fixture-6d610391"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09142024-01-01T00:00:00.000Z"fixture-6d610392"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09152024-01-01T00:00:00.000Z"fixture-6d610393"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09162024-01-01T00:00:00.000Z"fixture-6d610394"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09172024-01-01T00:00:00.000Z"fixture-6d610395"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09182024-01-01T00:00:00.000Z"fixture-6d610396"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09192024-01-01T00:00:00.000Z"fixture-6d610397"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09202024-01-01T00:00:00.000Z"fixture-6d610398"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09212024-01-01T00:00:00.000Z"fixture-6d610399"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09222024-01-01T00:00:00.000Z"fixture-6d61039a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09232024-01-01T00:00:00.000Z"fixture-6d61039b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09242024-01-01T00:00:00.000Z"fixture-6d61039c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09252024-01-01T00:00:00.000Z"fixture-6d61039d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09262024-01-01T00:00:00.000Z"fixture-6d61039e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09272024-01-01T00:00:00.000Z"fixture-6d61039f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09282024-01-01T00:00:00.000Z"fixture-6d6103a0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09292024-01-01T00:00:00.000Z"fixture-6d6103a1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09302024-01-01T00:00:00.000Z"fixture-6d6103a2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09312024-01-01T00:00:00.000Z"fixture-6d6103a3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09322024-01-01T00:00:00.000Z"fixture-6d6103a4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09332024-01-01T00:00:00.000Z"fixture-6d6103a5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09342024-01-01T00:00:00.000Z"fixture-6d6103a6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09352024-01-01T00:00:00.000Z"fixture-6d6103a7"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09362024-01-01T00:00:00.000Z"fixture-6d6103a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09372024-01-01T00:00:00.000Z"fixture-6d6103a9"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09382024-01-01T00:00:00.000Z"fixture-6d6103aa"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09392024-01-01T00:00:00.000Z"fixture-6d6103ab"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09402024-01-01T00:00:00.000Z"fixture-6d6103ac"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09412024-01-01T00:00:00.000Z"fixture-6d6103ad"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09422024-01-01T00:00:00.000Z"fixture-6d6103ae"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09432024-01-01T00:00:00.000Z"fixture-6d6103af"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09442024-01-01T00:00:00.000Z"fixture-6d6103b0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09452024-01-01T00:00:00.000Z"fixture-6d6103b1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09462024-01-01T00:00:00.000Z"fixture-6d6103b2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09472024-01-01T00:00:00.000Z"fixture-6d6103b3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09482024-01-01T00:00:00.000Z"fixture-6d6103b4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09492024-01-01T00:00:00.000Z"fixture-6d6103b5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09502024-01-01T00:00:00.000Z"fixture-6d6103b6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09512024-01-01T00:00:00.000Z"fixture-6d6103b7"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09522024-01-01T00:00:00.000Z"fixture-6d6103b8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09532024-01-01T00:00:00.000Z"fixture-6d6103b9"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09542024-01-01T00:00:00.000Z"fixture-6d6103ba"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09552024-01-01T00:00:00.000Z"fixture-6d6103bb"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09562024-01-01T00:00:00.000Z"fixture-6d6103bc"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09572024-01-01T00:00:00.000Z"fixture-6d6103bd"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09582024-01-01T00:00:00.000Z"fixture-6d6103be"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09592024-01-01T00:00:00.000Z"fixture-6d6103bf"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09602024-01-01T00:00:00.000Z"fixture-6d6103c0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09612024-01-01T00:00:00.000Z"fixture-6d6103c1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09622024-01-01T00:00:00.000Z"fixture-6d6103c2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09632024-01-01T00:00:00.000Z"fixture-6d6103c3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09642024-01-01T00:00:00.000Z"fixture-6d6103c4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09652024-01-01T00:00:00.000Z"fixture-6d6103c5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09662024-01-01T00:00:00.000Z"fixture-6d6103c6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09672024-01-01T00:00:00.000Z"fixture-6d6103c7"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09682024-01-01T00:00:00.000Z"fixture-6d6103c8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09692024-01-01T00:00:00.000Z"fixture-6d6103c9"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09702024-01-01T00:00:00.000Z"fixture-6d6103ca"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09712024-01-01T00:00:00.000Z"fixture-6d6103cb"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09722024-01-01T00:00:00.000Z"fixture-6d6103cc"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09732024-01-01T00:00:00.000Z"fixture-6d6103cd"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09742024-01-01T00:00:00.000Z"fixture-6d6103ce"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09752024-01-01T00:00:00.000Z"fixture-6d6103cf"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09762024-01-01T00:00:00.000Z"fixture-6d6103d0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09772024-01-01T00:00:00.000Z"fixture-6d6103d1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09782024-01-01T00:00:00.000Z"fixture-6d6103d2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09792024-01-01T00:00:00.000Z"fixture-6d6103d3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09802024-01-01T00:00:00.000Z"fixture-6d6103d4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09812024-01-01T00:00:00.000Z"fixture-6d6103d5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09822024-01-01T00:00:00.000Z"fixture-6d6103d6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09832024-01-01T00:00:00.000Z"fixture-6d6103d7"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09842024-01-01T00:00:00.000Z"fixture-6d6103d8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09852024-01-01T00:00:00.000Z"fixture-6d6103d9"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09862024-01-01T00:00:00.000Z"fixture-6d6103da"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09872024-01-01T00:00:00.000Z"fixture-6d6103db"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09882024-01-01T00:00:00.000Z"fixture-6d6103dc"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09892024-01-01T00:00:00.000Z"fixture-6d6103dd"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09902024-01-01T00:00:00.000Z"fixture-6d6103de"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09912024-01-01T00:00:00.000Z"fixture-6d6103df"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09922024-01-01T00:00:00.000Z"fixture-6d6103e0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09932024-01-01T00:00:00.000Z"fixture-6d6103e1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09942024-01-01T00:00:00.000Z"fixture-6d6103e2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09952024-01-01T00:00:00.000Z"fixture-6d6103e3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09962024-01-01T00:00:00.000Z"fixture-6d6103e4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09972024-01-01T00:00:00.000Z"fixture-6d6103e5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09982024-01-01T00:00:00.000Z"fixture-6d6103e6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09992024-01-01T00:00:00.000Z"fixture-6d6103e7"CRC64NVMEFULL_OBJECT1STANDARD" + }, + "framing": "chunked" } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-ad03f2ab332a\"" - } - }, - { - "at": "/value/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/content_type", - "optional": false, - "rule": { - "is": "equal", - "value": "binary/octet-stream" - } - }, - { - "at": "/value/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "MA==" - } - } - ], - "refusal": null - }, - { - "id": "operations/s3/get-range", - "profile": "s3", - "lane": "core", - "purpose": "get range", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "key": "object-tests/read/object.txt", - "op": "get", - "range": { - "end": 6, - "start": 2 - } - }, - "exchanges": [ - { - "alternatives": [ + }, { "request": [ { @@ -86498,7 +124424,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "/fixture" } }, { @@ -86510,11 +124436,27 @@ } }, { - "at": "/headers/range", + "at": "/query/list-type", "optional": false, "rule": { "is": "equal", - "value": "bytes=2-5" + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/many/" + } + }, + { + "at": "/query/encoding-type", + "optional": false, + "rule": { + "is": "equal", + "value": "url" } } ], @@ -86523,96 +124465,23 @@ ], "allow_query": [], "response": { - "status": 206, + "status": 200, "headers": { - "content-range": "bytes 2-5/30", - "content-type": "binary/octet-stream", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-ad03f2ab332a\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "MjM0NQ==" - } + "encoding": "utf8", + "data": "\nfixtureobject-tests/many/fixture-marker+/3a4e1000=10001000urltrueobject-tests/many/00002024-01-01T00:00:00.000Z"fixture-6d610000"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00012024-01-01T00:00:00.000Z"fixture-6d610001"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00022024-01-01T00:00:00.000Z"fixture-6d610002"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00032024-01-01T00:00:00.000Z"fixture-6d610003"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00042024-01-01T00:00:00.000Z"fixture-6d610004"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00052024-01-01T00:00:00.000Z"fixture-6d610005"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00062024-01-01T00:00:00.000Z"fixture-6d610006"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00072024-01-01T00:00:00.000Z"fixture-6d610007"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00082024-01-01T00:00:00.000Z"fixture-6d610008"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00092024-01-01T00:00:00.000Z"fixture-6d610009"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00102024-01-01T00:00:00.000Z"fixture-6d61000a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00112024-01-01T00:00:00.000Z"fixture-6d61000b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00122024-01-01T00:00:00.000Z"fixture-6d61000c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00132024-01-01T00:00:00.000Z"fixture-6d61000d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00142024-01-01T00:00:00.000Z"fixture-6d61000e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00152024-01-01T00:00:00.000Z"fixture-6d61000f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00162024-01-01T00:00:00.000Z"fixture-6d610010"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00172024-01-01T00:00:00.000Z"fixture-6d610011"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00182024-01-01T00:00:00.000Z"fixture-6d610012"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00192024-01-01T00:00:00.000Z"fixture-6d610013"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00202024-01-01T00:00:00.000Z"fixture-6d610014"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00212024-01-01T00:00:00.000Z"fixture-6d610015"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00222024-01-01T00:00:00.000Z"fixture-6d610016"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00232024-01-01T00:00:00.000Z"fixture-6d610017"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00242024-01-01T00:00:00.000Z"fixture-6d610018"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00252024-01-01T00:00:00.000Z"fixture-6d610019"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00262024-01-01T00:00:00.000Z"fixture-6d61001a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00272024-01-01T00:00:00.000Z"fixture-6d61001b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00282024-01-01T00:00:00.000Z"fixture-6d61001c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00292024-01-01T00:00:00.000Z"fixture-6d61001d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00302024-01-01T00:00:00.000Z"fixture-6d61001e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00312024-01-01T00:00:00.000Z"fixture-6d61001f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00322024-01-01T00:00:00.000Z"fixture-6d610020"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00332024-01-01T00:00:00.000Z"fixture-6d610021"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00342024-01-01T00:00:00.000Z"fixture-6d610022"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00352024-01-01T00:00:00.000Z"fixture-6d610023"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00362024-01-01T00:00:00.000Z"fixture-6d610024"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00372024-01-01T00:00:00.000Z"fixture-6d610025"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00382024-01-01T00:00:00.000Z"fixture-6d610026"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00392024-01-01T00:00:00.000Z"fixture-6d610027"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00402024-01-01T00:00:00.000Z"fixture-6d610028"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00412024-01-01T00:00:00.000Z"fixture-6d610029"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00422024-01-01T00:00:00.000Z"fixture-6d61002a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00432024-01-01T00:00:00.000Z"fixture-6d61002b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00442024-01-01T00:00:00.000Z"fixture-6d61002c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00452024-01-01T00:00:00.000Z"fixture-6d61002d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00462024-01-01T00:00:00.000Z"fixture-6d61002e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00472024-01-01T00:00:00.000Z"fixture-6d61002f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00482024-01-01T00:00:00.000Z"fixture-6d610030"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00492024-01-01T00:00:00.000Z"fixture-6d610031"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00502024-01-01T00:00:00.000Z"fixture-6d610032"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00512024-01-01T00:00:00.000Z"fixture-6d610033"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00522024-01-01T00:00:00.000Z"fixture-6d610034"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00532024-01-01T00:00:00.000Z"fixture-6d610035"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00542024-01-01T00:00:00.000Z"fixture-6d610036"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00552024-01-01T00:00:00.000Z"fixture-6d610037"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00562024-01-01T00:00:00.000Z"fixture-6d610038"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00572024-01-01T00:00:00.000Z"fixture-6d610039"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00582024-01-01T00:00:00.000Z"fixture-6d61003a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00592024-01-01T00:00:00.000Z"fixture-6d61003b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00602024-01-01T00:00:00.000Z"fixture-6d61003c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00612024-01-01T00:00:00.000Z"fixture-6d61003d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00622024-01-01T00:00:00.000Z"fixture-6d61003e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00632024-01-01T00:00:00.000Z"fixture-6d61003f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00642024-01-01T00:00:00.000Z"fixture-6d610040"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00652024-01-01T00:00:00.000Z"fixture-6d610041"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00662024-01-01T00:00:00.000Z"fixture-6d610042"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00672024-01-01T00:00:00.000Z"fixture-6d610043"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00682024-01-01T00:00:00.000Z"fixture-6d610044"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00692024-01-01T00:00:00.000Z"fixture-6d610045"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00702024-01-01T00:00:00.000Z"fixture-6d610046"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00712024-01-01T00:00:00.000Z"fixture-6d610047"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00722024-01-01T00:00:00.000Z"fixture-6d610048"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00732024-01-01T00:00:00.000Z"fixture-6d610049"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00742024-01-01T00:00:00.000Z"fixture-6d61004a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00752024-01-01T00:00:00.000Z"fixture-6d61004b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00762024-01-01T00:00:00.000Z"fixture-6d61004c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00772024-01-01T00:00:00.000Z"fixture-6d61004d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00782024-01-01T00:00:00.000Z"fixture-6d61004e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00792024-01-01T00:00:00.000Z"fixture-6d61004f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00802024-01-01T00:00:00.000Z"fixture-6d610050"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00812024-01-01T00:00:00.000Z"fixture-6d610051"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00822024-01-01T00:00:00.000Z"fixture-6d610052"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00832024-01-01T00:00:00.000Z"fixture-6d610053"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00842024-01-01T00:00:00.000Z"fixture-6d610054"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00852024-01-01T00:00:00.000Z"fixture-6d610055"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00862024-01-01T00:00:00.000Z"fixture-6d610056"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00872024-01-01T00:00:00.000Z"fixture-6d610057"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00882024-01-01T00:00:00.000Z"fixture-6d610058"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00892024-01-01T00:00:00.000Z"fixture-6d610059"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00902024-01-01T00:00:00.000Z"fixture-6d61005a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00912024-01-01T00:00:00.000Z"fixture-6d61005b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00922024-01-01T00:00:00.000Z"fixture-6d61005c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00932024-01-01T00:00:00.000Z"fixture-6d61005d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00942024-01-01T00:00:00.000Z"fixture-6d61005e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00952024-01-01T00:00:00.000Z"fixture-6d61005f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00962024-01-01T00:00:00.000Z"fixture-6d610060"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00972024-01-01T00:00:00.000Z"fixture-6d610061"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00982024-01-01T00:00:00.000Z"fixture-6d610062"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00992024-01-01T00:00:00.000Z"fixture-6d610063"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01002024-01-01T00:00:00.000Z"fixture-6d610064"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01012024-01-01T00:00:00.000Z"fixture-6d610065"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01022024-01-01T00:00:00.000Z"fixture-6d610066"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01032024-01-01T00:00:00.000Z"fixture-6d610067"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01042024-01-01T00:00:00.000Z"fixture-6d610068"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01052024-01-01T00:00:00.000Z"fixture-6d610069"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01062024-01-01T00:00:00.000Z"fixture-6d61006a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01072024-01-01T00:00:00.000Z"fixture-6d61006b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01082024-01-01T00:00:00.000Z"fixture-6d61006c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01092024-01-01T00:00:00.000Z"fixture-6d61006d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01102024-01-01T00:00:00.000Z"fixture-6d61006e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01112024-01-01T00:00:00.000Z"fixture-6d61006f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01122024-01-01T00:00:00.000Z"fixture-6d610070"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01132024-01-01T00:00:00.000Z"fixture-6d610071"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01142024-01-01T00:00:00.000Z"fixture-6d610072"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01152024-01-01T00:00:00.000Z"fixture-6d610073"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01162024-01-01T00:00:00.000Z"fixture-6d610074"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01172024-01-01T00:00:00.000Z"fixture-6d610075"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01182024-01-01T00:00:00.000Z"fixture-6d610076"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01192024-01-01T00:00:00.000Z"fixture-6d610077"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01202024-01-01T00:00:00.000Z"fixture-6d610078"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01212024-01-01T00:00:00.000Z"fixture-6d610079"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01222024-01-01T00:00:00.000Z"fixture-6d61007a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01232024-01-01T00:00:00.000Z"fixture-6d61007b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01242024-01-01T00:00:00.000Z"fixture-6d61007c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01252024-01-01T00:00:00.000Z"fixture-6d61007d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01262024-01-01T00:00:00.000Z"fixture-6d61007e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01272024-01-01T00:00:00.000Z"fixture-6d61007f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01282024-01-01T00:00:00.000Z"fixture-6d610080"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01292024-01-01T00:00:00.000Z"fixture-6d610081"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01302024-01-01T00:00:00.000Z"fixture-6d610082"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01312024-01-01T00:00:00.000Z"fixture-6d610083"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01322024-01-01T00:00:00.000Z"fixture-6d610084"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01332024-01-01T00:00:00.000Z"fixture-6d610085"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01342024-01-01T00:00:00.000Z"fixture-6d610086"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01352024-01-01T00:00:00.000Z"fixture-6d610087"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01362024-01-01T00:00:00.000Z"fixture-6d610088"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01372024-01-01T00:00:00.000Z"fixture-6d610089"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01382024-01-01T00:00:00.000Z"fixture-6d61008a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01392024-01-01T00:00:00.000Z"fixture-6d61008b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01402024-01-01T00:00:00.000Z"fixture-6d61008c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01412024-01-01T00:00:00.000Z"fixture-6d61008d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01422024-01-01T00:00:00.000Z"fixture-6d61008e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01432024-01-01T00:00:00.000Z"fixture-6d61008f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01442024-01-01T00:00:00.000Z"fixture-6d610090"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01452024-01-01T00:00:00.000Z"fixture-6d610091"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01462024-01-01T00:00:00.000Z"fixture-6d610092"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01472024-01-01T00:00:00.000Z"fixture-6d610093"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01482024-01-01T00:00:00.000Z"fixture-6d610094"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01492024-01-01T00:00:00.000Z"fixture-6d610095"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01502024-01-01T00:00:00.000Z"fixture-6d610096"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01512024-01-01T00:00:00.000Z"fixture-6d610097"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01522024-01-01T00:00:00.000Z"fixture-6d610098"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01532024-01-01T00:00:00.000Z"fixture-6d610099"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01542024-01-01T00:00:00.000Z"fixture-6d61009a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01552024-01-01T00:00:00.000Z"fixture-6d61009b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01562024-01-01T00:00:00.000Z"fixture-6d61009c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01572024-01-01T00:00:00.000Z"fixture-6d61009d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01582024-01-01T00:00:00.000Z"fixture-6d61009e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01592024-01-01T00:00:00.000Z"fixture-6d61009f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01602024-01-01T00:00:00.000Z"fixture-6d6100a0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01612024-01-01T00:00:00.000Z"fixture-6d6100a1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01622024-01-01T00:00:00.000Z"fixture-6d6100a2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01632024-01-01T00:00:00.000Z"fixture-6d6100a3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01642024-01-01T00:00:00.000Z"fixture-6d6100a4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01652024-01-01T00:00:00.000Z"fixture-6d6100a5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01662024-01-01T00:00:00.000Z"fixture-6d6100a6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01672024-01-01T00:00:00.000Z"fixture-6d6100a7"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01682024-01-01T00:00:00.000Z"fixture-6d6100a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01692024-01-01T00:00:00.000Z"fixture-6d6100a9"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01702024-01-01T00:00:00.000Z"fixture-6d6100aa"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01712024-01-01T00:00:00.000Z"fixture-6d6100ab"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01722024-01-01T00:00:00.000Z"fixture-6d6100ac"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01732024-01-01T00:00:00.000Z"fixture-6d6100ad"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01742024-01-01T00:00:00.000Z"fixture-6d6100ae"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01752024-01-01T00:00:00.000Z"fixture-6d6100af"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01762024-01-01T00:00:00.000Z"fixture-6d6100b0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01772024-01-01T00:00:00.000Z"fixture-6d6100b1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01782024-01-01T00:00:00.000Z"fixture-6d6100b2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01792024-01-01T00:00:00.000Z"fixture-6d6100b3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01802024-01-01T00:00:00.000Z"fixture-6d6100b4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01812024-01-01T00:00:00.000Z"fixture-6d6100b5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01822024-01-01T00:00:00.000Z"fixture-6d6100b6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01832024-01-01T00:00:00.000Z"fixture-6d6100b7"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01842024-01-01T00:00:00.000Z"fixture-6d6100b8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01852024-01-01T00:00:00.000Z"fixture-6d6100b9"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01862024-01-01T00:00:00.000Z"fixture-6d6100ba"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01872024-01-01T00:00:00.000Z"fixture-6d6100bb"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01882024-01-01T00:00:00.000Z"fixture-6d6100bc"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01892024-01-01T00:00:00.000Z"fixture-6d6100bd"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01902024-01-01T00:00:00.000Z"fixture-6d6100be"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01912024-01-01T00:00:00.000Z"fixture-6d6100bf"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01922024-01-01T00:00:00.000Z"fixture-6d6100c0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01932024-01-01T00:00:00.000Z"fixture-6d6100c1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01942024-01-01T00:00:00.000Z"fixture-6d6100c2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01952024-01-01T00:00:00.000Z"fixture-6d6100c3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01962024-01-01T00:00:00.000Z"fixture-6d6100c4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01972024-01-01T00:00:00.000Z"fixture-6d6100c5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01982024-01-01T00:00:00.000Z"fixture-6d6100c6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01992024-01-01T00:00:00.000Z"fixture-6d6100c7"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02002024-01-01T00:00:00.000Z"fixture-6d6100c8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02012024-01-01T00:00:00.000Z"fixture-6d6100c9"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02022024-01-01T00:00:00.000Z"fixture-6d6100ca"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02032024-01-01T00:00:00.000Z"fixture-6d6100cb"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02042024-01-01T00:00:00.000Z"fixture-6d6100cc"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02052024-01-01T00:00:00.000Z"fixture-6d6100cd"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02062024-01-01T00:00:00.000Z"fixture-6d6100ce"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02072024-01-01T00:00:00.000Z"fixture-6d6100cf"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02082024-01-01T00:00:00.000Z"fixture-6d6100d0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02092024-01-01T00:00:00.000Z"fixture-6d6100d1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02102024-01-01T00:00:00.000Z"fixture-6d6100d2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02112024-01-01T00:00:00.000Z"fixture-6d6100d3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02122024-01-01T00:00:00.000Z"fixture-6d6100d4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02132024-01-01T00:00:00.000Z"fixture-6d6100d5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02142024-01-01T00:00:00.000Z"fixture-6d6100d6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02152024-01-01T00:00:00.000Z"fixture-6d6100d7"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02162024-01-01T00:00:00.000Z"fixture-6d6100d8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02172024-01-01T00:00:00.000Z"fixture-6d6100d9"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02182024-01-01T00:00:00.000Z"fixture-6d6100da"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02192024-01-01T00:00:00.000Z"fixture-6d6100db"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02202024-01-01T00:00:00.000Z"fixture-6d6100dc"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02212024-01-01T00:00:00.000Z"fixture-6d6100dd"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02222024-01-01T00:00:00.000Z"fixture-6d6100de"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02232024-01-01T00:00:00.000Z"fixture-6d6100df"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02242024-01-01T00:00:00.000Z"fixture-6d6100e0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02252024-01-01T00:00:00.000Z"fixture-6d6100e1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02262024-01-01T00:00:00.000Z"fixture-6d6100e2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02272024-01-01T00:00:00.000Z"fixture-6d6100e3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02282024-01-01T00:00:00.000Z"fixture-6d6100e4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02292024-01-01T00:00:00.000Z"fixture-6d6100e5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02302024-01-01T00:00:00.000Z"fixture-6d6100e6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02312024-01-01T00:00:00.000Z"fixture-6d6100e7"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02322024-01-01T00:00:00.000Z"fixture-6d6100e8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02332024-01-01T00:00:00.000Z"fixture-6d6100e9"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02342024-01-01T00:00:00.000Z"fixture-6d6100ea"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02352024-01-01T00:00:00.000Z"fixture-6d6100eb"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02362024-01-01T00:00:00.000Z"fixture-6d6100ec"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02372024-01-01T00:00:00.000Z"fixture-6d6100ed"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02382024-01-01T00:00:00.000Z"fixture-6d6100ee"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02392024-01-01T00:00:00.000Z"fixture-6d6100ef"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02402024-01-01T00:00:00.000Z"fixture-6d6100f0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02412024-01-01T00:00:00.000Z"fixture-6d6100f1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02422024-01-01T00:00:00.000Z"fixture-6d6100f2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02432024-01-01T00:00:00.000Z"fixture-6d6100f3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02442024-01-01T00:00:00.000Z"fixture-6d6100f4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02452024-01-01T00:00:00.000Z"fixture-6d6100f5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02462024-01-01T00:00:00.000Z"fixture-6d6100f6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02472024-01-01T00:00:00.000Z"fixture-6d6100f7"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02482024-01-01T00:00:00.000Z"fixture-6d6100f8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02492024-01-01T00:00:00.000Z"fixture-6d6100f9"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02502024-01-01T00:00:00.000Z"fixture-6d6100fa"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02512024-01-01T00:00:00.000Z"fixture-6d6100fb"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02522024-01-01T00:00:00.000Z"fixture-6d6100fc"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02532024-01-01T00:00:00.000Z"fixture-6d6100fd"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02542024-01-01T00:00:00.000Z"fixture-6d6100fe"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02552024-01-01T00:00:00.000Z"fixture-6d6100ff"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02562024-01-01T00:00:00.000Z"fixture-6d610100"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02572024-01-01T00:00:00.000Z"fixture-6d610101"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02582024-01-01T00:00:00.000Z"fixture-6d610102"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02592024-01-01T00:00:00.000Z"fixture-6d610103"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02602024-01-01T00:00:00.000Z"fixture-6d610104"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02612024-01-01T00:00:00.000Z"fixture-6d610105"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02622024-01-01T00:00:00.000Z"fixture-6d610106"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02632024-01-01T00:00:00.000Z"fixture-6d610107"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02642024-01-01T00:00:00.000Z"fixture-6d610108"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02652024-01-01T00:00:00.000Z"fixture-6d610109"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02662024-01-01T00:00:00.000Z"fixture-6d61010a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02672024-01-01T00:00:00.000Z"fixture-6d61010b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02682024-01-01T00:00:00.000Z"fixture-6d61010c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02692024-01-01T00:00:00.000Z"fixture-6d61010d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02702024-01-01T00:00:00.000Z"fixture-6d61010e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02712024-01-01T00:00:00.000Z"fixture-6d61010f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02722024-01-01T00:00:00.000Z"fixture-6d610110"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02732024-01-01T00:00:00.000Z"fixture-6d610111"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02742024-01-01T00:00:00.000Z"fixture-6d610112"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02752024-01-01T00:00:00.000Z"fixture-6d610113"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02762024-01-01T00:00:00.000Z"fixture-6d610114"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02772024-01-01T00:00:00.000Z"fixture-6d610115"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02782024-01-01T00:00:00.000Z"fixture-6d610116"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02792024-01-01T00:00:00.000Z"fixture-6d610117"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02802024-01-01T00:00:00.000Z"fixture-6d610118"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02812024-01-01T00:00:00.000Z"fixture-6d610119"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02822024-01-01T00:00:00.000Z"fixture-6d61011a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02832024-01-01T00:00:00.000Z"fixture-6d61011b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02842024-01-01T00:00:00.000Z"fixture-6d61011c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02852024-01-01T00:00:00.000Z"fixture-6d61011d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02862024-01-01T00:00:00.000Z"fixture-6d61011e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02872024-01-01T00:00:00.000Z"fixture-6d61011f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02882024-01-01T00:00:00.000Z"fixture-6d610120"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02892024-01-01T00:00:00.000Z"fixture-6d610121"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02902024-01-01T00:00:00.000Z"fixture-6d610122"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02912024-01-01T00:00:00.000Z"fixture-6d610123"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02922024-01-01T00:00:00.000Z"fixture-6d610124"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02932024-01-01T00:00:00.000Z"fixture-6d610125"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02942024-01-01T00:00:00.000Z"fixture-6d610126"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02952024-01-01T00:00:00.000Z"fixture-6d610127"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02962024-01-01T00:00:00.000Z"fixture-6d610128"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02972024-01-01T00:00:00.000Z"fixture-6d610129"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02982024-01-01T00:00:00.000Z"fixture-6d61012a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02992024-01-01T00:00:00.000Z"fixture-6d61012b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03002024-01-01T00:00:00.000Z"fixture-6d61012c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03012024-01-01T00:00:00.000Z"fixture-6d61012d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03022024-01-01T00:00:00.000Z"fixture-6d61012e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03032024-01-01T00:00:00.000Z"fixture-6d61012f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03042024-01-01T00:00:00.000Z"fixture-6d610130"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03052024-01-01T00:00:00.000Z"fixture-6d610131"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03062024-01-01T00:00:00.000Z"fixture-6d610132"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03072024-01-01T00:00:00.000Z"fixture-6d610133"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03082024-01-01T00:00:00.000Z"fixture-6d610134"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03092024-01-01T00:00:00.000Z"fixture-6d610135"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03102024-01-01T00:00:00.000Z"fixture-6d610136"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03112024-01-01T00:00:00.000Z"fixture-6d610137"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03122024-01-01T00:00:00.000Z"fixture-6d610138"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03132024-01-01T00:00:00.000Z"fixture-6d610139"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03142024-01-01T00:00:00.000Z"fixture-6d61013a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03152024-01-01T00:00:00.000Z"fixture-6d61013b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03162024-01-01T00:00:00.000Z"fixture-6d61013c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03172024-01-01T00:00:00.000Z"fixture-6d61013d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03182024-01-01T00:00:00.000Z"fixture-6d61013e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03192024-01-01T00:00:00.000Z"fixture-6d61013f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03202024-01-01T00:00:00.000Z"fixture-6d610140"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03212024-01-01T00:00:00.000Z"fixture-6d610141"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03222024-01-01T00:00:00.000Z"fixture-6d610142"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03232024-01-01T00:00:00.000Z"fixture-6d610143"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03242024-01-01T00:00:00.000Z"fixture-6d610144"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03252024-01-01T00:00:00.000Z"fixture-6d610145"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03262024-01-01T00:00:00.000Z"fixture-6d610146"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03272024-01-01T00:00:00.000Z"fixture-6d610147"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03282024-01-01T00:00:00.000Z"fixture-6d610148"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03292024-01-01T00:00:00.000Z"fixture-6d610149"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03302024-01-01T00:00:00.000Z"fixture-6d61014a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03312024-01-01T00:00:00.000Z"fixture-6d61014b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03322024-01-01T00:00:00.000Z"fixture-6d61014c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03332024-01-01T00:00:00.000Z"fixture-6d61014d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03342024-01-01T00:00:00.000Z"fixture-6d61014e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03352024-01-01T00:00:00.000Z"fixture-6d61014f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03362024-01-01T00:00:00.000Z"fixture-6d610150"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03372024-01-01T00:00:00.000Z"fixture-6d610151"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03382024-01-01T00:00:00.000Z"fixture-6d610152"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03392024-01-01T00:00:00.000Z"fixture-6d610153"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03402024-01-01T00:00:00.000Z"fixture-6d610154"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03412024-01-01T00:00:00.000Z"fixture-6d610155"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03422024-01-01T00:00:00.000Z"fixture-6d610156"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03432024-01-01T00:00:00.000Z"fixture-6d610157"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03442024-01-01T00:00:00.000Z"fixture-6d610158"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03452024-01-01T00:00:00.000Z"fixture-6d610159"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03462024-01-01T00:00:00.000Z"fixture-6d61015a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03472024-01-01T00:00:00.000Z"fixture-6d61015b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03482024-01-01T00:00:00.000Z"fixture-6d61015c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03492024-01-01T00:00:00.000Z"fixture-6d61015d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03502024-01-01T00:00:00.000Z"fixture-6d61015e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03512024-01-01T00:00:00.000Z"fixture-6d61015f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03522024-01-01T00:00:00.000Z"fixture-6d610160"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03532024-01-01T00:00:00.000Z"fixture-6d610161"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03542024-01-01T00:00:00.000Z"fixture-6d610162"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03552024-01-01T00:00:00.000Z"fixture-6d610163"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03562024-01-01T00:00:00.000Z"fixture-6d610164"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03572024-01-01T00:00:00.000Z"fixture-6d610165"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03582024-01-01T00:00:00.000Z"fixture-6d610166"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03592024-01-01T00:00:00.000Z"fixture-6d610167"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03602024-01-01T00:00:00.000Z"fixture-6d610168"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03612024-01-01T00:00:00.000Z"fixture-6d610169"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03622024-01-01T00:00:00.000Z"fixture-6d61016a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03632024-01-01T00:00:00.000Z"fixture-6d61016b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03642024-01-01T00:00:00.000Z"fixture-6d61016c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03652024-01-01T00:00:00.000Z"fixture-6d61016d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03662024-01-01T00:00:00.000Z"fixture-6d61016e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03672024-01-01T00:00:00.000Z"fixture-6d61016f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03682024-01-01T00:00:00.000Z"fixture-6d610170"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03692024-01-01T00:00:00.000Z"fixture-6d610171"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03702024-01-01T00:00:00.000Z"fixture-6d610172"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03712024-01-01T00:00:00.000Z"fixture-6d610173"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03722024-01-01T00:00:00.000Z"fixture-6d610174"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03732024-01-01T00:00:00.000Z"fixture-6d610175"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03742024-01-01T00:00:00.000Z"fixture-6d610176"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03752024-01-01T00:00:00.000Z"fixture-6d610177"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03762024-01-01T00:00:00.000Z"fixture-6d610178"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03772024-01-01T00:00:00.000Z"fixture-6d610179"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03782024-01-01T00:00:00.000Z"fixture-6d61017a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03792024-01-01T00:00:00.000Z"fixture-6d61017b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03802024-01-01T00:00:00.000Z"fixture-6d61017c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03812024-01-01T00:00:00.000Z"fixture-6d61017d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03822024-01-01T00:00:00.000Z"fixture-6d61017e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03832024-01-01T00:00:00.000Z"fixture-6d61017f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03842024-01-01T00:00:00.000Z"fixture-6d610180"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03852024-01-01T00:00:00.000Z"fixture-6d610181"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03862024-01-01T00:00:00.000Z"fixture-6d610182"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03872024-01-01T00:00:00.000Z"fixture-6d610183"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03882024-01-01T00:00:00.000Z"fixture-6d610184"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03892024-01-01T00:00:00.000Z"fixture-6d610185"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03902024-01-01T00:00:00.000Z"fixture-6d610186"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03912024-01-01T00:00:00.000Z"fixture-6d610187"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03922024-01-01T00:00:00.000Z"fixture-6d610188"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03932024-01-01T00:00:00.000Z"fixture-6d610189"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03942024-01-01T00:00:00.000Z"fixture-6d61018a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03952024-01-01T00:00:00.000Z"fixture-6d61018b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03962024-01-01T00:00:00.000Z"fixture-6d61018c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03972024-01-01T00:00:00.000Z"fixture-6d61018d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03982024-01-01T00:00:00.000Z"fixture-6d61018e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03992024-01-01T00:00:00.000Z"fixture-6d61018f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04002024-01-01T00:00:00.000Z"fixture-6d610190"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04012024-01-01T00:00:00.000Z"fixture-6d610191"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04022024-01-01T00:00:00.000Z"fixture-6d610192"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04032024-01-01T00:00:00.000Z"fixture-6d610193"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04042024-01-01T00:00:00.000Z"fixture-6d610194"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04052024-01-01T00:00:00.000Z"fixture-6d610195"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04062024-01-01T00:00:00.000Z"fixture-6d610196"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04072024-01-01T00:00:00.000Z"fixture-6d610197"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04082024-01-01T00:00:00.000Z"fixture-6d610198"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04092024-01-01T00:00:00.000Z"fixture-6d610199"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04102024-01-01T00:00:00.000Z"fixture-6d61019a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04112024-01-01T00:00:00.000Z"fixture-6d61019b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04122024-01-01T00:00:00.000Z"fixture-6d61019c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04132024-01-01T00:00:00.000Z"fixture-6d61019d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04142024-01-01T00:00:00.000Z"fixture-6d61019e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04152024-01-01T00:00:00.000Z"fixture-6d61019f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04162024-01-01T00:00:00.000Z"fixture-6d6101a0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04172024-01-01T00:00:00.000Z"fixture-6d6101a1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04182024-01-01T00:00:00.000Z"fixture-6d6101a2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04192024-01-01T00:00:00.000Z"fixture-6d6101a3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04202024-01-01T00:00:00.000Z"fixture-6d6101a4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04212024-01-01T00:00:00.000Z"fixture-6d6101a5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04222024-01-01T00:00:00.000Z"fixture-6d6101a6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04232024-01-01T00:00:00.000Z"fixture-6d6101a7"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04242024-01-01T00:00:00.000Z"fixture-6d6101a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04252024-01-01T00:00:00.000Z"fixture-6d6101a9"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04262024-01-01T00:00:00.000Z"fixture-6d6101aa"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04272024-01-01T00:00:00.000Z"fixture-6d6101ab"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04282024-01-01T00:00:00.000Z"fixture-6d6101ac"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04292024-01-01T00:00:00.000Z"fixture-6d6101ad"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04302024-01-01T00:00:00.000Z"fixture-6d6101ae"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04312024-01-01T00:00:00.000Z"fixture-6d6101af"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04322024-01-01T00:00:00.000Z"fixture-6d6101b0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04332024-01-01T00:00:00.000Z"fixture-6d6101b1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04342024-01-01T00:00:00.000Z"fixture-6d6101b2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04352024-01-01T00:00:00.000Z"fixture-6d6101b3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04362024-01-01T00:00:00.000Z"fixture-6d6101b4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04372024-01-01T00:00:00.000Z"fixture-6d6101b5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04382024-01-01T00:00:00.000Z"fixture-6d6101b6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04392024-01-01T00:00:00.000Z"fixture-6d6101b7"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04402024-01-01T00:00:00.000Z"fixture-6d6101b8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04412024-01-01T00:00:00.000Z"fixture-6d6101b9"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04422024-01-01T00:00:00.000Z"fixture-6d6101ba"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04432024-01-01T00:00:00.000Z"fixture-6d6101bb"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04442024-01-01T00:00:00.000Z"fixture-6d6101bc"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04452024-01-01T00:00:00.000Z"fixture-6d6101bd"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04462024-01-01T00:00:00.000Z"fixture-6d6101be"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04472024-01-01T00:00:00.000Z"fixture-6d6101bf"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04482024-01-01T00:00:00.000Z"fixture-6d6101c0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04492024-01-01T00:00:00.000Z"fixture-6d6101c1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04502024-01-01T00:00:00.000Z"fixture-6d6101c2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04512024-01-01T00:00:00.000Z"fixture-6d6101c3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04522024-01-01T00:00:00.000Z"fixture-6d6101c4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04532024-01-01T00:00:00.000Z"fixture-6d6101c5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04542024-01-01T00:00:00.000Z"fixture-6d6101c6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04552024-01-01T00:00:00.000Z"fixture-6d6101c7"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04562024-01-01T00:00:00.000Z"fixture-6d6101c8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04572024-01-01T00:00:00.000Z"fixture-6d6101c9"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04582024-01-01T00:00:00.000Z"fixture-6d6101ca"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04592024-01-01T00:00:00.000Z"fixture-6d6101cb"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04602024-01-01T00:00:00.000Z"fixture-6d6101cc"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04612024-01-01T00:00:00.000Z"fixture-6d6101cd"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04622024-01-01T00:00:00.000Z"fixture-6d6101ce"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04632024-01-01T00:00:00.000Z"fixture-6d6101cf"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04642024-01-01T00:00:00.000Z"fixture-6d6101d0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04652024-01-01T00:00:00.000Z"fixture-6d6101d1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04662024-01-01T00:00:00.000Z"fixture-6d6101d2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04672024-01-01T00:00:00.000Z"fixture-6d6101d3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04682024-01-01T00:00:00.000Z"fixture-6d6101d4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04692024-01-01T00:00:00.000Z"fixture-6d6101d5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04702024-01-01T00:00:00.000Z"fixture-6d6101d6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04712024-01-01T00:00:00.000Z"fixture-6d6101d7"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04722024-01-01T00:00:00.000Z"fixture-6d6101d8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04732024-01-01T00:00:00.000Z"fixture-6d6101d9"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04742024-01-01T00:00:00.000Z"fixture-6d6101da"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04752024-01-01T00:00:00.000Z"fixture-6d6101db"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04762024-01-01T00:00:00.000Z"fixture-6d6101dc"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04772024-01-01T00:00:00.000Z"fixture-6d6101dd"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04782024-01-01T00:00:00.000Z"fixture-6d6101de"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04792024-01-01T00:00:00.000Z"fixture-6d6101df"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04802024-01-01T00:00:00.000Z"fixture-6d6101e0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04812024-01-01T00:00:00.000Z"fixture-6d6101e1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04822024-01-01T00:00:00.000Z"fixture-6d6101e2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04832024-01-01T00:00:00.000Z"fixture-6d6101e3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04842024-01-01T00:00:00.000Z"fixture-6d6101e4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04852024-01-01T00:00:00.000Z"fixture-6d6101e5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04862024-01-01T00:00:00.000Z"fixture-6d6101e6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04872024-01-01T00:00:00.000Z"fixture-6d6101e7"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04882024-01-01T00:00:00.000Z"fixture-6d6101e8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04892024-01-01T00:00:00.000Z"fixture-6d6101e9"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04902024-01-01T00:00:00.000Z"fixture-6d6101ea"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04912024-01-01T00:00:00.000Z"fixture-6d6101eb"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04922024-01-01T00:00:00.000Z"fixture-6d6101ec"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04932024-01-01T00:00:00.000Z"fixture-6d6101ed"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04942024-01-01T00:00:00.000Z"fixture-6d6101ee"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04952024-01-01T00:00:00.000Z"fixture-6d6101ef"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04962024-01-01T00:00:00.000Z"fixture-6d6101f0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04972024-01-01T00:00:00.000Z"fixture-6d6101f1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04982024-01-01T00:00:00.000Z"fixture-6d6101f2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04992024-01-01T00:00:00.000Z"fixture-6d6101f3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05002024-01-01T00:00:00.000Z"fixture-6d6101f4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05012024-01-01T00:00:00.000Z"fixture-6d6101f5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05022024-01-01T00:00:00.000Z"fixture-6d6101f6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05032024-01-01T00:00:00.000Z"fixture-6d6101f7"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05042024-01-01T00:00:00.000Z"fixture-6d6101f8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05052024-01-01T00:00:00.000Z"fixture-6d6101f9"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05062024-01-01T00:00:00.000Z"fixture-6d6101fa"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05072024-01-01T00:00:00.000Z"fixture-6d6101fb"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05082024-01-01T00:00:00.000Z"fixture-6d6101fc"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05092024-01-01T00:00:00.000Z"fixture-6d6101fd"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05102024-01-01T00:00:00.000Z"fixture-6d6101fe"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05112024-01-01T00:00:00.000Z"fixture-6d6101ff"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05122024-01-01T00:00:00.000Z"fixture-6d610200"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05132024-01-01T00:00:00.000Z"fixture-6d610201"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05142024-01-01T00:00:00.000Z"fixture-6d610202"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05152024-01-01T00:00:00.000Z"fixture-6d610203"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05162024-01-01T00:00:00.000Z"fixture-6d610204"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05172024-01-01T00:00:00.000Z"fixture-6d610205"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05182024-01-01T00:00:00.000Z"fixture-6d610206"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05192024-01-01T00:00:00.000Z"fixture-6d610207"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05202024-01-01T00:00:00.000Z"fixture-6d610208"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05212024-01-01T00:00:00.000Z"fixture-6d610209"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05222024-01-01T00:00:00.000Z"fixture-6d61020a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05232024-01-01T00:00:00.000Z"fixture-6d61020b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05242024-01-01T00:00:00.000Z"fixture-6d61020c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05252024-01-01T00:00:00.000Z"fixture-6d61020d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05262024-01-01T00:00:00.000Z"fixture-6d61020e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05272024-01-01T00:00:00.000Z"fixture-6d61020f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05282024-01-01T00:00:00.000Z"fixture-6d610210"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05292024-01-01T00:00:00.000Z"fixture-6d610211"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05302024-01-01T00:00:00.000Z"fixture-6d610212"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05312024-01-01T00:00:00.000Z"fixture-6d610213"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05322024-01-01T00:00:00.000Z"fixture-6d610214"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05332024-01-01T00:00:00.000Z"fixture-6d610215"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05342024-01-01T00:00:00.000Z"fixture-6d610216"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05352024-01-01T00:00:00.000Z"fixture-6d610217"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05362024-01-01T00:00:00.000Z"fixture-6d610218"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05372024-01-01T00:00:00.000Z"fixture-6d610219"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05382024-01-01T00:00:00.000Z"fixture-6d61021a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05392024-01-01T00:00:00.000Z"fixture-6d61021b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05402024-01-01T00:00:00.000Z"fixture-6d61021c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05412024-01-01T00:00:00.000Z"fixture-6d61021d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05422024-01-01T00:00:00.000Z"fixture-6d61021e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05432024-01-01T00:00:00.000Z"fixture-6d61021f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05442024-01-01T00:00:00.000Z"fixture-6d610220"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05452024-01-01T00:00:00.000Z"fixture-6d610221"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05462024-01-01T00:00:00.000Z"fixture-6d610222"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05472024-01-01T00:00:00.000Z"fixture-6d610223"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05482024-01-01T00:00:00.000Z"fixture-6d610224"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05492024-01-01T00:00:00.000Z"fixture-6d610225"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05502024-01-01T00:00:00.000Z"fixture-6d610226"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05512024-01-01T00:00:00.000Z"fixture-6d610227"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05522024-01-01T00:00:00.000Z"fixture-6d610228"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05532024-01-01T00:00:00.000Z"fixture-6d610229"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05542024-01-01T00:00:00.000Z"fixture-6d61022a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05552024-01-01T00:00:00.000Z"fixture-6d61022b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05562024-01-01T00:00:00.000Z"fixture-6d61022c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05572024-01-01T00:00:00.000Z"fixture-6d61022d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05582024-01-01T00:00:00.000Z"fixture-6d61022e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05592024-01-01T00:00:00.000Z"fixture-6d61022f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05602024-01-01T00:00:00.000Z"fixture-6d610230"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05612024-01-01T00:00:00.000Z"fixture-6d610231"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05622024-01-01T00:00:00.000Z"fixture-6d610232"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05632024-01-01T00:00:00.000Z"fixture-6d610233"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05642024-01-01T00:00:00.000Z"fixture-6d610234"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05652024-01-01T00:00:00.000Z"fixture-6d610235"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05662024-01-01T00:00:00.000Z"fixture-6d610236"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05672024-01-01T00:00:00.000Z"fixture-6d610237"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05682024-01-01T00:00:00.000Z"fixture-6d610238"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05692024-01-01T00:00:00.000Z"fixture-6d610239"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05702024-01-01T00:00:00.000Z"fixture-6d61023a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05712024-01-01T00:00:00.000Z"fixture-6d61023b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05722024-01-01T00:00:00.000Z"fixture-6d61023c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05732024-01-01T00:00:00.000Z"fixture-6d61023d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05742024-01-01T00:00:00.000Z"fixture-6d61023e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05752024-01-01T00:00:00.000Z"fixture-6d61023f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05762024-01-01T00:00:00.000Z"fixture-6d610240"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05772024-01-01T00:00:00.000Z"fixture-6d610241"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05782024-01-01T00:00:00.000Z"fixture-6d610242"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05792024-01-01T00:00:00.000Z"fixture-6d610243"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05802024-01-01T00:00:00.000Z"fixture-6d610244"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05812024-01-01T00:00:00.000Z"fixture-6d610245"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05822024-01-01T00:00:00.000Z"fixture-6d610246"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05832024-01-01T00:00:00.000Z"fixture-6d610247"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05842024-01-01T00:00:00.000Z"fixture-6d610248"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05852024-01-01T00:00:00.000Z"fixture-6d610249"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05862024-01-01T00:00:00.000Z"fixture-6d61024a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05872024-01-01T00:00:00.000Z"fixture-6d61024b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05882024-01-01T00:00:00.000Z"fixture-6d61024c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05892024-01-01T00:00:00.000Z"fixture-6d61024d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05902024-01-01T00:00:00.000Z"fixture-6d61024e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05912024-01-01T00:00:00.000Z"fixture-6d61024f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05922024-01-01T00:00:00.000Z"fixture-6d610250"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05932024-01-01T00:00:00.000Z"fixture-6d610251"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05942024-01-01T00:00:00.000Z"fixture-6d610252"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05952024-01-01T00:00:00.000Z"fixture-6d610253"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05962024-01-01T00:00:00.000Z"fixture-6d610254"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05972024-01-01T00:00:00.000Z"fixture-6d610255"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05982024-01-01T00:00:00.000Z"fixture-6d610256"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05992024-01-01T00:00:00.000Z"fixture-6d610257"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06002024-01-01T00:00:00.000Z"fixture-6d610258"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06012024-01-01T00:00:00.000Z"fixture-6d610259"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06022024-01-01T00:00:00.000Z"fixture-6d61025a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06032024-01-01T00:00:00.000Z"fixture-6d61025b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06042024-01-01T00:00:00.000Z"fixture-6d61025c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06052024-01-01T00:00:00.000Z"fixture-6d61025d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06062024-01-01T00:00:00.000Z"fixture-6d61025e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06072024-01-01T00:00:00.000Z"fixture-6d61025f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06082024-01-01T00:00:00.000Z"fixture-6d610260"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06092024-01-01T00:00:00.000Z"fixture-6d610261"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06102024-01-01T00:00:00.000Z"fixture-6d610262"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06112024-01-01T00:00:00.000Z"fixture-6d610263"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06122024-01-01T00:00:00.000Z"fixture-6d610264"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06132024-01-01T00:00:00.000Z"fixture-6d610265"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06142024-01-01T00:00:00.000Z"fixture-6d610266"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06152024-01-01T00:00:00.000Z"fixture-6d610267"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06162024-01-01T00:00:00.000Z"fixture-6d610268"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06172024-01-01T00:00:00.000Z"fixture-6d610269"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06182024-01-01T00:00:00.000Z"fixture-6d61026a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06192024-01-01T00:00:00.000Z"fixture-6d61026b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06202024-01-01T00:00:00.000Z"fixture-6d61026c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06212024-01-01T00:00:00.000Z"fixture-6d61026d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06222024-01-01T00:00:00.000Z"fixture-6d61026e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06232024-01-01T00:00:00.000Z"fixture-6d61026f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06242024-01-01T00:00:00.000Z"fixture-6d610270"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06252024-01-01T00:00:00.000Z"fixture-6d610271"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06262024-01-01T00:00:00.000Z"fixture-6d610272"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06272024-01-01T00:00:00.000Z"fixture-6d610273"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06282024-01-01T00:00:00.000Z"fixture-6d610274"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06292024-01-01T00:00:00.000Z"fixture-6d610275"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06302024-01-01T00:00:00.000Z"fixture-6d610276"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06312024-01-01T00:00:00.000Z"fixture-6d610277"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06322024-01-01T00:00:00.000Z"fixture-6d610278"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06332024-01-01T00:00:00.000Z"fixture-6d610279"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06342024-01-01T00:00:00.000Z"fixture-6d61027a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06352024-01-01T00:00:00.000Z"fixture-6d61027b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06362024-01-01T00:00:00.000Z"fixture-6d61027c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06372024-01-01T00:00:00.000Z"fixture-6d61027d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06382024-01-01T00:00:00.000Z"fixture-6d61027e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06392024-01-01T00:00:00.000Z"fixture-6d61027f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06402024-01-01T00:00:00.000Z"fixture-6d610280"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06412024-01-01T00:00:00.000Z"fixture-6d610281"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06422024-01-01T00:00:00.000Z"fixture-6d610282"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06432024-01-01T00:00:00.000Z"fixture-6d610283"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06442024-01-01T00:00:00.000Z"fixture-6d610284"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06452024-01-01T00:00:00.000Z"fixture-6d610285"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06462024-01-01T00:00:00.000Z"fixture-6d610286"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06472024-01-01T00:00:00.000Z"fixture-6d610287"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06482024-01-01T00:00:00.000Z"fixture-6d610288"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06492024-01-01T00:00:00.000Z"fixture-6d610289"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06502024-01-01T00:00:00.000Z"fixture-6d61028a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06512024-01-01T00:00:00.000Z"fixture-6d61028b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06522024-01-01T00:00:00.000Z"fixture-6d61028c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06532024-01-01T00:00:00.000Z"fixture-6d61028d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06542024-01-01T00:00:00.000Z"fixture-6d61028e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06552024-01-01T00:00:00.000Z"fixture-6d61028f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06562024-01-01T00:00:00.000Z"fixture-6d610290"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06572024-01-01T00:00:00.000Z"fixture-6d610291"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06582024-01-01T00:00:00.000Z"fixture-6d610292"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06592024-01-01T00:00:00.000Z"fixture-6d610293"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06602024-01-01T00:00:00.000Z"fixture-6d610294"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06612024-01-01T00:00:00.000Z"fixture-6d610295"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06622024-01-01T00:00:00.000Z"fixture-6d610296"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06632024-01-01T00:00:00.000Z"fixture-6d610297"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06642024-01-01T00:00:00.000Z"fixture-6d610298"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06652024-01-01T00:00:00.000Z"fixture-6d610299"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06662024-01-01T00:00:00.000Z"fixture-6d61029a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06672024-01-01T00:00:00.000Z"fixture-6d61029b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06682024-01-01T00:00:00.000Z"fixture-6d61029c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06692024-01-01T00:00:00.000Z"fixture-6d61029d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06702024-01-01T00:00:00.000Z"fixture-6d61029e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06712024-01-01T00:00:00.000Z"fixture-6d61029f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06722024-01-01T00:00:00.000Z"fixture-6d6102a0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06732024-01-01T00:00:00.000Z"fixture-6d6102a1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06742024-01-01T00:00:00.000Z"fixture-6d6102a2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06752024-01-01T00:00:00.000Z"fixture-6d6102a3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06762024-01-01T00:00:00.000Z"fixture-6d6102a4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06772024-01-01T00:00:00.000Z"fixture-6d6102a5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06782024-01-01T00:00:00.000Z"fixture-6d6102a6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06792024-01-01T00:00:00.000Z"fixture-6d6102a7"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06802024-01-01T00:00:00.000Z"fixture-6d6102a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06812024-01-01T00:00:00.000Z"fixture-6d6102a9"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06822024-01-01T00:00:00.000Z"fixture-6d6102aa"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06832024-01-01T00:00:00.000Z"fixture-6d6102ab"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06842024-01-01T00:00:00.000Z"fixture-6d6102ac"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06852024-01-01T00:00:00.000Z"fixture-6d6102ad"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06862024-01-01T00:00:00.000Z"fixture-6d6102ae"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06872024-01-01T00:00:00.000Z"fixture-6d6102af"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06882024-01-01T00:00:00.000Z"fixture-6d6102b0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06892024-01-01T00:00:00.000Z"fixture-6d6102b1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06902024-01-01T00:00:00.000Z"fixture-6d6102b2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06912024-01-01T00:00:00.000Z"fixture-6d6102b3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06922024-01-01T00:00:00.000Z"fixture-6d6102b4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06932024-01-01T00:00:00.000Z"fixture-6d6102b5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06942024-01-01T00:00:00.000Z"fixture-6d6102b6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06952024-01-01T00:00:00.000Z"fixture-6d6102b7"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06962024-01-01T00:00:00.000Z"fixture-6d6102b8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06972024-01-01T00:00:00.000Z"fixture-6d6102b9"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06982024-01-01T00:00:00.000Z"fixture-6d6102ba"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06992024-01-01T00:00:00.000Z"fixture-6d6102bb"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07002024-01-01T00:00:00.000Z"fixture-6d6102bc"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07012024-01-01T00:00:00.000Z"fixture-6d6102bd"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07022024-01-01T00:00:00.000Z"fixture-6d6102be"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07032024-01-01T00:00:00.000Z"fixture-6d6102bf"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07042024-01-01T00:00:00.000Z"fixture-6d6102c0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07052024-01-01T00:00:00.000Z"fixture-6d6102c1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07062024-01-01T00:00:00.000Z"fixture-6d6102c2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07072024-01-01T00:00:00.000Z"fixture-6d6102c3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07082024-01-01T00:00:00.000Z"fixture-6d6102c4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07092024-01-01T00:00:00.000Z"fixture-6d6102c5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07102024-01-01T00:00:00.000Z"fixture-6d6102c6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07112024-01-01T00:00:00.000Z"fixture-6d6102c7"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07122024-01-01T00:00:00.000Z"fixture-6d6102c8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07132024-01-01T00:00:00.000Z"fixture-6d6102c9"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07142024-01-01T00:00:00.000Z"fixture-6d6102ca"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07152024-01-01T00:00:00.000Z"fixture-6d6102cb"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07162024-01-01T00:00:00.000Z"fixture-6d6102cc"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07172024-01-01T00:00:00.000Z"fixture-6d6102cd"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07182024-01-01T00:00:00.000Z"fixture-6d6102ce"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07192024-01-01T00:00:00.000Z"fixture-6d6102cf"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07202024-01-01T00:00:00.000Z"fixture-6d6102d0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07212024-01-01T00:00:00.000Z"fixture-6d6102d1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07222024-01-01T00:00:00.000Z"fixture-6d6102d2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07232024-01-01T00:00:00.000Z"fixture-6d6102d3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07242024-01-01T00:00:00.000Z"fixture-6d6102d4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07252024-01-01T00:00:00.000Z"fixture-6d6102d5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07262024-01-01T00:00:00.000Z"fixture-6d6102d6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07272024-01-01T00:00:00.000Z"fixture-6d6102d7"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07282024-01-01T00:00:00.000Z"fixture-6d6102d8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07292024-01-01T00:00:00.000Z"fixture-6d6102d9"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07302024-01-01T00:00:00.000Z"fixture-6d6102da"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07312024-01-01T00:00:00.000Z"fixture-6d6102db"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07322024-01-01T00:00:00.000Z"fixture-6d6102dc"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07332024-01-01T00:00:00.000Z"fixture-6d6102dd"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07342024-01-01T00:00:00.000Z"fixture-6d6102de"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07352024-01-01T00:00:00.000Z"fixture-6d6102df"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07362024-01-01T00:00:00.000Z"fixture-6d6102e0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07372024-01-01T00:00:00.000Z"fixture-6d6102e1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07382024-01-01T00:00:00.000Z"fixture-6d6102e2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07392024-01-01T00:00:00.000Z"fixture-6d6102e3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07402024-01-01T00:00:00.000Z"fixture-6d6102e4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07412024-01-01T00:00:00.000Z"fixture-6d6102e5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07422024-01-01T00:00:00.000Z"fixture-6d6102e6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07432024-01-01T00:00:00.000Z"fixture-6d6102e7"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07442024-01-01T00:00:00.000Z"fixture-6d6102e8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07452024-01-01T00:00:00.000Z"fixture-6d6102e9"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07462024-01-01T00:00:00.000Z"fixture-6d6102ea"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07472024-01-01T00:00:00.000Z"fixture-6d6102eb"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07482024-01-01T00:00:00.000Z"fixture-6d6102ec"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07492024-01-01T00:00:00.000Z"fixture-6d6102ed"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07502024-01-01T00:00:00.000Z"fixture-6d6102ee"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07512024-01-01T00:00:00.000Z"fixture-6d6102ef"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07522024-01-01T00:00:00.000Z"fixture-6d6102f0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07532024-01-01T00:00:00.000Z"fixture-6d6102f1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07542024-01-01T00:00:00.000Z"fixture-6d6102f2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07552024-01-01T00:00:00.000Z"fixture-6d6102f3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07562024-01-01T00:00:00.000Z"fixture-6d6102f4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07572024-01-01T00:00:00.000Z"fixture-6d6102f5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07582024-01-01T00:00:00.000Z"fixture-6d6102f6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07592024-01-01T00:00:00.000Z"fixture-6d6102f7"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07602024-01-01T00:00:00.000Z"fixture-6d6102f8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07612024-01-01T00:00:00.000Z"fixture-6d6102f9"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07622024-01-01T00:00:00.000Z"fixture-6d6102fa"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07632024-01-01T00:00:00.000Z"fixture-6d6102fb"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07642024-01-01T00:00:00.000Z"fixture-6d6102fc"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07652024-01-01T00:00:00.000Z"fixture-6d6102fd"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07662024-01-01T00:00:00.000Z"fixture-6d6102fe"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07672024-01-01T00:00:00.000Z"fixture-6d6102ff"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07682024-01-01T00:00:00.000Z"fixture-6d610300"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07692024-01-01T00:00:00.000Z"fixture-6d610301"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07702024-01-01T00:00:00.000Z"fixture-6d610302"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07712024-01-01T00:00:00.000Z"fixture-6d610303"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07722024-01-01T00:00:00.000Z"fixture-6d610304"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07732024-01-01T00:00:00.000Z"fixture-6d610305"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07742024-01-01T00:00:00.000Z"fixture-6d610306"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07752024-01-01T00:00:00.000Z"fixture-6d610307"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07762024-01-01T00:00:00.000Z"fixture-6d610308"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07772024-01-01T00:00:00.000Z"fixture-6d610309"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07782024-01-01T00:00:00.000Z"fixture-6d61030a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07792024-01-01T00:00:00.000Z"fixture-6d61030b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07802024-01-01T00:00:00.000Z"fixture-6d61030c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07812024-01-01T00:00:00.000Z"fixture-6d61030d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07822024-01-01T00:00:00.000Z"fixture-6d61030e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07832024-01-01T00:00:00.000Z"fixture-6d61030f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07842024-01-01T00:00:00.000Z"fixture-6d610310"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07852024-01-01T00:00:00.000Z"fixture-6d610311"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07862024-01-01T00:00:00.000Z"fixture-6d610312"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07872024-01-01T00:00:00.000Z"fixture-6d610313"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07882024-01-01T00:00:00.000Z"fixture-6d610314"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07892024-01-01T00:00:00.000Z"fixture-6d610315"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07902024-01-01T00:00:00.000Z"fixture-6d610316"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07912024-01-01T00:00:00.000Z"fixture-6d610317"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07922024-01-01T00:00:00.000Z"fixture-6d610318"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07932024-01-01T00:00:00.000Z"fixture-6d610319"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07942024-01-01T00:00:00.000Z"fixture-6d61031a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07952024-01-01T00:00:00.000Z"fixture-6d61031b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07962024-01-01T00:00:00.000Z"fixture-6d61031c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07972024-01-01T00:00:00.000Z"fixture-6d61031d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07982024-01-01T00:00:00.000Z"fixture-6d61031e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07992024-01-01T00:00:00.000Z"fixture-6d61031f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08002024-01-01T00:00:00.000Z"fixture-6d610320"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08012024-01-01T00:00:00.000Z"fixture-6d610321"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08022024-01-01T00:00:00.000Z"fixture-6d610322"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08032024-01-01T00:00:00.000Z"fixture-6d610323"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08042024-01-01T00:00:00.000Z"fixture-6d610324"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08052024-01-01T00:00:00.000Z"fixture-6d610325"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08062024-01-01T00:00:00.000Z"fixture-6d610326"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08072024-01-01T00:00:00.000Z"fixture-6d610327"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08082024-01-01T00:00:00.000Z"fixture-6d610328"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08092024-01-01T00:00:00.000Z"fixture-6d610329"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08102024-01-01T00:00:00.000Z"fixture-6d61032a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08112024-01-01T00:00:00.000Z"fixture-6d61032b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08122024-01-01T00:00:00.000Z"fixture-6d61032c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08132024-01-01T00:00:00.000Z"fixture-6d61032d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08142024-01-01T00:00:00.000Z"fixture-6d61032e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08152024-01-01T00:00:00.000Z"fixture-6d61032f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08162024-01-01T00:00:00.000Z"fixture-6d610330"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08172024-01-01T00:00:00.000Z"fixture-6d610331"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08182024-01-01T00:00:00.000Z"fixture-6d610332"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08192024-01-01T00:00:00.000Z"fixture-6d610333"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08202024-01-01T00:00:00.000Z"fixture-6d610334"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08212024-01-01T00:00:00.000Z"fixture-6d610335"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08222024-01-01T00:00:00.000Z"fixture-6d610336"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08232024-01-01T00:00:00.000Z"fixture-6d610337"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08242024-01-01T00:00:00.000Z"fixture-6d610338"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08252024-01-01T00:00:00.000Z"fixture-6d610339"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08262024-01-01T00:00:00.000Z"fixture-6d61033a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08272024-01-01T00:00:00.000Z"fixture-6d61033b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08282024-01-01T00:00:00.000Z"fixture-6d61033c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08292024-01-01T00:00:00.000Z"fixture-6d61033d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08302024-01-01T00:00:00.000Z"fixture-6d61033e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08312024-01-01T00:00:00.000Z"fixture-6d61033f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08322024-01-01T00:00:00.000Z"fixture-6d610340"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08332024-01-01T00:00:00.000Z"fixture-6d610341"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08342024-01-01T00:00:00.000Z"fixture-6d610342"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08352024-01-01T00:00:00.000Z"fixture-6d610343"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08362024-01-01T00:00:00.000Z"fixture-6d610344"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08372024-01-01T00:00:00.000Z"fixture-6d610345"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08382024-01-01T00:00:00.000Z"fixture-6d610346"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08392024-01-01T00:00:00.000Z"fixture-6d610347"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08402024-01-01T00:00:00.000Z"fixture-6d610348"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08412024-01-01T00:00:00.000Z"fixture-6d610349"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08422024-01-01T00:00:00.000Z"fixture-6d61034a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08432024-01-01T00:00:00.000Z"fixture-6d61034b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08442024-01-01T00:00:00.000Z"fixture-6d61034c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08452024-01-01T00:00:00.000Z"fixture-6d61034d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08462024-01-01T00:00:00.000Z"fixture-6d61034e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08472024-01-01T00:00:00.000Z"fixture-6d61034f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08482024-01-01T00:00:00.000Z"fixture-6d610350"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08492024-01-01T00:00:00.000Z"fixture-6d610351"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08502024-01-01T00:00:00.000Z"fixture-6d610352"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08512024-01-01T00:00:00.000Z"fixture-6d610353"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08522024-01-01T00:00:00.000Z"fixture-6d610354"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08532024-01-01T00:00:00.000Z"fixture-6d610355"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08542024-01-01T00:00:00.000Z"fixture-6d610356"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08552024-01-01T00:00:00.000Z"fixture-6d610357"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08562024-01-01T00:00:00.000Z"fixture-6d610358"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08572024-01-01T00:00:00.000Z"fixture-6d610359"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08582024-01-01T00:00:00.000Z"fixture-6d61035a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08592024-01-01T00:00:00.000Z"fixture-6d61035b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08602024-01-01T00:00:00.000Z"fixture-6d61035c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08612024-01-01T00:00:00.000Z"fixture-6d61035d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08622024-01-01T00:00:00.000Z"fixture-6d61035e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08632024-01-01T00:00:00.000Z"fixture-6d61035f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08642024-01-01T00:00:00.000Z"fixture-6d610360"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08652024-01-01T00:00:00.000Z"fixture-6d610361"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08662024-01-01T00:00:00.000Z"fixture-6d610362"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08672024-01-01T00:00:00.000Z"fixture-6d610363"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08682024-01-01T00:00:00.000Z"fixture-6d610364"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08692024-01-01T00:00:00.000Z"fixture-6d610365"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08702024-01-01T00:00:00.000Z"fixture-6d610366"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08712024-01-01T00:00:00.000Z"fixture-6d610367"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08722024-01-01T00:00:00.000Z"fixture-6d610368"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08732024-01-01T00:00:00.000Z"fixture-6d610369"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08742024-01-01T00:00:00.000Z"fixture-6d61036a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08752024-01-01T00:00:00.000Z"fixture-6d61036b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08762024-01-01T00:00:00.000Z"fixture-6d61036c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08772024-01-01T00:00:00.000Z"fixture-6d61036d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08782024-01-01T00:00:00.000Z"fixture-6d61036e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08792024-01-01T00:00:00.000Z"fixture-6d61036f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08802024-01-01T00:00:00.000Z"fixture-6d610370"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08812024-01-01T00:00:00.000Z"fixture-6d610371"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08822024-01-01T00:00:00.000Z"fixture-6d610372"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08832024-01-01T00:00:00.000Z"fixture-6d610373"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08842024-01-01T00:00:00.000Z"fixture-6d610374"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08852024-01-01T00:00:00.000Z"fixture-6d610375"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08862024-01-01T00:00:00.000Z"fixture-6d610376"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08872024-01-01T00:00:00.000Z"fixture-6d610377"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08882024-01-01T00:00:00.000Z"fixture-6d610378"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08892024-01-01T00:00:00.000Z"fixture-6d610379"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08902024-01-01T00:00:00.000Z"fixture-6d61037a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08912024-01-01T00:00:00.000Z"fixture-6d61037b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08922024-01-01T00:00:00.000Z"fixture-6d61037c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08932024-01-01T00:00:00.000Z"fixture-6d61037d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08942024-01-01T00:00:00.000Z"fixture-6d61037e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08952024-01-01T00:00:00.000Z"fixture-6d61037f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08962024-01-01T00:00:00.000Z"fixture-6d610380"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08972024-01-01T00:00:00.000Z"fixture-6d610381"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08982024-01-01T00:00:00.000Z"fixture-6d610382"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08992024-01-01T00:00:00.000Z"fixture-6d610383"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09002024-01-01T00:00:00.000Z"fixture-6d610384"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09012024-01-01T00:00:00.000Z"fixture-6d610385"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09022024-01-01T00:00:00.000Z"fixture-6d610386"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09032024-01-01T00:00:00.000Z"fixture-6d610387"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09042024-01-01T00:00:00.000Z"fixture-6d610388"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09052024-01-01T00:00:00.000Z"fixture-6d610389"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09062024-01-01T00:00:00.000Z"fixture-6d61038a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09072024-01-01T00:00:00.000Z"fixture-6d61038b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09082024-01-01T00:00:00.000Z"fixture-6d61038c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09092024-01-01T00:00:00.000Z"fixture-6d61038d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09102024-01-01T00:00:00.000Z"fixture-6d61038e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09112024-01-01T00:00:00.000Z"fixture-6d61038f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09122024-01-01T00:00:00.000Z"fixture-6d610390"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09132024-01-01T00:00:00.000Z"fixture-6d610391"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09142024-01-01T00:00:00.000Z"fixture-6d610392"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09152024-01-01T00:00:00.000Z"fixture-6d610393"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09162024-01-01T00:00:00.000Z"fixture-6d610394"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09172024-01-01T00:00:00.000Z"fixture-6d610395"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09182024-01-01T00:00:00.000Z"fixture-6d610396"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09192024-01-01T00:00:00.000Z"fixture-6d610397"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09202024-01-01T00:00:00.000Z"fixture-6d610398"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09212024-01-01T00:00:00.000Z"fixture-6d610399"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09222024-01-01T00:00:00.000Z"fixture-6d61039a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09232024-01-01T00:00:00.000Z"fixture-6d61039b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09242024-01-01T00:00:00.000Z"fixture-6d61039c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09252024-01-01T00:00:00.000Z"fixture-6d61039d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09262024-01-01T00:00:00.000Z"fixture-6d61039e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09272024-01-01T00:00:00.000Z"fixture-6d61039f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09282024-01-01T00:00:00.000Z"fixture-6d6103a0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09292024-01-01T00:00:00.000Z"fixture-6d6103a1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09302024-01-01T00:00:00.000Z"fixture-6d6103a2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09312024-01-01T00:00:00.000Z"fixture-6d6103a3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09322024-01-01T00:00:00.000Z"fixture-6d6103a4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09332024-01-01T00:00:00.000Z"fixture-6d6103a5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09342024-01-01T00:00:00.000Z"fixture-6d6103a6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09352024-01-01T00:00:00.000Z"fixture-6d6103a7"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09362024-01-01T00:00:00.000Z"fixture-6d6103a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09372024-01-01T00:00:00.000Z"fixture-6d6103a9"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09382024-01-01T00:00:00.000Z"fixture-6d6103aa"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09392024-01-01T00:00:00.000Z"fixture-6d6103ab"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09402024-01-01T00:00:00.000Z"fixture-6d6103ac"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09412024-01-01T00:00:00.000Z"fixture-6d6103ad"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09422024-01-01T00:00:00.000Z"fixture-6d6103ae"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09432024-01-01T00:00:00.000Z"fixture-6d6103af"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09442024-01-01T00:00:00.000Z"fixture-6d6103b0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09452024-01-01T00:00:00.000Z"fixture-6d6103b1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09462024-01-01T00:00:00.000Z"fixture-6d6103b2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09472024-01-01T00:00:00.000Z"fixture-6d6103b3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09482024-01-01T00:00:00.000Z"fixture-6d6103b4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09492024-01-01T00:00:00.000Z"fixture-6d6103b5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09502024-01-01T00:00:00.000Z"fixture-6d6103b6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09512024-01-01T00:00:00.000Z"fixture-6d6103b7"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09522024-01-01T00:00:00.000Z"fixture-6d6103b8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09532024-01-01T00:00:00.000Z"fixture-6d6103b9"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09542024-01-01T00:00:00.000Z"fixture-6d6103ba"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09552024-01-01T00:00:00.000Z"fixture-6d6103bb"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09562024-01-01T00:00:00.000Z"fixture-6d6103bc"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09572024-01-01T00:00:00.000Z"fixture-6d6103bd"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09582024-01-01T00:00:00.000Z"fixture-6d6103be"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09592024-01-01T00:00:00.000Z"fixture-6d6103bf"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09602024-01-01T00:00:00.000Z"fixture-6d6103c0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09612024-01-01T00:00:00.000Z"fixture-6d6103c1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09622024-01-01T00:00:00.000Z"fixture-6d6103c2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09632024-01-01T00:00:00.000Z"fixture-6d6103c3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09642024-01-01T00:00:00.000Z"fixture-6d6103c4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09652024-01-01T00:00:00.000Z"fixture-6d6103c5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09662024-01-01T00:00:00.000Z"fixture-6d6103c6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09672024-01-01T00:00:00.000Z"fixture-6d6103c7"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09682024-01-01T00:00:00.000Z"fixture-6d6103c8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09692024-01-01T00:00:00.000Z"fixture-6d6103c9"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09702024-01-01T00:00:00.000Z"fixture-6d6103ca"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09712024-01-01T00:00:00.000Z"fixture-6d6103cb"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09722024-01-01T00:00:00.000Z"fixture-6d6103cc"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09732024-01-01T00:00:00.000Z"fixture-6d6103cd"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09742024-01-01T00:00:00.000Z"fixture-6d6103ce"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09752024-01-01T00:00:00.000Z"fixture-6d6103cf"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09762024-01-01T00:00:00.000Z"fixture-6d6103d0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09772024-01-01T00:00:00.000Z"fixture-6d6103d1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09782024-01-01T00:00:00.000Z"fixture-6d6103d2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09792024-01-01T00:00:00.000Z"fixture-6d6103d3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09802024-01-01T00:00:00.000Z"fixture-6d6103d4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09812024-01-01T00:00:00.000Z"fixture-6d6103d5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09822024-01-01T00:00:00.000Z"fixture-6d6103d6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09832024-01-01T00:00:00.000Z"fixture-6d6103d7"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09842024-01-01T00:00:00.000Z"fixture-6d6103d8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09852024-01-01T00:00:00.000Z"fixture-6d6103d9"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09862024-01-01T00:00:00.000Z"fixture-6d6103da"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09872024-01-01T00:00:00.000Z"fixture-6d6103db"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09882024-01-01T00:00:00.000Z"fixture-6d6103dc"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09892024-01-01T00:00:00.000Z"fixture-6d6103dd"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09902024-01-01T00:00:00.000Z"fixture-6d6103de"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09912024-01-01T00:00:00.000Z"fixture-6d6103df"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09922024-01-01T00:00:00.000Z"fixture-6d6103e0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09932024-01-01T00:00:00.000Z"fixture-6d6103e1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09942024-01-01T00:00:00.000Z"fixture-6d6103e2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09952024-01-01T00:00:00.000Z"fixture-6d6103e3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09962024-01-01T00:00:00.000Z"fixture-6d6103e4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09972024-01-01T00:00:00.000Z"fixture-6d6103e5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09982024-01-01T00:00:00.000Z"fixture-6d6103e6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09992024-01-01T00:00:00.000Z"fixture-6d6103e7"CRC64NVMEFULL_OBJECT1STANDARD" + }, + "framing": "chunked" } } ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-ad03f2ab332a\"" - } - }, - { - "at": "/value/size", - "optional": false, - "rule": { - "is": "equal", - "value": 4 - } - }, - { - "at": "/value/content_type", - "optional": false, - "rule": { - "is": "equal", - "value": "binary/octet-stream" - } - }, - { - "at": "/value/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } }, - { - "at": "/value/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "MjM0NQ==" - } - } - ], - "refusal": null - }, - { - "id": "operations/s3/get-range-open", - "profile": "s3", - "lane": "core", - "purpose": "get range open", - "sources": [ - "https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html" - ], - "call": { - "key": "object", - "op": "get", - "range": { - "start": 3 - } - }, - "exchanges": [ { "alternatives": [ { @@ -86630,7 +124499,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object" + "value": "/fixture" } }, { @@ -86642,44 +124511,48 @@ } }, { - "at": "/headers/range", + "at": "/query/list-type", "optional": false, "rule": { "is": "equal", - "value": "bytes=3-" + "value": "2" } }, { - "at": "/headers/content-type", - "optional": true, + "at": "/query/prefix", + "optional": false, "rule": { - "is": "one_of", - "values": [ - "application/xml", - "application/octet-stream", - "binary/octet-stream" - ] + "is": "equal", + "value": "object-tests/many/" + } + }, + { + "at": "/query/continuation-token", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-marker+/3a4e1000=" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 206, + "status": 200, "headers": { - "content-range": "bytes 3-4/5", - "content-type": "application/octet-stream", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-etag\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-amz-request-id": "fixture-request-id" + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "bG8=" - } + "encoding": "utf8", + "data": "\nfixtureobject-tests/many/fixture-marker+/3a4e1000=11000falseobject-tests/many/10002024-01-01T00:00:00.000Z"fixture-6d6103e8"CRC64NVMEFULL_OBJECT1STANDARD" + }, + "framing": "chunked" } }, { @@ -86697,7 +124570,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object" + "value": "/fixture" } }, { @@ -86709,44 +124582,56 @@ } }, { - "at": "/headers/content-type", - "optional": true, + "at": "/query/list-type", + "optional": false, "rule": { - "is": "one_of", - "values": [ - "application/xml", - "application/octet-stream", - "binary/octet-stream" - ] + "is": "equal", + "value": "2" } }, { - "at": "/headers/range", + "at": "/query/prefix", "optional": false, "rule": { - "is": "matches", - "pattern": "bytes=3-[1-9][0-9]{2,}" + "is": "equal", + "value": "object-tests/many/" + } + }, + { + "at": "/query/continuation-token", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-marker+/3a4e1000=" + } + }, + { + "at": "/query/encoding-type", + "optional": false, + "rule": { + "is": "equal", + "value": "url" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 206, + "status": 200, "headers": { - "content-range": "bytes 3-4/5", - "content-type": "application/octet-stream", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-etag\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-amz-request-id": "fixture-request-id" + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "bG8=" - } + "encoding": "utf8", + "data": "\nfixtureobject-tests/many/fixture-marker+/3a4e1000=11000urlfalseobject-tests/many/10002024-01-01T00:00:00.000Z"fixture-6d6103e8"CRC64NVMEFULL_OBJECT1STANDARD" + }, + "framing": "chunked" } } ] @@ -86762,27 +124647,1030 @@ } }, { - "at": "/value/body_base64", + "at": "/value/keys", "optional": false, "rule": { "is": "equal", - "value": "bG8=" + "value": [ + "object-tests/many/0000", + "object-tests/many/0001", + "object-tests/many/0002", + "object-tests/many/0003", + "object-tests/many/0004", + "object-tests/many/0005", + "object-tests/many/0006", + "object-tests/many/0007", + "object-tests/many/0008", + "object-tests/many/0009", + "object-tests/many/0010", + "object-tests/many/0011", + "object-tests/many/0012", + "object-tests/many/0013", + "object-tests/many/0014", + "object-tests/many/0015", + "object-tests/many/0016", + "object-tests/many/0017", + "object-tests/many/0018", + "object-tests/many/0019", + "object-tests/many/0020", + "object-tests/many/0021", + "object-tests/many/0022", + "object-tests/many/0023", + "object-tests/many/0024", + "object-tests/many/0025", + "object-tests/many/0026", + "object-tests/many/0027", + "object-tests/many/0028", + "object-tests/many/0029", + "object-tests/many/0030", + "object-tests/many/0031", + "object-tests/many/0032", + "object-tests/many/0033", + "object-tests/many/0034", + "object-tests/many/0035", + "object-tests/many/0036", + "object-tests/many/0037", + "object-tests/many/0038", + "object-tests/many/0039", + "object-tests/many/0040", + "object-tests/many/0041", + "object-tests/many/0042", + "object-tests/many/0043", + "object-tests/many/0044", + "object-tests/many/0045", + "object-tests/many/0046", + "object-tests/many/0047", + "object-tests/many/0048", + "object-tests/many/0049", + "object-tests/many/0050", + "object-tests/many/0051", + "object-tests/many/0052", + "object-tests/many/0053", + "object-tests/many/0054", + "object-tests/many/0055", + "object-tests/many/0056", + "object-tests/many/0057", + "object-tests/many/0058", + "object-tests/many/0059", + "object-tests/many/0060", + "object-tests/many/0061", + "object-tests/many/0062", + "object-tests/many/0063", + "object-tests/many/0064", + "object-tests/many/0065", + "object-tests/many/0066", + "object-tests/many/0067", + "object-tests/many/0068", + "object-tests/many/0069", + "object-tests/many/0070", + "object-tests/many/0071", + "object-tests/many/0072", + "object-tests/many/0073", + "object-tests/many/0074", + "object-tests/many/0075", + "object-tests/many/0076", + "object-tests/many/0077", + "object-tests/many/0078", + "object-tests/many/0079", + "object-tests/many/0080", + "object-tests/many/0081", + "object-tests/many/0082", + "object-tests/many/0083", + "object-tests/many/0084", + "object-tests/many/0085", + "object-tests/many/0086", + "object-tests/many/0087", + "object-tests/many/0088", + "object-tests/many/0089", + "object-tests/many/0090", + "object-tests/many/0091", + "object-tests/many/0092", + "object-tests/many/0093", + "object-tests/many/0094", + "object-tests/many/0095", + "object-tests/many/0096", + "object-tests/many/0097", + "object-tests/many/0098", + "object-tests/many/0099", + "object-tests/many/0100", + "object-tests/many/0101", + "object-tests/many/0102", + "object-tests/many/0103", + "object-tests/many/0104", + "object-tests/many/0105", + "object-tests/many/0106", + "object-tests/many/0107", + "object-tests/many/0108", + "object-tests/many/0109", + "object-tests/many/0110", + "object-tests/many/0111", + "object-tests/many/0112", + "object-tests/many/0113", + "object-tests/many/0114", + "object-tests/many/0115", + "object-tests/many/0116", + "object-tests/many/0117", + "object-tests/many/0118", + "object-tests/many/0119", + "object-tests/many/0120", + "object-tests/many/0121", + "object-tests/many/0122", + "object-tests/many/0123", + "object-tests/many/0124", + "object-tests/many/0125", + "object-tests/many/0126", + "object-tests/many/0127", + "object-tests/many/0128", + "object-tests/many/0129", + "object-tests/many/0130", + "object-tests/many/0131", + "object-tests/many/0132", + "object-tests/many/0133", + "object-tests/many/0134", + "object-tests/many/0135", + "object-tests/many/0136", + "object-tests/many/0137", + "object-tests/many/0138", + "object-tests/many/0139", + "object-tests/many/0140", + "object-tests/many/0141", + "object-tests/many/0142", + "object-tests/many/0143", + "object-tests/many/0144", + "object-tests/many/0145", + "object-tests/many/0146", + "object-tests/many/0147", + "object-tests/many/0148", + "object-tests/many/0149", + "object-tests/many/0150", + "object-tests/many/0151", + "object-tests/many/0152", + "object-tests/many/0153", + "object-tests/many/0154", + "object-tests/many/0155", + "object-tests/many/0156", + "object-tests/many/0157", + "object-tests/many/0158", + "object-tests/many/0159", + "object-tests/many/0160", + "object-tests/many/0161", + "object-tests/many/0162", + "object-tests/many/0163", + "object-tests/many/0164", + "object-tests/many/0165", + "object-tests/many/0166", + "object-tests/many/0167", + "object-tests/many/0168", + "object-tests/many/0169", + "object-tests/many/0170", + "object-tests/many/0171", + "object-tests/many/0172", + "object-tests/many/0173", + "object-tests/many/0174", + "object-tests/many/0175", + "object-tests/many/0176", + "object-tests/many/0177", + "object-tests/many/0178", + "object-tests/many/0179", + "object-tests/many/0180", + "object-tests/many/0181", + "object-tests/many/0182", + "object-tests/many/0183", + "object-tests/many/0184", + "object-tests/many/0185", + "object-tests/many/0186", + "object-tests/many/0187", + "object-tests/many/0188", + "object-tests/many/0189", + "object-tests/many/0190", + "object-tests/many/0191", + "object-tests/many/0192", + "object-tests/many/0193", + "object-tests/many/0194", + "object-tests/many/0195", + "object-tests/many/0196", + "object-tests/many/0197", + "object-tests/many/0198", + "object-tests/many/0199", + "object-tests/many/0200", + "object-tests/many/0201", + "object-tests/many/0202", + "object-tests/many/0203", + "object-tests/many/0204", + "object-tests/many/0205", + "object-tests/many/0206", + "object-tests/many/0207", + "object-tests/many/0208", + "object-tests/many/0209", + "object-tests/many/0210", + "object-tests/many/0211", + "object-tests/many/0212", + "object-tests/many/0213", + "object-tests/many/0214", + "object-tests/many/0215", + "object-tests/many/0216", + "object-tests/many/0217", + "object-tests/many/0218", + "object-tests/many/0219", + "object-tests/many/0220", + "object-tests/many/0221", + "object-tests/many/0222", + "object-tests/many/0223", + "object-tests/many/0224", + "object-tests/many/0225", + "object-tests/many/0226", + "object-tests/many/0227", + "object-tests/many/0228", + "object-tests/many/0229", + "object-tests/many/0230", + "object-tests/many/0231", + "object-tests/many/0232", + "object-tests/many/0233", + "object-tests/many/0234", + "object-tests/many/0235", + "object-tests/many/0236", + "object-tests/many/0237", + "object-tests/many/0238", + "object-tests/many/0239", + "object-tests/many/0240", + "object-tests/many/0241", + "object-tests/many/0242", + "object-tests/many/0243", + "object-tests/many/0244", + "object-tests/many/0245", + "object-tests/many/0246", + "object-tests/many/0247", + "object-tests/many/0248", + "object-tests/many/0249", + "object-tests/many/0250", + "object-tests/many/0251", + "object-tests/many/0252", + "object-tests/many/0253", + "object-tests/many/0254", + "object-tests/many/0255", + "object-tests/many/0256", + "object-tests/many/0257", + "object-tests/many/0258", + "object-tests/many/0259", + "object-tests/many/0260", + "object-tests/many/0261", + "object-tests/many/0262", + "object-tests/many/0263", + "object-tests/many/0264", + "object-tests/many/0265", + "object-tests/many/0266", + "object-tests/many/0267", + "object-tests/many/0268", + "object-tests/many/0269", + "object-tests/many/0270", + "object-tests/many/0271", + "object-tests/many/0272", + "object-tests/many/0273", + "object-tests/many/0274", + "object-tests/many/0275", + "object-tests/many/0276", + "object-tests/many/0277", + "object-tests/many/0278", + "object-tests/many/0279", + "object-tests/many/0280", + "object-tests/many/0281", + "object-tests/many/0282", + "object-tests/many/0283", + "object-tests/many/0284", + "object-tests/many/0285", + "object-tests/many/0286", + "object-tests/many/0287", + "object-tests/many/0288", + "object-tests/many/0289", + "object-tests/many/0290", + "object-tests/many/0291", + "object-tests/many/0292", + "object-tests/many/0293", + "object-tests/many/0294", + "object-tests/many/0295", + "object-tests/many/0296", + "object-tests/many/0297", + "object-tests/many/0298", + "object-tests/many/0299", + "object-tests/many/0300", + "object-tests/many/0301", + "object-tests/many/0302", + "object-tests/many/0303", + "object-tests/many/0304", + "object-tests/many/0305", + "object-tests/many/0306", + "object-tests/many/0307", + "object-tests/many/0308", + "object-tests/many/0309", + "object-tests/many/0310", + "object-tests/many/0311", + "object-tests/many/0312", + "object-tests/many/0313", + "object-tests/many/0314", + "object-tests/many/0315", + "object-tests/many/0316", + "object-tests/many/0317", + "object-tests/many/0318", + "object-tests/many/0319", + "object-tests/many/0320", + "object-tests/many/0321", + "object-tests/many/0322", + "object-tests/many/0323", + "object-tests/many/0324", + "object-tests/many/0325", + "object-tests/many/0326", + "object-tests/many/0327", + "object-tests/many/0328", + "object-tests/many/0329", + "object-tests/many/0330", + "object-tests/many/0331", + "object-tests/many/0332", + "object-tests/many/0333", + "object-tests/many/0334", + "object-tests/many/0335", + "object-tests/many/0336", + "object-tests/many/0337", + "object-tests/many/0338", + "object-tests/many/0339", + "object-tests/many/0340", + "object-tests/many/0341", + "object-tests/many/0342", + "object-tests/many/0343", + "object-tests/many/0344", + "object-tests/many/0345", + "object-tests/many/0346", + "object-tests/many/0347", + "object-tests/many/0348", + "object-tests/many/0349", + "object-tests/many/0350", + "object-tests/many/0351", + "object-tests/many/0352", + "object-tests/many/0353", + "object-tests/many/0354", + "object-tests/many/0355", + "object-tests/many/0356", + "object-tests/many/0357", + "object-tests/many/0358", + "object-tests/many/0359", + "object-tests/many/0360", + "object-tests/many/0361", + "object-tests/many/0362", + "object-tests/many/0363", + "object-tests/many/0364", + "object-tests/many/0365", + "object-tests/many/0366", + "object-tests/many/0367", + "object-tests/many/0368", + "object-tests/many/0369", + "object-tests/many/0370", + "object-tests/many/0371", + "object-tests/many/0372", + "object-tests/many/0373", + "object-tests/many/0374", + "object-tests/many/0375", + "object-tests/many/0376", + "object-tests/many/0377", + "object-tests/many/0378", + "object-tests/many/0379", + "object-tests/many/0380", + "object-tests/many/0381", + "object-tests/many/0382", + "object-tests/many/0383", + "object-tests/many/0384", + "object-tests/many/0385", + "object-tests/many/0386", + "object-tests/many/0387", + "object-tests/many/0388", + "object-tests/many/0389", + "object-tests/many/0390", + "object-tests/many/0391", + "object-tests/many/0392", + "object-tests/many/0393", + "object-tests/many/0394", + "object-tests/many/0395", + "object-tests/many/0396", + "object-tests/many/0397", + "object-tests/many/0398", + "object-tests/many/0399", + "object-tests/many/0400", + "object-tests/many/0401", + "object-tests/many/0402", + "object-tests/many/0403", + "object-tests/many/0404", + "object-tests/many/0405", + "object-tests/many/0406", + "object-tests/many/0407", + "object-tests/many/0408", + "object-tests/many/0409", + "object-tests/many/0410", + "object-tests/many/0411", + "object-tests/many/0412", + "object-tests/many/0413", + "object-tests/many/0414", + "object-tests/many/0415", + "object-tests/many/0416", + "object-tests/many/0417", + "object-tests/many/0418", + "object-tests/many/0419", + "object-tests/many/0420", + "object-tests/many/0421", + "object-tests/many/0422", + "object-tests/many/0423", + "object-tests/many/0424", + "object-tests/many/0425", + "object-tests/many/0426", + "object-tests/many/0427", + "object-tests/many/0428", + "object-tests/many/0429", + "object-tests/many/0430", + "object-tests/many/0431", + "object-tests/many/0432", + "object-tests/many/0433", + "object-tests/many/0434", + "object-tests/many/0435", + "object-tests/many/0436", + "object-tests/many/0437", + "object-tests/many/0438", + "object-tests/many/0439", + "object-tests/many/0440", + "object-tests/many/0441", + "object-tests/many/0442", + "object-tests/many/0443", + "object-tests/many/0444", + "object-tests/many/0445", + "object-tests/many/0446", + "object-tests/many/0447", + "object-tests/many/0448", + "object-tests/many/0449", + "object-tests/many/0450", + "object-tests/many/0451", + "object-tests/many/0452", + "object-tests/many/0453", + "object-tests/many/0454", + "object-tests/many/0455", + "object-tests/many/0456", + "object-tests/many/0457", + "object-tests/many/0458", + "object-tests/many/0459", + "object-tests/many/0460", + "object-tests/many/0461", + "object-tests/many/0462", + "object-tests/many/0463", + "object-tests/many/0464", + "object-tests/many/0465", + "object-tests/many/0466", + "object-tests/many/0467", + "object-tests/many/0468", + "object-tests/many/0469", + "object-tests/many/0470", + "object-tests/many/0471", + "object-tests/many/0472", + "object-tests/many/0473", + "object-tests/many/0474", + "object-tests/many/0475", + "object-tests/many/0476", + "object-tests/many/0477", + "object-tests/many/0478", + "object-tests/many/0479", + "object-tests/many/0480", + "object-tests/many/0481", + "object-tests/many/0482", + "object-tests/many/0483", + "object-tests/many/0484", + "object-tests/many/0485", + "object-tests/many/0486", + "object-tests/many/0487", + "object-tests/many/0488", + "object-tests/many/0489", + "object-tests/many/0490", + "object-tests/many/0491", + "object-tests/many/0492", + "object-tests/many/0493", + "object-tests/many/0494", + "object-tests/many/0495", + "object-tests/many/0496", + "object-tests/many/0497", + "object-tests/many/0498", + "object-tests/many/0499", + "object-tests/many/0500", + "object-tests/many/0501", + "object-tests/many/0502", + "object-tests/many/0503", + "object-tests/many/0504", + "object-tests/many/0505", + "object-tests/many/0506", + "object-tests/many/0507", + "object-tests/many/0508", + "object-tests/many/0509", + "object-tests/many/0510", + "object-tests/many/0511", + "object-tests/many/0512", + "object-tests/many/0513", + "object-tests/many/0514", + "object-tests/many/0515", + "object-tests/many/0516", + "object-tests/many/0517", + "object-tests/many/0518", + "object-tests/many/0519", + "object-tests/many/0520", + "object-tests/many/0521", + "object-tests/many/0522", + "object-tests/many/0523", + "object-tests/many/0524", + "object-tests/many/0525", + "object-tests/many/0526", + "object-tests/many/0527", + "object-tests/many/0528", + "object-tests/many/0529", + "object-tests/many/0530", + "object-tests/many/0531", + "object-tests/many/0532", + "object-tests/many/0533", + "object-tests/many/0534", + "object-tests/many/0535", + "object-tests/many/0536", + "object-tests/many/0537", + "object-tests/many/0538", + "object-tests/many/0539", + "object-tests/many/0540", + "object-tests/many/0541", + "object-tests/many/0542", + "object-tests/many/0543", + "object-tests/many/0544", + "object-tests/many/0545", + "object-tests/many/0546", + "object-tests/many/0547", + "object-tests/many/0548", + "object-tests/many/0549", + "object-tests/many/0550", + "object-tests/many/0551", + "object-tests/many/0552", + "object-tests/many/0553", + "object-tests/many/0554", + "object-tests/many/0555", + "object-tests/many/0556", + "object-tests/many/0557", + "object-tests/many/0558", + "object-tests/many/0559", + "object-tests/many/0560", + "object-tests/many/0561", + "object-tests/many/0562", + "object-tests/many/0563", + "object-tests/many/0564", + "object-tests/many/0565", + "object-tests/many/0566", + "object-tests/many/0567", + "object-tests/many/0568", + "object-tests/many/0569", + "object-tests/many/0570", + "object-tests/many/0571", + "object-tests/many/0572", + "object-tests/many/0573", + "object-tests/many/0574", + "object-tests/many/0575", + "object-tests/many/0576", + "object-tests/many/0577", + "object-tests/many/0578", + "object-tests/many/0579", + "object-tests/many/0580", + "object-tests/many/0581", + "object-tests/many/0582", + "object-tests/many/0583", + "object-tests/many/0584", + "object-tests/many/0585", + "object-tests/many/0586", + "object-tests/many/0587", + "object-tests/many/0588", + "object-tests/many/0589", + "object-tests/many/0590", + "object-tests/many/0591", + "object-tests/many/0592", + "object-tests/many/0593", + "object-tests/many/0594", + "object-tests/many/0595", + "object-tests/many/0596", + "object-tests/many/0597", + "object-tests/many/0598", + "object-tests/many/0599", + "object-tests/many/0600", + "object-tests/many/0601", + "object-tests/many/0602", + "object-tests/many/0603", + "object-tests/many/0604", + "object-tests/many/0605", + "object-tests/many/0606", + "object-tests/many/0607", + "object-tests/many/0608", + "object-tests/many/0609", + "object-tests/many/0610", + "object-tests/many/0611", + "object-tests/many/0612", + "object-tests/many/0613", + "object-tests/many/0614", + "object-tests/many/0615", + "object-tests/many/0616", + "object-tests/many/0617", + "object-tests/many/0618", + "object-tests/many/0619", + "object-tests/many/0620", + "object-tests/many/0621", + "object-tests/many/0622", + "object-tests/many/0623", + "object-tests/many/0624", + "object-tests/many/0625", + "object-tests/many/0626", + "object-tests/many/0627", + "object-tests/many/0628", + "object-tests/many/0629", + "object-tests/many/0630", + "object-tests/many/0631", + "object-tests/many/0632", + "object-tests/many/0633", + "object-tests/many/0634", + "object-tests/many/0635", + "object-tests/many/0636", + "object-tests/many/0637", + "object-tests/many/0638", + "object-tests/many/0639", + "object-tests/many/0640", + "object-tests/many/0641", + "object-tests/many/0642", + "object-tests/many/0643", + "object-tests/many/0644", + "object-tests/many/0645", + "object-tests/many/0646", + "object-tests/many/0647", + "object-tests/many/0648", + "object-tests/many/0649", + "object-tests/many/0650", + "object-tests/many/0651", + "object-tests/many/0652", + "object-tests/many/0653", + "object-tests/many/0654", + "object-tests/many/0655", + "object-tests/many/0656", + "object-tests/many/0657", + "object-tests/many/0658", + "object-tests/many/0659", + "object-tests/many/0660", + "object-tests/many/0661", + "object-tests/many/0662", + "object-tests/many/0663", + "object-tests/many/0664", + "object-tests/many/0665", + "object-tests/many/0666", + "object-tests/many/0667", + "object-tests/many/0668", + "object-tests/many/0669", + "object-tests/many/0670", + "object-tests/many/0671", + "object-tests/many/0672", + "object-tests/many/0673", + "object-tests/many/0674", + "object-tests/many/0675", + "object-tests/many/0676", + "object-tests/many/0677", + "object-tests/many/0678", + "object-tests/many/0679", + "object-tests/many/0680", + "object-tests/many/0681", + "object-tests/many/0682", + "object-tests/many/0683", + "object-tests/many/0684", + "object-tests/many/0685", + "object-tests/many/0686", + "object-tests/many/0687", + "object-tests/many/0688", + "object-tests/many/0689", + "object-tests/many/0690", + "object-tests/many/0691", + "object-tests/many/0692", + "object-tests/many/0693", + "object-tests/many/0694", + "object-tests/many/0695", + "object-tests/many/0696", + "object-tests/many/0697", + "object-tests/many/0698", + "object-tests/many/0699", + "object-tests/many/0700", + "object-tests/many/0701", + "object-tests/many/0702", + "object-tests/many/0703", + "object-tests/many/0704", + "object-tests/many/0705", + "object-tests/many/0706", + "object-tests/many/0707", + "object-tests/many/0708", + "object-tests/many/0709", + "object-tests/many/0710", + "object-tests/many/0711", + "object-tests/many/0712", + "object-tests/many/0713", + "object-tests/many/0714", + "object-tests/many/0715", + "object-tests/many/0716", + "object-tests/many/0717", + "object-tests/many/0718", + "object-tests/many/0719", + "object-tests/many/0720", + "object-tests/many/0721", + "object-tests/many/0722", + "object-tests/many/0723", + "object-tests/many/0724", + "object-tests/many/0725", + "object-tests/many/0726", + "object-tests/many/0727", + "object-tests/many/0728", + "object-tests/many/0729", + "object-tests/many/0730", + "object-tests/many/0731", + "object-tests/many/0732", + "object-tests/many/0733", + "object-tests/many/0734", + "object-tests/many/0735", + "object-tests/many/0736", + "object-tests/many/0737", + "object-tests/many/0738", + "object-tests/many/0739", + "object-tests/many/0740", + "object-tests/many/0741", + "object-tests/many/0742", + "object-tests/many/0743", + "object-tests/many/0744", + "object-tests/many/0745", + "object-tests/many/0746", + "object-tests/many/0747", + "object-tests/many/0748", + "object-tests/many/0749", + "object-tests/many/0750", + "object-tests/many/0751", + "object-tests/many/0752", + "object-tests/many/0753", + "object-tests/many/0754", + "object-tests/many/0755", + "object-tests/many/0756", + "object-tests/many/0757", + "object-tests/many/0758", + "object-tests/many/0759", + "object-tests/many/0760", + "object-tests/many/0761", + "object-tests/many/0762", + "object-tests/many/0763", + "object-tests/many/0764", + "object-tests/many/0765", + "object-tests/many/0766", + "object-tests/many/0767", + "object-tests/many/0768", + "object-tests/many/0769", + "object-tests/many/0770", + "object-tests/many/0771", + "object-tests/many/0772", + "object-tests/many/0773", + "object-tests/many/0774", + "object-tests/many/0775", + "object-tests/many/0776", + "object-tests/many/0777", + "object-tests/many/0778", + "object-tests/many/0779", + "object-tests/many/0780", + "object-tests/many/0781", + "object-tests/many/0782", + "object-tests/many/0783", + "object-tests/many/0784", + "object-tests/many/0785", + "object-tests/many/0786", + "object-tests/many/0787", + "object-tests/many/0788", + "object-tests/many/0789", + "object-tests/many/0790", + "object-tests/many/0791", + "object-tests/many/0792", + "object-tests/many/0793", + "object-tests/many/0794", + "object-tests/many/0795", + "object-tests/many/0796", + "object-tests/many/0797", + "object-tests/many/0798", + "object-tests/many/0799", + "object-tests/many/0800", + "object-tests/many/0801", + "object-tests/many/0802", + "object-tests/many/0803", + "object-tests/many/0804", + "object-tests/many/0805", + "object-tests/many/0806", + "object-tests/many/0807", + "object-tests/many/0808", + "object-tests/many/0809", + "object-tests/many/0810", + "object-tests/many/0811", + "object-tests/many/0812", + "object-tests/many/0813", + "object-tests/many/0814", + "object-tests/many/0815", + "object-tests/many/0816", + "object-tests/many/0817", + "object-tests/many/0818", + "object-tests/many/0819", + "object-tests/many/0820", + "object-tests/many/0821", + "object-tests/many/0822", + "object-tests/many/0823", + "object-tests/many/0824", + "object-tests/many/0825", + "object-tests/many/0826", + "object-tests/many/0827", + "object-tests/many/0828", + "object-tests/many/0829", + "object-tests/many/0830", + "object-tests/many/0831", + "object-tests/many/0832", + "object-tests/many/0833", + "object-tests/many/0834", + "object-tests/many/0835", + "object-tests/many/0836", + "object-tests/many/0837", + "object-tests/many/0838", + "object-tests/many/0839", + "object-tests/many/0840", + "object-tests/many/0841", + "object-tests/many/0842", + "object-tests/many/0843", + "object-tests/many/0844", + "object-tests/many/0845", + "object-tests/many/0846", + "object-tests/many/0847", + "object-tests/many/0848", + "object-tests/many/0849", + "object-tests/many/0850", + "object-tests/many/0851", + "object-tests/many/0852", + "object-tests/many/0853", + "object-tests/many/0854", + "object-tests/many/0855", + "object-tests/many/0856", + "object-tests/many/0857", + "object-tests/many/0858", + "object-tests/many/0859", + "object-tests/many/0860", + "object-tests/many/0861", + "object-tests/many/0862", + "object-tests/many/0863", + "object-tests/many/0864", + "object-tests/many/0865", + "object-tests/many/0866", + "object-tests/many/0867", + "object-tests/many/0868", + "object-tests/many/0869", + "object-tests/many/0870", + "object-tests/many/0871", + "object-tests/many/0872", + "object-tests/many/0873", + "object-tests/many/0874", + "object-tests/many/0875", + "object-tests/many/0876", + "object-tests/many/0877", + "object-tests/many/0878", + "object-tests/many/0879", + "object-tests/many/0880", + "object-tests/many/0881", + "object-tests/many/0882", + "object-tests/many/0883", + "object-tests/many/0884", + "object-tests/many/0885", + "object-tests/many/0886", + "object-tests/many/0887", + "object-tests/many/0888", + "object-tests/many/0889", + "object-tests/many/0890", + "object-tests/many/0891", + "object-tests/many/0892", + "object-tests/many/0893", + "object-tests/many/0894", + "object-tests/many/0895", + "object-tests/many/0896", + "object-tests/many/0897", + "object-tests/many/0898", + "object-tests/many/0899", + "object-tests/many/0900", + "object-tests/many/0901", + "object-tests/many/0902", + "object-tests/many/0903", + "object-tests/many/0904", + "object-tests/many/0905", + "object-tests/many/0906", + "object-tests/many/0907", + "object-tests/many/0908", + "object-tests/many/0909", + "object-tests/many/0910", + "object-tests/many/0911", + "object-tests/many/0912", + "object-tests/many/0913", + "object-tests/many/0914", + "object-tests/many/0915", + "object-tests/many/0916", + "object-tests/many/0917", + "object-tests/many/0918", + "object-tests/many/0919", + "object-tests/many/0920", + "object-tests/many/0921", + "object-tests/many/0922", + "object-tests/many/0923", + "object-tests/many/0924", + "object-tests/many/0925", + "object-tests/many/0926", + "object-tests/many/0927", + "object-tests/many/0928", + "object-tests/many/0929", + "object-tests/many/0930", + "object-tests/many/0931", + "object-tests/many/0932", + "object-tests/many/0933", + "object-tests/many/0934", + "object-tests/many/0935", + "object-tests/many/0936", + "object-tests/many/0937", + "object-tests/many/0938", + "object-tests/many/0939", + "object-tests/many/0940", + "object-tests/many/0941", + "object-tests/many/0942", + "object-tests/many/0943", + "object-tests/many/0944", + "object-tests/many/0945", + "object-tests/many/0946", + "object-tests/many/0947", + "object-tests/many/0948", + "object-tests/many/0949", + "object-tests/many/0950", + "object-tests/many/0951", + "object-tests/many/0952", + "object-tests/many/0953", + "object-tests/many/0954", + "object-tests/many/0955", + "object-tests/many/0956", + "object-tests/many/0957", + "object-tests/many/0958", + "object-tests/many/0959", + "object-tests/many/0960", + "object-tests/many/0961", + "object-tests/many/0962", + "object-tests/many/0963", + "object-tests/many/0964", + "object-tests/many/0965", + "object-tests/many/0966", + "object-tests/many/0967", + "object-tests/many/0968", + "object-tests/many/0969", + "object-tests/many/0970", + "object-tests/many/0971", + "object-tests/many/0972", + "object-tests/many/0973", + "object-tests/many/0974", + "object-tests/many/0975", + "object-tests/many/0976", + "object-tests/many/0977", + "object-tests/many/0978", + "object-tests/many/0979", + "object-tests/many/0980", + "object-tests/many/0981", + "object-tests/many/0982", + "object-tests/many/0983", + "object-tests/many/0984", + "object-tests/many/0985", + "object-tests/many/0986", + "object-tests/many/0987", + "object-tests/many/0988", + "object-tests/many/0989", + "object-tests/many/0990", + "object-tests/many/0991", + "object-tests/many/0992", + "object-tests/many/0993", + "object-tests/many/0994", + "object-tests/many/0995", + "object-tests/many/0996", + "object-tests/many/0997", + "object-tests/many/0998", + "object-tests/many/0999", + "object-tests/many/1000" + ] } } ], "refusal": null }, { - "id": "operations/s3/get-replaced", + "id": "operations/s3/list-start-after", "profile": "s3", "lane": "core", - "purpose": "get replaced", + "purpose": "Send start-after, and list only the keys after it", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/multipart/replaced.bin", - "op": "get" + "op": "list_page", + "prefix": "object-tests/board/", + "start_after": "object-tests/board/a.txt" }, "exchanges": [ { @@ -86802,7 +125690,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/replaced.bin" + "value": "/fixture" } }, { @@ -86812,60 +125700,29 @@ "is": "equal", "value": "" } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-type": "binary/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-8631a8b6edf7\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, - "body": { - "encoding": "base64", - "data": "Yg==" - } - } - }, - { - "request": [ { - "at": "/method", + "at": "/query/list-type", "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "2" } }, { - "at": "/path", + "at": "/query/prefix", "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/replaced.bin" + "value": "object-tests/board/" } }, { - "at": "/body_base64", + "at": "/query/start-after", "optional": false, "rule": { "is": "equal", - "value": "" - } - }, - { - "at": "/headers/range", - "optional": false, - "rule": { - "is": "matches", - "pattern": "bytes=0-[1-9][0-9]{2,}" + "value": "object-tests/board/a.txt" } } ], @@ -86874,95 +125731,21 @@ ], "allow_query": [], "response": { - "status": 206, + "status": 200, "headers": { - "content-range": "bytes 0-0/1", - "content-type": "binary/octet-stream", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-8631a8b6edf7\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "Yg==" - } + "encoding": "utf8", + "data": "\nfixtureobject-tests/board/21000falseobject-tests/board/a.txtobject-tests/board/nested/c.txt2024-01-01T00:00:00.000Z"fixture-626f61720001"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/board/z.txt2024-01-01T00:00:00.000Z"fixture-626f61720002"CRC64NVMEFULL_OBJECT2STANDARD" + }, + "framing": "chunked" } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-8631a8b6edf7\"" - } - }, - { - "at": "/value/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/content_type", - "optional": false, - "rule": { - "is": "equal", - "value": "binary/octet-stream" - } - }, - { - "at": "/value/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "Yg==" - } - } - ], - "refusal": null - }, - { - "id": "operations/s3/get-single-part", - "profile": "s3", - "lane": "core", - "purpose": "get single part", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "key": "object-tests/multipart/single.bin", - "op": "get" - }, - "exchanges": [ - { - "alternatives": [ + }, { "request": [ { @@ -86978,7 +125761,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/single.bin" + "value": "/fixture" } }, { @@ -86988,60 +125771,37 @@ "is": "equal", "value": "" } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-type": "binary/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-69ebdafc497f\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, - "body": { - "encoding": "base64", - "data": "b25seQ==" - } - } - }, - { - "request": [ { - "at": "/method", + "at": "/query/list-type", "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "2" } }, { - "at": "/path", + "at": "/query/prefix", "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/single.bin" + "value": "object-tests/board/" } }, { - "at": "/body_base64", + "at": "/query/start-after", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "object-tests/board/a.txt" } }, { - "at": "/headers/range", + "at": "/query/encoding-type", "optional": false, "rule": { - "is": "matches", - "pattern": "bytes=0-[1-9][0-9]{2,}" + "is": "equal", + "value": "url" } } ], @@ -87050,20 +125810,19 @@ ], "allow_query": [], "response": { - "status": 206, + "status": 200, "headers": { - "content-range": "bytes 0-3/4", - "content-type": "binary/octet-stream", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-69ebdafc497f\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "b25seQ==" - } + "encoding": "utf8", + "data": "\nfixtureobject-tests/board/21000urlfalseobject-tests/board/a.txtobject-tests/board/nested/c.txt2024-01-01T00:00:00.000Z"fixture-626f61720001"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/board/z.txt2024-01-01T00:00:00.000Z"fixture-626f61720002"CRC64NVMEFULL_OBJECT2STANDARD" + }, + "framing": "chunked" } } ] @@ -87079,31 +125838,31 @@ } }, { - "at": "/value/etag", + "at": "/value/entries/0/key", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-69ebdafc497f\"" + "value": "object-tests/board/nested/c.txt" } }, { - "at": "/value/size", + "at": "/value/entries/0/size", "optional": false, "rule": { "is": "equal", - "value": 4 + "value": 1 } }, { - "at": "/value/content_type", + "at": "/value/entries/0/etag", "optional": false, "rule": { "is": "equal", - "value": "binary/octet-stream" + "value": "\"fixture-626f61720001\"" } }, { - "at": "/value/version", + "at": "/value/entries/0/snapshot", "optional": true, "rule": { "is": "one_of", @@ -87114,254 +125873,7 @@ } }, { - "at": "/value/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "b25seQ==" - } - } - ], - "refusal": null - }, - { - "id": "operations/s3/get-suffix-longer-than-object", - "profile": "s3", - "lane": "core", - "purpose": "get suffix longer than object", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "key": "object-tests/read/object.txt", - "op": "get", - "range": { - "suffix": 100 - } - }, - "exchanges": [ - { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/read/object.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/headers/range", - "optional": false, - "rule": { - "is": "equal", - "value": "bytes=-100" - } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 206, - "headers": { - "content-range": "bytes 0-29/30", - "content-type": "binary/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-ad03f2ab332a\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" - }, - "body": { - "encoding": "base64", - "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" - } - } - }, - { - "request": [ - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/read/object.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/headers/range", - "optional": false, - "rule": { - "is": "equal", - "value": "bytes=-100" - } - }, - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "HEAD" - } - } - ], - "then": [ - { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/read/object.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/headers/range", - "optional": false, - "rule": { - "is": "equal", - "value": "bytes=0-29" - } - }, - { - "at": "/headers/if-match", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-ad03f2ab332a\"" - } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 206, - "headers": { - "content-range": "bytes 0-29/30", - "content-type": "binary/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-ad03f2ab332a\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" - }, - "body": { - "encoding": "base64", - "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" - } - } - } - ] - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 206, - "headers": { - "content-length": "30", - "content-range": "bytes 0-29/30", - "content-type": "binary/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-ad03f2ab332a\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" - }, - "body": { - "encoding": "empty" - } - } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-ad03f2ab332a\"" - } - }, - { - "at": "/value/size", - "optional": false, - "rule": { - "is": "equal", - "value": 30 - } - }, - { - "at": "/value/content_type", - "optional": false, - "rule": { - "is": "equal", - "value": "binary/octet-stream" - } - }, - { - "at": "/value/version", + "at": "/value/entries/0/version", "optional": true, "rule": { "is": "one_of", @@ -87372,254 +125884,53 @@ } }, { - "at": "/value/body_base64", - "optional": false, + "at": "/value/entries/0/is_current_version", + "optional": true, "rule": { - "is": "equal", - "value": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + "is": "one_of", + "values": [ + null, + false + ] } - } - ], - "refusal": null - }, - { - "id": "operations/s3/get-suffix", - "profile": "s3", - "lane": "core", - "purpose": "get suffix", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "key": "object-tests/read/object.txt", - "op": "get", - "range": { - "suffix": 6 - } - }, - "exchanges": [ - { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/read/object.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/headers/range", - "optional": false, - "rule": { - "is": "equal", - "value": "bytes=-6" - } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 206, - "headers": { - "content-range": "bytes 24-29/30", - "content-type": "binary/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-ad03f2ab332a\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" - }, - "body": { - "encoding": "base64", - "data": "b2JqZWN0" - } - } - }, - { - "request": [ - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/read/object.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/headers/range", - "optional": false, - "rule": { - "is": "equal", - "value": "bytes=-6" - } - }, - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "HEAD" - } - } - ], - "then": [ - { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/read/object.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/headers/range", - "optional": false, - "rule": { - "is": "equal", - "value": "bytes=24-29" - } - }, - { - "at": "/headers/if-match", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-ad03f2ab332a\"" - } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 206, - "headers": { - "content-range": "bytes 24-29/30", - "content-type": "binary/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-ad03f2ab332a\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" - }, - "body": { - "encoding": "base64", - "data": "b2JqZWN0" - } - } - } - ] - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 206, - "headers": { - "content-length": "6", - "content-range": "bytes 24-29/30", - "content-type": "binary/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-ad03f2ab332a\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" - }, - "body": { - "encoding": "empty" - } - } - } - ] - } - ], - "expect": [ + }, { - "at": "/outcome", + "at": "/value/entries/1/key", "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "object-tests/board/z.txt" } }, { - "at": "/value/etag", + "at": "/value/entries/1/size", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-ad03f2ab332a\"" + "value": 2 } }, { - "at": "/value/size", + "at": "/value/entries/1/etag", "optional": false, "rule": { "is": "equal", - "value": 6 + "value": "\"fixture-626f61720002\"" } }, { - "at": "/value/content_type", - "optional": false, + "at": "/value/entries/1/snapshot", + "optional": true, "rule": { - "is": "equal", - "value": "binary/octet-stream" + "is": "one_of", + "values": [ + null, + "" + ] } }, { - "at": "/value/version", + "at": "/value/entries/1/version", "optional": true, "rule": { "is": "one_of", @@ -87630,173 +125941,56 @@ } }, { - "at": "/value/body_base64", - "optional": false, + "at": "/value/entries/1/is_current_version", + "optional": true, "rule": { - "is": "equal", - "value": "b2JqZWN0" + "is": "one_of", + "values": [ + null, + false + ] } - } - ], - "refusal": null - }, - { - "id": "operations/s3/get-unauthenticated", - "profile": "s3", - "lane": "core", - "purpose": "Report the service authorization error for this operation; signature acceptance is tested separately.", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "key": "object-tests/read/object.txt", - "op": "get" - }, - "exchanges": [ - { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/read/object.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 403, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - } - }, - "body": { - "encoding": "utf8", - "data": "\nInvalidAccessKeyIdFixture error" - }, - "framing": "chunked" - } - }, - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/read/object.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/headers/range", - "optional": false, - "rule": { - "is": "matches", - "pattern": "bytes=0-[1-9][0-9]{2,}" - } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 403, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - } - }, - "body": { - "encoding": "utf8", - "data": "\nInvalidAccessKeyIdFixture error" - }, - "framing": "chunked" - } - } - ] - } - ], - "expect": [ + }, { - "at": "/outcome", + "at": "/value/entries", "optional": false, "rule": { - "is": "equal", - "value": "error" + "is": "array_length", + "value": 2 } }, { - "at": "/status", + "at": "/value/prefixes", "optional": false, "rule": { - "is": "equal", - "value": 403 + "is": "array_length", + "value": 0 } }, { - "at": "/code", + "at": "/value/continuation_token", "optional": false, "rule": { "is": "equal", - "value": "InvalidAccessKeyId" + "value": "" } } ], "refusal": null }, { - "id": "operations/s3/get-whole", + "id": "operations/s3/list-start-after-delimited", "profile": "s3", "lane": "core", - "purpose": "get whole", + "purpose": "Send a start-after that names no key; it skips the keys and common prefixes up to it", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/read/object.txt", - "op": "get" + "delimiter": "/", + "op": "list_page", + "prefix": "object-tests/board/", + "start_after": "object-tests/board/b" }, "exchanges": [ { @@ -87816,7 +126010,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "/fixture" } }, { @@ -87826,6 +126020,38 @@ "is": "equal", "value": "" } + }, + { + "at": "/query/list-type", + "optional": false, + "rule": { + "is": "equal", + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/" + } + }, + { + "at": "/query/delimiter", + "optional": false, + "rule": { + "is": "equal", + "value": "/" + } + }, + { + "at": "/query/start-after", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/b" + } } ], "allow_headers": [ @@ -87835,17 +126061,17 @@ "response": { "status": 200, "headers": { - "content-type": "binary/octet-stream", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-ad03f2ab332a\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" - } + "encoding": "utf8", + "data": "\nfixtureobject-tests/board/21000/falseobject-tests/board/bobject-tests/board/z.txt2024-01-01T00:00:00.000Z"fixture-626f61720002"CRC64NVMEFULL_OBJECT2STANDARDobject-tests/board/nested/" + }, + "framing": "chunked" } }, { @@ -87863,7 +126089,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "/fixture" } }, { @@ -87875,11 +126101,43 @@ } }, { - "at": "/headers/range", + "at": "/query/list-type", "optional": false, "rule": { - "is": "matches", - "pattern": "bytes=0-[1-9][0-9]{2,}" + "is": "equal", + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/" + } + }, + { + "at": "/query/delimiter", + "optional": false, + "rule": { + "is": "equal", + "value": "/" + } + }, + { + "at": "/query/start-after", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/b" + } + }, + { + "at": "/query/encoding-type", + "optional": false, + "rule": { + "is": "equal", + "value": "url" } } ], @@ -87888,20 +126146,19 @@ ], "allow_query": [], "response": { - "status": 206, + "status": 200, "headers": { - "content-range": "bytes 0-29/30", - "content-type": "binary/octet-stream", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-ad03f2ab332a\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" - } + "encoding": "utf8", + "data": "\nfixtureobject-tests/board/21000/urlfalseobject-tests/board/bobject-tests/board/z.txt2024-01-01T00:00:00.000Z"fixture-626f61720002"CRC64NVMEFULL_OBJECT2STANDARDobject-tests/board/nested/" + }, + "framing": "chunked" } } ] @@ -87917,31 +126174,31 @@ } }, { - "at": "/value/etag", + "at": "/value/entries/0/key", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-ad03f2ab332a\"" + "value": "object-tests/board/z.txt" } }, { - "at": "/value/size", + "at": "/value/entries/0/size", "optional": false, "rule": { "is": "equal", - "value": 30 + "value": 2 } }, { - "at": "/value/content_type", + "at": "/value/entries/0/etag", "optional": false, "rule": { "is": "equal", - "value": "binary/octet-stream" + "value": "\"fixture-626f61720002\"" } }, { - "at": "/value/version", + "at": "/value/entries/0/snapshot", "optional": true, "rule": { "is": "one_of", @@ -87952,27 +126209,75 @@ } }, { - "at": "/value/body_base64", + "at": "/value/entries/0/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries", + "optional": false, + "rule": { + "is": "array_length", + "value": 1 + } + }, + { + "at": "/value/prefixes/0", "optional": false, "rule": { "is": "equal", - "value": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + "value": "object-tests/board/nested/" + } + }, + { + "at": "/value/prefixes", + "optional": false, + "rule": { + "is": "array_length", + "value": 1 + } + }, + { + "at": "/value/continuation_token", + "optional": false, + "rule": { + "is": "equal", + "value": "" } } ], "refusal": null }, { - "id": "operations/s3/get-xml-looking", + "id": "operations/s3/list-truncated-without-token", "profile": "s3", "lane": "core", - "purpose": "get xml looking", + "purpose": "Report an error when a truncated page carries no continuation token; do not stop early or list from the start again", "sources": [ - "https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], + "origin": "constructed", "call": { - "key": "object", - "op": "get" + "op": "list", + "page_size": 2, + "prefix": "object-tests/board/" }, "exchanges": [ { @@ -87992,7 +126297,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object" + "value": "/fixture" } }, { @@ -88004,143 +126309,50 @@ } }, { - "at": "/headers/content-type", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - "application/xml", - "application/octet-stream", - "binary/octet-stream" - ] - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-type": "application/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-etag\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-amz-request-id": "fixture-request-id" - }, - "body": { - "encoding": "base64", - "data": "PEVycm9yPnN0aWxsIG9iamVjdCBieXRlczwvRXJyb3I+" - } - } - }, - { - "request": [ - { - "at": "/method", + "at": "/query/list-type", "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "2" } }, { - "at": "/path", + "at": "/query/prefix", "optional": false, "rule": { "is": "equal", - "value": "/fixture/object" + "value": "object-tests/board/" } }, { - "at": "/body_base64", + "at": "/query/max-keys", "optional": false, "rule": { "is": "equal", - "value": "" - } - }, - { - "at": "/headers/content-type", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - "application/xml", - "application/octet-stream", - "binary/octet-stream" - ] - } - }, - { - "at": "/headers/range", - "optional": false, - "rule": { - "is": "matches", - "pattern": "bytes=0-[1-9][0-9]{2,}" + "value": "2" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 206, + "status": 200, "headers": { - "content-range": "bytes 0-32/33", - "content-type": "application/octet-stream", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-etag\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-amz-request-id": "fixture-request-id" + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "PEVycm9yPnN0aWxsIG9iamVjdCBieXRlczwvRXJyb3I+" - } + "encoding": "utf8", + "data": "\nfixtureobject-tests/board/22trueobject-tests/board/a.txt2024-01-01T00:00:00.000Z"fixture-626f61720000"CRC64NVMEFULL_OBJECT8STANDARDobject-tests/board/nested/c.txt2024-01-01T00:00:00.000Z"fixture-626f61720001"CRC64NVMEFULL_OBJECT1STANDARD" + }, + "framing": "chunked" } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "PEVycm9yPnN0aWxsIG9iamVjdCBieXRlczwvRXJyb3I+" - } - } - ], - "refusal": null - }, - { - "id": "operations/s3/get-noise-tolerance", - "profile": "s3", - "lane": "core", - "purpose": "get noise tolerance", - "sources": [ - "https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html" - ], - "origin": "constructed", - "call": { - "key": "object", - "op": "get" - }, - "exchanges": [ - { - "alternatives": [ + }, { "request": [ { @@ -88156,7 +126368,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object" + "value": "/fixture" } }, { @@ -88168,104 +126380,56 @@ } }, { - "at": "/headers/content-type", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - "application/xml", - "application/octet-stream", - "binary/octet-stream" - ] - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-type": "application/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"a-different-etag\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-amz-request-id": "another-id", - "x-fixture-unknown": "ignored" - }, - "body": { - "encoding": "base64", - "data": "aGVsbG8=" - } - } - }, - { - "request": [ - { - "at": "/method", + "at": "/query/list-type", "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "2" } }, { - "at": "/path", + "at": "/query/prefix", "optional": false, "rule": { "is": "equal", - "value": "/fixture/object" + "value": "object-tests/board/" } }, { - "at": "/body_base64", + "at": "/query/max-keys", "optional": false, "rule": { "is": "equal", - "value": "" - } - }, - { - "at": "/headers/content-type", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - "application/xml", - "application/octet-stream", - "binary/octet-stream" - ] + "value": "2" } }, { - "at": "/headers/range", + "at": "/query/encoding-type", "optional": false, "rule": { - "is": "matches", - "pattern": "bytes=0-[1-9][0-9]{2,}" + "is": "equal", + "value": "url" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 206, + "status": 200, "headers": { - "content-range": "bytes 0-4/5", - "content-type": "application/octet-stream", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"a-different-etag\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-amz-request-id": "another-id", - "x-fixture-unknown": "ignored" + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "aGVsbG8=" - } + "encoding": "utf8", + "data": "\nfixtureobject-tests/board/22urltrueobject-tests/board/a.txt2024-01-01T00:00:00.000Z"fixture-626f61720000"CRC64NVMEFULL_OBJECT8STANDARDobject-tests/board/nested/c.txt2024-01-01T00:00:00.000Z"fixture-626f61720001"CRC64NVMEFULL_OBJECT1STANDARD" + }, + "framing": "chunked" } } ] @@ -88277,32 +126441,25 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "aGVsbG8=" + "value": "error" } } ], "refusal": null }, { - "id": "operations/s3/get-version", + "id": "operations/s3/list-encoding-ignored", "profile": "s3", "lane": "core", - "purpose": "get version", + "purpose": "Read the keys as sent when a service ignores encoding-type=url and the page has no EncodingType; a % that begins no escape is text, as in URL percent-decoding", "sources": [ - "https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html" + "https://github.com/rclone/rclone/tree/master/backend/s3/provider", + "https://url.spec.whatwg.org/#percent-decode" ], + "origin": "constructed", "call": { - "key": "object", - "op": "get", - "version": "opaque+/version=" + "op": "list_page", + "prefix": "object-tests/percent/" }, "exchanges": [ { @@ -88322,7 +126479,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object" + "value": "/fixture" } }, { @@ -88334,44 +126491,40 @@ } }, { - "at": "/query/versionId", + "at": "/query/list-type", "optional": false, "rule": { "is": "equal", - "value": "opaque+/version=" + "value": "2" } }, { - "at": "/headers/content-type", - "optional": true, + "at": "/query/prefix", + "optional": false, "rule": { - "is": "one_of", - "values": [ - "application/xml", - "application/octet-stream", - "binary/octet-stream" - ] + "is": "equal", + "value": "object-tests/percent/" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { "status": 200, "headers": { - "content-type": "application/octet-stream", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-etag\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-amz-request-id": "fixture-request-id", - "x-amz-version-id": "opaque+/version=" + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "aGVsbG8=" - } + "encoding": "utf8", + "data": "\nfixtureobject-tests/percent/31000falseobject-tests/percent/%zz.txt2024-01-01T00:00:00.000Z"fixture-706572000000"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/percent/100%-off.txt2024-01-01T00:00:00.000Z"fixture-706572000001"CRC64NVMEFULL_OBJECT2STANDARDobject-tests/percent/50%2024-01-01T00:00:00.000Z"fixture-706572000002"CRC64NVMEFULL_OBJECT3STANDARD" + }, + "framing": "chunked" } }, { @@ -88389,7 +126542,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object" + "value": "/fixture" } }, { @@ -88401,53 +126554,48 @@ } }, { - "at": "/query/versionId", + "at": "/query/list-type", "optional": false, "rule": { "is": "equal", - "value": "opaque+/version=" + "value": "2" } }, { - "at": "/headers/content-type", - "optional": true, + "at": "/query/prefix", + "optional": false, "rule": { - "is": "one_of", - "values": [ - "application/xml", - "application/octet-stream", - "binary/octet-stream" - ] + "is": "equal", + "value": "object-tests/percent/" } }, { - "at": "/headers/range", + "at": "/query/encoding-type", "optional": false, "rule": { - "is": "matches", - "pattern": "bytes=0-[1-9][0-9]{2,}" + "is": "equal", + "value": "url" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 206, + "status": 200, "headers": { - "content-range": "bytes 0-4/5", - "content-type": "application/octet-stream", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-etag\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-amz-request-id": "fixture-request-id", - "x-amz-version-id": "opaque+/version=" + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "aGVsbG8=" - } + "encoding": "utf8", + "data": "\nfixtureobject-tests/percent/31000falseobject-tests/percent/%zz.txt2024-01-01T00:00:00.000Z"fixture-706572000000"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/percent/100%-off.txt2024-01-01T00:00:00.000Z"fixture-706572000001"CRC64NVMEFULL_OBJECT2STANDARDobject-tests/percent/50%2024-01-01T00:00:00.000Z"fixture-706572000002"CRC64NVMEFULL_OBJECT3STANDARD" + }, + "framing": "chunked" } } ] @@ -88463,36 +126611,215 @@ } }, { - "at": "/value/version", + "at": "/value/entries/0/key", "optional": false, "rule": { "is": "equal", - "value": "opaque+/version=" + "value": "object-tests/percent/%zz.txt" } }, { - "at": "/value/body_base64", + "at": "/value/entries/0/size", "optional": false, "rule": { "is": "equal", - "value": "aGVsbG8=" + "value": 1 + } + }, + { + "at": "/value/entries/0/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-706572000000\"" + } + }, + { + "at": "/value/entries/0/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/1/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/percent/100%-off.txt" + } + }, + { + "at": "/value/entries/1/size", + "optional": false, + "rule": { + "is": "equal", + "value": 2 + } + }, + { + "at": "/value/entries/1/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-706572000001\"" + } + }, + { + "at": "/value/entries/1/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/1/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/1/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/2/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/percent/50%" + } + }, + { + "at": "/value/entries/2/size", + "optional": false, + "rule": { + "is": "equal", + "value": 3 + } + }, + { + "at": "/value/entries/2/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-706572000002\"" + } + }, + { + "at": "/value/entries/2/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/2/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/2/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries", + "optional": false, + "rule": { + "is": "array_length", + "value": 3 + } + }, + { + "at": "/value/prefixes", + "optional": false, + "rule": { + "is": "array_length", + "value": 0 + } + }, + { + "at": "/value/continuation_token", + "optional": false, + "rule": { + "is": "equal", + "value": "" } } ], "refusal": null }, { - "id": "operations/s3/get-temporary-redirect", + "id": "operations/s3/put-bucket-missing", "profile": "s3", "lane": "core", - "purpose": "Report a 307 TemporaryRedirect as an error", + "purpose": "put bucket missing. A client reports it as container_not_found: the bucket or container is absent, not the object", "sources": [ - "https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], - "origin": "transient", "call": { - "key": "object-tests/read/object.txt", - "op": "get" + "body_base64": "bm90aGluZyBpcyBzdG9yZWQ=", + "key": "object.txt", + "op": "put" }, "exchanges": [ { @@ -88504,7 +126831,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -88512,7 +126839,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "/fixture/object.txt" } }, { @@ -88520,7 +126847,7 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "bm90aGluZyBpcyBzdG9yZWQ=" } } ], @@ -88529,72 +126856,16 @@ ], "allow_query": [], "response": { - "status": 307, + "status": 404, "headers": { "content-type": "application/xml", "date": { "from": "now" - }, - "location": "https://fixture.s3.eu-central-1.amazonaws.com/object-tests/read/object.txt" - }, - "body": { - "encoding": "utf8", - "data": "\nTemporaryRedirectPlease re-send this request to the specified temporary endpoint. Continue to use the original request endpoint for future requests.fixture.s3.eu-central-1.amazonaws.comfixturefixture" - }, - "framing": "chunked" - } - }, - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/read/object.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/headers/range", - "optional": false, - "rule": { - "is": "matches", - "pattern": "bytes=0-[1-9][0-9]{2,}" } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 307, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - }, - "location": "https://fixture.s3.eu-central-1.amazonaws.com/object-tests/read/object.txt" }, "body": { "encoding": "utf8", - "data": "\nTemporaryRedirectPlease re-send this request to the specified temporary endpoint. Continue to use the original request endpoint for future requests.fixture.s3.eu-central-1.amazonaws.comfixturefixture" + "data": "\nNoSuchBucketFixture error" }, "framing": "chunked" } @@ -88616,7 +126887,7 @@ "optional": false, "rule": { "is": "equal", - "value": 307 + "value": 404 } }, { @@ -88624,23 +126895,32 @@ "optional": false, "rule": { "is": "equal", - "value": "TemporaryRedirect" + "value": "NoSuchBucket" + } + }, + { + "at": "/kind", + "optional": false, + "rule": { + "is": "equal", + "value": "container_not_found" } } ], "refusal": null }, { - "id": "operations/s3/get-wrong-region", + "id": "operations/s3/put-created-empty", "profile": "s3", "lane": "core", - "purpose": "Report a 301 PermanentRedirect from an endpoint in another region as an error", + "purpose": "put created empty", "sources": [ - "https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/read/object.txt", - "op": "get" + "body_base64": "", + "key": "object-tests/write/empty.bin", + "op": "put" }, "exchanges": [ { @@ -88652,7 +126932,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -88660,7 +126940,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "/fixture/object-tests/write/empty.bin" } }, { @@ -88677,74 +126957,18 @@ ], "allow_query": [], "response": { - "status": 301, + "status": 200, "headers": { - "content-type": "application/xml", "date": { "from": "now" }, - "x-amz-bucket-region": "eu-central-1" + "etag": "\"fixture-7d64e1430626\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nPermanentRedirectThe bucket you are attempting to access must be addressed using the specified endpoint. Please send all future requests to this endpoint.fixture.s3.eu-central-1.amazonaws.comfixturefixture" - }, - "framing": "chunked" - } - }, - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/read/object.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/headers/range", - "optional": false, - "rule": { - "is": "matches", - "pattern": "bytes=0-[1-9][0-9]{2,}" - } + "encoding": "base64", + "data": "" } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 301, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - }, - "x-amz-bucket-region": "eu-central-1" - }, - "body": { - "encoding": "utf8", - "data": "\nPermanentRedirectThe bucket you are attempting to access must be addressed using the specified endpoint. Please send all future requests to this endpoint.fixture.s3.eu-central-1.amazonaws.comfixturefixture" - }, - "framing": "chunked" } } ] @@ -88756,41 +126980,43 @@ "optional": false, "rule": { "is": "equal", - "value": "error" + "value": "ok" } }, { - "at": "/status", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": 301 + "value": "\"fixture-7d64e1430626\"" } }, { - "at": "/code", - "optional": false, + "at": "/value/version", + "optional": true, "rule": { - "is": "equal", - "value": "PermanentRedirect" + "is": "one_of", + "values": [ + null, + "" + ] } } ], "refusal": null }, { - "id": "operations/s3/get-body-cut-short", + "id": "operations/s3/put-created", "profile": "s3", "lane": "core", - "purpose": "Report a body that ends before its Content-Length as an error, or resume it, but never return the short body", + "purpose": "put created", "sources": [ - "https://www.rfc-editor.org/rfc/rfc9112#section-8", - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_client.cpp" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], - "origin": "transient", "call": { - "key": "object-tests/read/object.txt", - "op": "get" + "body_base64": "MDEyMzQ1Njc4OQ==", + "key": "object-tests/write/object.txt", + "op": "put" }, "exchanges": [ { @@ -88802,7 +127028,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -88810,7 +127036,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "/fixture/object-tests/write/object.txt" } }, { @@ -88818,7 +127044,7 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "MDEyMzQ1Njc4OQ==" } } ], @@ -88829,20 +127055,68 @@ "response": { "status": 200, "headers": { - "content-type": "binary/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-ad03f2ab332a\"", + "etag": "\"fixture-fbe0ab688a03\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "base64", - "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" - }, - "truncate_body_after": 15 + "data": "" + } } - }, + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-fbe0ab688a03\"" + } + }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + } + ], + "refusal": null + }, + { + "id": "operations/s3/put-created-key-question", + "profile": "s3", + "lane": "core", + "purpose": "put created, with the key \"question?mark.txt\"", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "body_base64": "MDEyMzQ1Njc4OQ==", + "key": "object-tests/keys/question?mark.txt", + "op": "put" + }, + "exchanges": [ + { + "alternatives": [ { "request": [ { @@ -88850,7 +127124,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -88858,7 +127132,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "/fixture/object-tests/keys/question?mark.txt" } }, { @@ -88866,15 +127140,7 @@ "optional": false, "rule": { "is": "equal", - "value": "" - } - }, - { - "at": "/headers/range", - "optional": false, - "rule": { - "is": "matches", - "pattern": "bytes=0-[1-9][0-9]{2,}" + "value": "MDEyMzQ1Njc4OQ==" } } ], @@ -88883,25 +127149,68 @@ ], "allow_query": [], "response": { - "status": 206, + "status": 200, "headers": { - "content-range": "bytes 0-29/30", - "content-type": "binary/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-ad03f2ab332a\"", + "etag": "\"fixture-fbe0ab688a03\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "base64", - "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" - }, - "truncate_body_after": 15 + "data": "" + } } } ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-fbe0ab688a03\"" + } }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + } + ], + "refusal": null + }, + { + "id": "operations/s3/put-created-key-hash", + "profile": "s3", + "lane": "core", + "purpose": "put created, with the key \"hash#tag.txt\"", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "body_base64": "MDEyMzQ1Njc4OQ==", + "key": "object-tests/keys/hash#tag.txt", + "op": "put" + }, + "exchanges": [ { "alternatives": [ { @@ -88911,7 +127220,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -88919,7 +127228,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "/fixture/object-tests/keys/hash#tag.txt" } }, { @@ -88927,31 +127236,79 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "MDEyMzQ1Njc4OQ==" } } ], "allow_headers": [ - "content-type", "content-type" ], "allow_query": [], "response": { "status": 200, "headers": { - "content-type": "binary/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-ad03f2ab332a\"", + "etag": "\"fixture-fbe0ab688a03\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "base64", - "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + "data": "" } } - }, + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-fbe0ab688a03\"" + } + }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + } + ], + "refusal": null + }, + { + "id": "operations/s3/put-created-key-percent", + "profile": "s3", + "lane": "core", + "purpose": "put created, with the key \"percent%20.txt\"", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "body_base64": "MDEyMzQ1Njc4OQ==", + "key": "object-tests/keys/percent%20.txt", + "op": "put" + }, + "exchanges": [ + { + "alternatives": [ { "request": [ { @@ -88959,7 +127316,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -88967,7 +127324,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "/fixture/object-tests/keys/percent%20.txt" } }, { @@ -88975,40 +127332,79 @@ "optional": false, "rule": { "is": "equal", - "value": "" - } - }, - { - "at": "/headers/range", - "optional": false, - "rule": { - "is": "matches", - "pattern": "bytes=0-[1-9][0-9]{2,}" + "value": "MDEyMzQ1Njc4OQ==" } } ], "allow_headers": [ - "content-type", "content-type" ], "allow_query": [], "response": { - "status": 206, + "status": 200, "headers": { - "content-range": "bytes 0-29/30", - "content-type": "binary/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-ad03f2ab332a\"", + "etag": "\"fixture-fbe0ab688a03\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "base64", - "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + "data": "" } } - }, + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-fbe0ab688a03\"" + } + }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + } + ], + "refusal": null + }, + { + "id": "operations/s3/put-created-key-plus", + "profile": "s3", + "lane": "core", + "purpose": "put created, with the key \"plus+plus.txt\"", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "body_base64": "MDEyMzQ1Njc4OQ==", + "key": "object-tests/keys/plus+plus.txt", + "op": "put" + }, + "exchanges": [ + { + "alternatives": [ { "request": [ { @@ -89016,7 +127412,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -89024,7 +127420,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "/fixture/object-tests/keys/plus+plus.txt" } }, { @@ -89032,47 +127428,30 @@ "optional": false, "rule": { "is": "equal", - "value": "" - } - }, - { - "at": "/headers/range", - "optional": false, - "rule": { - "is": "equal", - "value": "bytes=15-" - } - }, - { - "at": "/headers/if-match", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-ad03f2ab332a\"" + "value": "MDEyMzQ1Njc4OQ==" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 206, + "status": 200, "headers": { - "content-range": "bytes 15-29/30", - "content-type": "binary/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-ad03f2ab332a\"", + "etag": "\"fixture-fbe0ab688a03\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "base64", - "data": "Y3QtdGVzdHMtb2JqZWN0" + "data": "" } } } - ], - "optional": true + ] } ], "expect": [ @@ -89080,36 +127459,44 @@ "at": "/outcome", "optional": false, "rule": { - "is": "one_of", - "values": [ - "error", - "ok" - ] + "is": "equal", + "value": "ok" } }, { - "at": "/value/body_base64", - "optional": true, + "at": "/value/etag", + "optional": false, "rule": { "is": "equal", - "value": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + "value": "\"fixture-fbe0ab688a03\"" + } + }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] } } ], "refusal": null }, { - "id": "operations/s3/get-slow-down", + "id": "operations/s3/put-created-key-space", "profile": "s3", "lane": "core", - "purpose": "Report a 503 SlowDown answer as an error, after at most 5 retries", + "purpose": "put created, with the key \"space name.txt\"", "sources": [ - "https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], - "origin": "transient", "call": { - "key": "object-tests/read/object.txt", - "op": "get" + "body_base64": "MDEyMzQ1Njc4OQ==", + "key": "object-tests/keys/space name.txt", + "op": "put" }, "exchanges": [ { @@ -89121,7 +127508,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -89129,7 +127516,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "/fixture/object-tests/keys/space name.txt" } }, { @@ -89137,7 +127524,7 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "MDEyMzQ1Njc4OQ==" } } ], @@ -89146,20 +127533,70 @@ ], "allow_query": [], "response": { - "status": 503, + "status": 200, "headers": { - "content-type": "application/xml", "date": { "from": "now" - } + }, + "etag": "\"fixture-fbe0ab688a03\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nSlowDownPlease reduce your request rate.fixture" - }, - "framing": "chunked" + "encoding": "base64", + "data": "" + } } - }, + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-fbe0ab688a03\"" + } + }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + } + ], + "refusal": null + }, + { + "id": "operations/s3/put-created-key-non-ascii", + "profile": "s3", + "lane": "core", + "purpose": "put created, with the key \"café/雪.txt\"", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "body_base64": "MDEyMzQ1Njc4OQ==", + "key": "object-tests/keys/café/雪.txt", + "op": "put" + }, + "exchanges": [ + { + "alternatives": [ { "request": [ { @@ -89167,7 +127604,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -89175,7 +127612,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "/fixture/object-tests/keys/café/雪.txt" } }, { @@ -89183,15 +127620,7 @@ "optional": false, "rule": { "is": "equal", - "value": "" - } - }, - { - "at": "/headers/range", - "optional": false, - "rule": { - "is": "matches", - "pattern": "bytes=0-[1-9][0-9]{2,}" + "value": "MDEyMzQ1Njc4OQ==" } } ], @@ -89200,22 +127629,68 @@ ], "allow_query": [], "response": { - "status": 503, + "status": 200, "headers": { - "content-type": "application/xml", "date": { "from": "now" - } + }, + "etag": "\"fixture-fbe0ab688a03\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nSlowDownPlease reduce your request rate.fixture" - }, - "framing": "chunked" + "encoding": "base64", + "data": "" + } } } ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-fbe0ab688a03\"" + } }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + } + ], + "refusal": null + }, + { + "id": "operations/s3/put-created-key-double-slash", + "profile": "s3", + "lane": "core", + "purpose": "put created, with the key \"double//slash.txt\"", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "body_base64": "MDEyMzQ1Njc4OQ==", + "key": "object-tests/keys/double//slash.txt", + "op": "put" + }, + "exchanges": [ { "alternatives": [ { @@ -89225,7 +127700,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -89233,7 +127708,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "/fixture/object-tests/keys/double//slash.txt" } }, { @@ -89241,7 +127716,7 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "MDEyMzQ1Njc4OQ==" } } ], @@ -89250,20 +127725,70 @@ ], "allow_query": [], "response": { - "status": 503, + "status": 200, "headers": { - "content-type": "application/xml", "date": { "from": "now" - } + }, + "etag": "\"fixture-fbe0ab688a03\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nSlowDownPlease reduce your request rate.fixture" - }, - "framing": "chunked" + "encoding": "base64", + "data": "" + } } - }, + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-fbe0ab688a03\"" + } + }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + } + ], + "refusal": null + }, + { + "id": "operations/s3/put-created-key-trailing-slash", + "profile": "s3", + "lane": "core", + "purpose": "put created, with the key \"trailing-slash/\"", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "body_base64": "MDEyMzQ1Njc4OQ==", + "key": "object-tests/keys/trailing-slash/", + "op": "put" + }, + "exchanges": [ + { + "alternatives": [ { "request": [ { @@ -89271,7 +127796,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -89279,7 +127804,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "/fixture/object-tests/keys/trailing-slash/" } }, { @@ -89287,15 +127812,7 @@ "optional": false, "rule": { "is": "equal", - "value": "" - } - }, - { - "at": "/headers/range", - "optional": false, - "rule": { - "is": "matches", - "pattern": "bytes=0-[1-9][0-9]{2,}" + "value": "MDEyMzQ1Njc4OQ==" } } ], @@ -89304,23 +127821,68 @@ ], "allow_query": [], "response": { - "status": 503, + "status": 200, "headers": { - "content-type": "application/xml", "date": { "from": "now" - } + }, + "etag": "\"fixture-fbe0ab688a03\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nSlowDownPlease reduce your request rate.fixture" - }, - "framing": "chunked" + "encoding": "base64", + "data": "" + } } } - ], - "optional": true + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-fbe0ab688a03\"" + } }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + } + ], + "refusal": null + }, + { + "id": "operations/s3/copy-missing-source", + "profile": "s3", + "lane": "core", + "purpose": "Refuse a copy whose source does not exist", + "sources": [ + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html" + ], + "call": { + "key": "object-tests/copy/target.txt", + "op": "copy", + "source_key": "object-tests/copy/absent.txt" + }, + "exchanges": [ { "alternatives": [ { @@ -89330,7 +127892,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -89338,7 +127900,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "/fixture/object-tests/copy/target.txt" } }, { @@ -89348,6 +127910,14 @@ "is": "equal", "value": "" } + }, + { + "at": "/headers/x-amz-copy-source", + "optional": false, + "rule": { + "is": "matches", + "pattern": "/?fixture[^/]*/object-tests/copy/absent\\.txt" + } } ], "allow_headers": [ @@ -89355,7 +127925,7 @@ ], "allow_query": [], "response": { - "status": 503, + "status": 404, "headers": { "content-type": "application/xml", "date": { @@ -89364,7 +127934,7 @@ }, "body": { "encoding": "utf8", - "data": "\nSlowDownPlease reduce your request rate.fixture" + "data": "\nNoSuchKeyFixture error" }, "framing": "chunked" } @@ -89376,7 +127946,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "HEAD" } }, { @@ -89384,7 +127954,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "/object-tests/copy/absent.txt" } }, { @@ -89394,14 +127964,6 @@ "is": "equal", "value": "" } - }, - { - "at": "/headers/range", - "optional": false, - "rule": { - "is": "matches", - "pattern": "bytes=0-[1-9][0-9]{2,}" - } } ], "allow_headers": [ @@ -89409,23 +127971,65 @@ ], "allow_query": [], "response": { - "status": 503, + "status": 404, "headers": { - "content-type": "application/xml", "date": { "from": "now" } }, "body": { - "encoding": "utf8", - "data": "\nSlowDownPlease reduce your request rate.fixture" - }, - "framing": "chunked" + "encoding": "empty" + } } } - ], - "optional": true + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 404 + } }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "one_of", + "values": [ + "NoSuchKey", + "" + ] + } + } + ], + "refusal": null + }, + { + "id": "operations/s3/copy", + "profile": "s3", + "lane": "core", + "purpose": "Copy an object to another key in the same bucket", + "sources": [ + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html" + ], + "call": { + "key": "object-tests/copy/target.txt", + "op": "copy", + "source_key": "object-tests/copy/source.txt" + }, + "exchanges": [ { "alternatives": [ { @@ -89435,7 +128039,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -89443,7 +128047,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "/fixture/object-tests/copy/target.txt" } }, { @@ -89453,6 +128057,14 @@ "is": "equal", "value": "" } + }, + { + "at": "/headers/x-amz-copy-source", + "optional": false, + "rule": { + "is": "matches", + "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" + } } ], "allow_headers": [ @@ -89460,7 +128072,7 @@ ], "allow_query": [], "response": { - "status": 503, + "status": 200, "headers": { "content-type": "application/xml", "date": { @@ -89469,9 +128081,8 @@ }, "body": { "encoding": "utf8", - "data": "\nSlowDownPlease reduce your request rate.fixture" - }, - "framing": "chunked" + "data": "\n2024-01-01T00:00:00.000Z"fixture-etag"" + } } }, { @@ -89481,7 +128092,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "HEAD" } }, { @@ -89489,7 +128100,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "/object-tests/copy/source.txt" } }, { @@ -89499,14 +128110,65 @@ "is": "equal", "value": "" } - }, + } + ], + "then": [ { - "at": "/headers/range", - "optional": false, - "rule": { - "is": "matches", - "pattern": "bytes=0-[1-9][0-9]{2,}" - } + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/copy/target.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/x-amz-copy-source", + "optional": false, + "rule": { + "is": "matches", + "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + } + }, + "body": { + "encoding": "utf8", + "data": "\n2024-01-01T00:00:00.000Z"fixture-etag"" + } + } + } + ] } ], "allow_headers": [ @@ -89514,23 +128176,58 @@ ], "allow_query": [], "response": { - "status": 503, + "status": 200, "headers": { - "content-type": "application/xml", + "content-length": "5", "date": { "from": "now" - } + }, + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nSlowDownPlease reduce your request rate.fixture" - }, - "framing": "chunked" + "encoding": "empty" + } } } - ], - "optional": true + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-etag\"" + } + } + ], + "refusal": null + }, + { + "id": "operations/s3/copy-source-version", + "profile": "s3", + "lane": "core", + "purpose": "Copy an earlier version of an object, named by versionId in x-amz-copy-source", + "sources": [ + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html" + ], + "call": { + "key": "object-tests/copy/target.txt", + "op": "copy", + "source_key": "object-tests/copy/source.txt", + "source_version": "fixture-version-1" + }, + "exchanges": [ { "alternatives": [ { @@ -89540,7 +128237,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -89548,7 +128245,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "/fixture/object-tests/copy/target.txt" } }, { @@ -89558,6 +128255,14 @@ "is": "equal", "value": "" } + }, + { + "at": "/headers/x-amz-copy-source", + "optional": false, + "rule": { + "is": "matches", + "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt\\?versionId=fixture-version-1" + } } ], "allow_headers": [ @@ -89565,7 +128270,7 @@ ], "allow_query": [], "response": { - "status": 503, + "status": 200, "headers": { "content-type": "application/xml", "date": { @@ -89574,9 +128279,8 @@ }, "body": { "encoding": "utf8", - "data": "\nSlowDownPlease reduce your request rate.fixture" - }, - "framing": "chunked" + "data": "\n2024-01-01T00:00:00.000Z"fixture-etag"" + } } }, { @@ -89586,7 +128290,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "HEAD" } }, { @@ -89594,7 +128298,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "/object-tests/copy/source.txt" } }, { @@ -89606,63 +128310,71 @@ } }, { - "at": "/headers/range", + "at": "/query/versionId", "optional": false, "rule": { - "is": "matches", - "pattern": "bytes=0-[1-9][0-9]{2,}" + "is": "equal", + "value": "fixture-version-1" } } ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 503, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - } - }, - "body": { - "encoding": "utf8", - "data": "\nSlowDownPlease reduce your request rate.fixture" - }, - "framing": "chunked" - } - } - ], - "optional": true - }, - { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/read/object.txt" - } - }, + "then": [ { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/copy/target.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/x-amz-copy-source", + "optional": false, + "rule": { + "is": "matches", + "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt\\?versionId=fixture-version-1" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + } + }, + "body": { + "encoding": "utf8", + "data": "\n2024-01-01T00:00:00.000Z"fixture-etag"" + } + } + } + ] } ], "allow_headers": [ @@ -89670,20 +128382,55 @@ ], "allow_query": [], "response": { - "status": 503, + "status": 200, "headers": { - "content-type": "application/xml", + "content-length": "5", "date": { "from": "now" - } + }, + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nSlowDownPlease reduce your request rate.fixture" - }, - "framing": "chunked" + "encoding": "empty" + } } - }, + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + } + ], + "refusal": null + }, + { + "id": "operations/s3/copy-200-internal-error", + "profile": "s3", + "lane": "core", + "purpose": "Report a copy answered 200 with an InternalError in the body as an error, never as a success. A client may retry up to 5 times first, and need not retry", + "sources": [ + "https://repost.aws/knowledge-center/s3-resolve-200-internalerror", + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html", + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html" + ], + "origin": "transient", + "derived_from": "operations/s3/copy", + "call": { + "key": "object-tests/copy/target.txt", + "op": "copy", + "source_key": "object-tests/copy/source.txt" + }, + "exchanges": [ + { + "alternatives": [ { "request": [ { @@ -89691,7 +128438,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -89699,7 +128446,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "/fixture/object-tests/copy/target.txt" } }, { @@ -89711,11 +128458,11 @@ } }, { - "at": "/headers/range", + "at": "/headers/x-amz-copy-source", "optional": false, "rule": { "is": "matches", - "pattern": "bytes=0-[1-9][0-9]{2,}" + "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" } } ], @@ -89724,7 +128471,7 @@ ], "allow_query": [], "response": { - "status": 503, + "status": 200, "headers": { "content-type": "application/xml", "date": { @@ -89733,59 +128480,11 @@ }, "body": { "encoding": "utf8", - "data": "\nSlowDownPlease reduce your request rate.fixture" + "data": "\nInternalErrorWe encountered an internal error. Please try again.fixturefixture" }, "framing": "chunked" } - } - ], - "optional": true - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 503 - } - }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "equal", - "value": "SlowDown" - } - } - ], - "refusal": null - }, - { - "id": "operations/s3/get-if-unmodified-since-past", - "profile": "s3", - "lane": "core", - "purpose": "Refuse a read with 412 when the object changed after If-Unmodified-Since", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "if_unmodified_since": "Sat, 01 Jan 2000 00:00:00 GMT", - "key": "object-tests/read/object.txt", - "op": "get" - }, - "exchanges": [ - { - "alternatives": [ + }, { "request": [ { @@ -89793,7 +128492,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "HEAD" } }, { @@ -89801,7 +128500,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "/object-tests/copy/source.txt" } }, { @@ -89811,14 +128510,66 @@ "is": "equal", "value": "" } - }, + } + ], + "then": [ { - "at": "/headers/if-unmodified-since", - "optional": false, - "rule": { - "is": "equal", - "value": "Sat, 01 Jan 2000 00:00:00 GMT" - } + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/copy/target.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/x-amz-copy-source", + "optional": false, + "rule": { + "is": "matches", + "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + } + }, + "body": { + "encoding": "utf8", + "data": "\nInternalErrorWe encountered an internal error. Please try again.fixturefixture" + }, + "framing": "chunked" + } + } + ] } ], "allow_headers": [ @@ -89826,20 +128577,24 @@ ], "allow_query": [], "response": { - "status": 412, + "status": 200, "headers": { - "content-type": "application/xml", + "content-length": "5", "date": { "from": "now" - } + }, + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nPreconditionFailedFixture error" - }, - "framing": "chunked" + "encoding": "empty" + } } - }, + } + ] + }, + { + "alternatives": [ { "request": [ { @@ -89847,7 +128602,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -89855,7 +128610,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "/fixture/object-tests/copy/target.txt" } }, { @@ -89867,19 +128622,11 @@ } }, { - "at": "/headers/range", + "at": "/headers/x-amz-copy-source", "optional": false, "rule": { "is": "matches", - "pattern": "bytes=0-[1-9][0-9]{2,}" - } - }, - { - "at": "/headers/if-unmodified-since", - "optional": false, - "rule": { - "is": "equal", - "value": "Sat, 01 Jan 2000 00:00:00 GMT" + "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" } } ], @@ -89888,7 +128635,7 @@ ], "allow_query": [], "response": { - "status": 412, + "status": 200, "headers": { "content-type": "application/xml", "date": { @@ -89897,56 +128644,14 @@ }, "body": { "encoding": "utf8", - "data": "\nPreconditionFailedFixture error" + "data": "\nInternalErrorWe encountered an internal error. Please try again.fixturefixture" }, "framing": "chunked" } } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 412 - } + ], + "optional": true }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "equal", - "value": "PreconditionFailed" - } - } - ], - "refusal": null - }, - { - "id": "operations/s3/get-if-modified-since-future", - "profile": "s3", - "lane": "core", - "purpose": "Read an object when If-Modified-Since names a future date", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "if_modified_since": "Fri, 01 Jan 2100 00:00:00 GMT", - "key": "object-tests/read/object.txt", - "op": "get" - }, - "exchanges": [ { "alternatives": [ { @@ -89956,7 +128661,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -89964,7 +128669,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "/fixture/object-tests/copy/target.txt" } }, { @@ -89976,11 +128681,11 @@ } }, { - "at": "/headers/if-modified-since", + "at": "/headers/x-amz-copy-source", "optional": false, "rule": { - "is": "equal", - "value": "Fri, 01 Jan 2100 00:00:00 GMT" + "is": "matches", + "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" } } ], @@ -89991,19 +128696,23 @@ "response": { "status": 200, "headers": { - "content-type": "binary/octet-stream", + "content-type": "application/xml", "date": { "from": "now" - }, - "etag": "\"fixture-ad03f2ab332a\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { - "encoding": "base64", - "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" - } + "encoding": "utf8", + "data": "\nInternalErrorWe encountered an internal error. Please try again.fixturefixture" + }, + "framing": "chunked" } - }, + } + ], + "optional": true + }, + { + "alternatives": [ { "request": [ { @@ -90011,7 +128720,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -90019,7 +128728,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "/fixture/object-tests/copy/target.txt" } }, { @@ -90031,19 +128740,11 @@ } }, { - "at": "/headers/range", + "at": "/headers/x-amz-copy-source", "optional": false, "rule": { "is": "matches", - "pattern": "bytes=0-[1-9][0-9]{2,}" - } - }, - { - "at": "/headers/if-modified-since", - "optional": false, - "rule": { - "is": "equal", - "value": "Fri, 01 Jan 2100 00:00:00 GMT" + "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" } } ], @@ -90052,94 +128753,23 @@ ], "allow_query": [], "response": { - "status": 206, + "status": 200, "headers": { - "content-range": "bytes 0-29/30", - "content-type": "binary/octet-stream", + "content-type": "application/xml", "date": { "from": "now" - }, - "etag": "\"fixture-ad03f2ab332a\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { - "encoding": "base64", - "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" - } + "encoding": "utf8", + "data": "\nInternalErrorWe encountered an internal error. Please try again.fixturefixture" + }, + "framing": "chunked" } } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-ad03f2ab332a\"" - } - }, - { - "at": "/value/size", - "optional": false, - "rule": { - "is": "equal", - "value": 30 - } - }, - { - "at": "/value/content_type", - "optional": false, - "rule": { - "is": "equal", - "value": "binary/octet-stream" - } - }, - { - "at": "/value/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } + ], + "optional": true }, - { - "at": "/value/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" - } - } - ], - "refusal": null - }, - { - "id": "operations/s3/get-if-modified-since-past", - "profile": "s3", - "lane": "core", - "purpose": "Read an object modified since a past date", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "if_modified_since": "Sat, 01 Jan 2000 00:00:00 GMT", - "key": "object-tests/read/object.txt", - "op": "get" - }, - "exchanges": [ { "alternatives": [ { @@ -90149,7 +128779,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -90157,7 +128787,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "/fixture/object-tests/copy/target.txt" } }, { @@ -90169,11 +128799,11 @@ } }, { - "at": "/headers/if-modified-since", + "at": "/headers/x-amz-copy-source", "optional": false, "rule": { - "is": "equal", - "value": "Sat, 01 Jan 2000 00:00:00 GMT" + "is": "matches", + "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" } } ], @@ -90184,19 +128814,23 @@ "response": { "status": 200, "headers": { - "content-type": "binary/octet-stream", + "content-type": "application/xml", "date": { "from": "now" - }, - "etag": "\"fixture-ad03f2ab332a\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { - "encoding": "base64", - "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" - } + "encoding": "utf8", + "data": "\nInternalErrorWe encountered an internal error. Please try again.fixturefixture" + }, + "framing": "chunked" } - }, + } + ], + "optional": true + }, + { + "alternatives": [ { "request": [ { @@ -90204,7 +128838,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -90212,7 +128846,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "/fixture/object-tests/copy/target.txt" } }, { @@ -90224,19 +128858,11 @@ } }, { - "at": "/headers/range", + "at": "/headers/x-amz-copy-source", "optional": false, "rule": { "is": "matches", - "pattern": "bytes=0-[1-9][0-9]{2,}" - } - }, - { - "at": "/headers/if-modified-since", - "optional": false, - "rule": { - "is": "equal", - "value": "Sat, 01 Jan 2000 00:00:00 GMT" + "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" } } ], @@ -90245,23 +128871,22 @@ ], "allow_query": [], "response": { - "status": 206, + "status": 200, "headers": { - "content-range": "bytes 0-29/30", - "content-type": "binary/octet-stream", + "content-type": "application/xml", "date": { "from": "now" - }, - "etag": "\"fixture-ad03f2ab332a\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { - "encoding": "base64", - "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" - } + "encoding": "utf8", + "data": "\nInternalErrorWe encountered an internal error. Please try again.fixturefixture" + }, + "framing": "chunked" } } - ] + ], + "optional": true } ], "expect": [ @@ -90270,66 +128895,36 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-ad03f2ab332a\"" - } - }, - { - "at": "/value/size", - "optional": false, - "rule": { - "is": "equal", - "value": 30 - } - }, - { - "at": "/value/content_type", - "optional": false, - "rule": { - "is": "equal", - "value": "binary/octet-stream" - } - }, - { - "at": "/value/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "value": "error" } }, { - "at": "/value/body_base64", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + "value": "InternalError" } } ], "refusal": null }, { - "id": "operations/s3/get-content-encoding-gzip", + "id": "operations/s3/copy-replace-metadata", "profile": "s3", "lane": "core", - "purpose": "Return the stored gzip bytes and Content-Encoding: gzip without decoding them", + "purpose": "Copy an object with new metadata and a new content type. S3 keeps the source's unless x-amz-metadata-directive is REPLACE, so a client that sets either must send it", "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html" ], "call": { - "key": "object-tests/read/object.txt", - "op": "get" + "content_type": "text/plain", + "key": "object-tests/copy/target.txt", + "metadata": { + "colour": "blue" + }, + "op": "copy", + "source_key": "object-tests/copy/source.txt" }, "exchanges": [ { @@ -90341,7 +128936,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -90349,7 +128944,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "/fixture/object-tests/copy/target.txt" } }, { @@ -90359,6 +128954,38 @@ "is": "equal", "value": "" } + }, + { + "at": "/headers/x-amz-copy-source", + "optional": false, + "rule": { + "is": "matches", + "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" + } + }, + { + "at": "/headers/x-amz-metadata-directive", + "optional": false, + "rule": { + "is": "equal", + "value": "REPLACE" + } + }, + { + "at": "/headers/x-amz-meta-colour", + "optional": false, + "rule": { + "is": "equal", + "value": "blue" + } + }, + { + "at": "/headers/content-type", + "optional": false, + "rule": { + "is": "equal", + "value": "text/plain" + } } ], "allow_headers": [ @@ -90368,17 +128995,14 @@ "response": { "status": 200, "headers": { - "content-encoding": "gzip", - "content-type": "binary/octet-stream", + "content-type": "application/xml", "date": { "from": "now" - }, - "etag": "\"fixture-ad03f2ab332a\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { - "encoding": "base64", - "data": "H4sIAAAAAAACA0vOzy0oSi0uTk1RyM9TKCgtKsgvTuUCAAHVPIcWAAAA" + "encoding": "utf8", + "data": "\n2024-01-01T00:00:00.000Z"fixture-etag"" } } }, @@ -90389,7 +129013,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "HEAD" } }, { @@ -90397,7 +129021,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "/object-tests/copy/source.txt" } }, { @@ -90407,14 +129031,89 @@ "is": "equal", "value": "" } - }, + } + ], + "then": [ { - "at": "/headers/range", - "optional": false, - "rule": { - "is": "matches", - "pattern": "bytes=0-[1-9][0-9]{2,}" - } + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/copy/target.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/x-amz-copy-source", + "optional": false, + "rule": { + "is": "matches", + "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" + } + }, + { + "at": "/headers/x-amz-metadata-directive", + "optional": false, + "rule": { + "is": "equal", + "value": "REPLACE" + } + }, + { + "at": "/headers/x-amz-meta-colour", + "optional": false, + "rule": { + "is": "equal", + "value": "blue" + } + }, + { + "at": "/headers/content-type", + "optional": false, + "rule": { + "is": "equal", + "value": "text/plain" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + } + }, + "body": { + "encoding": "utf8", + "data": "\n2024-01-01T00:00:00.000Z"fixture-etag"" + } + } + } + ] } ], "allow_headers": [ @@ -90422,20 +129121,17 @@ ], "allow_query": [], "response": { - "status": 206, + "status": 200, "headers": { - "content-encoding": "gzip", - "content-range": "bytes 0-41/42", - "content-type": "binary/octet-stream", + "content-length": "5", "date": { "from": "now" }, - "etag": "\"fixture-ad03f2ab332a\"", + "etag": "\"fixture-etag\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "H4sIAAAAAAACA0vOzy0oSi0uTk1RyM9TKCgtKsgvTuUCAAHVPIcWAAAA" + "encoding": "empty" } } } @@ -90450,72 +129146,25 @@ "is": "equal", "value": "ok" } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-ad03f2ab332a\"" - } - }, - { - "at": "/value/size", - "optional": false, - "rule": { - "is": "equal", - "value": 42 - } - }, - { - "at": "/value/content_type", - "optional": false, - "rule": { - "is": "equal", - "value": "binary/octet-stream" - } - }, - { - "at": "/value/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "H4sIAAAAAAACA0vOzy0oSi0uTk1RyM9TKCgtKsgvTuUCAAHVPIcWAAAA" - } - }, - { - "at": "/value/content_encoding", - "optional": false, - "rule": { - "is": "equal", - "value": "gzip" - } } ], "refusal": null }, { - "id": "operations/s3/get-content-properties", + "id": "operations/s3/copy-replace-tags", "profile": "s3", "lane": "core", - "purpose": "Return the stored content properties from a GET", + "purpose": "Copy an object with new tags. S3 copies the source's tags unless x-amz-tagging-directive is REPLACE, so a client that sets tags must send it", "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html" ], "call": { - "key": "object-tests/read/object.txt", - "op": "get" + "key": "object-tests/copy/target.txt", + "op": "copy", + "source_key": "object-tests/copy/source.txt", + "tags": { + "project": "copied" + } }, "exchanges": [ { @@ -90527,7 +129176,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -90535,7 +129184,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "/fixture/object-tests/copy/target.txt" } }, { @@ -90545,63 +129194,29 @@ "is": "equal", "value": "" } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "cache-control": "max-age=3600", - "content-disposition": "attachment; filename=\"report.txt\"", - "content-language": "nl-NL", - "content-type": "text/plain; charset=utf-8", - "date": { - "from": "now" - }, - "etag": "\"fixture-ad03f2ab332a\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, - "body": { - "encoding": "base64", - "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" - } - } - }, - { - "request": [ { - "at": "/method", + "at": "/headers/x-amz-copy-source", "optional": false, "rule": { - "is": "equal", - "value": "GET" + "is": "matches", + "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" } }, { - "at": "/path", + "at": "/headers/x-amz-tagging-directive", "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "REPLACE" } }, { - "at": "/body_base64", + "at": "/headers/x-amz-tagging", "optional": false, "rule": { "is": "equal", - "value": "" - } - }, - { - "at": "/headers/range", - "optional": false, - "rule": { - "is": "matches", - "pattern": "bytes=0-[1-9][0-9]{2,}" + "value": "project=copied" } } ], @@ -90610,122 +129225,19 @@ ], "allow_query": [], "response": { - "status": 206, + "status": 200, "headers": { - "cache-control": "max-age=3600", - "content-disposition": "attachment; filename=\"report.txt\"", - "content-language": "nl-NL", - "content-range": "bytes 0-29/30", - "content-type": "text/plain; charset=utf-8", + "content-type": "application/xml", "date": { "from": "now" - }, - "etag": "\"fixture-ad03f2ab332a\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { - "encoding": "base64", - "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + "encoding": "utf8", + "data": "\n2024-01-01T00:00:00.000Z"fixture-etag"" } } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-ad03f2ab332a\"" - } - }, - { - "at": "/value/size", - "optional": false, - "rule": { - "is": "equal", - "value": 30 - } - }, - { - "at": "/value/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" - } - }, - { - "at": "/value/content_type", - "optional": false, - "rule": { - "is": "equal", - "value": "text/plain; charset=utf-8" - } - }, - { - "at": "/value/content_language", - "optional": false, - "rule": { - "is": "equal", - "value": "nl-NL" - } - }, - { - "at": "/value/content_disposition", - "optional": false, - "rule": { - "is": "equal", - "value": "attachment; filename=\"report.txt\"" - } - }, - { - "at": "/value/cache_control", - "optional": false, - "rule": { - "is": "equal", - "value": "max-age=3600" - } - } - ], - "refusal": null - }, - { - "id": "operations/s3/head-committed", - "profile": "s3", - "lane": "core", - "purpose": "head committed", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "key": "object-tests/multipart/object.bin", - "op": "head" - }, - "exchanges": [ - { - "alternatives": [ + }, { "request": [ { @@ -90741,7 +129253,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/object.bin" + "value": "/object-tests/copy/source.txt" } }, { @@ -90753,6 +129265,81 @@ } } ], + "then": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/copy/target.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/x-amz-copy-source", + "optional": false, + "rule": { + "is": "matches", + "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" + } + }, + { + "at": "/headers/x-amz-tagging-directive", + "optional": false, + "rule": { + "is": "equal", + "value": "REPLACE" + } + }, + { + "at": "/headers/x-amz-tagging", + "optional": false, + "rule": { + "is": "equal", + "value": "project=copied" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + } + }, + "body": { + "encoding": "utf8", + "data": "\n2024-01-01T00:00:00.000Z"fixture-etag"" + } + } + } + ] + } + ], "allow_headers": [ "content-type" ], @@ -90760,17 +129347,15 @@ "response": { "status": 200, "headers": { - "content-length": "5242886", - "content-type": "binary/octet-stream", + "content-length": "5", "date": { "from": "now" }, - "etag": "\"fixture-ae1b6d1d32ce\"", + "etag": "\"fixture-etag\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "" + "encoding": "empty" } } } @@ -90785,56 +129370,23 @@ "is": "equal", "value": "ok" } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-ae1b6d1d32ce\"" - } - }, - { - "at": "/value/size", - "optional": false, - "rule": { - "is": "equal", - "value": 5242886 - } - }, - { - "at": "/value/content_type", - "optional": false, - "rule": { - "is": "equal", - "value": "binary/octet-stream" - } - }, - { - "at": "/value/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } } ], "refusal": null }, { - "id": "operations/s3/head-metadata", + "id": "operations/s3/copy-storage-class", "profile": "s3", "lane": "core", - "purpose": "head metadata", + "purpose": "Copy an object into another storage class, named in x-amz-storage-class", "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html" ], "call": { - "key": "object-tests/metadata/object.txt", - "op": "head" + "key": "object-tests/copy/target.txt", + "op": "copy", + "source_key": "object-tests/copy/source.txt", + "storage_class": "STANDARD_IA" }, "exchanges": [ { @@ -90846,7 +129398,7 @@ "optional": false, "rule": { "is": "equal", - "value": "HEAD" + "value": "PUT" } }, { @@ -90854,7 +129406,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/metadata/object.txt" + "value": "/fixture/object-tests/copy/target.txt" } }, { @@ -90864,6 +129416,22 @@ "is": "equal", "value": "" } + }, + { + "at": "/headers/x-amz-copy-source", + "optional": false, + "rule": { + "is": "matches", + "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" + } + }, + { + "at": "/headers/x-amz-storage-class", + "optional": false, + "rule": { + "is": "equal", + "value": "STANDARD_IA" + } } ], "allow_headers": [ @@ -90873,98 +129441,17 @@ "response": { "status": 200, "headers": { - "content-length": "1", - "content-type": "binary/octet-stream", + "content-type": "application/xml", "date": { "from": "now" - }, - "etag": "\"fixture-6c30b210f0a8\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-amz-meta-name": "value", - "x-amz-meta-second": "2" + } }, "body": { - "encoding": "base64", - "data": "" + "encoding": "utf8", + "data": "\n2024-01-01T00:00:00.000Z"fixture-etag"" } } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-6c30b210f0a8\"" - } - }, - { - "at": "/value/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/content_type", - "optional": false, - "rule": { - "is": "equal", - "value": "binary/octet-stream" - } - }, - { - "at": "/value/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/metadata", - "optional": false, - "rule": { - "is": "equal", - "value": { - "name": "value", - "second": "2" - } - } - } - ], - "refusal": null - }, - { - "id": "operations/s3/head-missing", - "profile": "s3", - "lane": "core", - "purpose": "head missing", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "key": "object-tests/read/absent.txt", - "op": "head" - }, - "exchanges": [ - { - "alternatives": [ + }, { "request": [ { @@ -90980,7 +129467,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/absent.txt" + "value": "/object-tests/copy/source.txt" } }, { @@ -90992,21 +129479,89 @@ } } ], + "then": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/copy/target.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/x-amz-copy-source", + "optional": false, + "rule": { + "is": "matches", + "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" + } + }, + { + "at": "/headers/x-amz-storage-class", + "optional": false, + "rule": { + "is": "equal", + "value": "STANDARD_IA" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + } + }, + "body": { + "encoding": "utf8", + "data": "\n2024-01-01T00:00:00.000Z"fixture-etag"" + } + } + } + ] + } + ], "allow_headers": [ "content-type" ], "allow_query": [], "response": { - "status": 404, + "status": 200, "headers": { - "content-type": "application/xml", + "content-length": "5", "date": { "from": "now" - } + }, + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "" + "encoding": "empty" } } } @@ -91019,31 +129574,25 @@ "optional": false, "rule": { "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 404 + "value": "ok" } } ], "refusal": null }, { - "id": "operations/s3/head", + "id": "operations/s3/copy-source-if-match", "profile": "s3", "lane": "core", - "purpose": "head", + "purpose": "Copy an object only if the source still has this ETag, named in x-amz-copy-source-if-match", "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html" ], "call": { - "key": "object-tests/read/object.txt", - "op": "head" + "key": "object-tests/copy/target.txt", + "op": "copy", + "source_if_match": "\"fixture-etag\"", + "source_key": "object-tests/copy/source.txt" }, "exchanges": [ { @@ -91055,7 +129604,7 @@ "optional": false, "rule": { "is": "equal", - "value": "HEAD" + "value": "PUT" } }, { @@ -91063,7 +129612,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "/fixture/object-tests/copy/target.txt" } }, { @@ -91073,6 +129622,22 @@ "is": "equal", "value": "" } + }, + { + "at": "/headers/x-amz-copy-source", + "optional": false, + "rule": { + "is": "matches", + "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" + } + }, + { + "at": "/headers/x-amz-copy-source-if-match", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-etag\"" + } } ], "allow_headers": [ @@ -91082,85 +129647,17 @@ "response": { "status": 200, "headers": { - "content-length": "30", - "content-type": "binary/octet-stream", + "content-type": "application/xml", "date": { "from": "now" - }, - "etag": "\"fixture-ad03f2ab332a\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { - "encoding": "base64", - "data": "" + "encoding": "utf8", + "data": "\n2024-01-01T00:00:00.000Z"fixture-etag"" } } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-ad03f2ab332a\"" - } - }, - { - "at": "/value/size", - "optional": false, - "rule": { - "is": "equal", - "value": 30 - } - }, - { - "at": "/value/content_type", - "optional": false, - "rule": { - "is": "equal", - "value": "binary/octet-stream" - } - }, - { - "at": "/value/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - } - ], - "refusal": null - }, - { - "id": "operations/s3/head-content-properties", - "profile": "s3", - "lane": "core", - "purpose": "Return the stored content properties from a HEAD", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "key": "object-tests/read/object.txt", - "op": "head" - }, - "exchanges": [ - { - "alternatives": [ + }, { "request": [ { @@ -91176,7 +129673,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "/object-tests/copy/source.txt" } }, { @@ -91188,6 +129685,73 @@ } } ], + "then": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/copy/target.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/x-amz-copy-source", + "optional": false, + "rule": { + "is": "matches", + "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" + } + }, + { + "at": "/headers/x-amz-copy-source-if-match", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-etag\"" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + } + }, + "body": { + "encoding": "utf8", + "data": "\n2024-01-01T00:00:00.000Z"fixture-etag"" + } + } + } + ] + } + ], "allow_headers": [ "content-type" ], @@ -91195,20 +129759,15 @@ "response": { "status": 200, "headers": { - "cache-control": "max-age=3600", - "content-disposition": "attachment; filename=\"report.txt\"", - "content-language": "nl-NL", - "content-length": "30", - "content-type": "text/plain; charset=utf-8", + "content-length": "5", "date": { "from": "now" }, - "etag": "\"fixture-ad03f2ab332a\"", + "etag": "\"fixture-etag\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "" + "encoding": "empty" } } } @@ -91223,81 +129782,23 @@ "is": "equal", "value": "ok" } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-ad03f2ab332a\"" - } - }, - { - "at": "/value/size", - "optional": false, - "rule": { - "is": "equal", - "value": 30 - } - }, - { - "at": "/value/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/content_type", - "optional": false, - "rule": { - "is": "equal", - "value": "text/plain; charset=utf-8" - } - }, - { - "at": "/value/content_language", - "optional": false, - "rule": { - "is": "equal", - "value": "nl-NL" - } - }, - { - "at": "/value/content_disposition", - "optional": false, - "rule": { - "is": "equal", - "value": "attachment; filename=\"report.txt\"" - } - }, - { - "at": "/value/cache_control", - "optional": false, - "rule": { - "is": "equal", - "value": "max-age=3600" - } } ], "refusal": null }, { - "id": "operations/s3/head-if-unmodified-since-past", + "id": "operations/s3/copy-source-if-match-failed", "profile": "s3", "lane": "core", - "purpose": "Refuse a HEAD with 412 when the object changed after If-Unmodified-Since", + "purpose": "Report a copy whose source does not have the ETag in x-amz-copy-source-if-match as a failed condition. S3 answers 412 PreconditionFailed and writes nothing", "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html" ], "call": { - "if_unmodified_since": "Sat, 01 Jan 2000 00:00:00 GMT", - "key": "object-tests/read/object.txt", - "op": "head" + "key": "object-tests/copy/target.txt", + "op": "copy", + "source_if_match": "\"fixture-0123456789ab\"", + "source_key": "object-tests/copy/source.txt" }, "exchanges": [ { @@ -91309,7 +129810,7 @@ "optional": false, "rule": { "is": "equal", - "value": "HEAD" + "value": "PUT" } }, { @@ -91317,7 +129818,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/read/object.txt" + "value": "/fixture/object-tests/copy/target.txt" } }, { @@ -91329,11 +129830,19 @@ } }, { - "at": "/headers/if-unmodified-since", + "at": "/headers/x-amz-copy-source", + "optional": false, + "rule": { + "is": "matches", + "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" + } + }, + { + "at": "/headers/x-amz-copy-source-if-match", "optional": false, "rule": { "is": "equal", - "value": "Sat, 01 Jan 2000 00:00:00 GMT" + "value": "\"fixture-0123456789ab\"" } } ], @@ -91344,53 +129853,18 @@ "response": { "status": 412, "headers": { + "content-type": "application/xml", "date": { "from": "now" } }, "body": { - "encoding": "empty" - } + "encoding": "utf8", + "data": "\nPreconditionFailedFixture error" + }, + "framing": "chunked" } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 412 - } - } - ], - "refusal": null - }, - { - "id": "operations/s3/head-storage-class", - "profile": "s3", - "lane": "core", - "purpose": "Read the storage class of an object", - "sources": [ - "https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html" - ], - "call": { - "key": "object-tests/classes/object.txt", - "op": "head" - }, - "exchanges": [ - { - "alternatives": [ + }, { "request": [ { @@ -91406,7 +129880,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/classes/object.txt" + "value": "/object-tests/copy/source.txt" } }, { @@ -91418,6 +129892,74 @@ } } ], + "then": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/copy/target.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/x-amz-copy-source", + "optional": false, + "rule": { + "is": "matches", + "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" + } + }, + { + "at": "/headers/x-amz-copy-source-if-match", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-0123456789ab\"" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 412, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + } + }, + "body": { + "encoding": "utf8", + "data": "\nPreconditionFailedFixture error" + }, + "framing": "chunked" + } + } + ] + } + ], "allow_headers": [ "content-type" ], @@ -91430,8 +129972,7 @@ "from": "now" }, "etag": "\"fixture-etag\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-amz-storage-class": "STANDARD_IA" + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "empty" @@ -91447,31 +129988,41 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "error" } }, { - "at": "/value/storage_class", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "STANDARD_IA" + "value": 412 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "PreconditionFailed" } } ], "refusal": null }, { - "id": "operations/s3/head-bucket", + "id": "operations/s3/copy-source-if-none-match-failed", "profile": "s3", "lane": "core", - "purpose": "Confirm that a bucket exists", + "purpose": "Report a copy whose source has the ETag in x-amz-copy-source-if-none-match as a failed condition. A copy answers 412 PreconditionFailed where a read answers 304", "sources": [ - "https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadBucket.html" + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html" ], "call": { - "bucket": "fixture", - "op": "s3.head_bucket" + "key": "object-tests/copy/target.txt", + "op": "copy", + "source_if_none_match": "\"fixture-etag\"", + "source_key": "object-tests/copy/source.txt" }, "exchanges": [ { @@ -91483,7 +130034,7 @@ "optional": false, "rule": { "is": "equal", - "value": "HEAD" + "value": "PUT" } }, { @@ -91491,7 +130042,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/copy/target.txt" } }, { @@ -91501,79 +130052,21 @@ "is": "equal", "value": "" } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "date": { - "from": "now" - }, - "x-amz-bucket-region": "eu-central-1" - }, - "body": { - "encoding": "empty" - } - } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - } - ], - "refusal": null - }, - { - "id": "operations/s3/head-bucket-missing", - "profile": "s3", - "lane": "core", - "purpose": "Report a bucket that does not exist", - "sources": [ - "https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadBucket.html" - ], - "call": { - "bucket": "object-tests-absent", - "op": "s3.head_bucket" - }, - "exchanges": [ - { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "HEAD" - } }, { - "at": "/path", + "at": "/headers/x-amz-copy-source", "optional": false, "rule": { - "is": "equal", - "value": "/object-tests-absent" + "is": "matches", + "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" } }, { - "at": "/body_base64", + "at": "/headers/x-amz-copy-source-if-none-match", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "\"fixture-etag\"" } } ], @@ -91582,55 +130075,20 @@ ], "allow_query": [], "response": { - "status": 404, + "status": 412, "headers": { + "content-type": "application/xml", "date": { "from": "now" } }, "body": { - "encoding": "empty" - } + "encoding": "utf8", + "data": "\nPreconditionFailedFixture error" + }, + "framing": "chunked" } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 404 - } - } - ], - "refusal": null - }, - { - "id": "operations/s3/head-key-question", - "profile": "s3", - "lane": "core", - "purpose": "head, with the key \"question?mark.txt\"", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "key": "object-tests/keys/question?mark.txt", - "op": "head" - }, - "exchanges": [ - { - "alternatives": [ + }, { "request": [ { @@ -91646,7 +130104,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/question?mark.txt" + "value": "/object-tests/copy/source.txt" } }, { @@ -91658,6 +130116,74 @@ } } ], + "then": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/copy/target.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/x-amz-copy-source", + "optional": false, + "rule": { + "is": "matches", + "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" + } + }, + { + "at": "/headers/x-amz-copy-source-if-none-match", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-etag\"" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 412, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + } + }, + "body": { + "encoding": "utf8", + "data": "\nPreconditionFailedFixture error" + }, + "framing": "chunked" + } + } + ] + } + ], "allow_headers": [ "content-type" ], @@ -91665,17 +130191,15 @@ "response": { "status": 200, "headers": { - "content-length": "30", - "content-type": "binary/octet-stream", + "content-length": "5", "date": { "from": "now" }, - "etag": "\"fixture-ad03f2ab332a\"", + "etag": "\"fixture-etag\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "" + "encoding": "empty" } } } @@ -91688,58 +130212,41 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-ad03f2ab332a\"" + "value": "error" } }, { - "at": "/value/size", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": 30 + "value": 412 } }, { - "at": "/value/content_type", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": "binary/octet-stream" - } - }, - { - "at": "/value/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "value": "PreconditionFailed" } } ], "refusal": null }, { - "id": "operations/s3/head-key-hash", + "id": "operations/s3/copy-source-if-modified-since", "profile": "s3", "lane": "core", - "purpose": "head, with the key \"hash#tag.txt\"", + "purpose": "Copy an object only if the source changed after a time, named in x-amz-copy-source-if-modified-since as an HTTP date", "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html" ], "call": { - "key": "object-tests/keys/hash#tag.txt", - "op": "head" + "key": "object-tests/copy/target.txt", + "op": "copy", + "source_if_modified_since": "Mon, 01 Jan 2024 00:00:00 GMT", + "source_key": "object-tests/copy/source.txt" }, "exchanges": [ { @@ -91751,7 +130258,7 @@ "optional": false, "rule": { "is": "equal", - "value": "HEAD" + "value": "PUT" } }, { @@ -91759,7 +130266,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/hash#tag.txt" + "value": "/fixture/object-tests/copy/target.txt" } }, { @@ -91769,6 +130276,22 @@ "is": "equal", "value": "" } + }, + { + "at": "/headers/x-amz-copy-source", + "optional": false, + "rule": { + "is": "matches", + "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" + } + }, + { + "at": "/headers/x-amz-copy-source-if-modified-since", + "optional": false, + "rule": { + "is": "equal", + "value": "Mon, 01 Jan 2024 00:00:00 GMT" + } } ], "allow_headers": [ @@ -91778,85 +130301,17 @@ "response": { "status": 200, "headers": { - "content-length": "30", - "content-type": "binary/octet-stream", + "content-type": "application/xml", "date": { "from": "now" - }, - "etag": "\"fixture-ad03f2ab332a\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { - "encoding": "base64", - "data": "" + "encoding": "utf8", + "data": "\n2024-01-01T00:00:00.000Z"fixture-etag"" } } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-ad03f2ab332a\"" - } - }, - { - "at": "/value/size", - "optional": false, - "rule": { - "is": "equal", - "value": 30 - } - }, - { - "at": "/value/content_type", - "optional": false, - "rule": { - "is": "equal", - "value": "binary/octet-stream" - } - }, - { - "at": "/value/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - } - ], - "refusal": null - }, - { - "id": "operations/s3/head-key-percent", - "profile": "s3", - "lane": "core", - "purpose": "head, with the key \"percent%20.txt\"", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "key": "object-tests/keys/percent%20.txt", - "op": "head" - }, - "exchanges": [ - { - "alternatives": [ + }, { "request": [ { @@ -91872,7 +130327,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/percent%20.txt" + "value": "/object-tests/copy/source.txt" } }, { @@ -91884,6 +130339,73 @@ } } ], + "then": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/copy/target.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/x-amz-copy-source", + "optional": false, + "rule": { + "is": "matches", + "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" + } + }, + { + "at": "/headers/x-amz-copy-source-if-modified-since", + "optional": false, + "rule": { + "is": "equal", + "value": "Mon, 01 Jan 2024 00:00:00 GMT" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + } + }, + "body": { + "encoding": "utf8", + "data": "\n2024-01-01T00:00:00.000Z"fixture-etag"" + } + } + } + ] + } + ], "allow_headers": [ "content-type" ], @@ -91891,17 +130413,15 @@ "response": { "status": 200, "headers": { - "content-length": "30", - "content-type": "binary/octet-stream", + "content-length": "5", "date": { "from": "now" }, - "etag": "\"fixture-ad03f2ab332a\"", + "etag": "\"fixture-etag\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "" + "encoding": "empty" } } } @@ -91916,56 +130436,23 @@ "is": "equal", "value": "ok" } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-ad03f2ab332a\"" - } - }, - { - "at": "/value/size", - "optional": false, - "rule": { - "is": "equal", - "value": 30 - } - }, - { - "at": "/value/content_type", - "optional": false, - "rule": { - "is": "equal", - "value": "binary/octet-stream" - } - }, - { - "at": "/value/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } } ], "refusal": null }, { - "id": "operations/s3/head-key-plus", + "id": "operations/s3/copy-source-if-unmodified-since-failed", "profile": "s3", "lane": "core", - "purpose": "head, with the key \"plus+plus.txt\"", + "purpose": "Report a copy whose source changed after the time in x-amz-copy-source-if-unmodified-since as a failed condition, 412 PreconditionFailed", "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html" ], "call": { - "key": "object-tests/keys/plus+plus.txt", - "op": "head" + "key": "object-tests/copy/target.txt", + "op": "copy", + "source_if_unmodified_since": "Mon, 01 Jan 2024 00:00:00 GMT", + "source_key": "object-tests/copy/source.txt" }, "exchanges": [ { @@ -91977,7 +130464,7 @@ "optional": false, "rule": { "is": "equal", - "value": "HEAD" + "value": "PUT" } }, { @@ -91985,7 +130472,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/plus+plus.txt" + "value": "/fixture/object-tests/copy/target.txt" } }, { @@ -91995,6 +130482,22 @@ "is": "equal", "value": "" } + }, + { + "at": "/headers/x-amz-copy-source", + "optional": false, + "rule": { + "is": "matches", + "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" + } + }, + { + "at": "/headers/x-amz-copy-source-if-unmodified-since", + "optional": false, + "rule": { + "is": "equal", + "value": "Mon, 01 Jan 2024 00:00:00 GMT" + } } ], "allow_headers": [ @@ -92002,87 +130505,20 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 412, "headers": { - "content-length": "30", - "content-type": "binary/octet-stream", + "content-type": "application/xml", "date": { "from": "now" - }, - "etag": "\"fixture-ad03f2ab332a\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { - "encoding": "base64", - "data": "" - } + "encoding": "utf8", + "data": "\nPreconditionFailedFixture error" + }, + "framing": "chunked" } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-ad03f2ab332a\"" - } - }, - { - "at": "/value/size", - "optional": false, - "rule": { - "is": "equal", - "value": 30 - } - }, - { - "at": "/value/content_type", - "optional": false, - "rule": { - "is": "equal", - "value": "binary/octet-stream" - } - }, - { - "at": "/value/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - } - ], - "refusal": null - }, - { - "id": "operations/s3/head-key-space", - "profile": "s3", - "lane": "core", - "purpose": "head, with the key \"space name.txt\"", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "key": "object-tests/keys/space name.txt", - "op": "head" - }, - "exchanges": [ - { - "alternatives": [ + }, { "request": [ { @@ -92098,7 +130534,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/space name.txt" + "value": "/object-tests/copy/source.txt" } }, { @@ -92110,6 +130546,74 @@ } } ], + "then": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/copy/target.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/x-amz-copy-source", + "optional": false, + "rule": { + "is": "matches", + "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" + } + }, + { + "at": "/headers/x-amz-copy-source-if-unmodified-since", + "optional": false, + "rule": { + "is": "equal", + "value": "Mon, 01 Jan 2024 00:00:00 GMT" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 412, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + } + }, + "body": { + "encoding": "utf8", + "data": "\nPreconditionFailedFixture error" + }, + "framing": "chunked" + } + } + ] + } + ], "allow_headers": [ "content-type" ], @@ -92117,17 +130621,15 @@ "response": { "status": 200, "headers": { - "content-length": "30", - "content-type": "binary/octet-stream", + "content-length": "5", "date": { "from": "now" }, - "etag": "\"fixture-ad03f2ab332a\"", + "etag": "\"fixture-etag\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "" + "encoding": "empty" } } } @@ -92140,58 +130642,41 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-ad03f2ab332a\"" + "value": "error" } }, { - "at": "/value/size", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": 30 + "value": 412 } }, { - "at": "/value/content_type", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": "binary/octet-stream" - } - }, - { - "at": "/value/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "value": "PreconditionFailed" } } ], "refusal": null }, { - "id": "operations/s3/head-key-non-ascii", + "id": "operations/s3/copy-across-buckets", "profile": "s3", "lane": "core", - "purpose": "head, with the key \"café/雪.txt\"", + "purpose": "Copy an object from another bucket, which x-amz-copy-source names before the key", "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html" ], "call": { - "key": "object-tests/keys/café/雪.txt", - "op": "head" + "key": "object-tests/copy/target.txt", + "op": "copy", + "source_bucket": "source", + "source_key": "object-tests/copy/source.txt" }, "exchanges": [ { @@ -92203,7 +130688,7 @@ "optional": false, "rule": { "is": "equal", - "value": "HEAD" + "value": "PUT" } }, { @@ -92211,7 +130696,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/café/雪.txt" + "value": "/fixture/object-tests/copy/target.txt" } }, { @@ -92221,6 +130706,14 @@ "is": "equal", "value": "" } + }, + { + "at": "/headers/x-amz-copy-source", + "optional": false, + "rule": { + "is": "matches", + "pattern": "/?source/object-tests/copy/source\\.txt" + } } ], "allow_headers": [ @@ -92230,85 +130723,17 @@ "response": { "status": 200, "headers": { - "content-length": "30", - "content-type": "binary/octet-stream", + "content-type": "application/xml", "date": { "from": "now" - }, - "etag": "\"fixture-ad03f2ab332a\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { - "encoding": "base64", - "data": "" + "encoding": "utf8", + "data": "\n2024-01-01T00:00:00.000Z"fixture-etag"" } } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-ad03f2ab332a\"" - } - }, - { - "at": "/value/size", - "optional": false, - "rule": { - "is": "equal", - "value": 30 - } - }, - { - "at": "/value/content_type", - "optional": false, - "rule": { - "is": "equal", - "value": "binary/octet-stream" - } - }, - { - "at": "/value/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - } - ], - "refusal": null - }, - { - "id": "operations/s3/head-key-double-slash", - "profile": "s3", - "lane": "core", - "purpose": "head, with the key \"double//slash.txt\"", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "key": "object-tests/keys/double//slash.txt", - "op": "head" - }, - "exchanges": [ - { - "alternatives": [ + }, { "request": [ { @@ -92324,7 +130749,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/double//slash.txt" + "value": "/object-tests/copy/source.txt" } }, { @@ -92336,6 +130761,65 @@ } } ], + "then": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/copy/target.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/x-amz-copy-source", + "optional": false, + "rule": { + "is": "matches", + "pattern": "/?source/object-tests/copy/source\\.txt" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + } + }, + "body": { + "encoding": "utf8", + "data": "\n2024-01-01T00:00:00.000Z"fixture-etag"" + } + } + } + ] + } + ], "allow_headers": [ "content-type" ], @@ -92343,17 +130827,15 @@ "response": { "status": 200, "headers": { - "content-length": "30", - "content-type": "binary/octet-stream", + "content-length": "5", "date": { "from": "now" }, - "etag": "\"fixture-ad03f2ab332a\"", + "etag": "\"fixture-etag\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "" + "encoding": "empty" } } } @@ -92368,60 +130850,79 @@ "is": "equal", "value": "ok" } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-ad03f2ab332a\"" - } - }, - { - "at": "/value/size", - "optional": false, - "rule": { - "is": "equal", - "value": 30 - } - }, - { - "at": "/value/content_type", - "optional": false, - "rule": { - "is": "equal", - "value": "binary/octet-stream" - } - }, - { - "at": "/value/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } } ], "refusal": null }, { - "id": "operations/s3/head-key-trailing-slash", + "id": "operations/s3/copy-source-key-encoded", "profile": "s3", "lane": "core", - "purpose": "head, with the key \"trailing-slash/\"", + "purpose": "Copy from a key with a space, +, %, é, ? and #. x-amz-copy-source percent-encodes every byte of the key outside letters, digits, -._~ and /", "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html" ], "call": { - "key": "object-tests/keys/trailing-slash/", - "op": "head" + "key": "object-tests/copy/target.txt", + "op": "copy", + "source_key": "object-tests/copy/a b+c%é?#.txt" }, "exchanges": [ { "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/copy/target.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/x-amz-copy-source", + "optional": false, + "rule": { + "is": "matches", + "pattern": "/?fixture[^/]*/object-tests/copy/a%20b%2[Bb]c%25%[Cc]3%[Aa]9%3[Ff]%23\\.txt" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + } + }, + "body": { + "encoding": "utf8", + "data": "\n2024-01-01T00:00:00.000Z"fixture-etag"" + } + } + }, { "request": [ { @@ -92437,7 +130938,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/trailing-slash/" + "value": "/object-tests/copy/a b+c%é?#.txt" } }, { @@ -92449,6 +130950,65 @@ } } ], + "then": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/copy/target.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/x-amz-copy-source", + "optional": false, + "rule": { + "is": "matches", + "pattern": "/?fixture[^/]*/object-tests/copy/a%20b%2[Bb]c%25%[Cc]3%[Aa]9%3[Ff]%23\\.txt" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + } + }, + "body": { + "encoding": "utf8", + "data": "\n2024-01-01T00:00:00.000Z"fixture-etag"" + } + } + } + ] + } + ], "allow_headers": [ "content-type" ], @@ -92456,17 +131016,15 @@ "response": { "status": 200, "headers": { - "content-length": "30", - "content-type": "binary/octet-stream", + "content-length": "5", "date": { "from": "now" }, - "etag": "\"fixture-ad03f2ab332a\"", + "etag": "\"fixture-etag\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "" + "encoding": "empty" } } } @@ -92481,57 +131039,22 @@ "is": "equal", "value": "ok" } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-ad03f2ab332a\"" - } - }, - { - "at": "/value/size", - "optional": false, - "rule": { - "is": "equal", - "value": 30 - } - }, - { - "at": "/value/content_type", - "optional": false, - "rule": { - "is": "equal", - "value": "binary/octet-stream" - } - }, - { - "at": "/value/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } } ], "refusal": null }, { - "id": "operations/s3/list-bad-marker", + "id": "operations/s3/copy-onto-itself", "profile": "s3", "lane": "core", - "purpose": "Report S3's 400 InvalidArgument for a continuation token it did not issue", + "purpose": "Report a copy of an object onto itself that changes nothing as an error. S3 answers 400 InvalidRequest", "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html" ], "call": { - "continuation_token": "fixture-marker+/ce6f21ae951d=", - "op": "list_page", - "prefix": "object-tests/board/" + "key": "object-tests/copy/source.txt", + "op": "copy", + "source_key": "object-tests/copy/source.txt" }, "exchanges": [ { @@ -92543,7 +131066,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -92551,7 +131074,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/copy/source.txt" } }, { @@ -92563,27 +131086,11 @@ } }, { - "at": "/query/list-type", - "optional": false, - "rule": { - "is": "equal", - "value": "2" - } - }, - { - "at": "/query/prefix", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/board/" - } - }, - { - "at": "/query/continuation-token", + "at": "/headers/x-amz-copy-source", "optional": false, "rule": { - "is": "equal", - "value": "fixture-marker+/ce6f21ae951d=" + "is": "matches", + "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" } } ], @@ -92601,7 +131108,7 @@ }, "body": { "encoding": "utf8", - "data": "\nInvalidArgumentFixture error" + "data": "\nInvalidRequestFixture error" }, "framing": "chunked" } @@ -92613,7 +131120,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "HEAD" } }, { @@ -92621,7 +131128,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/object-tests/copy/source.txt" } }, { @@ -92631,38 +131138,66 @@ "is": "equal", "value": "" } - }, - { - "at": "/query/list-type", - "optional": false, - "rule": { - "is": "equal", - "value": "2" - } - }, - { - "at": "/query/prefix", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/board/" - } - }, - { - "at": "/query/continuation-token", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-marker+/ce6f21ae951d=" - } - }, + } + ], + "then": [ { - "at": "/query/encoding-type", - "optional": false, - "rule": { - "is": "equal", - "value": "url" - } + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/copy/source.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/x-amz-copy-source", + "optional": false, + "rule": { + "is": "matches", + "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 400, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + } + }, + "body": { + "encoding": "utf8", + "data": "\nInvalidRequestFixture error" + }, + "framing": "chunked" + } + } + ] } ], "allow_headers": [ @@ -92670,18 +131205,18 @@ ], "allow_query": [], "response": { - "status": 400, + "status": 200, "headers": { - "content-type": "application/xml", + "content-length": "5", "date": { "from": "now" - } + }, + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nInvalidArgumentThe continuation token provided is incorrectcontinuation-tokenNQMNJ1VWXJVB4568Xe4ibV4/CeMc0lPl/vnTn1PlV2EEGNHZ+ST6o8IyEOh1TYXGMx01Jf1TkbwfTtRpHhsL/Tjn/tA=" - }, - "framing": "chunked" + "encoding": "empty" + } } } ] @@ -92709,23 +131244,27 @@ "optional": false, "rule": { "is": "equal", - "value": "InvalidArgument" + "value": "InvalidRequest" } } ], "refusal": null }, { - "id": "operations/s3/list-bucket-missing", + "id": "operations/s3/copy-onto-itself-replace-metadata", "profile": "s3", "lane": "core", - "purpose": "Report 404 NoSuchBucket for a bucket that does not exist", + "purpose": "Copy an object onto itself to replace its metadata, which S3 accepts with x-amz-metadata-directive: REPLACE", "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html" ], "call": { - "op": "list_page", - "prefix": "" + "key": "object-tests/copy/source.txt", + "metadata": { + "colour": "blue" + }, + "op": "copy", + "source_key": "object-tests/copy/source.txt" }, "exchanges": [ { @@ -92737,7 +131276,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -92745,7 +131284,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/copy/source.txt" } }, { @@ -92757,19 +131296,27 @@ } }, { - "at": "/query/list-type", + "at": "/headers/x-amz-copy-source", + "optional": false, + "rule": { + "is": "matches", + "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" + } + }, + { + "at": "/headers/x-amz-metadata-directive", "optional": false, "rule": { "is": "equal", - "value": "2" + "value": "REPLACE" } }, { - "at": "/query/prefix", - "optional": true, + "at": "/headers/x-amz-meta-colour", + "optional": false, "rule": { "is": "equal", - "value": "" + "value": "blue" } } ], @@ -92778,7 +131325,7 @@ ], "allow_query": [], "response": { - "status": 404, + "status": 200, "headers": { "content-type": "application/xml", "date": { @@ -92787,9 +131334,8 @@ }, "body": { "encoding": "utf8", - "data": "\nNoSuchBucketFixture error" - }, - "framing": "chunked" + "data": "\n2024-01-01T00:00:00.000Z"fixture-etag"" + } } }, { @@ -92799,7 +131345,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "HEAD" } }, { @@ -92807,7 +131353,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/object-tests/copy/source.txt" } }, { @@ -92817,29 +131363,166 @@ "is": "equal", "value": "" } + } + ], + "then": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/copy/source.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/x-amz-copy-source", + "optional": false, + "rule": { + "is": "matches", + "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" + } + }, + { + "at": "/headers/x-amz-metadata-directive", + "optional": false, + "rule": { + "is": "equal", + "value": "REPLACE" + } + }, + { + "at": "/headers/x-amz-meta-colour", + "optional": false, + "rule": { + "is": "equal", + "value": "blue" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + } + }, + "body": { + "encoding": "utf8", + "data": "\n2024-01-01T00:00:00.000Z"fixture-etag"" + } + } + } + ] + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-length": "5", + "date": { + "from": "now" + }, + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "empty" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + } + ], + "refusal": null + }, + { + "id": "operations/s3/put-with-unknown-storage-class", + "profile": "s3", + "lane": "core", + "purpose": "Refuse a storage class that S3 does not have", + "sources": [ + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html" + ], + "call": { + "body_base64": "Zmlyc3Q=", + "key": "object-tests/classes/object.txt", + "op": "put", + "storage_class": "WARM" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } }, { - "at": "/query/list-type", + "at": "/path", "optional": false, "rule": { "is": "equal", - "value": "2" + "value": "/fixture/object-tests/classes/object.txt" } }, { - "at": "/query/prefix", - "optional": true, + "at": "/body_base64", + "optional": false, "rule": { "is": "equal", - "value": "" + "value": "Zmlyc3Q=" } }, { - "at": "/query/encoding-type", + "at": "/headers/x-amz-storage-class", "optional": false, "rule": { "is": "equal", - "value": "url" + "value": "WARM" } } ], @@ -92848,7 +131531,7 @@ ], "allow_query": [], "response": { - "status": 404, + "status": 400, "headers": { "content-type": "application/xml", "date": { @@ -92857,7 +131540,7 @@ }, "body": { "encoding": "utf8", - "data": "\nNoSuchBucketThe specified bucket does not existno-such-bucket-object-testsD3APHS8Y67RT769N4yxkwV/1e8tBe6qQpZ/nVXK6SoorCzIGPjfs539Nq5RPVrfpF9lCuc/OPebqgIzKjrXkTAgalEM=" + "data": "\nInvalidStorageClassFixture error" }, "framing": "chunked" } @@ -92879,7 +131562,7 @@ "optional": false, "rule": { "is": "equal", - "value": 404 + "value": 400 } }, { @@ -92887,24 +131570,25 @@ "optional": false, "rule": { "is": "equal", - "value": "NoSuchBucket" + "value": "InvalidStorageClass" } } ], "refusal": null }, { - "id": "operations/s3/list-delimited", + "id": "operations/s3/put-with-storage-class", "profile": "s3", "lane": "core", - "purpose": "Send the delimiter, and report the keys it groups as common prefixes, not as entries", + "purpose": "Write an object into the STANDARD_IA storage class", "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html" ], "call": { - "delimiter": "/", - "op": "list_page", - "prefix": "object-tests/board/" + "body_base64": "Zmlyc3Q=", + "key": "object-tests/classes/object.txt", + "op": "put", + "storage_class": "STANDARD_IA" }, "exchanges": [ { @@ -92916,7 +131600,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -92924,7 +131608,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/classes/object.txt" } }, { @@ -92932,31 +131616,15 @@ "optional": false, "rule": { "is": "equal", - "value": "" - } - }, - { - "at": "/query/list-type", - "optional": false, - "rule": { - "is": "equal", - "value": "2" - } - }, - { - "at": "/query/prefix", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/board/" + "value": "Zmlyc3Q=" } }, { - "at": "/query/delimiter", + "at": "/headers/x-amz-storage-class", "optional": false, "rule": { "is": "equal", - "value": "/" + "value": "STANDARD_IA" } } ], @@ -92967,19 +131635,52 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", "date": { "from": "now" }, + "etag": "\"fixture-etag\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nfixtureobject-tests/board/31000/falseobject-tests/board/a.txt2024-01-01T00:00:00.000Z"fixture-1d83e6eb69df"CRC64NVMEFULL_OBJECT8STANDARDobject-tests/board/z.txt2024-01-01T00:00:00.000Z"fixture-4d347fee6a7b"CRC64NVMEFULL_OBJECT2STANDARDobject-tests/board/nested/" - }, - "framing": "chunked" + "encoding": "empty" + } } - }, + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + } + ], + "refusal": null + }, + { + "id": "operations/s3/put-with-md5", + "profile": "s3", + "lane": "core", + "purpose": "Carry a declared transactional MD5 without substituting a payload or stored-property hash.", + "sources": [ + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html" + ], + "call": { + "body_base64": "aGVsbG8=", + "checksum": { + "algorithm": "md5", + "value_base64": "XUFAKrxLKna5cZ2REBfFkg==" + }, + "key": "object", + "op": "put" + }, + "exchanges": [ + { + "alternatives": [ { "request": [ { @@ -92987,7 +131688,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -92995,7 +131696,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object" } }, { @@ -93003,39 +131704,15 @@ "optional": false, "rule": { "is": "equal", - "value": "" - } - }, - { - "at": "/query/list-type", - "optional": false, - "rule": { - "is": "equal", - "value": "2" - } - }, - { - "at": "/query/prefix", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/board/" - } - }, - { - "at": "/query/delimiter", - "optional": false, - "rule": { - "is": "equal", - "value": "/" + "value": "aGVsbG8=" } }, { - "at": "/query/encoding-type", + "at": "/headers/content-md5", "optional": false, "rule": { "is": "equal", - "value": "url" + "value": "XUFAKrxLKna5cZ2REBfFkg==" } } ], @@ -93046,17 +131723,18 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", + "content-type": "application/octet-stream", "date": { "from": "now" }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-amz-request-id": "fixture-request-id" }, "body": { - "encoding": "utf8", - "data": "\nfixtureobject-tests/board/31000/urlfalseobject-tests/board/a.txt2024-01-01T00:00:00.000Z"fixture-1d83e6eb69df"CRC64NVMEFULL_OBJECT8STANDARDobject-tests/board/z.txt2024-01-01T00:00:00.000Z"fixture-4d347fee6a7b"CRC64NVMEFULL_OBJECT2STANDARDobject-tests/board/nested/" - }, - "framing": "chunked" + "encoding": "base64", + "data": "" + } } } ] @@ -93070,167 +131748,26 @@ "is": "equal", "value": "ok" } - }, - { - "at": "/value/entries/0/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/board/a.txt" - } - }, - { - "at": "/value/entries/0/size", - "optional": false, - "rule": { - "is": "equal", - "value": 8 - } - }, - { - "at": "/value/entries/0/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-1d83e6eb69df\"" - } - }, - { - "at": "/value/entries/0/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/0/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/0/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/1/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/board/z.txt" - } - }, - { - "at": "/value/entries/1/size", - "optional": false, - "rule": { - "is": "equal", - "value": 2 - } - }, - { - "at": "/value/entries/1/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-4d347fee6a7b\"" - } - }, - { - "at": "/value/entries/1/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/1/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/1/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries", - "optional": false, - "rule": { - "is": "array_length", - "value": 2 - } - }, - { - "at": "/value/prefixes/0", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/board/nested/" - } - }, - { - "at": "/value/prefixes", - "optional": false, - "rule": { - "is": "array_length", - "value": 1 - } - }, - { - "at": "/value/continuation_token", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } } ], "refusal": null }, { - "id": "operations/s3/list-empty", + "id": "operations/s3/put-md5-mismatch", "profile": "s3", "lane": "core", - "purpose": "Report a prefix with no objects as no entries, no prefixes and an empty continuation token", + "purpose": "Declared transactional MD5 must cover the exact body bytes; report service rejection of a mismatch.", "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html" ], "call": { - "op": "list_page", - "prefix": "object-tests/nothing/" + "body_base64": "aGVsbG8=", + "checksum": { + "algorithm": "md5", + "value_base64": "K9opmNmw7hl9oUKgRH9nJQ==" + }, + "key": "object", + "op": "put" }, "exchanges": [ { @@ -93242,7 +131779,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -93250,7 +131787,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object" } }, { @@ -93258,23 +131795,15 @@ "optional": false, "rule": { "is": "equal", - "value": "" - } - }, - { - "at": "/query/list-type", - "optional": false, - "rule": { - "is": "equal", - "value": "2" + "value": "aGVsbG8=" } }, { - "at": "/query/prefix", + "at": "/headers/content-md5", "optional": false, "rule": { "is": "equal", - "value": "object-tests/nothing/" + "value": "K9opmNmw7hl9oUKgRH9nJQ==" } } ], @@ -93283,21 +131812,66 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 400, "headers": { "content-type": "application/xml", "date": { "from": "now" }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-amz-request-id": "fixture-request-id" }, "body": { "encoding": "utf8", - "data": "\nfixtureobject-tests/nothing/01000false" + "data": "\nBadDigestMD5 mismatch" }, "framing": "chunked" } - }, + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "BadDigest" + } + } + ], + "refusal": null + }, + { + "id": "operations/s3/put-with-crc32", + "profile": "s3", + "lane": "core", + "purpose": "Send an additional checksum in its x-amz-checksum- header; S3 stores it as the object's one checksum, in place of the CRC64NVME it adds to a write without one", + "sources": [ + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html" + ], + "call": { + "body_base64": "Y2hlY2tzdW0K", + "checksum": { + "algorithm": "crc32", + "value_base64": "ItMTFg==" + }, + "key": "object-tests/checksums/crc32.txt", + "op": "put" + }, + "exchanges": [ + { + "alternatives": [ { "request": [ { @@ -93305,7 +131879,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -93313,7 +131887,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/checksums/crc32.txt" } }, { @@ -93321,31 +131895,23 @@ "optional": false, "rule": { "is": "equal", - "value": "" - } - }, - { - "at": "/query/list-type", - "optional": false, - "rule": { - "is": "equal", - "value": "2" + "value": "Y2hlY2tzdW0K" } }, { - "at": "/query/prefix", + "at": "/headers/x-amz-checksum-crc32", "optional": false, "rule": { "is": "equal", - "value": "object-tests/nothing/" + "value": "ItMTFg==" } }, { - "at": "/query/encoding-type", - "optional": false, + "at": "/headers/x-amz-sdk-checksum-algorithm", + "optional": true, "rule": { "is": "equal", - "value": "url" + "value": "CRC32" } } ], @@ -93356,17 +131922,17 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", "date": { "from": "now" }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + "etag": "\"fixture-636b73750000\"", + "x-amz-checksum-crc32": "ItMTFg==", + "x-amz-checksum-type": "FULL_OBJECT" }, "body": { - "encoding": "utf8", - "data": "\nfixtureobject-tests/nothing/01000urlfalse" - }, - "framing": "chunked" + "encoding": "base64", + "data": "" + } } } ] @@ -93382,43 +131948,42 @@ } }, { - "at": "/value/entries", - "optional": false, - "rule": { - "is": "array_length", - "value": 0 - } - }, - { - "at": "/value/prefixes", + "at": "/value/etag", "optional": false, "rule": { - "is": "array_length", - "value": 0 + "is": "equal", + "value": "\"fixture-636b73750000\"" } }, { - "at": "/value/continuation_token", - "optional": false, + "at": "/value/version", + "optional": true, "rule": { - "is": "equal", - "value": "" + "is": "one_of", + "values": [ + null, + "" + ] } } ], "refusal": null }, { - "id": "operations/s3/list-all-empty", + "id": "operations/s3/put-computing-sha256", "profile": "s3", "lane": "core", - "purpose": "Report an empty bucket as an empty listing", + "purpose": "Compute the SHA256 checksum of the body and send it, base64 of its big-endian bytes, in x-amz-checksum-sha256 or in a trailer of an aws-chunked body", "sources": [ - "https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html" + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html" ], "call": { - "op": "list", - "prefix": "" + "body_base64": "Y2hlY2tzdW0K", + "checksum": { + "algorithm": "sha256" + }, + "key": "object-tests/checksums/sha256.txt", + "op": "put" }, "exchanges": [ { @@ -93430,7 +131995,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -93438,7 +132003,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/checksums/sha256.txt" } }, { @@ -93446,56 +132011,44 @@ "optional": false, "rule": { "is": "equal", - "value": "" - } - }, - { - "at": "/query/list-type", - "optional": false, - "rule": { - "is": "equal", - "value": "2" + "value": "Y2hlY2tzdW0K" } }, { - "at": "/query/prefix", + "at": "/headers/x-amz-sdk-checksum-algorithm", "optional": true, "rule": { "is": "equal", - "value": "" + "value": "SHA256" } }, { - "at": "/headers/content-type", - "optional": true, + "at": "/headers/x-amz-checksum-sha256", + "optional": false, "rule": { - "is": "one_of", - "values": [ - "application/xml", - "application/octet-stream", - "binary/octet-stream" - ] + "is": "equal", + "value": "YBWjp+qyV9PYdCTLkYJ9WLevegiRR86bT46jxfweu9I=" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { "status": 200, "headers": { - "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-etag\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-amz-request-id": "fixture-request-id" + "etag": "\"fixture-636b73750000\"", + "x-amz-checksum-crc32": "ItMTFg==", + "x-amz-checksum-type": "FULL_OBJECT" }, "body": { "encoding": "base64", - "data": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Zml4dHVyZTwvTmFtZT48UHJlZml4PjwvUHJlZml4PjxNYXhLZXlzPjEwMDA8L01heEtleXM+PEtleUNvdW50PjA8L0tleUNvdW50PjxJc1RydW5jYXRlZD5mYWxzZTwvSXNUcnVuY2F0ZWQ+PC9MaXN0QnVja2V0UmVzdWx0Pg==" - }, - "framing": "chunked" + "data": "" + } } }, { @@ -93505,7 +132058,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -93513,7 +132066,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/checksums/sha256.txt" } }, { @@ -93521,64 +132074,68 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "OQ0KY2hlY2tzdW0KDQowDQp4LWFtei1jaGVja3N1bS1zaGEyNTY6WUJXanArcXlWOVBZZENUTGtZSjlXTGV2ZWdpUlI4NmJUNDZqeGZ3ZXU5ST0NCg0K" } }, { - "at": "/query/list-type", + "at": "/headers/x-amz-sdk-checksum-algorithm", + "optional": true, + "rule": { + "is": "equal", + "value": "SHA256" + } + }, + { + "at": "/headers/x-amz-content-sha256", "optional": false, "rule": { "is": "equal", - "value": "2" + "value": "STREAMING-UNSIGNED-PAYLOAD-TRAILER" } }, { - "at": "/query/prefix", - "optional": true, + "at": "/headers/content-encoding", + "optional": false, "rule": { "is": "equal", - "value": "" + "value": "aws-chunked" } }, { - "at": "/headers/content-type", - "optional": true, + "at": "/headers/x-amz-decoded-content-length", + "optional": false, "rule": { - "is": "one_of", - "values": [ - "application/xml", - "application/octet-stream", - "binary/octet-stream" - ] + "is": "equal", + "value": "9" } }, { - "at": "/query/encoding-type", + "at": "/headers/x-amz-trailer", "optional": false, "rule": { "is": "equal", - "value": "url" + "value": "x-amz-checksum-sha256" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { "status": 200, "headers": { - "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-etag\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-amz-request-id": "fixture-request-id" + "etag": "\"fixture-636b73750000\"", + "x-amz-checksum-crc32": "ItMTFg==", + "x-amz-checksum-type": "FULL_OBJECT" }, "body": { "encoding": "base64", - "data": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Zml4dHVyZTwvTmFtZT48UHJlZml4PjwvUHJlZml4PjxNYXhLZXlzPjEwMDA8L01heEtleXM+PEtleUNvdW50PjA8L0tleUNvdW50PjxFbmNvZGluZ1R5cGU+dXJsPC9FbmNvZGluZ1R5cGU+PElzVHJ1bmNhdGVkPmZhbHNlPC9Jc1RydW5jYXRlZD48L0xpc3RCdWNrZXRSZXN1bHQ+" - }, - "framing": "chunked" + "data": "" + } } } ] @@ -93594,27 +132151,43 @@ } }, { - "at": "/value/keys", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": [] + "value": "\"fixture-636b73750000\"" + } + }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] } } ], "refusal": null }, { - "id": "operations/s3/list-xml-escaped", + "id": "operations/s3/put-with-sha256", "profile": "s3", "lane": "core", - "purpose": "Read XML character references in listed names, such as & and <, or ask for encoding-type=url and decode the names", + "purpose": "Send a SHA256 checksum that the caller gives, in x-amz-checksum-sha256", "sources": [ - "https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html" + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html" ], "call": { - "op": "list", - "prefix": "" + "body_base64": "Y2hlY2tzdW0K", + "checksum": { + "algorithm": "sha256", + "value_base64": "YBWjp+qyV9PYdCTLkYJ9WLevegiRR86bT46jxfweu9I=" + }, + "key": "object-tests/checksums/sha256.txt", + "op": "put" }, "exchanges": [ { @@ -93626,82 +132199,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/query/list-type", - "optional": false, - "rule": { - "is": "equal", - "value": "2" - } - }, - { - "at": "/query/prefix", - "optional": true, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/headers/content-type", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - "application/xml", - "application/octet-stream", - "binary/octet-stream" - ] - } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - }, - "etag": "\"fixture-etag\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-amz-request-id": "fixture-request-id" - }, - "body": { - "encoding": "base64", - "data": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Zml4dHVyZTwvTmFtZT48UHJlZml4PjwvUHJlZml4PjxNYXhLZXlzPjEwMDA8L01heEtleXM+PEtleUNvdW50PjI8L0tleUNvdW50PjxJc1RydW5jYXRlZD5mYWxzZTwvSXNUcnVuY2F0ZWQ+PENvbnRlbnRzPjxLZXk+YSZhbXA7YjwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNC0wMS0wMVQwMDowMDowMC4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7Zml4dHVyZSZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb250ZW50cz48S2V5PmMmbHQ7ZDwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNC0wMS0wMVQwMDowMDowMC4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7Zml4dHVyZSZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjwvTGlzdEJ1Y2tldFJlc3VsdD4=" - }, - "framing": "chunked" - } - }, - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -93709,7 +132207,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/checksums/sha256.txt" } }, { @@ -93717,64 +132215,44 @@ "optional": false, "rule": { "is": "equal", - "value": "" - } - }, - { - "at": "/query/list-type", - "optional": false, - "rule": { - "is": "equal", - "value": "2" + "value": "Y2hlY2tzdW0K" } }, { - "at": "/query/prefix", + "at": "/headers/x-amz-sdk-checksum-algorithm", "optional": true, "rule": { "is": "equal", - "value": "" - } - }, - { - "at": "/headers/content-type", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - "application/xml", - "application/octet-stream", - "binary/octet-stream" - ] + "value": "SHA256" } }, { - "at": "/query/encoding-type", + "at": "/headers/x-amz-checksum-sha256", "optional": false, "rule": { "is": "equal", - "value": "url" + "value": "YBWjp+qyV9PYdCTLkYJ9WLevegiRR86bT46jxfweu9I=" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { "status": 200, "headers": { - "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-etag\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-amz-request-id": "fixture-request-id" + "etag": "\"fixture-636b73750000\"", + "x-amz-checksum-crc32": "ItMTFg==", + "x-amz-checksum-type": "FULL_OBJECT" }, "body": { "encoding": "base64", - "data": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Zml4dHVyZTwvTmFtZT48UHJlZml4PjwvUHJlZml4PjxNYXhLZXlzPjEwMDA8L01heEtleXM+PEtleUNvdW50PjI8L0tleUNvdW50PjxFbmNvZGluZ1R5cGU+dXJsPC9FbmNvZGluZ1R5cGU+PElzVHJ1bmNhdGVkPmZhbHNlPC9Jc1RydW5jYXRlZD48Q29udGVudHM+PEtleT5hJTI2YjwvS2V5PjxMYXN0TW9kaWZpZWQ+MjAyNC0wMS0wMVQwMDowMDowMC4wMDBaPC9MYXN0TW9kaWZpZWQ+PEVUYWc+JnF1b3Q7Zml4dHVyZSZxdW90OzwvRVRhZz48U2l6ZT41PC9TaXplPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb250ZW50cz48S2V5PmMlM0NkPC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTAxLTAxVDAwOjAwOjAwLjAwMFo8L0xhc3RNb2RpZmllZD48RVRhZz4mcXVvdDtmaXh0dXJlJnF1b3Q7PC9FVGFnPjxTaXplPjU8L1NpemU+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PC9MaXN0QnVja2V0UmVzdWx0Pg==" - }, - "framing": "chunked" + "data": "" + } } } ] @@ -93790,13 +132268,21 @@ } }, { - "at": "/value/keys", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": [ - "a&b", - "c\nfixtureobject-tests/names/101000falseobject-tests/names/100%-name.txt2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/names/a&b.txt2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/names/back\\slash.txt2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/names/café.txt2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/names/ctrl.txt2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/names/hash#tag.txt2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/names/percent%20.txt2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/names/plus+plus.txt2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/names/q?mark.txt2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/names/space name.txt2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARD" - }, - "framing": "chunked" + "encoding": "base64", + "data": "" + } } }, { @@ -93888,7 +132378,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -93896,7 +132386,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/checksums/sha1.txt" } }, { @@ -93904,31 +132394,47 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "OQ0KY2hlY2tzdW0KDQowDQp4LWFtei1jaGVja3N1bS1zaGExOkxsMnZBZ0hkNndhS1l0WGdqYUdHVjZzc2Eraz0NCg0K" } }, { - "at": "/query/list-type", + "at": "/headers/x-amz-sdk-checksum-algorithm", + "optional": true, + "rule": { + "is": "equal", + "value": "SHA1" + } + }, + { + "at": "/headers/x-amz-content-sha256", "optional": false, "rule": { "is": "equal", - "value": "2" + "value": "STREAMING-UNSIGNED-PAYLOAD-TRAILER" } }, { - "at": "/query/prefix", + "at": "/headers/content-encoding", "optional": false, "rule": { "is": "equal", - "value": "object-tests/names/" + "value": "aws-chunked" } }, { - "at": "/query/encoding-type", + "at": "/headers/x-amz-decoded-content-length", "optional": false, "rule": { "is": "equal", - "value": "url" + "value": "9" + } + }, + { + "at": "/headers/x-amz-trailer", + "optional": false, + "rule": { + "is": "equal", + "value": "x-amz-checksum-sha1" } } ], @@ -93939,17 +132445,17 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", "date": { "from": "now" }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + "etag": "\"fixture-636b73750000\"", + "x-amz-checksum-crc32": "ItMTFg==", + "x-amz-checksum-type": "FULL_OBJECT" }, "body": { - "encoding": "utf8", - "data": "\nfixtureobject-tests/names/101000urlfalseobject-tests/names/100%25-name.txt2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/names/a%26b.txt2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/names/back%5Cslash.txt2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/names/caf%C3%A9.txt2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/names/ctrl%01.txt2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/names/hash%23tag.txt2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/names/percent%2520.txt2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/names/plus%2Bplus.txt2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/names/q%3Fmark.txt2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/names/space+name.txt2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARD" - }, - "framing": "chunked" + "encoding": "base64", + "data": "" + } } } ] @@ -93965,498 +132471,15 @@ } }, { - "at": "/value/entries/0/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/names/100%-name.txt" - } - }, - { - "at": "/value/entries/0/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/0/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-6c30b210f0a8\"" - } - }, - { - "at": "/value/entries/0/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/0/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/0/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/1/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/names/a&b.txt" - } - }, - { - "at": "/value/entries/1/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/1/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-6c30b210f0a8\"" - } - }, - { - "at": "/value/entries/1/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/1/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/1/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/2/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/names/back\\slash.txt" - } - }, - { - "at": "/value/entries/2/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/2/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-6c30b210f0a8\"" - } - }, - { - "at": "/value/entries/2/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/2/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/2/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/3/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/names/café.txt" - } - }, - { - "at": "/value/entries/3/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/3/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-6c30b210f0a8\"" - } - }, - { - "at": "/value/entries/3/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/3/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/3/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/4/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/names/ctrl\u0001.txt" - } - }, - { - "at": "/value/entries/4/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/4/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-6c30b210f0a8\"" - } - }, - { - "at": "/value/entries/4/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/4/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/4/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/5/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/names/hash#tag.txt" - } - }, - { - "at": "/value/entries/5/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/5/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-6c30b210f0a8\"" - } - }, - { - "at": "/value/entries/5/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/5/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/5/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/6/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/names/percent%20.txt" - } - }, - { - "at": "/value/entries/6/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/6/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-6c30b210f0a8\"" - } - }, - { - "at": "/value/entries/6/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/6/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/6/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/7/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/names/plus+plus.txt" - } - }, - { - "at": "/value/entries/7/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/7/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-6c30b210f0a8\"" - } - }, - { - "at": "/value/entries/7/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/7/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/7/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/8/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/names/q?mark.txt" - } - }, - { - "at": "/value/entries/8/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/8/etag", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-6c30b210f0a8\"" - } - }, - { - "at": "/value/entries/8/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "value": "\"fixture-636b73750000\"" } }, { - "at": "/value/entries/8/version", + "at": "/value/version", "optional": true, "rule": { "is": "one_of", @@ -94465,55 +132488,115 @@ "" ] } + } + ], + "refusal": null + }, + { + "id": "operations/s3/put-with-sha1", + "profile": "s3", + "lane": "core", + "purpose": "Send a SHA1 checksum that the caller gives, in x-amz-checksum-sha1", + "sources": [ + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html" + ], + "call": { + "body_base64": "Y2hlY2tzdW0K", + "checksum": { + "algorithm": "sha1", + "value_base64": "Ll2vAgHd6waKYtXgjaGGV6ssa+k=" }, + "key": "object-tests/checksums/sha1.txt", + "op": "put" + }, + "exchanges": [ { - "at": "/value/entries/8/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/9/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/names/space name.txt" - } - }, + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/checksums/sha1.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "Y2hlY2tzdW0K" + } + }, + { + "at": "/headers/x-amz-sdk-checksum-algorithm", + "optional": true, + "rule": { + "is": "equal", + "value": "SHA1" + } + }, + { + "at": "/headers/x-amz-checksum-sha1", + "optional": false, + "rule": { + "is": "equal", + "value": "Ll2vAgHd6waKYtXgjaGGV6ssa+k=" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "date": { + "from": "now" + }, + "etag": "\"fixture-636b73750000\"", + "x-amz-checksum-crc32": "ItMTFg==", + "x-amz-checksum-type": "FULL_OBJECT" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ { - "at": "/value/entries/9/size", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": 1 + "value": "ok" } }, { - "at": "/value/entries/9/etag", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-6c30b210f0a8\"" - } - }, - { - "at": "/value/entries/9/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "value": "\"fixture-636b73750000\"" } }, { - "at": "/value/entries/9/version", + "at": "/value/version", "optional": true, "rule": { "is": "one_of", @@ -94522,57 +132605,25 @@ "" ] } - }, - { - "at": "/value/entries/9/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries", - "optional": false, - "rule": { - "is": "array_length", - "value": 10 - } - }, - { - "at": "/value/prefixes", - "optional": false, - "rule": { - "is": "array_length", - "value": 0 - } - }, - { - "at": "/value/continuation_token", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } } ], "refusal": null }, { - "id": "operations/s3/list-first-page", + "id": "operations/s3/put-computing-crc64nvme", "profile": "s3", "lane": "core", - "purpose": "Send page_size as max-keys, and report a truncated page's NextContinuationToken as the continuation token", + "purpose": "Compute the CRC64NVME checksum of the body and send it, base64 of its big-endian bytes, in x-amz-checksum-crc64nvme or in a trailer of an aws-chunked body", "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html" ], "call": { - "op": "list_page", - "page_size": 2, - "prefix": "object-tests/board/" + "body_base64": "Y2hlY2tzdW0K", + "checksum": { + "algorithm": "crc64nvme" + }, + "key": "object-tests/checksums/crc64nvme.txt", + "op": "put" }, "exchanges": [ { @@ -94584,7 +132635,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -94592,7 +132643,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/checksums/crc64nvme.txt" } }, { @@ -94600,31 +132651,23 @@ "optional": false, "rule": { "is": "equal", - "value": "" - } - }, - { - "at": "/query/list-type", - "optional": false, - "rule": { - "is": "equal", - "value": "2" + "value": "Y2hlY2tzdW0K" } }, { - "at": "/query/prefix", - "optional": false, + "at": "/headers/x-amz-sdk-checksum-algorithm", + "optional": true, "rule": { "is": "equal", - "value": "object-tests/board/" + "value": "CRC64NVME" } }, { - "at": "/query/max-keys", + "at": "/headers/x-amz-checksum-crc64nvme", "optional": false, "rule": { "is": "equal", - "value": "2" + "value": "XGkNQVJiTLw=" } } ], @@ -94635,17 +132678,17 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", "date": { "from": "now" }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + "etag": "\"fixture-636b73750000\"", + "x-amz-checksum-crc32": "ItMTFg==", + "x-amz-checksum-type": "FULL_OBJECT" }, "body": { - "encoding": "utf8", - "data": "\nfixtureobject-tests/board/fixture-marker+/e389f71e4c3c=22trueobject-tests/board/a.txt2024-01-01T00:00:00.000Z"fixture-1d83e6eb69df"CRC64NVMEFULL_OBJECT8STANDARDobject-tests/board/nested/c.txt2024-01-01T00:00:00.000Z"fixture-a1cfb9bcbc61"CRC64NVMEFULL_OBJECT1STANDARD" - }, - "framing": "chunked" + "encoding": "base64", + "data": "" + } } }, { @@ -94655,7 +132698,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -94663,7 +132706,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/checksums/crc64nvme.txt" } }, { @@ -94671,39 +132714,47 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "OQ0KY2hlY2tzdW0KDQowDQp4LWFtei1jaGVja3N1bS1jcmM2NG52bWU6WEdrTlFWSmlUTHc9DQoNCg==" } }, { - "at": "/query/list-type", + "at": "/headers/x-amz-sdk-checksum-algorithm", + "optional": true, + "rule": { + "is": "equal", + "value": "CRC64NVME" + } + }, + { + "at": "/headers/x-amz-content-sha256", "optional": false, "rule": { "is": "equal", - "value": "2" + "value": "STREAMING-UNSIGNED-PAYLOAD-TRAILER" } }, { - "at": "/query/prefix", + "at": "/headers/content-encoding", "optional": false, "rule": { "is": "equal", - "value": "object-tests/board/" + "value": "aws-chunked" } }, { - "at": "/query/max-keys", + "at": "/headers/x-amz-decoded-content-length", "optional": false, "rule": { "is": "equal", - "value": "2" + "value": "9" } }, { - "at": "/query/encoding-type", + "at": "/headers/x-amz-trailer", "optional": false, "rule": { "is": "equal", - "value": "url" + "value": "x-amz-checksum-crc64nvme" } } ], @@ -94714,17 +132765,17 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", "date": { "from": "now" }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + "etag": "\"fixture-636b73750000\"", + "x-amz-checksum-crc32": "ItMTFg==", + "x-amz-checksum-type": "FULL_OBJECT" }, "body": { - "encoding": "utf8", - "data": "\nfixtureobject-tests/board/fixture-marker+/e389f71e4c3c=22urltrueobject-tests/board/a.txt2024-01-01T00:00:00.000Z"fixture-1d83e6eb69df"CRC64NVMEFULL_OBJECT8STANDARDobject-tests/board/nested/c.txt2024-01-01T00:00:00.000Z"fixture-a1cfb9bcbc61"CRC64NVMEFULL_OBJECT1STANDARD" - }, - "framing": "chunked" + "encoding": "base64", + "data": "" + } } } ] @@ -94740,42 +132791,15 @@ } }, { - "at": "/value/entries/0/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/board/a.txt" - } - }, - { - "at": "/value/entries/0/size", - "optional": false, - "rule": { - "is": "equal", - "value": 8 - } - }, - { - "at": "/value/entries/0/etag", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-1d83e6eb69df\"" - } - }, - { - "at": "/value/entries/0/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "value": "\"fixture-636b73750000\"" } }, { - "at": "/value/entries/0/version", + "at": "/value/version", "optional": true, "rule": { "is": "one_of", @@ -94784,55 +132808,115 @@ "" ] } + } + ], + "refusal": null + }, + { + "id": "operations/s3/put-with-crc64nvme", + "profile": "s3", + "lane": "core", + "purpose": "Send a CRC64NVME checksum that the caller gives, in x-amz-checksum-crc64nvme", + "sources": [ + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html" + ], + "call": { + "body_base64": "Y2hlY2tzdW0K", + "checksum": { + "algorithm": "crc64nvme", + "value_base64": "XGkNQVJiTLw=" }, + "key": "object-tests/checksums/crc64nvme.txt", + "op": "put" + }, + "exchanges": [ { - "at": "/value/entries/0/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/1/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/board/nested/c.txt" - } - }, + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/checksums/crc64nvme.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "Y2hlY2tzdW0K" + } + }, + { + "at": "/headers/x-amz-sdk-checksum-algorithm", + "optional": true, + "rule": { + "is": "equal", + "value": "CRC64NVME" + } + }, + { + "at": "/headers/x-amz-checksum-crc64nvme", + "optional": false, + "rule": { + "is": "equal", + "value": "XGkNQVJiTLw=" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "date": { + "from": "now" + }, + "etag": "\"fixture-636b73750000\"", + "x-amz-checksum-crc32": "ItMTFg==", + "x-amz-checksum-type": "FULL_OBJECT" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ { - "at": "/value/entries/1/size", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": 1 + "value": "ok" } }, { - "at": "/value/entries/1/etag", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-a1cfb9bcbc61\"" - } - }, - { - "at": "/value/entries/1/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "value": "\"fixture-636b73750000\"" } }, { - "at": "/value/entries/1/version", + "at": "/value/version", "optional": true, "rule": { "is": "one_of", @@ -94841,56 +132925,229 @@ "" ] } + } + ], + "refusal": null + }, + { + "id": "operations/s3/put-computing-crc32c", + "profile": "s3", + "lane": "core", + "purpose": "Compute the CRC32C checksum of the body and send it, base64 of its big-endian bytes, in x-amz-checksum-crc32c or in a trailer of an aws-chunked body", + "sources": [ + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html" + ], + "call": { + "body_base64": "Y2hlY2tzdW0K", + "checksum": { + "algorithm": "crc32c" }, + "key": "object-tests/checksums/crc32c.txt", + "op": "put" + }, + "exchanges": [ { - "at": "/value/entries/1/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/checksums/crc32c.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "Y2hlY2tzdW0K" + } + }, + { + "at": "/headers/x-amz-sdk-checksum-algorithm", + "optional": true, + "rule": { + "is": "equal", + "value": "CRC32C" + } + }, + { + "at": "/headers/x-amz-checksum-crc32c", + "optional": false, + "rule": { + "is": "equal", + "value": "6dErUA==" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "date": { + "from": "now" + }, + "etag": "\"fixture-636b73750000\"", + "x-amz-checksum-crc32": "ItMTFg==", + "x-amz-checksum-type": "FULL_OBJECT" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + }, + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/checksums/crc32c.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "OQ0KY2hlY2tzdW0KDQowDQp4LWFtei1jaGVja3N1bS1jcmMzMmM6NmRFclVBPT0NCg0K" + } + }, + { + "at": "/headers/x-amz-sdk-checksum-algorithm", + "optional": true, + "rule": { + "is": "equal", + "value": "CRC32C" + } + }, + { + "at": "/headers/x-amz-content-sha256", + "optional": false, + "rule": { + "is": "equal", + "value": "STREAMING-UNSIGNED-PAYLOAD-TRAILER" + } + }, + { + "at": "/headers/content-encoding", + "optional": false, + "rule": { + "is": "equal", + "value": "aws-chunked" + } + }, + { + "at": "/headers/x-amz-decoded-content-length", + "optional": false, + "rule": { + "is": "equal", + "value": "9" + } + }, + { + "at": "/headers/x-amz-trailer", + "optional": false, + "rule": { + "is": "equal", + "value": "x-amz-checksum-crc32c" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "date": { + "from": "now" + }, + "etag": "\"fixture-636b73750000\"", + "x-amz-checksum-crc32": "ItMTFg==", + "x-amz-checksum-type": "FULL_OBJECT" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ { - "at": "/value/entries", + "at": "/outcome", "optional": false, "rule": { - "is": "array_length", - "value": 2 + "is": "equal", + "value": "ok" } }, { - "at": "/value/prefixes", + "at": "/value/etag", "optional": false, "rule": { - "is": "array_length", - "value": 0 + "is": "equal", + "value": "\"fixture-636b73750000\"" } }, { - "at": "/value/continuation_token", - "optional": false, + "at": "/value/version", + "optional": true, "rule": { - "is": "equal", - "value": "fixture-marker+/e389f71e4c3c=" + "is": "one_of", + "values": [ + null, + "" + ] } } ], "refusal": null }, { - "id": "operations/s3/list-buckets", + "id": "operations/s3/put-with-crc32c", "profile": "s3", "lane": "core", - "purpose": "List the buckets whose names start with a prefix", + "purpose": "Send a CRC32C checksum that the caller gives, in x-amz-checksum-crc32c", "sources": [ - "https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBuckets.html" + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html" ], "call": { - "op": "s3.list_buckets", - "prefix": "object-tests-listed-" + "body_base64": "Y2hlY2tzdW0K", + "checksum": { + "algorithm": "crc32c", + "value_base64": "6dErUA==" + }, + "key": "object-tests/checksums/crc32c.txt", + "op": "put" }, "exchanges": [ { @@ -94902,7 +133159,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -94910,7 +133167,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/" + "value": "/fixture/object-tests/checksums/crc32c.txt" } }, { @@ -94918,15 +133175,23 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "Y2hlY2tzdW0K" } }, { - "at": "/query/prefix", + "at": "/headers/x-amz-sdk-checksum-algorithm", + "optional": true, + "rule": { + "is": "equal", + "value": "CRC32C" + } + }, + { + "at": "/headers/x-amz-checksum-crc32c", "optional": false, "rule": { "is": "equal", - "value": "object-tests-listed-" + "value": "6dErUA==" } } ], @@ -94937,16 +133202,17 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", "date": { "from": "now" - } + }, + "etag": "\"fixture-636b73750000\"", + "x-amz-checksum-crc32": "ItMTFg==", + "x-amz-checksum-type": "FULL_OBJECT" }, "body": { - "encoding": "utf8", - "data": "\nfixture-ownerobject-tests-listed-a2024-01-01T00:00:00.000Zeu-central-1object-tests-listed-b2024-01-01T00:00:00.000Zeu-central-1object-tests-listed-" - }, - "framing": "chunked" + "encoding": "base64", + "data": "" + } } } ] @@ -94962,13 +133228,21 @@ } }, { - "at": "/value/buckets", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": [ - "object-tests-listed-a", - "object-tests-listed-b" + "value": "\"fixture-636b73750000\"" + } + }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" ] } } @@ -94976,18 +133250,20 @@ "refusal": null }, { - "id": "operations/s3/list-service-unavailable", + "id": "operations/s3/put-computing-crc32", "profile": "s3", "lane": "core", - "purpose": "Report a 503 ServiceUnavailable answer as an error, after at most 5 retries", + "purpose": "Compute the CRC32 checksum of the body and send it, base64 of its big-endian bytes, in x-amz-checksum-crc32 or in a trailer of an aws-chunked body", "sources": [ - "https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html" + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html" ], - "origin": "transient", "call": { - "op": "list_page", - "page_size": 2, - "prefix": "object-tests/board/" + "body_base64": "Y2hlY2tzdW0K", + "checksum": { + "algorithm": "crc32" + }, + "key": "object-tests/checksums/crc32.txt", + "op": "put" }, "exchanges": [ { @@ -94999,7 +133275,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -95007,7 +133283,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/checksums/crc32.txt" } }, { @@ -95015,31 +133291,23 @@ "optional": false, "rule": { "is": "equal", - "value": "" - } - }, - { - "at": "/query/list-type", - "optional": false, - "rule": { - "is": "equal", - "value": "2" + "value": "Y2hlY2tzdW0K" } }, { - "at": "/query/prefix", - "optional": false, + "at": "/headers/x-amz-sdk-checksum-algorithm", + "optional": true, "rule": { "is": "equal", - "value": "object-tests/board/" + "value": "CRC32" } }, { - "at": "/query/max-keys", + "at": "/headers/x-amz-checksum-crc32", "optional": false, "rule": { "is": "equal", - "value": "2" + "value": "ItMTFg==" } } ], @@ -95048,18 +133316,19 @@ ], "allow_query": [], "response": { - "status": 503, + "status": 200, "headers": { - "content-type": "application/xml", "date": { "from": "now" - } + }, + "etag": "\"fixture-636b73750000\"", + "x-amz-checksum-crc32": "ItMTFg==", + "x-amz-checksum-type": "FULL_OBJECT" }, "body": { - "encoding": "utf8", - "data": "\nServiceUnavailablePlease reduce your request rate.fixture" - }, - "framing": "chunked" + "encoding": "base64", + "data": "" + } } }, { @@ -95069,7 +133338,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -95077,7 +133346,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/checksums/crc32.txt" } }, { @@ -95085,39 +133354,47 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "OQ0KY2hlY2tzdW0KDQowDQp4LWFtei1jaGVja3N1bS1jcmMzMjpJdE1URmc9PQ0KDQo=" } }, { - "at": "/query/list-type", + "at": "/headers/x-amz-sdk-checksum-algorithm", + "optional": true, + "rule": { + "is": "equal", + "value": "CRC32" + } + }, + { + "at": "/headers/x-amz-content-sha256", "optional": false, "rule": { "is": "equal", - "value": "2" + "value": "STREAMING-UNSIGNED-PAYLOAD-TRAILER" } }, { - "at": "/query/prefix", + "at": "/headers/content-encoding", "optional": false, "rule": { "is": "equal", - "value": "object-tests/board/" + "value": "aws-chunked" } }, { - "at": "/query/max-keys", + "at": "/headers/x-amz-decoded-content-length", "optional": false, "rule": { "is": "equal", - "value": "2" + "value": "9" } }, { - "at": "/query/encoding-type", + "at": "/headers/x-amz-trailer", "optional": false, "rule": { "is": "equal", - "value": "url" + "value": "x-amz-checksum-crc32" } } ], @@ -95126,22 +133403,79 @@ ], "allow_query": [], "response": { - "status": 503, + "status": 200, "headers": { - "content-type": "application/xml", "date": { "from": "now" - } + }, + "etag": "\"fixture-636b73750000\"", + "x-amz-checksum-crc32": "ItMTFg==", + "x-amz-checksum-type": "FULL_OBJECT" }, "body": { - "encoding": "utf8", - "data": "\nServiceUnavailablePlease reduce your request rate.fixture" - }, - "framing": "chunked" + "encoding": "base64", + "data": "" + } } } ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-636b73750000\"" + } }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + } + ], + "refusal": null + }, + { + "id": "operations/s3/put-two-checksums", + "profile": "s3", + "lane": "core", + "purpose": "Report S3's refusal of a write with two additional checksums; S3 keeps one checksum per object and answers 400 InvalidRequest to more than one x-amz-checksum- header", + "sources": [ + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html" + ], + "call": { + "body_base64": "Y2hlY2tzdW0K", + "checksums": [ + { + "algorithm": "crc32", + "value_base64": "ItMTFg==" + }, + { + "algorithm": "sha256", + "value_base64": "YBWjp+qyV9PYdCTLkYJ9WLevegiRR86bT46jxfweu9I=" + } + ], + "key": "object-tests/checksums/two.txt", + "op": "put" + }, + "exchanges": [ { "alternatives": [ { @@ -95151,7 +133485,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -95159,7 +133493,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/checksums/two.txt" } }, { @@ -95167,31 +133501,34 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "Y2hlY2tzdW0K" } }, { - "at": "/query/list-type", + "at": "/headers/x-amz-checksum-crc32", "optional": false, "rule": { "is": "equal", - "value": "2" + "value": "ItMTFg==" } }, { - "at": "/query/prefix", + "at": "/headers/x-amz-checksum-sha256", "optional": false, "rule": { "is": "equal", - "value": "object-tests/board/" + "value": "YBWjp+qyV9PYdCTLkYJ9WLevegiRR86bT46jxfweu9I=" } }, { - "at": "/query/max-keys", - "optional": false, + "at": "/headers/x-amz-sdk-checksum-algorithm", + "optional": true, "rule": { - "is": "equal", - "value": "2" + "is": "one_of", + "values": [ + "CRC32", + "SHA256" + ] } } ], @@ -95200,7 +133537,7 @@ ], "allow_query": [], "response": { - "status": 503, + "status": 400, "headers": { "content-type": "application/xml", "date": { @@ -95209,11 +133546,102 @@ }, "body": { "encoding": "utf8", - "data": "\nServiceUnavailablePlease reduce your request rate.fixture" + "data": "\nInvalidRequestExpecting a single x-amz-checksum- header. Multiple checksum Types are not allowed.fixturefixture" }, "framing": "chunked" } - }, + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 400 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "InvalidRequest" + } + } + ], + "refusal": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "refused" + } + }, + { + "at": "/kind", + "optional": false, + "rule": { + "is": "matches", + "pattern": ".+" + } + }, + { + "at": "/parameter", + "optional": false, + "rule": { + "is": "equal", + "value": "checksums" + } + }, + { + "at": "/status", + "optional": true, + "rule": { + "is": "equal", + "value": 400 + } + }, + { + "at": "/code", + "optional": true, + "rule": { + "is": "equal", + "value": "InvalidRequest" + } + } + ] + }, + { + "id": "operations/s3/put-with-tags", + "profile": "s3", + "lane": "core", + "purpose": "Write an object with tags", + "sources": [ + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html" + ], + "call": { + "body_base64": "Zmlyc3Q=", + "key": "object-tests/tags/object.txt", + "op": "put", + "tags": { + "project": "object-tests" + } + }, + "exchanges": [ + { + "alternatives": [ { "request": [ { @@ -95221,7 +133649,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -95229,7 +133657,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/tags/object.txt" } }, { @@ -95237,39 +133665,102 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "Zmlyc3Q=" } }, { - "at": "/query/list-type", + "at": "/headers/x-amz-tagging", "optional": false, "rule": { "is": "equal", - "value": "2" + "value": "project=object-tests" } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "date": { + "from": "now" + }, + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, + "body": { + "encoding": "empty" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + } + ], + "refusal": null + }, + { + "id": "operations/s3/put-with-tags-special-characters", + "profile": "s3", + "lane": "core", + "purpose": "Write an object with a tag that holds a space and each of + - = . _ : / @, percent-encoded in x-amz-tagging, so that S3 reads + as a plus and not a space", + "sources": [ + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html" + ], + "call": { + "body_base64": "Zmlyc3Q=", + "key": "object-tests/tags/object.txt", + "op": "put", + "tags": { + "a b+c-d=e.f_g:h/i@j": "k l+m-n=o.p_q:r/s@t" + } + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ { - "at": "/query/prefix", + "at": "/method", "optional": false, "rule": { "is": "equal", - "value": "object-tests/board/" + "value": "PUT" } }, { - "at": "/query/max-keys", + "at": "/path", "optional": false, "rule": { "is": "equal", - "value": "2" + "value": "/fixture/object-tests/tags/object.txt" } }, { - "at": "/query/encoding-type", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "url" + "value": "Zmlyc3Q=" + } + }, + { + "at": "/headers/x-amz-tagging", + "optional": false, + "rule": { + "is": "equal", + "value": "a%20b%2Bc-d%3De.f_g%3Ah%2Fi%40j=k%20l%2Bm-n%3Do.p_q%3Ar%2Fs%40t" } } ], @@ -95278,23 +133769,58 @@ ], "allow_query": [], "response": { - "status": 503, + "status": 200, "headers": { - "content-type": "application/xml", "date": { "from": "now" - } + }, + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nServiceUnavailablePlease reduce your request rate.fixture" - }, - "framing": "chunked" + "encoding": "empty" + } } } - ], - "optional": true - }, + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + } + ], + "refusal": null + }, + { + "id": "operations/s3/put-with-tags-duplicate-key", + "profile": "s3", + "lane": "core", + "purpose": "Report a write whose x-amz-tagging names one key twice as an error. A client may refuse it, or report it unsupported where its API cannot repeat a key", + "sources": [ + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html" + ], + "call": { + "body_base64": "Zmlyc3Q=", + "key": "object-tests/tags/object.txt", + "op": "put", + "tags": [ + { + "key": "project", + "value": "a" + }, + { + "key": "project", + "value": "b" + } + ] + }, + "exchanges": [ { "alternatives": [ { @@ -95304,7 +133830,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -95312,7 +133838,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/tags/object.txt" } }, { @@ -95320,31 +133846,15 @@ "optional": false, "rule": { "is": "equal", - "value": "" - } - }, - { - "at": "/query/list-type", - "optional": false, - "rule": { - "is": "equal", - "value": "2" - } - }, - { - "at": "/query/prefix", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/board/" + "value": "Zmlyc3Q=" } }, { - "at": "/query/max-keys", + "at": "/headers/x-amz-tagging", "optional": false, "rule": { "is": "equal", - "value": "2" + "value": "project=a&project=b" } } ], @@ -95353,7 +133863,7 @@ ], "allow_query": [], "response": { - "status": 503, + "status": 400, "headers": { "content-type": "application/xml", "date": { @@ -95362,11 +133872,99 @@ }, "body": { "encoding": "utf8", - "data": "\nServiceUnavailablePlease reduce your request rate.fixture" + "data": "\nInvalidArgumentFixture error" }, "framing": "chunked" } - }, + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 400 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "InvalidArgument" + } + } + ], + "refusal": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "refused" + } + }, + { + "at": "/kind", + "optional": false, + "rule": { + "is": "matches", + "pattern": ".+" + } + }, + { + "at": "/parameter", + "optional": false, + "rule": { + "is": "equal", + "value": "tags" + } + }, + { + "at": "/status", + "optional": true, + "rule": { + "is": "equal", + "value": 400 + } + }, + { + "at": "/code", + "optional": true, + "rule": { + "is": "equal", + "value": "InvalidArgument" + } + } + ], + "decline_permitted": true + }, + { + "id": "operations/s3/get-tagging", + "profile": "s3", + "lane": "core", + "purpose": "Read the tags of an object", + "sources": [ + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectTagging.html" + ], + "call": { + "key": "object-tests/tags/object.txt", + "op": "s3.get_tagging" + }, + "exchanges": [ + { + "alternatives": [ { "request": [ { @@ -95382,7 +133980,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/tags/object.txt" } }, { @@ -95394,35 +133992,11 @@ } }, { - "at": "/query/list-type", - "optional": false, - "rule": { - "is": "equal", - "value": "2" - } - }, - { - "at": "/query/prefix", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/board/" - } - }, - { - "at": "/query/max-keys", - "optional": false, - "rule": { - "is": "equal", - "value": "2" - } - }, - { - "at": "/query/encoding-type", + "at": "/query/tagging", "optional": false, "rule": { "is": "equal", - "value": "url" + "value": "" } } ], @@ -95431,7 +134005,7 @@ ], "allow_query": [], "response": { - "status": 503, + "status": 200, "headers": { "content-type": "application/xml", "date": { @@ -95440,14 +134014,49 @@ }, "body": { "encoding": "utf8", - "data": "\nServiceUnavailablePlease reduce your request rate.fixture" + "data": "\nprojectobject-tests" }, "framing": "chunked" } } - ], - "optional": true + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } }, + { + "at": "/value/tags", + "optional": false, + "rule": { + "is": "equal", + "value": { + "project": "object-tests" + } + } + } + ], + "refusal": null + }, + { + "id": "operations/s3/get-tagging-none", + "profile": "s3", + "lane": "core", + "purpose": "Report no tags for an object without any, which S3 answers with an empty TagSet", + "sources": [ + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectTagging.html" + ], + "call": { + "key": "object-tests/tags/object.txt", + "op": "s3.get_tagging" + }, + "exchanges": [ { "alternatives": [ { @@ -95465,7 +134074,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/tags/object.txt" } }, { @@ -95477,27 +134086,11 @@ } }, { - "at": "/query/list-type", - "optional": false, - "rule": { - "is": "equal", - "value": "2" - } - }, - { - "at": "/query/prefix", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/board/" - } - }, - { - "at": "/query/max-keys", + "at": "/query/tagging", "optional": false, "rule": { "is": "equal", - "value": "2" + "value": "" } } ], @@ -95506,7 +134099,7 @@ ], "allow_query": [], "response": { - "status": 503, + "status": 200, "headers": { "content-type": "application/xml", "date": { @@ -95515,11 +134108,52 @@ }, "body": { "encoding": "utf8", - "data": "\nServiceUnavailablePlease reduce your request rate.fixture" + "data": "\n" }, "framing": "chunked" } - }, + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/tags", + "optional": false, + "rule": { + "is": "equal", + "value": {} + } + } + ], + "refusal": null + }, + { + "id": "operations/s3/put-tagging", + "profile": "s3", + "lane": "core", + "purpose": "Replace the tags of an object", + "sources": [ + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectTagging.html" + ], + "call": { + "key": "object-tests/tags/object.txt", + "op": "s3.put_tagging", + "tags": { + "project": "object-tests" + } + }, + "exchanges": [ + { + "alternatives": [ { "request": [ { @@ -95527,7 +134161,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -95535,47 +134169,40 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" + "value": "/fixture/object-tests/tags/object.txt" } }, { - "at": "/query/list-type", + "at": "/body_text", "optional": false, "rule": { - "is": "equal", - "value": "2" + "is": "xml", + "value": "projectobject-tests" } }, { - "at": "/query/prefix", + "at": "/query/tagging", "optional": false, "rule": { "is": "equal", - "value": "object-tests/board/" + "value": "" } }, { - "at": "/query/max-keys", + "at": "/headers/x-amz-checksum-crc64nvme", "optional": false, "rule": { - "is": "equal", - "value": "2" + "is": "matches", + "pattern": "[A-Za-z0-9+/]{11}=" } }, { - "at": "/query/encoding-type", + "at": "", "optional": false, "rule": { - "is": "equal", - "value": "url" + "is": "body_checksum", + "header": "x-amz-checksum-crc64nvme", + "algorithm": "crc64nvme" } } ], @@ -95584,23 +134211,57 @@ ], "allow_query": [], "response": { - "status": 503, + "status": 200, "headers": { - "content-type": "application/xml", "date": { "from": "now" } }, "body": { - "encoding": "utf8", - "data": "\nServiceUnavailablePlease reduce your request rate.fixture" - }, - "framing": "chunked" + "encoding": "empty" + } } } - ], - "optional": true - }, + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + } + ], + "refusal": null + }, + { + "id": "operations/s3/put-tagging-10-tags", + "profile": "s3", + "lane": "core", + "purpose": "Set 10 tags, the most an object takes", + "sources": [ + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectTagging.html" + ], + "call": { + "key": "object-tests/tags/object.txt", + "op": "s3.put_tagging", + "tags": { + "tag00": "value0", + "tag01": "value1", + "tag02": "value2", + "tag03": "value3", + "tag04": "value4", + "tag05": "value5", + "tag06": "value6", + "tag07": "value7", + "tag08": "value8", + "tag09": "value9" + } + }, + "exchanges": [ { "alternatives": [ { @@ -95610,7 +134271,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -95618,39 +134279,40 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/tags/object.txt" } }, { - "at": "/body_base64", + "at": "/body_text", "optional": false, "rule": { - "is": "equal", - "value": "" + "is": "xml", + "value": "tag00value0tag01value1tag02value2tag03value3tag04value4tag05value5tag06value6tag07value7tag08value8tag09value9" } }, { - "at": "/query/list-type", + "at": "/query/tagging", "optional": false, "rule": { "is": "equal", - "value": "2" + "value": "" } }, { - "at": "/query/prefix", + "at": "/headers/x-amz-checksum-crc64nvme", "optional": false, "rule": { - "is": "equal", - "value": "object-tests/board/" + "is": "matches", + "pattern": "[A-Za-z0-9+/]{11}=" } }, { - "at": "/query/max-keys", + "at": "", "optional": false, "rule": { - "is": "equal", - "value": "2" + "is": "body_checksum", + "header": "x-amz-checksum-crc64nvme", + "algorithm": "crc64nvme" } } ], @@ -95659,20 +134321,60 @@ ], "allow_query": [], "response": { - "status": 503, + "status": 200, "headers": { - "content-type": "application/xml", "date": { "from": "now" } }, "body": { - "encoding": "utf8", - "data": "\nServiceUnavailablePlease reduce your request rate.fixture" - }, - "framing": "chunked" + "encoding": "empty" + } } - }, + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + } + ], + "refusal": null + }, + { + "id": "operations/s3/put-tagging-11-tags", + "profile": "s3", + "lane": "core", + "purpose": "Report 11 tags, one more than an object takes, as an error. A client may refuse them", + "sources": [ + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectTagging.html" + ], + "call": { + "key": "object-tests/tags/object.txt", + "op": "s3.put_tagging", + "tags": { + "tag00": "value0", + "tag01": "value1", + "tag02": "value2", + "tag03": "value3", + "tag04": "value4", + "tag05": "value5", + "tag06": "value6", + "tag07": "value7", + "tag08": "value8", + "tag09": "value9", + "tag10": "value10" + } + }, + "exchanges": [ + { + "alternatives": [ { "request": [ { @@ -95680,7 +134382,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -95688,47 +134390,40 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" + "value": "/fixture/object-tests/tags/object.txt" } }, { - "at": "/query/list-type", + "at": "/body_text", "optional": false, "rule": { - "is": "equal", - "value": "2" + "is": "xml", + "value": "tag00value0tag01value1tag02value2tag03value3tag04value4tag05value5tag06value6tag07value7tag08value8tag09value9tag10value10" } }, { - "at": "/query/prefix", + "at": "/query/tagging", "optional": false, "rule": { "is": "equal", - "value": "object-tests/board/" + "value": "" } }, { - "at": "/query/max-keys", + "at": "/headers/x-amz-checksum-crc64nvme", "optional": false, "rule": { - "is": "equal", - "value": "2" + "is": "matches", + "pattern": "[A-Za-z0-9+/]{11}=" } }, { - "at": "/query/encoding-type", + "at": "", "optional": false, "rule": { - "is": "equal", - "value": "url" + "is": "body_checksum", + "header": "x-amz-checksum-crc64nvme", + "algorithm": "crc64nvme" } } ], @@ -95737,7 +134432,7 @@ ], "allow_query": [], "response": { - "status": 503, + "status": 400, "headers": { "content-type": "application/xml", "date": { @@ -95746,14 +134441,99 @@ }, "body": { "encoding": "utf8", - "data": "\nServiceUnavailablePlease reduce your request rate.fixture" + "data": "\nBadRequestFixture error" }, "framing": "chunked" } } - ], - "optional": true + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 400 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "BadRequest" + } + } + ], + "refusal": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "refused" + } + }, + { + "at": "/kind", + "optional": false, + "rule": { + "is": "matches", + "pattern": ".+" + } + }, + { + "at": "/parameter", + "optional": false, + "rule": { + "is": "equal", + "value": "tags" + } + }, + { + "at": "/status", + "optional": true, + "rule": { + "is": "equal", + "value": 400 + } }, + { + "at": "/code", + "optional": true, + "rule": { + "is": "equal", + "value": "BadRequest" + } + } + ] + }, + { + "id": "operations/s3/put-tagging-key-128", + "profile": "s3", + "lane": "core", + "purpose": "Set a tag whose key has 128 characters, the longest a key may be", + "sources": [ + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectTagging.html" + ], + "call": { + "key": "object-tests/tags/object.txt", + "op": "s3.put_tagging", + "tags": { + "kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk": "v" + } + }, + "exchanges": [ { "alternatives": [ { @@ -95763,7 +134543,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -95771,39 +134551,40 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/tags/object.txt" } }, { - "at": "/body_base64", + "at": "/body_text", "optional": false, "rule": { - "is": "equal", - "value": "" + "is": "xml", + "value": "kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkv" } }, { - "at": "/query/list-type", + "at": "/query/tagging", "optional": false, "rule": { "is": "equal", - "value": "2" + "value": "" } }, { - "at": "/query/prefix", + "at": "/headers/x-amz-checksum-crc64nvme", "optional": false, "rule": { - "is": "equal", - "value": "object-tests/board/" + "is": "matches", + "pattern": "[A-Za-z0-9+/]{11}=" } }, { - "at": "/query/max-keys", + "at": "", "optional": false, "rule": { - "is": "equal", - "value": "2" + "is": "body_checksum", + "header": "x-amz-checksum-crc64nvme", + "algorithm": "crc64nvme" } } ], @@ -95812,20 +134593,50 @@ ], "allow_query": [], "response": { - "status": 503, + "status": 200, "headers": { - "content-type": "application/xml", "date": { "from": "now" } }, "body": { - "encoding": "utf8", - "data": "\nServiceUnavailablePlease reduce your request rate.fixture" - }, - "framing": "chunked" + "encoding": "empty" + } } - }, + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + } + ], + "refusal": null + }, + { + "id": "operations/s3/put-tagging-key-129", + "profile": "s3", + "lane": "core", + "purpose": "Report a tag key of 129 characters, one more than a key may have, as an error. A client may refuse it", + "sources": [ + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectTagging.html" + ], + "call": { + "key": "object-tests/tags/object.txt", + "op": "s3.put_tagging", + "tags": { + "kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk": "v" + } + }, + "exchanges": [ + { + "alternatives": [ { "request": [ { @@ -95833,7 +134644,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -95841,47 +134652,40 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" + "value": "/fixture/object-tests/tags/object.txt" } }, { - "at": "/query/list-type", + "at": "/body_text", "optional": false, "rule": { - "is": "equal", - "value": "2" + "is": "xml", + "value": "kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkv" } }, { - "at": "/query/prefix", + "at": "/query/tagging", "optional": false, "rule": { "is": "equal", - "value": "object-tests/board/" + "value": "" } }, { - "at": "/query/max-keys", + "at": "/headers/x-amz-checksum-crc64nvme", "optional": false, "rule": { - "is": "equal", - "value": "2" + "is": "matches", + "pattern": "[A-Za-z0-9+/]{11}=" } }, { - "at": "/query/encoding-type", + "at": "", "optional": false, "rule": { - "is": "equal", - "value": "url" + "is": "body_checksum", + "header": "x-amz-checksum-crc64nvme", + "algorithm": "crc64nvme" } } ], @@ -95890,7 +134694,7 @@ ], "allow_query": [], "response": { - "status": 503, + "status": 400, "headers": { "content-type": "application/xml", "date": { @@ -95899,13 +134703,12 @@ }, "body": { "encoding": "utf8", - "data": "\nServiceUnavailablePlease reduce your request rate.fixture" + "data": "\nInvalidTagFixture error" }, "framing": "chunked" } } - ], - "optional": true + ] } ], "expect": [ @@ -95922,7 +134725,7 @@ "optional": false, "rule": { "is": "equal", - "value": 503 + "value": 400 } }, { @@ -95930,24 +134733,67 @@ "optional": false, "rule": { "is": "equal", - "value": "ServiceUnavailable" + "value": "InvalidTag" } } ], - "refusal": null + "refusal": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "refused" + } + }, + { + "at": "/kind", + "optional": false, + "rule": { + "is": "matches", + "pattern": ".+" + } + }, + { + "at": "/parameter", + "optional": false, + "rule": { + "is": "equal", + "value": "tags" + } + }, + { + "at": "/status", + "optional": true, + "rule": { + "is": "equal", + "value": 400 + } + }, + { + "at": "/code", + "optional": true, + "rule": { + "is": "equal", + "value": "InvalidTag" + } + } + ] }, { - "id": "operations/s3/list-key-equal-to-prefix-delimited", + "id": "operations/s3/put-tagging-value-256", "profile": "s3", "lane": "core", - "purpose": "Report a key that equals the prefix as an entry, and the keys under it as a common prefix", + "purpose": "Set a tag whose value has 256 characters, the longest a value may be", "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectTagging.html" ], "call": { - "delimiter": "/", - "op": "list_page", - "prefix": "object-tests/exact" + "key": "object-tests/tags/object.txt", + "op": "s3.put_tagging", + "tags": { + "k": "vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv" + } }, "exchanges": [ { @@ -95959,7 +134805,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -95967,39 +134813,40 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/tags/object.txt" } }, { - "at": "/body_base64", + "at": "/body_text", "optional": false, "rule": { - "is": "equal", - "value": "" + "is": "xml", + "value": "kvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv" } }, { - "at": "/query/list-type", + "at": "/query/tagging", "optional": false, "rule": { "is": "equal", - "value": "2" + "value": "" } }, { - "at": "/query/prefix", + "at": "/headers/x-amz-checksum-crc64nvme", "optional": false, "rule": { - "is": "equal", - "value": "object-tests/exact" + "is": "matches", + "pattern": "[A-Za-z0-9+/]{11}=" } }, { - "at": "/query/delimiter", + "at": "", "optional": false, "rule": { - "is": "equal", - "value": "/" + "is": "body_checksum", + "header": "x-amz-checksum-crc64nvme", + "algorithm": "crc64nvme" } } ], @@ -96010,19 +134857,48 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", "date": { "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { - "encoding": "utf8", - "data": "\nfixtureobject-tests/exact21000/falseobject-tests/exact2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/exact/" - }, - "framing": "chunked" + "encoding": "empty" + } } - }, + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + } + ], + "refusal": null + }, + { + "id": "operations/s3/put-tagging-value-257", + "profile": "s3", + "lane": "core", + "purpose": "Report a tag value of 257 characters, one more than a value may have, as an error. A client may refuse it", + "sources": [ + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectTagging.html" + ], + "call": { + "key": "object-tests/tags/object.txt", + "op": "s3.put_tagging", + "tags": { + "k": "vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv" + } + }, + "exchanges": [ + { + "alternatives": [ { "request": [ { @@ -96030,7 +134906,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -96038,47 +134914,40 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" + "value": "/fixture/object-tests/tags/object.txt" } }, { - "at": "/query/list-type", + "at": "/body_text", "optional": false, "rule": { - "is": "equal", - "value": "2" + "is": "xml", + "value": "kvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv" } }, { - "at": "/query/prefix", + "at": "/query/tagging", "optional": false, "rule": { "is": "equal", - "value": "object-tests/exact" + "value": "" } }, { - "at": "/query/delimiter", + "at": "/headers/x-amz-checksum-crc64nvme", "optional": false, "rule": { - "is": "equal", - "value": "/" + "is": "matches", + "pattern": "[A-Za-z0-9+/]{11}=" } }, { - "at": "/query/encoding-type", + "at": "", "optional": false, "rule": { - "is": "equal", - "value": "url" + "is": "body_checksum", + "header": "x-amz-checksum-crc64nvme", + "algorithm": "crc64nvme" } } ], @@ -96087,17 +134956,16 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 400, "headers": { "content-type": "application/xml", "date": { "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { "encoding": "utf8", - "data": "\nfixtureobject-tests/exact21000/urlfalseobject-tests/exact2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/exact/" + "data": "\nInvalidTagFixture error" }, "framing": "chunked" } @@ -96111,112 +134979,83 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "error" } }, { - "at": "/value/entries/0/key", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "object-tests/exact" + "value": 400 } }, { - "at": "/value/entries/0/size", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": 1 + "value": "InvalidTag" } - }, + } + ], + "refusal": [ { - "at": "/value/entries/0/etag", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-6c30b210f0a8\"" - } - }, - { - "at": "/value/entries/0/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/0/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/0/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] + "value": "refused" } }, { - "at": "/value/entries", + "at": "/kind", "optional": false, "rule": { - "is": "array_length", - "value": 1 + "is": "matches", + "pattern": ".+" } }, { - "at": "/value/prefixes/0", + "at": "/parameter", "optional": false, "rule": { "is": "equal", - "value": "object-tests/exact/" + "value": "tags" } }, { - "at": "/value/prefixes", - "optional": false, + "at": "/status", + "optional": true, "rule": { - "is": "array_length", - "value": 1 + "is": "equal", + "value": 400 } }, { - "at": "/value/continuation_token", - "optional": false, + "at": "/code", + "optional": true, "rule": { "is": "equal", - "value": "" + "value": "InvalidTag" } } - ], - "refusal": null + ] }, { - "id": "operations/s3/list-key-equal-to-prefix", + "id": "operations/s3/put-tagging-special-characters", "profile": "s3", "lane": "core", - "purpose": "Report a key that equals the prefix as an entry", + "purpose": "Set a tag with a space and each of + - = . _ : / @, which S3 allows, escaped as XML text", "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectTagging.html" ], "call": { - "op": "list_page", - "prefix": "object-tests/exact" + "key": "object-tests/tags/object.txt", + "op": "s3.put_tagging", + "tags": { + "a b+c-d=e.f_g:h/i@j": "k l+m-n=o.p_q:r/s@t" + } }, "exchanges": [ { @@ -96228,7 +135067,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -96236,11 +135075,19 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/tags/object.txt" } }, { - "at": "/body_base64", + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "a b+c-d=e.f_g:h/i@jk l+m-n=o.p_q:r/s@t" + } + }, + { + "at": "/query/tagging", "optional": false, "rule": { "is": "equal", @@ -96248,19 +135095,20 @@ } }, { - "at": "/query/list-type", + "at": "/headers/x-amz-checksum-crc64nvme", "optional": false, "rule": { - "is": "equal", - "value": "2" + "is": "matches", + "pattern": "[A-Za-z0-9+/]{11}=" } }, { - "at": "/query/prefix", + "at": "", "optional": false, "rule": { - "is": "equal", - "value": "object-tests/exact" + "is": "body_checksum", + "header": "x-amz-checksum-crc64nvme", + "algorithm": "crc64nvme" } } ], @@ -96271,19 +135119,48 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", "date": { "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { - "encoding": "utf8", - "data": "\nfixtureobject-tests/exact21000falseobject-tests/exact2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/exact/child2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARD" - }, - "framing": "chunked" + "encoding": "empty" + } } - }, + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + } + ], + "refusal": null + }, + { + "id": "operations/s3/put-tagging-invalid-character", + "profile": "s3", + "lane": "core", + "purpose": "Report a tag key with !, which S3 does not allow, as an error. A client may refuse it", + "sources": [ + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectTagging.html" + ], + "call": { + "key": "object-tests/tags/object.txt", + "op": "s3.put_tagging", + "tags": { + "a!b": "c" + } + }, + "exchanges": [ + { + "alternatives": [ { "request": [ { @@ -96291,7 +135168,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -96299,39 +135176,40 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/tags/object.txt" } }, { - "at": "/body_base64", + "at": "/body_text", "optional": false, "rule": { - "is": "equal", - "value": "" + "is": "xml", + "value": "a!bc" } }, { - "at": "/query/list-type", + "at": "/query/tagging", "optional": false, "rule": { "is": "equal", - "value": "2" + "value": "" } }, { - "at": "/query/prefix", + "at": "/headers/x-amz-checksum-crc64nvme", "optional": false, "rule": { - "is": "equal", - "value": "object-tests/exact" + "is": "matches", + "pattern": "[A-Za-z0-9+/]{11}=" } }, { - "at": "/query/encoding-type", + "at": "", "optional": false, "rule": { - "is": "equal", - "value": "url" + "is": "body_checksum", + "header": "x-amz-checksum-crc64nvme", + "algorithm": "crc64nvme" } } ], @@ -96340,17 +135218,16 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 400, "headers": { "content-type": "application/xml", "date": { "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { "encoding": "utf8", - "data": "\nfixtureobject-tests/exact21000urlfalseobject-tests/exact2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/exact/child2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARD" + "data": "\nInvalidTagFixture error" }, "framing": "chunked" } @@ -96364,162 +135241,251 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "error" } }, { - "at": "/value/entries/0/key", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "object-tests/exact" + "value": 400 } }, { - "at": "/value/entries/0/size", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": 1 + "value": "InvalidTag" } - }, + } + ], + "refusal": [ { - "at": "/value/entries/0/etag", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-6c30b210f0a8\"" + "value": "refused" } }, { - "at": "/value/entries/0/snapshot", - "optional": true, + "at": "/kind", + "optional": false, "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "is": "matches", + "pattern": ".+" } }, { - "at": "/value/entries/0/version", - "optional": true, + "at": "/parameter", + "optional": false, "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "is": "equal", + "value": "tags" } }, { - "at": "/value/entries/0/is_current_version", + "at": "/status", "optional": true, "rule": { - "is": "one_of", - "values": [ - null, - false - ] + "is": "equal", + "value": 400 } }, { - "at": "/value/entries/1/key", - "optional": false, + "at": "/code", + "optional": true, "rule": { "is": "equal", - "value": "object-tests/exact/child" + "value": "InvalidTag" } - }, + } + ] + }, + { + "id": "operations/s3/put-tagging-duplicate-key", + "profile": "s3", + "lane": "core", + "purpose": "Report a tag set that names one key twice as an error. A client may refuse it, or report it unsupported where its API cannot repeat a key", + "sources": [ + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectTagging.html" + ], + "call": { + "key": "object-tests/tags/object.txt", + "op": "s3.put_tagging", + "tags": [ + { + "key": "project", + "value": "a" + }, + { + "key": "project", + "value": "b" + } + ] + }, + "exchanges": [ { - "at": "/value/entries/1/size", + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/tags/object.txt" + } + }, + { + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "projectaprojectb" + } + }, + { + "at": "/query/tagging", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/x-amz-checksum-crc64nvme", + "optional": false, + "rule": { + "is": "matches", + "pattern": "[A-Za-z0-9+/]{11}=" + } + }, + { + "at": "", + "optional": false, + "rule": { + "is": "body_checksum", + "header": "x-amz-checksum-crc64nvme", + "algorithm": "crc64nvme" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 400, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + } + }, + "body": { + "encoding": "utf8", + "data": "\nInvalidTagFixture error" + }, + "framing": "chunked" + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": 1 + "value": "error" } }, { - "at": "/value/entries/1/etag", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-6c30b210f0a8\"" - } - }, - { - "at": "/value/entries/1/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "value": 400 } }, { - "at": "/value/entries/1/version", - "optional": true, + "at": "/code", + "optional": false, "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "is": "equal", + "value": "InvalidTag" } - }, + } + ], + "refusal": [ { - "at": "/value/entries/1/is_current_version", - "optional": true, + "at": "/outcome", + "optional": false, "rule": { - "is": "one_of", - "values": [ - null, - false - ] + "is": "equal", + "value": "refused" } }, { - "at": "/value/entries", + "at": "/kind", "optional": false, "rule": { - "is": "array_length", - "value": 2 + "is": "matches", + "pattern": ".+" } }, { - "at": "/value/prefixes", + "at": "/parameter", "optional": false, "rule": { - "is": "array_length", - "value": 0 + "is": "equal", + "value": "tags" } }, { - "at": "/value/continuation_token", - "optional": false, + "at": "/status", + "optional": true, "rule": { "is": "equal", - "value": "" + "value": 400 + } + }, + { + "at": "/code", + "optional": true, + "rule": { + "is": "equal", + "value": "InvalidTag" } } ], - "refusal": null + "decline_permitted": true }, { - "id": "operations/s3/list-max-keys-zero", + "id": "operations/s3/put-internal-error", "profile": "s3", "lane": "core", - "purpose": "Send page_size 0 as max-keys=0; S3 answers an empty page that is not truncated", + "purpose": "Report a 500 InternalError answer as an error, after at most 5 retries", "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + "https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html" ], + "origin": "transient", "call": { - "op": "list_page", - "page_size": 0, - "prefix": "object-tests/board/" + "body_base64": "MDEyMzQ1Njc4OQ==", + "key": "object-tests/write/object.txt", + "op": "put" }, "exchanges": [ { @@ -96531,7 +135497,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -96539,7 +135505,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/write/object.txt" } }, { @@ -96547,31 +135513,7 @@ "optional": false, "rule": { "is": "equal", - "value": "" - } - }, - { - "at": "/query/list-type", - "optional": false, - "rule": { - "is": "equal", - "value": "2" - } - }, - { - "at": "/query/prefix", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/board/" - } - }, - { - "at": "/query/max-keys", - "optional": false, - "rule": { - "is": "equal", - "value": "0" + "value": "MDEyMzQ1Njc4OQ==" } } ], @@ -96580,21 +135522,24 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 500, "headers": { "content-type": "application/xml", "date": { "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { "encoding": "utf8", - "data": "\nfixtureobject-tests/board/00false" + "data": "\nInternalErrorWe encountered an internal error. Please try again.fixture" }, "framing": "chunked" } - }, + } + ] + }, + { + "alternatives": [ { "request": [ { @@ -96602,7 +135547,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -96610,7 +135555,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/write/object.txt" } }, { @@ -96618,39 +135563,58 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "MDEyMzQ1Njc4OQ==" } - }, - { - "at": "/query/list-type", - "optional": false, - "rule": { - "is": "equal", - "value": "2" + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 500, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" } }, + "body": { + "encoding": "utf8", + "data": "\nInternalErrorWe encountered an internal error. Please try again.fixture" + }, + "framing": "chunked" + } + } + ], + "optional": true + }, + { + "alternatives": [ + { + "request": [ { - "at": "/query/prefix", + "at": "/method", "optional": false, "rule": { "is": "equal", - "value": "object-tests/board/" + "value": "PUT" } }, { - "at": "/query/max-keys", + "at": "/path", "optional": false, "rule": { "is": "equal", - "value": "0" + "value": "/fixture/object-tests/write/object.txt" } }, { - "at": "/query/encoding-type", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "url" + "value": "MDEyMzQ1Njc4OQ==" } } ], @@ -96659,75 +135623,23 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 500, "headers": { "content-type": "application/xml", "date": { "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { "encoding": "utf8", - "data": "\nfixtureobject-tests/board/00urlfalse" + "data": "\nInternalErrorWe encountered an internal error. Please try again.fixture" }, "framing": "chunked" } } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/entries", - "optional": false, - "rule": { - "is": "array_length", - "value": 0 - } - }, - { - "at": "/value/prefixes", - "optional": false, - "rule": { - "is": "array_length", - "value": 0 - } + ], + "optional": true }, - { - "at": "/value/continuation_token", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - } - ], - "refusal": null - }, - { - "id": "operations/s3/list-next-page", - "profile": "s3", - "lane": "core", - "purpose": "Send the continuation token as continuation-token, a + in it as %2B, and report an empty token for the last page", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "continuation_token": "fixture-marker+/e389f71e4c3c=", - "op": "list_page", - "page_size": 2, - "prefix": "object-tests/board/" - }, - "exchanges": [ { "alternatives": [ { @@ -96737,7 +135649,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -96745,7 +135657,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/write/object.txt" } }, { @@ -96753,39 +135665,58 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "MDEyMzQ1Njc4OQ==" } - }, - { - "at": "/query/list-type", - "optional": false, - "rule": { - "is": "equal", - "value": "2" + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 500, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" } }, + "body": { + "encoding": "utf8", + "data": "\nInternalErrorWe encountered an internal error. Please try again.fixture" + }, + "framing": "chunked" + } + } + ], + "optional": true + }, + { + "alternatives": [ + { + "request": [ { - "at": "/query/prefix", + "at": "/method", "optional": false, "rule": { "is": "equal", - "value": "object-tests/board/" + "value": "PUT" } }, { - "at": "/query/max-keys", + "at": "/path", "optional": false, "rule": { "is": "equal", - "value": "2" + "value": "/fixture/object-tests/write/object.txt" } }, { - "at": "/query/continuation-token", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "fixture-marker+/e389f71e4c3c=" + "value": "MDEyMzQ1Njc4OQ==" } } ], @@ -96794,21 +135725,25 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 500, "headers": { "content-type": "application/xml", "date": { "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { "encoding": "utf8", - "data": "\nfixtureobject-tests/board/fixture-marker+/e389f71e4c3c=12falseobject-tests/board/z.txt2024-01-01T00:00:00.000Z"fixture-4d347fee6a7b"CRC64NVMEFULL_OBJECT2STANDARD" + "data": "\nInternalErrorWe encountered an internal error. Please try again.fixture" }, "framing": "chunked" } - }, + } + ], + "optional": true + }, + { + "alternatives": [ { "request": [ { @@ -96816,7 +135751,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -96824,7 +135759,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/write/object.txt" } }, { @@ -96832,47 +135767,110 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "MDEyMzQ1Njc4OQ==" } - }, - { - "at": "/query/list-type", - "optional": false, - "rule": { - "is": "equal", - "value": "2" + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 500, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" } }, + "body": { + "encoding": "utf8", + "data": "\nInternalErrorWe encountered an internal error. Please try again.fixture" + }, + "framing": "chunked" + } + } + ], + "optional": true + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 500 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "InternalError" + } + } + ], + "refusal": null + }, + { + "id": "operations/s3/put-content-encoding-gzip", + "profile": "s3", + "lane": "core", + "purpose": "Store Content-Encoding: gzip with a write, and the gzip bytes unchanged", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "body_base64": "H4sIAAAAAAACA0vOzy0oSi0uTk1RyM9TKCgtKsgvTuUCAAHVPIcWAAAA", + "content_encoding": "gzip", + "key": "object-tests/write/object.txt", + "op": "put" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ { - "at": "/query/prefix", + "at": "/method", "optional": false, "rule": { "is": "equal", - "value": "object-tests/board/" + "value": "PUT" } }, { - "at": "/query/max-keys", + "at": "/path", "optional": false, "rule": { "is": "equal", - "value": "2" + "value": "/fixture/object-tests/write/object.txt" } }, { - "at": "/query/continuation-token", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "fixture-marker+/e389f71e4c3c=" + "value": "H4sIAAAAAAACA0vOzy0oSi0uTk1RyM9TKCgtKsgvTuUCAAHVPIcWAAAA" } }, { - "at": "/query/encoding-type", + "at": "/headers/content-encoding", "optional": false, "rule": { "is": "equal", - "value": "url" + "value": "gzip" } } ], @@ -96883,17 +135881,16 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", "date": { "from": "now" }, + "etag": "\"fixture-fbe0ab688a03\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nfixtureobject-tests/board/1Wq36E269xkU5vpIr/uygMR7VLsOKyVtFFrZWipPwts7vqVlbsEy3gO3B+OwtpoKO55bImoZ/vlKYSYk9sDrkkYTFp1MK3Yy/pV5VyzD7p/s=12urlfalseobject-tests/board/z.txt2024-01-01T00:00:00.000Z"fixture-4d347fee6a7b"CRC64NVMEFULL_OBJECT2STANDARD" - }, - "framing": "chunked" + "encoding": "base64", + "data": "" + } } } ] @@ -96909,42 +135906,15 @@ } }, { - "at": "/value/entries/0/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/board/z.txt" - } - }, - { - "at": "/value/entries/0/size", - "optional": false, - "rule": { - "is": "equal", - "value": 2 - } - }, - { - "at": "/value/entries/0/etag", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-4d347fee6a7b\"" - } - }, - { - "at": "/value/entries/0/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "value": "\"fixture-fbe0ab688a03\"" } }, { - "at": "/value/entries/0/version", + "at": "/value/version", "optional": true, "rule": { "is": "one_of", @@ -96953,57 +135923,26 @@ "" ] } - }, - { - "at": "/value/entries/0/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries", - "optional": false, - "rule": { - "is": "array_length", - "value": 1 - } - }, - { - "at": "/value/prefixes", - "optional": false, - "rule": { - "is": "array_length", - "value": 0 - } - }, - { - "at": "/value/continuation_token", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } } ], "refusal": null }, { - "id": "operations/s3/list-order-delimited", + "id": "operations/s3/put-content-properties", "profile": "s3", "lane": "core", - "purpose": "Report the entries and the common prefixes in the order S3 sends them, each list on its own", + "purpose": "Store Content-Type, Content-Language, Content-Disposition and Cache-Control with a write", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "delimiter": "/", - "op": "list_page", - "prefix": "object-tests/order/" + "body_base64": "MDEyMzQ1Njc4OQ==", + "cache_control": "max-age=3600", + "content_disposition": "attachment; filename=\"report.txt\"", + "content_language": "nl-NL", + "content_type": "text/plain; charset=utf-8", + "key": "object-tests/write/object.txt", + "op": "put" }, "exchanges": [ { @@ -97015,7 +135954,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -97023,7 +135962,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/write/object.txt" } }, { @@ -97031,31 +135970,39 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "MDEyMzQ1Njc4OQ==" } }, { - "at": "/query/list-type", + "at": "/headers/content-type", "optional": false, "rule": { "is": "equal", - "value": "2" + "value": "text/plain; charset=utf-8" } }, { - "at": "/query/prefix", + "at": "/headers/content-language", "optional": false, "rule": { "is": "equal", - "value": "object-tests/order/" + "value": "nl-NL" } }, { - "at": "/query/delimiter", + "at": "/headers/content-disposition", "optional": false, "rule": { "is": "equal", - "value": "/" + "value": "attachment; filename=\"report.txt\"" + } + }, + { + "at": "/headers/cache-control", + "optional": false, + "rule": { + "is": "equal", + "value": "max-age=3600" } } ], @@ -97066,19 +136013,69 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", "date": { "from": "now" }, + "etag": "\"fixture-fbe0ab688a03\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nfixtureobject-tests/order/81000/falseobject-tests/order/A2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/order/a2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/order/a-b2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/order/a.txt2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/order/a02024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/order/b2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/order/é2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/order/a/" - }, - "framing": "chunked" + "encoding": "base64", + "data": "" + } } - }, + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-fbe0ab688a03\"" + } + }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + } + ], + "refusal": null + }, + { + "id": "operations/s3/put-content-type-non-ascii", + "profile": "s3", + "lane": "core", + "purpose": "Write a Content-Type with a parameter outside ASCII as its UTF-8 bytes. A general-purpose bucket returns header bytes as it got them, so they read back", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "body_base64": "MDEyMzQ1Njc4OQ==", + "content_type": "text/plain; name=\"été.txt\"", + "key": "object-tests/write/object.txt", + "op": "put" + }, + "exchanges": [ + { + "alternatives": [ { "request": [ { @@ -97086,7 +136083,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -97094,7 +136091,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/write/object.txt" } }, { @@ -97102,39 +136099,15 @@ "optional": false, "rule": { "is": "equal", - "value": "" - } - }, - { - "at": "/query/list-type", - "optional": false, - "rule": { - "is": "equal", - "value": "2" - } - }, - { - "at": "/query/prefix", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/order/" - } - }, - { - "at": "/query/delimiter", - "optional": false, - "rule": { - "is": "equal", - "value": "/" + "value": "MDEyMzQ1Njc4OQ==" } }, { - "at": "/query/encoding-type", + "at": "/headers/content-type", "optional": false, "rule": { "is": "equal", - "value": "url" + "value": "text/plain; name=\"été.txt\"" } } ], @@ -97145,17 +136118,16 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", "date": { "from": "now" }, + "etag": "\"fixture-fbe0ab688a03\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nfixtureobject-tests/order/81000/urlfalseobject-tests/order/A2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/order/a2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/order/a-b2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/order/a.txt2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/order/a02024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/order/b2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/order/%C3%A92024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/order/a/" - }, - "framing": "chunked" + "encoding": "base64", + "data": "" + } } } ] @@ -97171,450 +136143,40 @@ } }, { - "at": "/value/entries/0/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/order/A" - } - }, - { - "at": "/value/entries/0/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/0/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-6c30b210f0a8\"" - } - }, - { - "at": "/value/entries/0/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/0/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/0/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/1/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/order/a" - } - }, - { - "at": "/value/entries/1/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/1/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-6c30b210f0a8\"" - } - }, - { - "at": "/value/entries/1/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/1/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/1/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/2/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/order/a-b" - } - }, - { - "at": "/value/entries/2/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/2/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-6c30b210f0a8\"" - } - }, - { - "at": "/value/entries/2/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/2/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/2/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/3/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/order/a.txt" - } - }, - { - "at": "/value/entries/3/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/3/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-6c30b210f0a8\"" - } - }, - { - "at": "/value/entries/3/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/3/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/3/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/4/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/order/a0" - } - }, - { - "at": "/value/entries/4/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/4/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-6c30b210f0a8\"" - } - }, - { - "at": "/value/entries/4/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/4/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/4/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/5/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/order/b" - } - }, - { - "at": "/value/entries/5/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/5/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-6c30b210f0a8\"" - } - }, - { - "at": "/value/entries/5/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/5/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/5/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/6/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/order/é" - } - }, - { - "at": "/value/entries/6/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/6/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-6c30b210f0a8\"" - } - }, - { - "at": "/value/entries/6/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/6/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/6/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries", - "optional": false, - "rule": { - "is": "array_length", - "value": 7 - } - }, - { - "at": "/value/prefixes/0", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": "object-tests/order/a/" - } - }, - { - "at": "/value/prefixes", - "optional": false, - "rule": { - "is": "array_length", - "value": 1 + "value": "\"fixture-fbe0ab688a03\"" } }, { - "at": "/value/continuation_token", - "optional": false, + "at": "/value/version", + "optional": true, "rule": { - "is": "equal", - "value": "" + "is": "one_of", + "values": [ + null, + "" + ] } } ], "refusal": null }, { - "id": "operations/s3/list-order", + "id": "operations/s3/put-content-disposition-non-ascii", "profile": "s3", "lane": "core", - "purpose": "Report the entries in the order S3 sends them, without sorting them again", + "purpose": "Write a Content-Disposition whose filename is outside ASCII. A general-purpose bucket returns header bytes as it got them, so the UTF-8 bytes read back; an RFC 6266 filename* is stored as written, and any reader decodes it", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "op": "list_page", - "prefix": "object-tests/order/" + "body_base64": "MDEyMzQ1Njc4OQ==", + "content_disposition": "attachment; filename=\"été.txt\"", + "key": "object-tests/write/object.txt", + "op": "put" }, "exchanges": [ { @@ -97626,7 +136188,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -97634,7 +136196,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/write/object.txt" } }, { @@ -97642,23 +136204,18 @@ "optional": false, "rule": { "is": "equal", - "value": "" - } - }, - { - "at": "/query/list-type", - "optional": false, - "rule": { - "is": "equal", - "value": "2" + "value": "MDEyMzQ1Njc4OQ==" } }, { - "at": "/query/prefix", + "at": "/headers/content-disposition", "optional": false, "rule": { - "is": "equal", - "value": "object-tests/order/" + "is": "one_of", + "values": [ + "attachment; filename=\"été.txt\"", + "attachment; filename*=UTF-8''%C3%A9t%C3%A9.txt" + ] } } ], @@ -97669,19 +136226,69 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", "date": { "from": "now" }, + "etag": "\"fixture-fbe0ab688a03\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nfixtureobject-tests/order/81000falseobject-tests/order/A2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/order/a2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/order/a-b2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/order/a.txt2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/order/a/b2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/order/a02024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/order/b2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/order/é2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARD" - }, - "framing": "chunked" + "encoding": "base64", + "data": "" + } } - }, + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-fbe0ab688a03\"" + } + }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + } + ], + "refusal": null + }, + { + "id": "operations/s3/put-if-unmodified-since-past", + "profile": "s3", + "lane": "core", + "purpose": "Report a write with If-Unmodified-Since as an error. S3 takes no date condition on a PutObject and answers 501 NotImplemented. A client may refuse it before sending", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "body_base64": "MDEyMzQ1Njc4OQ==", + "if_unmodified_since": "Sat, 01 Jan 2000 00:00:00 GMT", + "key": "object-tests/write/object.txt", + "op": "put" + }, + "exchanges": [ + { + "alternatives": [ { "request": [ { @@ -97689,7 +136296,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -97697,7 +136304,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/write/object.txt" } }, { @@ -97705,31 +136312,15 @@ "optional": false, "rule": { "is": "equal", - "value": "" - } - }, - { - "at": "/query/list-type", - "optional": false, - "rule": { - "is": "equal", - "value": "2" - } - }, - { - "at": "/query/prefix", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/order/" + "value": "MDEyMzQ1Njc4OQ==" } }, { - "at": "/query/encoding-type", + "at": "/headers/if-unmodified-since", "optional": false, "rule": { "is": "equal", - "value": "url" + "value": "Sat, 01 Jan 2000 00:00:00 GMT" } } ], @@ -97738,17 +136329,16 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 501, "headers": { "content-type": "application/xml", "date": { "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { "encoding": "utf8", - "data": "\nfixtureobject-tests/order/81000urlfalseobject-tests/order/A2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/order/a2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/order/a-b2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/order/a.txt2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/order/a/b2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/order/a02024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/order/b2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/order/%C3%A92024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARD" + "data": "\nNotImplementedFixture error" }, "framing": "chunked" } @@ -97762,92 +136352,162 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "error" } }, { - "at": "/value/entries/0/key", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "object-tests/order/A" + "value": 501 } }, { - "at": "/value/entries/0/size", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": 1 + "value": "NotImplemented" } - }, + } + ], + "refusal": [ { - "at": "/value/entries/0/etag", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-6c30b210f0a8\"" + "value": "refused" } }, { - "at": "/value/entries/0/snapshot", - "optional": true, + "at": "/kind", + "optional": false, "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "is": "matches", + "pattern": ".+" } }, { - "at": "/value/entries/0/version", - "optional": true, + "at": "/parameter", + "optional": false, "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "is": "equal", + "value": "if_unmodified_since" } }, { - "at": "/value/entries/0/is_current_version", + "at": "/status", "optional": true, "rule": { - "is": "one_of", - "values": [ - null, - false - ] + "is": "equal", + "value": 501 } }, { - "at": "/value/entries/1/key", - "optional": false, + "at": "/code", + "optional": true, "rule": { "is": "equal", - "value": "object-tests/order/a" + "value": "NotImplemented" } - }, + } + ] + }, + { + "id": "operations/s3/put-content-type-edge-spaces", + "profile": "s3", + "lane": "core", + "purpose": "Write a content type with spaces at either end, which HTTP drops, so the service stores it trimmed. A client may refuse it", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "body_base64": "MDEyMzQ1Njc4OQ==", + "content_type": " text/plain ", + "key": "object-tests/write/object.txt", + "op": "put" + }, + "exchanges": [ { - "at": "/value/entries/1/size", + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/write/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MDEyMzQ1Njc4OQ==" + } + }, + { + "at": "/headers/content-type", + "optional": false, + "rule": { + "is": "equal", + "value": "text/plain" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "date": { + "from": "now" + }, + "etag": "\"fixture-fbe0ab688a03\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": 1 + "value": "ok" } }, { - "at": "/value/entries/1/etag", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-6c30b210f0a8\"" + "value": "\"fixture-fbe0ab688a03\"" } }, { - "at": "/value/entries/1/snapshot", + "at": "/value/version", "optional": true, "rule": { "is": "one_of", @@ -97856,66 +136516,128 @@ "" ] } - }, + } + ], + "refusal": [ { - "at": "/value/entries/1/version", - "optional": true, + "at": "/outcome", + "optional": false, "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "is": "equal", + "value": "refused" } }, { - "at": "/value/entries/1/is_current_version", - "optional": true, + "at": "/kind", + "optional": false, "rule": { - "is": "one_of", - "values": [ - null, - false - ] + "is": "matches", + "pattern": ".+" } }, { - "at": "/value/entries/2/key", + "at": "/parameter", "optional": false, "rule": { "is": "equal", - "value": "object-tests/order/a-b" + "value": "content_type" } - }, + } + ] + }, + { + "id": "operations/s3/put-if-match-current", + "profile": "s3", + "lane": "core", + "purpose": "put if match current", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "body_base64": "cmVwbGFjZWQ=", + "if_match": "\"fixture-fbe0ab688a03\"", + "key": "object-tests/write/object.txt", + "op": "put" + }, + "exchanges": [ { - "at": "/value/entries/2/size", + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/write/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "cmVwbGFjZWQ=" + } + }, + { + "at": "/headers/if-match", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-fbe0ab688a03\"" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "date": { + "from": "now" + }, + "etag": "\"fixture-01da46aa1994\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": 1 + "value": "ok" } }, { - "at": "/value/entries/2/etag", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-6c30b210f0a8\"" - } - }, - { - "at": "/value/entries/2/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "value": "\"fixture-01da46aa1994\"" } }, { - "at": "/value/entries/2/version", + "at": "/value/version", "optional": true, "rule": { "is": "one_of", @@ -97924,55 +136646,103 @@ "" ] } - }, - { - "at": "/value/entries/2/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, + } + ], + "refusal": null + }, + { + "id": "operations/s3/put-if-none-match-missing", + "profile": "s3", + "lane": "core", + "purpose": "put if none match missing", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "body_base64": "ZnJlc2g=", + "if_none_match": "*", + "key": "object-tests/write/fresh.txt", + "op": "put" + }, + "exchanges": [ { - "at": "/value/entries/3/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/order/a.txt" - } - }, + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/write/fresh.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "ZnJlc2g=" + } + }, + { + "at": "/headers/if-none-match", + "optional": false, + "rule": { + "is": "equal", + "value": "*" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "date": { + "from": "now" + }, + "etag": "\"fixture-891ed8521bb8\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ { - "at": "/value/entries/3/size", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": 1 + "value": "ok" } }, { - "at": "/value/entries/3/etag", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-6c30b210f0a8\"" - } - }, - { - "at": "/value/entries/3/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "value": "\"fixture-891ed8521bb8\"" } }, { - "at": "/value/entries/3/version", + "at": "/value/version", "optional": true, "rule": { "is": "one_of", @@ -97981,36 +136751,86 @@ "" ] } - }, - { - "at": "/value/entries/3/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, + } + ], + "refusal": null + }, + { + "id": "operations/s3/put-key-1024", + "profile": "s3", + "lane": "core", + "purpose": "put key 1024", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "body_base64": "MQ==", + "key": "object-tests/long/kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", + "op": "put" + }, + "exchanges": [ { - "at": "/value/entries/4/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/order/a/b" - } - }, + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/long/kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MQ==" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "date": { + "from": "now" + }, + "etag": "\"fixture-6c30b210f0a8\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ { - "at": "/value/entries/4/size", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": 1 + "value": "ok" } }, { - "at": "/value/entries/4/etag", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", @@ -98018,18 +136838,7 @@ } }, { - "at": "/value/entries/4/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/4/version", + "at": "/value/version", "optional": true, "rule": { "is": "one_of", @@ -98038,229 +136847,379 @@ "" ] } - }, + } + ], + "refusal": null + }, + { + "id": "operations/s3/put-key-1025", + "profile": "s3", + "lane": "core", + "purpose": "put key 1025", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "body_base64": "MQ==", + "key": "object-tests/long/kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", + "op": "put" + }, + "exchanges": [ { - "at": "/value/entries/4/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/long/kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MQ==" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 400, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + } + }, + "body": { + "encoding": "utf8", + "data": "\nKeyTooLongErrorFixture error" + }, + "framing": "chunked" + } + } + ] + } + ], + "expect": [ { - "at": "/value/entries/5/key", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "object-tests/order/a0" + "value": "error" } }, { - "at": "/value/entries/5/size", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": 1 + "value": 400 } }, { - "at": "/value/entries/5/etag", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-6c30b210f0a8\"" - } - }, - { - "at": "/value/entries/5/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/5/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/5/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] + "value": "KeyTooLongError" } - }, + } + ], + "refusal": [ { - "at": "/value/entries/6/key", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "object-tests/order/b" + "value": "refused" } }, { - "at": "/value/entries/6/size", + "at": "/kind", "optional": false, "rule": { - "is": "equal", - "value": 1 + "is": "matches", + "pattern": ".+" } }, { - "at": "/value/entries/6/etag", + "at": "/parameter", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-6c30b210f0a8\"" + "value": "key" } }, { - "at": "/value/entries/6/snapshot", + "at": "/status", "optional": true, "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "is": "equal", + "value": 400 } }, { - "at": "/value/entries/6/version", + "at": "/code", "optional": true, "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "is": "equal", + "value": "KeyTooLongError" } - }, + } + ] + }, + { + "id": "operations/s3/put-lost-the-race-to-create", + "profile": "s3", + "lane": "core", + "purpose": "put lost the race to create", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "body_base64": "YW5vdGhlciBvYmplY3Q=", + "if_none_match": "*", + "key": "object-tests/write/object.txt", + "op": "put" + }, + "exchanges": [ { - "at": "/value/entries/6/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/write/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "YW5vdGhlciBvYmplY3Q=" + } + }, + { + "at": "/headers/if-none-match", + "optional": false, + "rule": { + "is": "equal", + "value": "*" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 412, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + } + }, + "body": { + "encoding": "utf8", + "data": "\nPreconditionFailedFixture error" + }, + "framing": "chunked" + } + } + ] + } + ], + "expect": [ { - "at": "/value/entries/7/key", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "object-tests/order/é" + "value": "error" } }, { - "at": "/value/entries/7/size", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": 1 + "value": 412 } }, { - "at": "/value/entries/7/etag", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-6c30b210f0a8\"" - } - }, - { - "at": "/value/entries/7/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/7/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/7/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] + "value": "PreconditionFailed" } - }, + } + ], + "refusal": null + }, + { + "id": "operations/s3/put-conditional-conflict", + "profile": "s3", + "lane": "core", + "purpose": "Report a 409 ConditionalRequestConflict to a conditional put as an error. AWS advises retrying a put, so a client may retry up to 5 times first, and need not retry", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "origin": "transient", + "call": { + "body_base64": "YW5vdGhlciBvYmplY3Q=", + "if_none_match": "*", + "key": "object-tests/write/object.txt", + "op": "put" + }, + "exchanges": [ { - "at": "/value/entries", - "optional": false, - "rule": { - "is": "array_length", - "value": 8 - } + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/write/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "YW5vdGhlciBvYmplY3Q=" + } + }, + { + "at": "/headers/if-none-match", + "optional": false, + "rule": { + "is": "equal", + "value": "*" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 409, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + } + }, + "body": { + "encoding": "utf8", + "data": "\nConditionalRequestConflictA conflicting operation occurred. If using PutObject you can retry the request. If using multipart upload you should initiate another CreateMultipartUpload request and re-upload each part.fixturefixture" + }, + "framing": "chunked" + } + } + ] }, { - "at": "/value/prefixes", - "optional": false, - "rule": { - "is": "array_length", - "value": 0 - } + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/write/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "YW5vdGhlciBvYmplY3Q=" + } + }, + { + "at": "/headers/if-none-match", + "optional": false, + "rule": { + "is": "equal", + "value": "*" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 409, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + } + }, + "body": { + "encoding": "utf8", + "data": "\nConditionalRequestConflictA conflicting operation occurred. If using PutObject you can retry the request. If using multipart upload you should initiate another CreateMultipartUpload request and re-upload each part.fixturefixture" + }, + "framing": "chunked" + } + } + ], + "optional": true }, - { - "at": "/value/continuation_token", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - } - ], - "refusal": null - }, - { - "id": "operations/s3/list-page", - "profile": "s3", - "lane": "core", - "purpose": "List a prefix with ListObjectsV2 (list-type=2), and report each entry's key, size and ETag, quotes included", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "op": "list_page", - "prefix": "object-tests/board/" - }, - "exchanges": [ { "alternatives": [ { @@ -98270,7 +137229,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -98278,7 +137237,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/write/object.txt" } }, { @@ -98286,23 +137245,74 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "YW5vdGhlciBvYmplY3Q=" } }, { - "at": "/query/list-type", + "at": "/headers/if-none-match", "optional": false, "rule": { "is": "equal", - "value": "2" + "value": "*" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 409, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + } + }, + "body": { + "encoding": "utf8", + "data": "\nConditionalRequestConflictA conflicting operation occurred. If using PutObject you can retry the request. If using multipart upload you should initiate another CreateMultipartUpload request and re-upload each part.fixturefixture" + }, + "framing": "chunked" + } + } + ], + "optional": true + }, + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" } }, { - "at": "/query/prefix", + "at": "/path", "optional": false, "rule": { "is": "equal", - "value": "object-tests/board/" + "value": "/fixture/object-tests/write/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "YW5vdGhlciBvYmplY3Q=" + } + }, + { + "at": "/headers/if-none-match", + "optional": false, + "rule": { + "is": "equal", + "value": "*" } } ], @@ -98311,21 +137321,25 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 409, "headers": { "content-type": "application/xml", "date": { "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { "encoding": "utf8", - "data": "\nfixtureobject-tests/board/31000falseobject-tests/board/a.txt2024-01-01T00:00:00.000Z"fixture-1d83e6eb69df"CRC64NVMEFULL_OBJECT8STANDARDobject-tests/board/nested/c.txt2024-01-01T00:00:00.000Z"fixture-a1cfb9bcbc61"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/board/z.txt2024-01-01T00:00:00.000Z"fixture-4d347fee6a7b"CRC64NVMEFULL_OBJECT2STANDARD" + "data": "\nConditionalRequestConflictA conflicting operation occurred. If using PutObject you can retry the request. If using multipart upload you should initiate another CreateMultipartUpload request and re-upload each part.fixturefixture" }, "framing": "chunked" } - }, + } + ], + "optional": true + }, + { + "alternatives": [ { "request": [ { @@ -98333,7 +137347,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -98341,7 +137355,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/write/object.txt" } }, { @@ -98349,31 +137363,74 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "YW5vdGhlciBvYmplY3Q=" } }, { - "at": "/query/list-type", + "at": "/headers/if-none-match", "optional": false, "rule": { "is": "equal", - "value": "2" + "value": "*" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 409, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" } }, + "body": { + "encoding": "utf8", + "data": "\nConditionalRequestConflictA conflicting operation occurred. If using PutObject you can retry the request. If using multipart upload you should initiate another CreateMultipartUpload request and re-upload each part.fixturefixture" + }, + "framing": "chunked" + } + } + ], + "optional": true + }, + { + "alternatives": [ + { + "request": [ { - "at": "/query/prefix", + "at": "/method", "optional": false, "rule": { "is": "equal", - "value": "object-tests/board/" + "value": "PUT" } }, { - "at": "/query/encoding-type", + "at": "/path", "optional": false, "rule": { "is": "equal", - "value": "url" + "value": "/fixture/object-tests/write/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "YW5vdGhlciBvYmplY3Q=" + } + }, + { + "at": "/headers/if-none-match", + "optional": false, + "rule": { + "is": "equal", + "value": "*" } } ], @@ -98382,22 +137439,22 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 409, "headers": { "content-type": "application/xml", "date": { "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { "encoding": "utf8", - "data": "\nfixtureobject-tests/board/31000urlfalseobject-tests/board/a.txt2024-01-01T00:00:00.000Z"fixture-1d83e6eb69df"CRC64NVMEFULL_OBJECT8STANDARDobject-tests/board/nested/c.txt2024-01-01T00:00:00.000Z"fixture-a1cfb9bcbc61"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/board/z.txt2024-01-01T00:00:00.000Z"fixture-4d347fee6a7b"CRC64NVMEFULL_OBJECT2STANDARD" + "data": "\nConditionalRequestConflictA conflicting operation occurred. If using PutObject you can retry the request. If using multipart upload you should initiate another CreateMultipartUpload request and re-upload each part.fixturefixture" }, "framing": "chunked" } } - ] + ], + "optional": true } ], "expect": [ @@ -98406,46 +137463,123 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "error" } }, { - "at": "/value/entries/0/key", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "object-tests/board/a.txt" + "value": 409 } }, { - "at": "/value/entries/0/size", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": 8 + "value": "ConditionalRequestConflict" } + } + ], + "refusal": null + }, + { + "id": "operations/s3/put-metadata-empty-value", + "profile": "s3", + "lane": "core", + "purpose": "put metadata empty value", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "body_base64": "MQ==", + "key": "object-tests/metadata/empty-value.txt", + "metadata": { + "empty": "" }, + "op": "put" + }, + "exchanges": [ { - "at": "/value/entries/0/etag", + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/metadata/empty-value.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MQ==" + } + }, + { + "at": "/headers/x-amz-meta-empty", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "date": { + "from": "now" + }, + "etag": "\"fixture-6c30b210f0a8\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-1d83e6eb69df\"" + "value": "ok" } }, { - "at": "/value/entries/0/snapshot", - "optional": true, + "at": "/value/etag", + "optional": false, "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "is": "equal", + "value": "\"fixture-6c30b210f0a8\"" } }, { - "at": "/value/entries/0/version", + "at": "/value/version", "optional": true, "rule": { "is": "one_of", @@ -98454,44 +137588,105 @@ "" ] } + } + ], + "refusal": null + }, + { + "id": "operations/s3/put-metadata-hyphen-name", + "profile": "s3", + "lane": "core", + "purpose": "put metadata hyphen name", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "body_base64": "MQ==", + "key": "object-tests/metadata/hyphen-name.txt", + "metadata": { + "not-valid": "1" }, + "op": "put" + }, + "exchanges": [ { - "at": "/value/entries/0/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/1/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/board/nested/c.txt" - } - }, + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/metadata/hyphen-name.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MQ==" + } + }, + { + "at": "/headers/x-amz-meta-not-valid", + "optional": false, + "rule": { + "is": "equal", + "value": "1" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "date": { + "from": "now" + }, + "etag": "\"fixture-6c30b210f0a8\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ { - "at": "/value/entries/1/size", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": 1 + "value": "ok" } }, { - "at": "/value/entries/1/etag", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-a1cfb9bcbc61\"" + "value": "\"fixture-6c30b210f0a8\"" } }, { - "at": "/value/entries/1/snapshot", + "at": "/value/version", "optional": true, "rule": { "is": "one_of", @@ -98500,124 +137695,252 @@ "" ] } + } + ], + "refusal": null + }, + { + "id": "operations/s3/put-metadata-names-differ-in-case", + "profile": "s3", + "lane": "core", + "purpose": "S3 matches a metadata name without case. A general-purpose bucket merges two names that differ only in case into one pair, dup: one,two, which does not read back as sent, so refuse the call.", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "body_base64": "MQ==", + "key": "object-tests/metadata/names-differ-in-case.txt", + "metadata": { + "DUP": "two", + "dup": "one" }, + "op": "put" + }, + "exchanges": [ { - "at": "/value/entries/1/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/metadata/names-differ-in-case.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MQ==" + } + }, + { + "at": "/headers/x-amz-meta-dup", + "optional": false, + "rule": { + "is": "one_of", + "values": [ + [ + "one", + "two" + ], + [ + "two", + "one" + ] + ] + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "date": { + "from": "now" + }, + "etag": "\"fixture-6c30b210f0a8\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ { - "at": "/value/entries/1/is_current_version", - "optional": true, + "at": "/outcome", + "optional": false, "rule": { - "is": "one_of", - "values": [ - null, - false - ] + "is": "equal", + "value": "refused" } - }, + } + ], + "refusal": [ { - "at": "/value/entries/2/key", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "object-tests/board/z.txt" + "value": "refused" } }, { - "at": "/value/entries/2/size", + "at": "/kind", "optional": false, "rule": { - "is": "equal", - "value": 2 + "is": "matches", + "pattern": ".+" } }, { - "at": "/value/entries/2/etag", + "at": "/parameter", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-4d347fee6a7b\"" + "value": "metadata" } + } + ] + }, + { + "id": "operations/s3/put-metadata-punctuation-name", + "profile": "s3", + "lane": "core", + "purpose": "S3 stores a name that holds any character of an HTTP token, and one that starts with a digit.", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "body_base64": "MQ==", + "key": "object-tests/metadata/punctuation-name.txt", + "metadata": { + "1a!#$%&'*+.^_`|~b": "1" }, + "op": "put" + }, + "exchanges": [ { - "at": "/value/entries/2/snapshot", - "optional": true, + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/metadata/punctuation-name.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MQ==" + } + }, + { + "at": "/headers/x-amz-meta-1a!#$%&'*+.^_`|~0b", + "optional": false, + "rule": { + "is": "equal", + "value": "1" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "date": { + "from": "now" + }, + "etag": "\"fixture-6c30b210f0a8\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "is": "equal", + "value": "ok" } }, { - "at": "/value/entries/2/version", - "optional": true, + "at": "/value/etag", + "optional": false, "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "is": "equal", + "value": "\"fixture-6c30b210f0a8\"" } }, { - "at": "/value/entries/2/is_current_version", + "at": "/value/version", "optional": true, "rule": { "is": "one_of", "values": [ null, - false + "" ] } - }, - { - "at": "/value/entries", - "optional": false, - "rule": { - "is": "array_length", - "value": 3 - } - }, - { - "at": "/value/prefixes", - "optional": false, - "rule": { - "is": "array_length", - "value": 0 - } - }, - { - "at": "/value/continuation_token", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } } ], "refusal": null }, { - "id": "operations/s3/list-prefix-without-slash", + "id": "operations/s3/put-metadata-replaced", "profile": "s3", "lane": "core", - "purpose": "Match the prefix as the start of the key, not as a directory: object-tests/boa matches object-tests/board/", + "purpose": "put metadata replaced", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "op": "list_page", - "prefix": "object-tests/boa" + "body_base64": "Mg==", + "key": "object-tests/metadata/replaced.txt", + "op": "put" }, "exchanges": [ { @@ -98629,7 +137952,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -98637,7 +137960,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/metadata/replaced.txt" } }, { @@ -98645,23 +137968,7 @@ "optional": false, "rule": { "is": "equal", - "value": "" - } - }, - { - "at": "/query/list-type", - "optional": false, - "rule": { - "is": "equal", - "value": "2" - } - }, - { - "at": "/query/prefix", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/boa" + "value": "Mg==" } } ], @@ -98672,19 +137979,72 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", "date": { "from": "now" }, + "etag": "\"fixture-ea4c238956b1\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nfixtureobject-tests/boa31000falseobject-tests/board/a.txt2024-01-01T00:00:00.000Z"fixture-1d83e6eb69df"CRC64NVMEFULL_OBJECT8STANDARDobject-tests/board/nested/c.txt2024-01-01T00:00:00.000Z"fixture-a1cfb9bcbc61"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/board/z.txt2024-01-01T00:00:00.000Z"fixture-4d347fee6a7b"CRC64NVMEFULL_OBJECT2STANDARD" - }, - "framing": "chunked" + "encoding": "base64", + "data": "" + } } - }, + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-ea4c238956b1\"" + } + }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + } + ], + "refusal": null + }, + { + "id": "operations/s3/put-metadata", + "profile": "s3", + "lane": "core", + "purpose": "put metadata", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "body_base64": "MQ==", + "key": "object-tests/metadata/object.txt", + "metadata": { + "name": "value", + "second": "2" + }, + "op": "put" + }, + "exchanges": [ + { + "alternatives": [ { "request": [ { @@ -98692,7 +138052,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -98700,7 +138060,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/metadata/object.txt" } }, { @@ -98708,31 +138068,23 @@ "optional": false, "rule": { "is": "equal", - "value": "" - } - }, - { - "at": "/query/list-type", - "optional": false, - "rule": { - "is": "equal", - "value": "2" + "value": "MQ==" } }, { - "at": "/query/prefix", + "at": "/headers/x-amz-meta-name", "optional": false, "rule": { "is": "equal", - "value": "object-tests/boa" + "value": "value" } }, { - "at": "/query/encoding-type", + "at": "/headers/x-amz-meta-second", "optional": false, "rule": { "is": "equal", - "value": "url" + "value": "2" } } ], @@ -98743,17 +138095,16 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", "date": { "from": "now" }, + "etag": "\"fixture-6c30b210f0a8\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nfixtureobject-tests/boa31000urlfalseobject-tests/board/a.txt2024-01-01T00:00:00.000Z"fixture-1d83e6eb69df"CRC64NVMEFULL_OBJECT8STANDARDobject-tests/board/nested/c.txt2024-01-01T00:00:00.000Z"fixture-a1cfb9bcbc61"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/board/z.txt2024-01-01T00:00:00.000Z"fixture-4d347fee6a7b"CRC64NVMEFULL_OBJECT2STANDARD" - }, - "framing": "chunked" + "encoding": "base64", + "data": "" + } } } ] @@ -98769,42 +138120,15 @@ } }, { - "at": "/value/entries/0/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/board/a.txt" - } - }, - { - "at": "/value/entries/0/size", - "optional": false, - "rule": { - "is": "equal", - "value": 8 - } - }, - { - "at": "/value/entries/0/etag", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-1d83e6eb69df\"" - } - }, - { - "at": "/value/entries/0/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "value": "\"fixture-6c30b210f0a8\"" } }, { - "at": "/value/entries/0/version", + "at": "/value/version", "optional": true, "rule": { "is": "one_of", @@ -98813,55 +138137,94 @@ "" ] } - }, - { - "at": "/value/entries/0/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, + } + ], + "refusal": null + }, + { + "id": "operations/s3/put-overwrite", + "profile": "s3", + "lane": "core", + "purpose": "put overwrite", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "body_base64": "b3ZlcndyaXR0ZW4=", + "key": "object-tests/write/object.txt", + "op": "put" + }, + "exchanges": [ { - "at": "/value/entries/1/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/board/nested/c.txt" - } - }, + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/write/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "b3ZlcndyaXR0ZW4=" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "date": { + "from": "now" + }, + "etag": "\"fixture-a62b555324ac\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ { - "at": "/value/entries/1/size", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": 1 + "value": "ok" } }, { - "at": "/value/entries/1/etag", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-a1cfb9bcbc61\"" - } - }, - { - "at": "/value/entries/1/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "value": "\"fixture-a62b555324ac\"" } }, { - "at": "/value/entries/1/version", + "at": "/value/version", "optional": true, "rule": { "is": "one_of", @@ -98870,114 +138233,219 @@ "" ] } - }, + } + ], + "refusal": null + }, + { + "id": "operations/s3/put-precondition-failed", + "profile": "s3", + "lane": "core", + "purpose": "put precondition failed", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "body_base64": "YW5vdGhlciBvYmplY3Q=", + "if_match": "\"fixture-db71b2c0257c\"", + "key": "object-tests/write/object.txt", + "op": "put" + }, + "exchanges": [ { - "at": "/value/entries/1/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/write/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "YW5vdGhlciBvYmplY3Q=" + } + }, + { + "at": "/headers/if-match", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-db71b2c0257c\"" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 412, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + } + }, + "body": { + "encoding": "utf8", + "data": "\nPreconditionFailedFixture error" + }, + "framing": "chunked" + } + } + ] + } + ], + "expect": [ { - "at": "/value/entries/2/key", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "object-tests/board/z.txt" + "value": "error" } }, { - "at": "/value/entries/2/size", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": 2 + "value": 412 } }, { - "at": "/value/entries/2/etag", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-4d347fee6a7b\"" - } - }, - { - "at": "/value/entries/2/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/2/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "value": "PreconditionFailed" } - }, + } + ], + "refusal": null + }, + { + "id": "operations/s3/put-unauthenticated", + "profile": "s3", + "lane": "core", + "purpose": "Report the service authorization error for this operation; signature acceptance is tested separately.", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "body_base64": "bm90aGluZyBpcyBzdG9yZWQ=", + "key": "object-tests/write/object.txt", + "op": "put" + }, + "exchanges": [ { - "at": "/value/entries/2/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/write/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "bm90aGluZyBpcyBzdG9yZWQ=" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 403, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + } + }, + "body": { + "encoding": "utf8", + "data": "\nInvalidAccessKeyIdFixture error" + }, + "framing": "chunked" + } + } + ] + } + ], + "expect": [ { - "at": "/value/entries", + "at": "/outcome", "optional": false, "rule": { - "is": "array_length", - "value": 3 + "is": "equal", + "value": "error" } }, { - "at": "/value/prefixes", + "at": "/status", "optional": false, "rule": { - "is": "array_length", - "value": 0 + "is": "equal", + "value": 403 } }, { - "at": "/value/continuation_token", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "InvalidAccessKeyId" } } ], "refusal": null }, { - "id": "operations/s3/list-separator-keys-delimited", + "id": "operations/s3/stage-after-abort", "profile": "s3", "lane": "core", - "purpose": "Group each key at the first delimiter after the prefix, even where the key repeats it or ends with it", + "purpose": "stage after abort", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "delimiter": "/", - "op": "list_page", - "prefix": "object-tests/separators/" + "body_base64": "eA==", + "key": "object-tests/multipart/aborted.bin", + "op": "s3.upload_part", + "part_number": 2, + "upload_id": "fixture-upload+/f85cf0cd3a3f=" }, "exchanges": [ { @@ -98989,7 +138457,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -98997,7 +138465,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/multipart/aborted.bin" } }, { @@ -99005,11 +138473,11 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "eA==" } }, { - "at": "/query/list-type", + "at": "/query/partNumber", "optional": false, "rule": { "is": "equal", @@ -99017,19 +138485,11 @@ } }, { - "at": "/query/prefix", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/separators/" - } - }, - { - "at": "/query/delimiter", + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "/" + "value": "fixture-upload+/f85cf0cd3a3f=" } } ], @@ -99038,21 +138498,69 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 404, "headers": { "content-type": "application/xml", "date": { "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { "encoding": "utf8", - "data": "\nfixtureobject-tests/separators/61000/falseobject-tests/separators/..leading2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/separators/dot.2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/separators/a.b/object-tests/separators/double/object-tests/separators/space /object-tests/separators/trailing/" + "data": "\nNoSuchUploadFixture error" }, "framing": "chunked" } - }, + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 404 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "NoSuchUpload" + } + } + ], + "refusal": null + }, + { + "id": "operations/s3/stage-last", + "profile": "s3", + "lane": "core", + "purpose": "stage last", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "body_base64": "c2Vjb25k", + "key": "object-tests/multipart/object.bin", + "op": "s3.upload_part", + "part_number": 2, + "upload_id": "fixture-upload+/276ca18046f9=" + }, + "exchanges": [ + { + "alternatives": [ { "request": [ { @@ -99060,7 +138568,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -99068,7 +138576,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/multipart/object.bin" } }, { @@ -99076,11 +138584,11 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "c2Vjb25k" } }, { - "at": "/query/list-type", + "at": "/query/partNumber", "optional": false, "rule": { "is": "equal", @@ -99088,27 +138596,11 @@ } }, { - "at": "/query/prefix", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/separators/" - } - }, - { - "at": "/query/delimiter", - "optional": false, - "rule": { - "is": "equal", - "value": "/" - } - }, - { - "at": "/query/encoding-type", + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "url" + "value": "fixture-upload+/276ca18046f9=" } } ], @@ -99119,17 +138611,16 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", "date": { "from": "now" }, + "etag": "\"fixture-32b70ae425ac\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nfixtureobject-tests/separators/61000/urlfalseobject-tests/separators/..leading2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/separators/dot.2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/separators/a.b/object-tests/separators/double/object-tests/separators/space+/object-tests/separators/trailing/" - }, - "framing": "chunked" + "encoding": "base64", + "data": "" + } } } ] @@ -99145,189 +138636,30 @@ } }, { - "at": "/value/entries/0/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/separators/..leading" - } - }, - { - "at": "/value/entries/0/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/0/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-6c30b210f0a8\"" - } - }, - { - "at": "/value/entries/0/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/0/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/0/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/1/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/separators/dot." - } - }, - { - "at": "/value/entries/1/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/1/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-6c30b210f0a8\"" - } - }, - { - "at": "/value/entries/1/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/1/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/1/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries", - "optional": false, - "rule": { - "is": "array_length", - "value": 2 - } - }, - { - "at": "/value/prefixes/0", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/separators/a.b/" - } - }, - { - "at": "/value/prefixes/1", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/separators/double/" - } - }, - { - "at": "/value/prefixes/2", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/separators/space /" - } - }, - { - "at": "/value/prefixes/3", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/separators/trailing/" - } - }, - { - "at": "/value/prefixes", - "optional": false, - "rule": { - "is": "array_length", - "value": 4 - } - }, - { - "at": "/value/continuation_token", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "\"fixture-32b70ae425ac\"" } } ], "refusal": null }, { - "id": "operations/s3/list-separator-keys", + "id": "operations/s3/stage-part-10000", "profile": "s3", "lane": "core", - "purpose": "Report keys with leading dots, repeated slashes, a space and a trailing slash exactly as stored", + "purpose": "Part numbers run from 1 to 10,000. Stage part 10,000; only 0 and 10,001 may be refused.", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "op": "list_page", - "prefix": "object-tests/separators/" + "body_base64": "c2Vjb25k", + "key": "object-tests/multipart/object.bin", + "op": "s3.upload_part", + "part_number": 10000, + "upload_id": "fixture-upload+/276ca18046f9=" }, "exchanges": [ { @@ -99339,7 +138671,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -99347,7 +138679,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/multipart/object.bin" } }, { @@ -99355,23 +138687,23 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "c2Vjb25k" } }, { - "at": "/query/list-type", + "at": "/query/partNumber", "optional": false, "rule": { "is": "equal", - "value": "2" + "value": "10000" } }, { - "at": "/query/prefix", + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "object-tests/separators/" + "value": "fixture-upload+/276ca18046f9=" } } ], @@ -99382,19 +138714,59 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", "date": { "from": "now" }, + "etag": "\"fixture-32b70ae425ac\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nfixtureobject-tests/separators/61000falseobject-tests/separators/..leading2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/separators/a.b/c2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/separators/dot.2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/separators/double//slash2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/separators/space /x2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/separators/trailing/2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARD" - }, - "framing": "chunked" + "encoding": "base64", + "data": "" + } } - }, + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-32b70ae425ac\"" + } + } + ], + "refusal": null + }, + { + "id": "operations/s3/stage-part-10001", + "profile": "s3", + "lane": "core", + "purpose": "stage part 10001", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "body_base64": "eA==", + "key": "object-tests/multipart/object.bin", + "op": "s3.upload_part", + "part_number": 10001, + "upload_id": "fixture-upload+/276ca18046f9=" + }, + "exchanges": [ + { + "alternatives": [ { "request": [ { @@ -99402,7 +138774,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -99410,7 +138782,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/multipart/object.bin" } }, { @@ -99418,31 +138790,23 @@ "optional": false, "rule": { "is": "equal", - "value": "" - } - }, - { - "at": "/query/list-type", - "optional": false, - "rule": { - "is": "equal", - "value": "2" + "value": "eA==" } }, { - "at": "/query/prefix", + "at": "/query/partNumber", "optional": false, "rule": { "is": "equal", - "value": "object-tests/separators/" + "value": "10001" } }, { - "at": "/query/encoding-type", + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "url" + "value": "fixture-upload+/276ca18046f9=" } } ], @@ -99451,17 +138815,16 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 400, "headers": { "content-type": "application/xml", "date": { "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { "encoding": "utf8", - "data": "\nfixtureobject-tests/separators/61000urlfalseobject-tests/separators/..leading2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/separators/a.b/c2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/separators/dot.2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/separators/double//slash2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/separators/space+/x2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/separators/trailing/2024-01-01T00:00:00.000Z"fixture-6c30b210f0a8"CRC64NVMEFULL_OBJECT1STANDARD" + "data": "\nInvalidArgumentFixture error" }, "framing": "chunked" } @@ -99475,389 +138838,83 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/entries/0/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/separators/..leading" - } - }, - { - "at": "/value/entries/0/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/0/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-6c30b210f0a8\"" - } - }, - { - "at": "/value/entries/0/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/0/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/0/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/1/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/separators/a.b/c" - } - }, - { - "at": "/value/entries/1/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/1/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-6c30b210f0a8\"" - } - }, - { - "at": "/value/entries/1/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/1/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/1/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/2/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/separators/dot." - } - }, - { - "at": "/value/entries/2/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/2/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-6c30b210f0a8\"" - } - }, - { - "at": "/value/entries/2/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/2/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/2/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/3/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/separators/double//slash" + "value": "error" } }, { - "at": "/value/entries/3/size", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": 1 + "value": 400 } }, { - "at": "/value/entries/3/etag", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-6c30b210f0a8\"" - } - }, - { - "at": "/value/entries/3/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/3/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/3/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] + "value": "InvalidArgument" } - }, + } + ], + "refusal": [ { - "at": "/value/entries/4/key", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "object-tests/separators/space /x" + "value": "refused" } }, { - "at": "/value/entries/4/size", + "at": "/kind", "optional": false, "rule": { - "is": "equal", - "value": 1 + "is": "matches", + "pattern": ".+" } }, { - "at": "/value/entries/4/etag", + "at": "/parameter", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-6c30b210f0a8\"" - } - }, - { - "at": "/value/entries/4/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/4/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "value": "part_number" } }, { - "at": "/value/entries/4/is_current_version", + "at": "/status", "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/5/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/separators/trailing/" - } - }, - { - "at": "/value/entries/5/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/5/etag", - "optional": false, "rule": { "is": "equal", - "value": "\"fixture-6c30b210f0a8\"" - } - }, - { - "at": "/value/entries/5/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/5/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "value": 400 } }, { - "at": "/value/entries/5/is_current_version", + "at": "/code", "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries", - "optional": false, - "rule": { - "is": "array_length", - "value": 6 - } - }, - { - "at": "/value/prefixes", - "optional": false, - "rule": { - "is": "array_length", - "value": 0 - } - }, - { - "at": "/value/continuation_token", - "optional": false, "rule": { "is": "equal", - "value": "" + "value": "InvalidArgument" } } - ], - "refusal": null + ] }, { - "id": "operations/s3/list-unauthenticated", + "id": "operations/s3/stage-part-zero", "profile": "s3", "lane": "core", - "purpose": "Report the service authorization error for this operation; signature acceptance is tested separately.", + "purpose": "stage part zero", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "op": "list_page", - "prefix": "object-tests/" + "body_base64": "eA==", + "key": "object-tests/multipart/object.bin", + "op": "s3.upload_part", + "part_number": 0, + "upload_id": "fixture-upload+/276ca18046f9=" }, "exchanges": [ { @@ -99869,7 +138926,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -99877,7 +138934,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/multipart/object.bin" } }, { @@ -99885,23 +138942,23 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "eA==" } }, { - "at": "/query/list-type", + "at": "/query/partNumber", "optional": false, "rule": { "is": "equal", - "value": "2" + "value": "0" } }, { - "at": "/query/prefix", + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "object-tests/" + "value": "fixture-upload+/276ca18046f9=" } } ], @@ -99910,7 +138967,7 @@ ], "allow_query": [], "response": { - "status": 403, + "status": 400, "headers": { "content-type": "application/xml", "date": { @@ -99919,11 +138976,101 @@ }, "body": { "encoding": "utf8", - "data": "\nInvalidAccessKeyIdFixture error" + "data": "\nInvalidArgumentFixture error" }, "framing": "chunked" } - }, + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 400 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "InvalidArgument" + } + } + ], + "refusal": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "refused" + } + }, + { + "at": "/kind", + "optional": false, + "rule": { + "is": "matches", + "pattern": ".+" + } + }, + { + "at": "/parameter", + "optional": false, + "rule": { + "is": "equal", + "value": "part_number" + } + }, + { + "at": "/status", + "optional": true, + "rule": { + "is": "equal", + "value": 400 + } + }, + { + "at": "/code", + "optional": true, + "rule": { + "is": "equal", + "value": "InvalidArgument" + } + } + ] + }, + { + "id": "operations/s3/stage-unknown-upload", + "profile": "s3", + "lane": "core", + "purpose": "stage unknown upload", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "body_base64": "eA==", + "key": "object-tests/multipart/object.bin", + "op": "s3.upload_part", + "part_number": 1, + "upload_id": "fixture-upload+/4d0d5ccc4993=" + }, + "exchanges": [ + { + "alternatives": [ { "request": [ { @@ -99931,47 +139078,39 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture" + "value": "PUT" } }, { - "at": "/body_base64", + "at": "/path", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "/fixture/object-tests/multipart/object.bin" } }, { - "at": "/query/list-type", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "2" + "value": "eA==" } }, { - "at": "/query/prefix", + "at": "/query/partNumber", "optional": false, "rule": { "is": "equal", - "value": "object-tests/" + "value": "1" } }, { - "at": "/query/encoding-type", + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "url" + "value": "fixture-upload+/4d0d5ccc4993=" } } ], @@ -99980,7 +139119,7 @@ ], "allow_query": [], "response": { - "status": 403, + "status": 404, "headers": { "content-type": "application/xml", "date": { @@ -99989,7 +139128,7 @@ }, "body": { "encoding": "utf8", - "data": "\nInvalidAccessKeyIdThe AWS Access Key Id you provided does not exist in our records.not-a-tokenD3AWMCZ2CJYZX2K4iNmdT7uJWoHQA6IHwWhIKos452Xw9yuRP9vkj83JKvDa5ZUSTJ5lBFHsh3LIS/1DkVBgdHG6g50=" + "data": "\nNoSuchUploadFixture error" }, "framing": "chunked" } @@ -100011,7 +139150,7 @@ "optional": false, "rule": { "is": "equal", - "value": 403 + "value": 404 } }, { @@ -100019,24 +139158,26 @@ "optional": false, "rule": { "is": "equal", - "value": "InvalidAccessKeyId" + "value": "NoSuchUpload" } } ], "refusal": null }, { - "id": "operations/s3/list-all-pages", + "id": "operations/s3/stage", "profile": "s3", "lane": "core", - "purpose": "Follow each page's continuation token until a page is not truncated", + "purpose": "stage", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "op": "list", - "page_size": 1, - "prefix": "object-tests/board/" + "body_base64": "cGFydA==", + "key": "object-tests/multipart/object.bin", + "op": "s3.upload_part", + "part_number": 1, + "upload_id": "fixture-upload+/276ca18046f9=" }, "exchanges": [ { @@ -100048,7 +139189,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -100056,7 +139197,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/multipart/object.bin" } }, { @@ -100064,31 +139205,23 @@ "optional": false, "rule": { "is": "equal", - "value": "" - } - }, - { - "at": "/query/list-type", - "optional": false, - "rule": { - "is": "equal", - "value": "2" + "value": "cGFydA==" } }, { - "at": "/query/prefix", + "at": "/query/partNumber", "optional": false, "rule": { "is": "equal", - "value": "object-tests/board/" + "value": "1" } }, { - "at": "/query/max-keys", + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "1" + "value": "fixture-upload+/276ca18046f9=" } } ], @@ -100099,19 +139232,59 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", "date": { "from": "now" }, + "etag": "\"fixture-6d60d5bbaa47\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nfixtureobject-tests/board/fixture-marker+/a11ba9e5001=11trueobject-tests/board/a.txt2024-01-01T00:00:00.000Z"fixture-626f61720000"CRC64NVMEFULL_OBJECT8STANDARD" - }, - "framing": "chunked" + "encoding": "base64", + "data": "" + } } - }, + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-6d60d5bbaa47\"" + } + } + ], + "refusal": null + }, + { + "id": "operations/s3/stage-key-question", + "profile": "s3", + "lane": "core", + "purpose": "stage, with the key \"question?mark.txt\"", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "body_base64": "cGFydA==", + "key": "object-tests/keys/question?mark.txt", + "op": "s3.upload_part", + "part_number": 1, + "upload_id": "fixture-upload+/276ca18046f9=" + }, + "exchanges": [ + { + "alternatives": [ { "request": [ { @@ -100119,7 +139292,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -100127,7 +139300,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/keys/question?mark.txt" } }, { @@ -100135,27 +139308,11 @@ "optional": false, "rule": { "is": "equal", - "value": "" - } - }, - { - "at": "/query/list-type", - "optional": false, - "rule": { - "is": "equal", - "value": "2" - } - }, - { - "at": "/query/prefix", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/board/" + "value": "cGFydA==" } }, { - "at": "/query/max-keys", + "at": "/query/partNumber", "optional": false, "rule": { "is": "equal", @@ -100163,11 +139320,11 @@ } }, { - "at": "/query/encoding-type", + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "url" + "value": "fixture-upload+/276ca18046f9=" } } ], @@ -100178,21 +139335,57 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", "date": { "from": "now" }, + "etag": "\"fixture-6d60d5bbaa47\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nfixtureobject-tests/board/fixture-marker+/a11ba9e5001=11urltrueobject-tests/board/a.txt2024-01-01T00:00:00.000Z"fixture-626f61720000"CRC64NVMEFULL_OBJECT8STANDARD" - }, - "framing": "chunked" + "encoding": "base64", + "data": "" + } } } ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-6d60d5bbaa47\"" + } + } + ], + "refusal": null + }, + { + "id": "operations/s3/stage-key-hash", + "profile": "s3", + "lane": "core", + "purpose": "stage, with the key \"hash#tag.txt\"", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "body_base64": "cGFydA==", + "key": "object-tests/keys/hash#tag.txt", + "op": "s3.upload_part", + "part_number": 1, + "upload_id": "fixture-upload+/276ca18046f9=" + }, + "exchanges": [ { "alternatives": [ { @@ -100202,7 +139395,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -100210,7 +139403,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/keys/hash#tag.txt" } }, { @@ -100218,27 +139411,11 @@ "optional": false, "rule": { "is": "equal", - "value": "" - } - }, - { - "at": "/query/list-type", - "optional": false, - "rule": { - "is": "equal", - "value": "2" - } - }, - { - "at": "/query/prefix", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/board/" + "value": "cGFydA==" } }, { - "at": "/query/max-keys", + "at": "/query/partNumber", "optional": false, "rule": { "is": "equal", @@ -100246,11 +139423,11 @@ } }, { - "at": "/query/continuation-token", + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "fixture-marker+/a11ba9e5001=" + "value": "fixture-upload+/276ca18046f9=" } } ], @@ -100261,19 +139438,59 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", "date": { "from": "now" }, + "etag": "\"fixture-6d60d5bbaa47\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nfixtureobject-tests/board/fixture-marker+/a11ba9e5001=fixture-marker+/a11ba9e5002=11trueobject-tests/board/nested/c.txt2024-01-01T00:00:00.000Z"fixture-626f61720001"CRC64NVMEFULL_OBJECT1STANDARD" - }, - "framing": "chunked" + "encoding": "base64", + "data": "" + } } - }, + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-6d60d5bbaa47\"" + } + } + ], + "refusal": null + }, + { + "id": "operations/s3/stage-key-percent", + "profile": "s3", + "lane": "core", + "purpose": "stage, with the key \"percent%20.txt\"", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "body_base64": "cGFydA==", + "key": "object-tests/keys/percent%20.txt", + "op": "s3.upload_part", + "part_number": 1, + "upload_id": "fixture-upload+/276ca18046f9=" + }, + "exchanges": [ + { + "alternatives": [ { "request": [ { @@ -100281,7 +139498,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -100289,7 +139506,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/keys/percent%20.txt" } }, { @@ -100297,27 +139514,11 @@ "optional": false, "rule": { "is": "equal", - "value": "" - } - }, - { - "at": "/query/list-type", - "optional": false, - "rule": { - "is": "equal", - "value": "2" - } - }, - { - "at": "/query/prefix", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/board/" + "value": "cGFydA==" } }, { - "at": "/query/max-keys", + "at": "/query/partNumber", "optional": false, "rule": { "is": "equal", @@ -100325,19 +139526,11 @@ } }, { - "at": "/query/continuation-token", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-marker+/a11ba9e5001=" - } - }, - { - "at": "/query/encoding-type", + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "url" + "value": "fixture-upload+/276ca18046f9=" } } ], @@ -100348,21 +139541,57 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", "date": { "from": "now" }, + "etag": "\"fixture-6d60d5bbaa47\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nfixtureobject-tests/board/fixture-marker+/a11ba9e5001=fixture-marker+/a11ba9e5002=11urltrueobject-tests/board/nested/c.txt2024-01-01T00:00:00.000Z"fixture-626f61720001"CRC64NVMEFULL_OBJECT1STANDARD" - }, - "framing": "chunked" + "encoding": "base64", + "data": "" + } } } ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-6d60d5bbaa47\"" + } + } + ], + "refusal": null + }, + { + "id": "operations/s3/stage-key-plus", + "profile": "s3", + "lane": "core", + "purpose": "stage, with the key \"plus+plus.txt\"", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "body_base64": "cGFydA==", + "key": "object-tests/keys/plus+plus.txt", + "op": "s3.upload_part", + "part_number": 1, + "upload_id": "fixture-upload+/276ca18046f9=" + }, + "exchanges": [ { "alternatives": [ { @@ -100372,7 +139601,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -100380,7 +139609,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/keys/plus+plus.txt" } }, { @@ -100388,27 +139617,11 @@ "optional": false, "rule": { "is": "equal", - "value": "" - } - }, - { - "at": "/query/list-type", - "optional": false, - "rule": { - "is": "equal", - "value": "2" - } - }, - { - "at": "/query/prefix", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/board/" + "value": "cGFydA==" } }, { - "at": "/query/max-keys", + "at": "/query/partNumber", "optional": false, "rule": { "is": "equal", @@ -100416,11 +139629,11 @@ } }, { - "at": "/query/continuation-token", + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "fixture-marker+/a11ba9e5002=" + "value": "fixture-upload+/276ca18046f9=" } } ], @@ -100431,19 +139644,59 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", "date": { "from": "now" }, + "etag": "\"fixture-6d60d5bbaa47\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nfixtureobject-tests/board/fixture-marker+/a11ba9e5002=11falseobject-tests/board/z.txt2024-01-01T00:00:00.000Z"fixture-626f61720002"CRC64NVMEFULL_OBJECT2STANDARD" - }, - "framing": "chunked" + "encoding": "base64", + "data": "" + } } - }, + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-6d60d5bbaa47\"" + } + } + ], + "refusal": null + }, + { + "id": "operations/s3/stage-key-space", + "profile": "s3", + "lane": "core", + "purpose": "stage, with the key \"space name.txt\"", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "body_base64": "cGFydA==", + "key": "object-tests/keys/space name.txt", + "op": "s3.upload_part", + "part_number": 1, + "upload_id": "fixture-upload+/276ca18046f9=" + }, + "exchanges": [ + { + "alternatives": [ { "request": [ { @@ -100451,7 +139704,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -100459,7 +139712,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/keys/space name.txt" } }, { @@ -100467,27 +139720,11 @@ "optional": false, "rule": { "is": "equal", - "value": "" - } - }, - { - "at": "/query/list-type", - "optional": false, - "rule": { - "is": "equal", - "value": "2" - } - }, - { - "at": "/query/prefix", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/board/" + "value": "cGFydA==" } }, { - "at": "/query/max-keys", + "at": "/query/partNumber", "optional": false, "rule": { "is": "equal", @@ -100495,19 +139732,11 @@ } }, { - "at": "/query/continuation-token", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-marker+/a11ba9e5002=" - } - }, - { - "at": "/query/encoding-type", + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "url" + "value": "fixture-upload+/276ca18046f9=" } } ], @@ -100518,17 +139747,16 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", "date": { "from": "now" }, + "etag": "\"fixture-6d60d5bbaa47\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nfixtureobject-tests/board/fixture-marker+/a11ba9e5002=11urlfalseobject-tests/board/z.txt2024-01-01T00:00:00.000Z"fixture-626f61720002"CRC64NVMEFULL_OBJECT2STANDARD" - }, - "framing": "chunked" + "encoding": "base64", + "data": "" + } } } ] @@ -100544,31 +139772,30 @@ } }, { - "at": "/value/keys", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": [ - "object-tests/board/a.txt", - "object-tests/board/nested/c.txt", - "object-tests/board/z.txt" - ] + "value": "\"fixture-6d60d5bbaa47\"" } } ], "refusal": null }, { - "id": "operations/s3/list-entry-properties", + "id": "operations/s3/stage-key-non-ascii", "profile": "s3", "lane": "core", - "purpose": "Report each listed object's last-modified time as RFC 3339 in UTC, and its storage class", + "purpose": "stage, with the key \"café/雪.txt\"", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "op": "list_page", - "prefix": "object-tests/properties/" + "body_base64": "cGFydA==", + "key": "object-tests/keys/café/雪.txt", + "op": "s3.upload_part", + "part_number": 1, + "upload_id": "fixture-upload+/276ca18046f9=" }, "exchanges": [ { @@ -100580,7 +139807,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -100588,7 +139815,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/keys/café/雪.txt" } }, { @@ -100596,23 +139823,23 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "cGFydA==" } }, { - "at": "/query/list-type", + "at": "/query/partNumber", "optional": false, "rule": { "is": "equal", - "value": "2" + "value": "1" } }, { - "at": "/query/prefix", + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "object-tests/properties/" + "value": "fixture-upload+/276ca18046f9=" } } ], @@ -100623,88 +139850,16 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", "date": { "from": "now" }, + "etag": "\"fixture-6d60d5bbaa47\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nfixtureobject-tests/properties/21000falseobject-tests/properties/infrequent.txt2024-01-02T03:04:05.000Z"fixture-5070726f0000"CRC64NVMEFULL_OBJECT2STANDARD_IAobject-tests/properties/standard.txt2024-02-03T04:05:06.000Z"fixture-5070726f0001"CRC64NVMEFULL_OBJECT3STANDARD" - }, - "framing": "chunked" - } - }, - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/query/list-type", - "optional": false, - "rule": { - "is": "equal", - "value": "2" - } - }, - { - "at": "/query/prefix", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/properties/" - } - }, - { - "at": "/query/encoding-type", - "optional": false, - "rule": { - "is": "equal", - "value": "url" - } + "encoding": "base64", + "data": "" } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" - }, - "body": { - "encoding": "utf8", - "data": "\nfixtureobject-tests/properties/21000urlfalseobject-tests/properties/infrequent.txt2024-01-02T03:04:05.000Z"fixture-5070726f0000"CRC64NVMEFULL_OBJECT2STANDARD_IAobject-tests/properties/standard.txt2024-02-03T04:05:06.000Z"fixture-5070726f0001"CRC64NVMEFULL_OBJECT3STANDARD" - }, - "framing": "chunked" } } ] @@ -100720,190 +139875,30 @@ } }, { - "at": "/value/entries/0/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/properties/infrequent.txt" - } - }, - { - "at": "/value/entries/0/size", - "optional": false, - "rule": { - "is": "equal", - "value": 2 - } - }, - { - "at": "/value/entries/0/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-5070726f0000\"" - } - }, - { - "at": "/value/entries/0/last_modified", - "optional": false, - "rule": { - "is": "equal", - "value": "2024-01-02T03:04:05Z" - } - }, - { - "at": "/value/entries/0/storage_class", - "optional": false, - "rule": { - "is": "equal", - "value": "STANDARD_IA" - } - }, - { - "at": "/value/entries/0/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/0/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/0/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/1/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/properties/standard.txt" - } - }, - { - "at": "/value/entries/1/size", - "optional": false, - "rule": { - "is": "equal", - "value": 3 - } - }, - { - "at": "/value/entries/1/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-5070726f0001\"" - } - }, - { - "at": "/value/entries/1/last_modified", - "optional": false, - "rule": { - "is": "equal", - "value": "2024-02-03T04:05:06Z" - } - }, - { - "at": "/value/entries/1/storage_class", - "optional": false, - "rule": { - "is": "equal", - "value": "STANDARD" - } - }, - { - "at": "/value/entries/1/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/1/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/1/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries", - "optional": false, - "rule": { - "is": "array_length", - "value": 2 - } - }, - { - "at": "/value/prefixes", - "optional": false, - "rule": { - "is": "array_length", - "value": 0 - } - }, - { - "at": "/value/continuation_token", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "\"fixture-6d60d5bbaa47\"" } } ], "refusal": null }, { - "id": "operations/s3/list-checksum-algorithm", + "id": "operations/s3/stage-key-double-slash", "profile": "s3", "lane": "core", - "purpose": "Report each listed object's checksum algorithm as one name; S3 keeps one checksum per object, the one a write sent or else CRC64NVME, and lists one ChecksumAlgorithm", + "purpose": "stage, with the key \"double//slash.txt\"", "sources": [ - "https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html", - "https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "op": "list_page", - "prefix": "object-tests/checksum-listing/" + "body_base64": "cGFydA==", + "key": "object-tests/keys/double//slash.txt", + "op": "s3.upload_part", + "part_number": 1, + "upload_id": "fixture-upload+/276ca18046f9=" }, "exchanges": [ { @@ -100915,7 +139910,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -100923,7 +139918,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/keys/double//slash.txt" } }, { @@ -100931,23 +139926,23 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "cGFydA==" } }, { - "at": "/query/list-type", + "at": "/query/partNumber", "optional": false, "rule": { "is": "equal", - "value": "2" + "value": "1" } }, { - "at": "/query/prefix", + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "object-tests/checksum-listing/" + "value": "fixture-upload+/276ca18046f9=" } } ], @@ -100958,19 +139953,59 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", "date": { "from": "now" }, + "etag": "\"fixture-6d60d5bbaa47\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nfixtureobject-tests/checksum-listing/21000falseobject-tests/checksum-listing/crc32.txt2024-01-01T00:00:00.000Z"fixture-636b736c0000"CRC32FULL_OBJECT3STANDARDobject-tests/checksum-listing/none.txt2024-01-01T00:00:00.000Z"fixture-636b736c0001"CRC64NVMEFULL_OBJECT4STANDARD" - }, - "framing": "chunked" + "encoding": "base64", + "data": "" + } } - }, + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-6d60d5bbaa47\"" + } + } + ], + "refusal": null + }, + { + "id": "operations/s3/stage-key-trailing-slash", + "profile": "s3", + "lane": "core", + "purpose": "stage, with the key \"trailing-slash/\"", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "body_base64": "cGFydA==", + "key": "object-tests/keys/trailing-slash/", + "op": "s3.upload_part", + "part_number": 1, + "upload_id": "fixture-upload+/276ca18046f9=" + }, + "exchanges": [ + { + "alternatives": [ { "request": [ { @@ -100978,7 +140013,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -100986,7 +140021,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/keys/trailing-slash/" } }, { @@ -100994,235 +140029,82 @@ "optional": false, "rule": { "is": "equal", - "value": "" - } - }, - { - "at": "/query/list-type", - "optional": false, - "rule": { - "is": "equal", - "value": "2" + "value": "cGFydA==" } }, { - "at": "/query/prefix", + "at": "/query/partNumber", "optional": false, "rule": { "is": "equal", - "value": "object-tests/checksum-listing/" + "value": "1" } }, { - "at": "/query/encoding-type", + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "url" - } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" - }, - "body": { - "encoding": "utf8", - "data": "\nfixtureobject-tests/checksum-listing/21000urlfalseobject-tests/checksum-listing/crc32.txt2024-01-01T00:00:00.000Z"fixture-636b736c0000"CRC32FULL_OBJECT3STANDARDobject-tests/checksum-listing/none.txt2024-01-01T00:00:00.000Z"fixture-636b736c0001"CRC64NVMEFULL_OBJECT4STANDARD" - }, - "framing": "chunked" - } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/entries/0/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/checksum-listing/crc32.txt" - } - }, - { - "at": "/value/entries/0/size", - "optional": false, - "rule": { - "is": "equal", - "value": 3 - } - }, - { - "at": "/value/entries/0/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-636b736c0000\"" - } - }, - { - "at": "/value/entries/0/checksum_algorithm", - "optional": false, - "rule": { - "is": "equal", - "value": "CRC32" - } - }, - { - "at": "/value/entries/0/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/0/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/0/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/1/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/checksum-listing/none.txt" - } - }, - { - "at": "/value/entries/1/size", - "optional": false, - "rule": { - "is": "equal", - "value": 4 - } - }, - { - "at": "/value/entries/1/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-636b736c0001\"" - } - }, - { - "at": "/value/entries/1/checksum_algorithm", - "optional": false, - "rule": { - "is": "equal", - "value": "CRC64NVME" - } - }, - { - "at": "/value/entries/1/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/1/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/1/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries", - "optional": false, - "rule": { - "is": "array_length", - "value": 2 - } - }, + "value": "fixture-upload+/276ca18046f9=" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "date": { + "from": "now" + }, + "etag": "\"fixture-6d60d5bbaa47\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ { - "at": "/value/prefixes", + "at": "/outcome", "optional": false, "rule": { - "is": "array_length", - "value": 0 + "is": "equal", + "value": "ok" } }, { - "at": "/value/continuation_token", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "\"fixture-6d60d5bbaa47\"" } } ], "refusal": null }, { - "id": "operations/s3/list-other-delimiter", + "id": "operations/s3/stage-empty-part", "profile": "s3", "lane": "core", - "purpose": "Send the delimiter the caller names. A general-purpose bucket groups keys at any delimiter, not only /; here a- groups a-1.txt and a-2.txt", + "purpose": "Stage an empty part, which S3 takes", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "delimiter": "-", - "op": "list_page", - "prefix": "object-tests/dashes/" + "body_base64": "", + "key": "object-tests/multipart/object.bin", + "op": "s3.upload_part", + "part_number": 1, + "upload_id": "fixture-upload+/276ca18046f9=" }, "exchanges": [ { @@ -101234,7 +140116,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -101242,7 +140124,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/multipart/object.bin" } }, { @@ -101254,27 +140136,19 @@ } }, { - "at": "/query/list-type", - "optional": false, - "rule": { - "is": "equal", - "value": "2" - } - }, - { - "at": "/query/prefix", + "at": "/query/partNumber", "optional": false, "rule": { "is": "equal", - "value": "object-tests/dashes/" + "value": "1" } }, { - "at": "/query/delimiter", + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "-" + "value": "fixture-upload+/276ca18046f9=" } } ], @@ -101285,19 +140159,59 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", "date": { "from": "now" }, + "etag": "\"fixture-6d60d5bbaa47\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nfixtureobject-tests/dashes/21000-falseobject-tests/dashes/b.txt2024-01-01T00:00:00.000Z"fixture-646173680000"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/dashes/a-" - }, - "framing": "chunked" + "encoding": "base64", + "data": "" + } } - }, + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-6d60d5bbaa47\"" + } + } + ], + "refusal": null + }, + { + "id": "operations/s3/stage-copy", + "profile": "s3", + "lane": "core", + "purpose": "Copy a whole object into a part of a multipart upload, with UploadPartCopy", + "sources": [ + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html" + ], + "call": { + "key": "object-tests/multipart/object.bin", + "op": "s3.upload_part_copy", + "part_number": 1, + "source_key": "object-tests/copy/source.txt", + "upload_id": "fixture-upload+/276ca18046f9=" + }, + "exchanges": [ + { + "alternatives": [ { "request": [ { @@ -101305,7 +140219,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -101313,7 +140227,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/multipart/object.bin" } }, { @@ -101325,35 +140239,27 @@ } }, { - "at": "/query/list-type", - "optional": false, - "rule": { - "is": "equal", - "value": "2" - } - }, - { - "at": "/query/prefix", + "at": "/query/partNumber", "optional": false, "rule": { "is": "equal", - "value": "object-tests/dashes/" + "value": "1" } }, { - "at": "/query/delimiter", + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "-" + "value": "fixture-upload+/276ca18046f9=" } }, { - "at": "/query/encoding-type", + "at": "/headers/x-amz-copy-source", "optional": false, "rule": { - "is": "equal", - "value": "url" + "is": "matches", + "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" } } ], @@ -101367,14 +140273,12 @@ "content-type": "application/xml", "date": { "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { "encoding": "utf8", - "data": "\nfixtureobject-tests/dashes/21000-urlfalseobject-tests/dashes/b.txt2024-01-01T00:00:00.000Z"fixture-646173680000"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/dashes/a-" - }, - "framing": "chunked" + "data": "\n2024-01-01T00:00:00.000Z"fixture-etag"" + } } } ] @@ -101390,109 +140294,34 @@ } }, { - "at": "/value/entries/0/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/dashes/b.txt" - } - }, - { - "at": "/value/entries/0/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/0/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-646173680000\"" - } - }, - { - "at": "/value/entries/0/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/0/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/0/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries", - "optional": false, - "rule": { - "is": "array_length", - "value": 1 - } - }, - { - "at": "/value/prefixes/0", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/dashes/a-" - } - }, - { - "at": "/value/prefixes", - "optional": false, - "rule": { - "is": "array_length", - "value": 1 - } - }, - { - "at": "/value/continuation_token", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "\"fixture-etag\"" } } ], "refusal": null }, { - "id": "operations/s3/list-prefix-special-characters", + "id": "operations/s3/stage-copy-range", "profile": "s3", "lane": "core", - "purpose": "Percent-encode the prefix in the query, a space as %20 and a plus as %2B, and decode the common prefixes of a URL-encoded listing as well as the keys", + "purpose": "Copy bytes 0 to 2 of an object into a part, named in x-amz-copy-source-range with an inclusive end, as bytes=0-2", "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html" ], "call": { - "delimiter": "/", - "op": "list_page", - "prefix": "object-tests/odd a+b&c=d%é/" + "key": "object-tests/multipart/object.bin", + "op": "s3.upload_part_copy", + "part_number": 1, + "source_key": "object-tests/copy/source.txt", + "source_range": { + "end": 3, + "start": 0 + }, + "upload_id": "fixture-upload+/276ca18046f9=" }, "exchanges": [ { @@ -101504,7 +140333,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -101512,7 +140341,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/multipart/object.bin" } }, { @@ -101524,27 +140353,35 @@ } }, { - "at": "/query/list-type", + "at": "/query/partNumber", "optional": false, "rule": { "is": "equal", - "value": "2" + "value": "1" } }, { - "at": "/query/prefix", + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "object-tests/odd a+b&c=d%é/" + "value": "fixture-upload+/276ca18046f9=" } }, { - "at": "/query/delimiter", + "at": "/headers/x-amz-copy-source", + "optional": false, + "rule": { + "is": "matches", + "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" + } + }, + { + "at": "/headers/x-amz-copy-source-range", "optional": false, "rule": { "is": "equal", - "value": "/" + "value": "bytes=0-2" } } ], @@ -101558,16 +140395,59 @@ "content-type": "application/xml", "date": { "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { "encoding": "utf8", - "data": "\nfixtureobject-tests/odd a+b&c=d%é/21000/falseobject-tests/odd a+b&c=d%é/x.txt2024-01-01T00:00:00.000Z"fixture-6f6464200000"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/odd a+b&c=d%é/sub dir+/" - }, - "framing": "chunked" + "data": "\n2024-01-01T00:00:00.000Z"fixture-etag"" + } } - }, + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-etag\"" + } + } + ], + "refusal": null + }, + { + "id": "operations/s3/stage-copy-range-beyond-source", + "profile": "s3", + "lane": "core", + "purpose": "Report a part copy whose range ends past the source as an error. S3 answers 400 InvalidArgument", + "sources": [ + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html" + ], + "call": { + "key": "object-tests/multipart/object.bin", + "op": "s3.upload_part_copy", + "part_number": 1, + "source_key": "object-tests/copy/source.txt", + "source_range": { + "end": 10, + "start": 0 + }, + "upload_id": "fixture-upload+/276ca18046f9=" + }, + "exchanges": [ + { + "alternatives": [ { "request": [ { @@ -101575,7 +140455,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -101583,7 +140463,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/multipart/object.bin" } }, { @@ -101595,35 +140475,35 @@ } }, { - "at": "/query/list-type", + "at": "/query/partNumber", "optional": false, "rule": { "is": "equal", - "value": "2" + "value": "1" } }, { - "at": "/query/prefix", + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "object-tests/odd a+b&c=d%é/" + "value": "fixture-upload+/276ca18046f9=" } }, { - "at": "/query/delimiter", + "at": "/headers/x-amz-copy-source", "optional": false, "rule": { - "is": "equal", - "value": "/" + "is": "matches", + "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" } }, { - "at": "/query/encoding-type", + "at": "/headers/x-amz-copy-source-range", "optional": false, "rule": { "is": "equal", - "value": "url" + "value": "bytes=0-9" } } ], @@ -101632,17 +140512,16 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 400, "headers": { "content-type": "application/xml", "date": { "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { "encoding": "utf8", - "data": "\nfixtureobject-tests/odd+a%2Bb%26c%3Dd%25%C3%A9/21000/urlfalseobject-tests/odd+a%2Bb%26c%3Dd%25%C3%A9/x.txt2024-01-01T00:00:00.000Z"fixture-6f6464200000"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/odd+a%2Bb%26c%3Dd%25%C3%A9/sub+dir%2B/" + "data": "\nInvalidArgumentFixture error" }, "framing": "chunked" } @@ -101656,113 +140535,45 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/entries/0/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/odd a+b&c=d%é/x.txt" - } - }, - { - "at": "/value/entries/0/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/0/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-6f6464200000\"" - } - }, - { - "at": "/value/entries/0/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/0/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/0/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries", - "optional": false, - "rule": { - "is": "array_length", - "value": 1 + "value": "error" } }, { - "at": "/value/prefixes/0", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "object-tests/odd a+b&c=d%é/sub dir+/" - } - }, - { - "at": "/value/prefixes", - "optional": false, - "rule": { - "is": "array_length", - "value": 1 + "value": 400 } }, { - "at": "/value/continuation_token", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "InvalidArgument" } } ], "refusal": null }, { - "id": "operations/s3/list-fetch-owner", + "id": "operations/s3/stage-copy-200-internal-error", "profile": "s3", "lane": "core", - "purpose": "Ask for owners with fetch-owner=true, and report each listed object's owner ID", + "purpose": "Report a part copy answered 200 with an InternalError in the body as an error, never as a success. A client may retry up to 5 times first, and need not retry", "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + "https://repost.aws/knowledge-center/s3-resolve-200-internalerror", + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html" ], + "origin": "transient", + "derived_from": "operations/s3/stage-copy", "call": { - "fetch_owner": true, - "op": "list_page", - "prefix": "object-tests/owner/" + "key": "object-tests/multipart/object.bin", + "op": "s3.upload_part_copy", + "part_number": 1, + "source_key": "object-tests/copy/source.txt", + "upload_id": "fixture-upload+/276ca18046f9=" }, "exchanges": [ { @@ -101774,7 +140585,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -101782,7 +140593,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/multipart/object.bin" } }, { @@ -101794,27 +140605,27 @@ } }, { - "at": "/query/list-type", + "at": "/query/partNumber", "optional": false, "rule": { "is": "equal", - "value": "2" + "value": "1" } }, { - "at": "/query/prefix", + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "object-tests/owner/" + "value": "fixture-upload+/276ca18046f9=" } }, { - "at": "/query/fetch-owner", + "at": "/headers/x-amz-copy-source", "optional": false, "rule": { - "is": "equal", - "value": "true" + "is": "matches", + "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" } } ], @@ -101828,16 +140639,19 @@ "content-type": "application/xml", "date": { "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { "encoding": "utf8", - "data": "\nfixtureobject-tests/owner/11000falseobject-tests/owner/a.txt2024-01-01T00:00:00.000Z"fixture-6f776e650000"CRC64NVMEFULL_OBJECT1fixture-owner-idSTANDARD" + "data": "\nInternalErrorWe encountered an internal error. Please try again.fixturefixture" }, "framing": "chunked" } - }, + } + ] + }, + { + "alternatives": [ { "request": [ { @@ -101845,7 +140659,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -101853,7 +140667,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/multipart/object.bin" } }, { @@ -101865,35 +140679,102 @@ } }, { - "at": "/query/list-type", + "at": "/query/partNumber", "optional": false, "rule": { "is": "equal", - "value": "2" + "value": "1" } }, { - "at": "/query/prefix", + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "object-tests/owner/" + "value": "fixture-upload+/276ca18046f9=" } }, { - "at": "/query/fetch-owner", + "at": "/headers/x-amz-copy-source", + "optional": false, + "rule": { + "is": "matches", + "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + } + }, + "body": { + "encoding": "utf8", + "data": "\nInternalErrorWe encountered an internal error. Please try again.fixturefixture" + }, + "framing": "chunked" + } + } + ], + "optional": true + }, + { + "alternatives": [ + { + "request": [ + { + "at": "/method", "optional": false, "rule": { "is": "equal", - "value": "true" + "value": "PUT" } }, { - "at": "/query/encoding-type", + "at": "/path", "optional": false, "rule": { "is": "equal", - "value": "url" + "value": "/fixture/object-tests/multipart/object.bin" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/partNumber", + "optional": false, + "rule": { + "is": "equal", + "value": "1" + } + }, + { + "at": "/query/uploadId", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-upload+/276ca18046f9=" + } + }, + { + "at": "/headers/x-amz-copy-source", + "optional": false, + "rule": { + "is": "matches", + "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" } } ], @@ -101907,133 +140788,18 @@ "content-type": "application/xml", "date": { "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { "encoding": "utf8", - "data": "\nfixtureobject-tests/owner/11000urlfalseobject-tests/owner/a.txt2024-01-01T00:00:00.000Z"fixture-6f776e650000"CRC64NVMEFULL_OBJECT1fixture-owner-idSTANDARD" + "data": "\nInternalErrorWe encountered an internal error. Please try again.fixturefixture" }, "framing": "chunked" } } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/entries/0/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/owner/a.txt" - } - }, - { - "at": "/value/entries/0/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/0/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-6f776e650000\"" - } - }, - { - "at": "/value/entries/0/owner_id", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-owner-id" - } - }, - { - "at": "/value/entries/0/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/0/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/0/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries", - "optional": false, - "rule": { - "is": "array_length", - "value": 1 - } - }, - { - "at": "/value/prefixes", - "optional": false, - "rule": { - "is": "array_length", - "value": 0 - } + ], + "optional": true }, - { - "at": "/value/continuation_token", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - } - ], - "refusal": null - }, - { - "id": "operations/s3/list-over-1000", - "profile": "s3", - "lane": "core", - "purpose": "List more keys than the service's default page of 1,000 by following the continuation token", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "op": "list", - "prefix": "object-tests/many/" - }, - "exchanges": [ { "alternatives": [ { @@ -102043,7 +140809,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -102051,7 +140817,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/multipart/object.bin" } }, { @@ -102063,19 +140829,27 @@ } }, { - "at": "/query/list-type", + "at": "/query/partNumber", "optional": false, "rule": { "is": "equal", - "value": "2" + "value": "1" } }, { - "at": "/query/prefix", + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "object-tests/many/" + "value": "fixture-upload+/276ca18046f9=" + } + }, + { + "at": "/headers/x-amz-copy-source", + "optional": false, + "rule": { + "is": "matches", + "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" } } ], @@ -102089,16 +140863,20 @@ "content-type": "application/xml", "date": { "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { "encoding": "utf8", - "data": "\nfixtureobject-tests/many/fixture-marker+/3a4e1000=10001000trueobject-tests/many/00002024-01-01T00:00:00.000Z"fixture-6d610000"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00012024-01-01T00:00:00.000Z"fixture-6d610001"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00022024-01-01T00:00:00.000Z"fixture-6d610002"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00032024-01-01T00:00:00.000Z"fixture-6d610003"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00042024-01-01T00:00:00.000Z"fixture-6d610004"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00052024-01-01T00:00:00.000Z"fixture-6d610005"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00062024-01-01T00:00:00.000Z"fixture-6d610006"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00072024-01-01T00:00:00.000Z"fixture-6d610007"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00082024-01-01T00:00:00.000Z"fixture-6d610008"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00092024-01-01T00:00:00.000Z"fixture-6d610009"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00102024-01-01T00:00:00.000Z"fixture-6d61000a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00112024-01-01T00:00:00.000Z"fixture-6d61000b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00122024-01-01T00:00:00.000Z"fixture-6d61000c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00132024-01-01T00:00:00.000Z"fixture-6d61000d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00142024-01-01T00:00:00.000Z"fixture-6d61000e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00152024-01-01T00:00:00.000Z"fixture-6d61000f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00162024-01-01T00:00:00.000Z"fixture-6d610010"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00172024-01-01T00:00:00.000Z"fixture-6d610011"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00182024-01-01T00:00:00.000Z"fixture-6d610012"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00192024-01-01T00:00:00.000Z"fixture-6d610013"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00202024-01-01T00:00:00.000Z"fixture-6d610014"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00212024-01-01T00:00:00.000Z"fixture-6d610015"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00222024-01-01T00:00:00.000Z"fixture-6d610016"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00232024-01-01T00:00:00.000Z"fixture-6d610017"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00242024-01-01T00:00:00.000Z"fixture-6d610018"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00252024-01-01T00:00:00.000Z"fixture-6d610019"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00262024-01-01T00:00:00.000Z"fixture-6d61001a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00272024-01-01T00:00:00.000Z"fixture-6d61001b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00282024-01-01T00:00:00.000Z"fixture-6d61001c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00292024-01-01T00:00:00.000Z"fixture-6d61001d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00302024-01-01T00:00:00.000Z"fixture-6d61001e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00312024-01-01T00:00:00.000Z"fixture-6d61001f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00322024-01-01T00:00:00.000Z"fixture-6d610020"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00332024-01-01T00:00:00.000Z"fixture-6d610021"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00342024-01-01T00:00:00.000Z"fixture-6d610022"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00352024-01-01T00:00:00.000Z"fixture-6d610023"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00362024-01-01T00:00:00.000Z"fixture-6d610024"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00372024-01-01T00:00:00.000Z"fixture-6d610025"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00382024-01-01T00:00:00.000Z"fixture-6d610026"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00392024-01-01T00:00:00.000Z"fixture-6d610027"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00402024-01-01T00:00:00.000Z"fixture-6d610028"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00412024-01-01T00:00:00.000Z"fixture-6d610029"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00422024-01-01T00:00:00.000Z"fixture-6d61002a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00432024-01-01T00:00:00.000Z"fixture-6d61002b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00442024-01-01T00:00:00.000Z"fixture-6d61002c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00452024-01-01T00:00:00.000Z"fixture-6d61002d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00462024-01-01T00:00:00.000Z"fixture-6d61002e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00472024-01-01T00:00:00.000Z"fixture-6d61002f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00482024-01-01T00:00:00.000Z"fixture-6d610030"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00492024-01-01T00:00:00.000Z"fixture-6d610031"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00502024-01-01T00:00:00.000Z"fixture-6d610032"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00512024-01-01T00:00:00.000Z"fixture-6d610033"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00522024-01-01T00:00:00.000Z"fixture-6d610034"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00532024-01-01T00:00:00.000Z"fixture-6d610035"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00542024-01-01T00:00:00.000Z"fixture-6d610036"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00552024-01-01T00:00:00.000Z"fixture-6d610037"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00562024-01-01T00:00:00.000Z"fixture-6d610038"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00572024-01-01T00:00:00.000Z"fixture-6d610039"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00582024-01-01T00:00:00.000Z"fixture-6d61003a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00592024-01-01T00:00:00.000Z"fixture-6d61003b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00602024-01-01T00:00:00.000Z"fixture-6d61003c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00612024-01-01T00:00:00.000Z"fixture-6d61003d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00622024-01-01T00:00:00.000Z"fixture-6d61003e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00632024-01-01T00:00:00.000Z"fixture-6d61003f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00642024-01-01T00:00:00.000Z"fixture-6d610040"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00652024-01-01T00:00:00.000Z"fixture-6d610041"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00662024-01-01T00:00:00.000Z"fixture-6d610042"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00672024-01-01T00:00:00.000Z"fixture-6d610043"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00682024-01-01T00:00:00.000Z"fixture-6d610044"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00692024-01-01T00:00:00.000Z"fixture-6d610045"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00702024-01-01T00:00:00.000Z"fixture-6d610046"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00712024-01-01T00:00:00.000Z"fixture-6d610047"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00722024-01-01T00:00:00.000Z"fixture-6d610048"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00732024-01-01T00:00:00.000Z"fixture-6d610049"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00742024-01-01T00:00:00.000Z"fixture-6d61004a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00752024-01-01T00:00:00.000Z"fixture-6d61004b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00762024-01-01T00:00:00.000Z"fixture-6d61004c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00772024-01-01T00:00:00.000Z"fixture-6d61004d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00782024-01-01T00:00:00.000Z"fixture-6d61004e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00792024-01-01T00:00:00.000Z"fixture-6d61004f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00802024-01-01T00:00:00.000Z"fixture-6d610050"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00812024-01-01T00:00:00.000Z"fixture-6d610051"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00822024-01-01T00:00:00.000Z"fixture-6d610052"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00832024-01-01T00:00:00.000Z"fixture-6d610053"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00842024-01-01T00:00:00.000Z"fixture-6d610054"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00852024-01-01T00:00:00.000Z"fixture-6d610055"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00862024-01-01T00:00:00.000Z"fixture-6d610056"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00872024-01-01T00:00:00.000Z"fixture-6d610057"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00882024-01-01T00:00:00.000Z"fixture-6d610058"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00892024-01-01T00:00:00.000Z"fixture-6d610059"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00902024-01-01T00:00:00.000Z"fixture-6d61005a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00912024-01-01T00:00:00.000Z"fixture-6d61005b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00922024-01-01T00:00:00.000Z"fixture-6d61005c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00932024-01-01T00:00:00.000Z"fixture-6d61005d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00942024-01-01T00:00:00.000Z"fixture-6d61005e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00952024-01-01T00:00:00.000Z"fixture-6d61005f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00962024-01-01T00:00:00.000Z"fixture-6d610060"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00972024-01-01T00:00:00.000Z"fixture-6d610061"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00982024-01-01T00:00:00.000Z"fixture-6d610062"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00992024-01-01T00:00:00.000Z"fixture-6d610063"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01002024-01-01T00:00:00.000Z"fixture-6d610064"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01012024-01-01T00:00:00.000Z"fixture-6d610065"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01022024-01-01T00:00:00.000Z"fixture-6d610066"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01032024-01-01T00:00:00.000Z"fixture-6d610067"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01042024-01-01T00:00:00.000Z"fixture-6d610068"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01052024-01-01T00:00:00.000Z"fixture-6d610069"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01062024-01-01T00:00:00.000Z"fixture-6d61006a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01072024-01-01T00:00:00.000Z"fixture-6d61006b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01082024-01-01T00:00:00.000Z"fixture-6d61006c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01092024-01-01T00:00:00.000Z"fixture-6d61006d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01102024-01-01T00:00:00.000Z"fixture-6d61006e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01112024-01-01T00:00:00.000Z"fixture-6d61006f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01122024-01-01T00:00:00.000Z"fixture-6d610070"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01132024-01-01T00:00:00.000Z"fixture-6d610071"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01142024-01-01T00:00:00.000Z"fixture-6d610072"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01152024-01-01T00:00:00.000Z"fixture-6d610073"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01162024-01-01T00:00:00.000Z"fixture-6d610074"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01172024-01-01T00:00:00.000Z"fixture-6d610075"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01182024-01-01T00:00:00.000Z"fixture-6d610076"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01192024-01-01T00:00:00.000Z"fixture-6d610077"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01202024-01-01T00:00:00.000Z"fixture-6d610078"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01212024-01-01T00:00:00.000Z"fixture-6d610079"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01222024-01-01T00:00:00.000Z"fixture-6d61007a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01232024-01-01T00:00:00.000Z"fixture-6d61007b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01242024-01-01T00:00:00.000Z"fixture-6d61007c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01252024-01-01T00:00:00.000Z"fixture-6d61007d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01262024-01-01T00:00:00.000Z"fixture-6d61007e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01272024-01-01T00:00:00.000Z"fixture-6d61007f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01282024-01-01T00:00:00.000Z"fixture-6d610080"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01292024-01-01T00:00:00.000Z"fixture-6d610081"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01302024-01-01T00:00:00.000Z"fixture-6d610082"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01312024-01-01T00:00:00.000Z"fixture-6d610083"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01322024-01-01T00:00:00.000Z"fixture-6d610084"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01332024-01-01T00:00:00.000Z"fixture-6d610085"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01342024-01-01T00:00:00.000Z"fixture-6d610086"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01352024-01-01T00:00:00.000Z"fixture-6d610087"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01362024-01-01T00:00:00.000Z"fixture-6d610088"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01372024-01-01T00:00:00.000Z"fixture-6d610089"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01382024-01-01T00:00:00.000Z"fixture-6d61008a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01392024-01-01T00:00:00.000Z"fixture-6d61008b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01402024-01-01T00:00:00.000Z"fixture-6d61008c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01412024-01-01T00:00:00.000Z"fixture-6d61008d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01422024-01-01T00:00:00.000Z"fixture-6d61008e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01432024-01-01T00:00:00.000Z"fixture-6d61008f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01442024-01-01T00:00:00.000Z"fixture-6d610090"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01452024-01-01T00:00:00.000Z"fixture-6d610091"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01462024-01-01T00:00:00.000Z"fixture-6d610092"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01472024-01-01T00:00:00.000Z"fixture-6d610093"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01482024-01-01T00:00:00.000Z"fixture-6d610094"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01492024-01-01T00:00:00.000Z"fixture-6d610095"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01502024-01-01T00:00:00.000Z"fixture-6d610096"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01512024-01-01T00:00:00.000Z"fixture-6d610097"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01522024-01-01T00:00:00.000Z"fixture-6d610098"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01532024-01-01T00:00:00.000Z"fixture-6d610099"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01542024-01-01T00:00:00.000Z"fixture-6d61009a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01552024-01-01T00:00:00.000Z"fixture-6d61009b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01562024-01-01T00:00:00.000Z"fixture-6d61009c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01572024-01-01T00:00:00.000Z"fixture-6d61009d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01582024-01-01T00:00:00.000Z"fixture-6d61009e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01592024-01-01T00:00:00.000Z"fixture-6d61009f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01602024-01-01T00:00:00.000Z"fixture-6d6100a0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01612024-01-01T00:00:00.000Z"fixture-6d6100a1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01622024-01-01T00:00:00.000Z"fixture-6d6100a2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01632024-01-01T00:00:00.000Z"fixture-6d6100a3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01642024-01-01T00:00:00.000Z"fixture-6d6100a4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01652024-01-01T00:00:00.000Z"fixture-6d6100a5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01662024-01-01T00:00:00.000Z"fixture-6d6100a6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01672024-01-01T00:00:00.000Z"fixture-6d6100a7"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01682024-01-01T00:00:00.000Z"fixture-6d6100a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01692024-01-01T00:00:00.000Z"fixture-6d6100a9"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01702024-01-01T00:00:00.000Z"fixture-6d6100aa"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01712024-01-01T00:00:00.000Z"fixture-6d6100ab"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01722024-01-01T00:00:00.000Z"fixture-6d6100ac"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01732024-01-01T00:00:00.000Z"fixture-6d6100ad"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01742024-01-01T00:00:00.000Z"fixture-6d6100ae"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01752024-01-01T00:00:00.000Z"fixture-6d6100af"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01762024-01-01T00:00:00.000Z"fixture-6d6100b0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01772024-01-01T00:00:00.000Z"fixture-6d6100b1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01782024-01-01T00:00:00.000Z"fixture-6d6100b2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01792024-01-01T00:00:00.000Z"fixture-6d6100b3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01802024-01-01T00:00:00.000Z"fixture-6d6100b4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01812024-01-01T00:00:00.000Z"fixture-6d6100b5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01822024-01-01T00:00:00.000Z"fixture-6d6100b6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01832024-01-01T00:00:00.000Z"fixture-6d6100b7"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01842024-01-01T00:00:00.000Z"fixture-6d6100b8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01852024-01-01T00:00:00.000Z"fixture-6d6100b9"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01862024-01-01T00:00:00.000Z"fixture-6d6100ba"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01872024-01-01T00:00:00.000Z"fixture-6d6100bb"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01882024-01-01T00:00:00.000Z"fixture-6d6100bc"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01892024-01-01T00:00:00.000Z"fixture-6d6100bd"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01902024-01-01T00:00:00.000Z"fixture-6d6100be"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01912024-01-01T00:00:00.000Z"fixture-6d6100bf"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01922024-01-01T00:00:00.000Z"fixture-6d6100c0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01932024-01-01T00:00:00.000Z"fixture-6d6100c1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01942024-01-01T00:00:00.000Z"fixture-6d6100c2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01952024-01-01T00:00:00.000Z"fixture-6d6100c3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01962024-01-01T00:00:00.000Z"fixture-6d6100c4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01972024-01-01T00:00:00.000Z"fixture-6d6100c5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01982024-01-01T00:00:00.000Z"fixture-6d6100c6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01992024-01-01T00:00:00.000Z"fixture-6d6100c7"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02002024-01-01T00:00:00.000Z"fixture-6d6100c8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02012024-01-01T00:00:00.000Z"fixture-6d6100c9"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02022024-01-01T00:00:00.000Z"fixture-6d6100ca"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02032024-01-01T00:00:00.000Z"fixture-6d6100cb"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02042024-01-01T00:00:00.000Z"fixture-6d6100cc"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02052024-01-01T00:00:00.000Z"fixture-6d6100cd"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02062024-01-01T00:00:00.000Z"fixture-6d6100ce"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02072024-01-01T00:00:00.000Z"fixture-6d6100cf"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02082024-01-01T00:00:00.000Z"fixture-6d6100d0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02092024-01-01T00:00:00.000Z"fixture-6d6100d1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02102024-01-01T00:00:00.000Z"fixture-6d6100d2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02112024-01-01T00:00:00.000Z"fixture-6d6100d3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02122024-01-01T00:00:00.000Z"fixture-6d6100d4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02132024-01-01T00:00:00.000Z"fixture-6d6100d5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02142024-01-01T00:00:00.000Z"fixture-6d6100d6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02152024-01-01T00:00:00.000Z"fixture-6d6100d7"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02162024-01-01T00:00:00.000Z"fixture-6d6100d8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02172024-01-01T00:00:00.000Z"fixture-6d6100d9"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02182024-01-01T00:00:00.000Z"fixture-6d6100da"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02192024-01-01T00:00:00.000Z"fixture-6d6100db"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02202024-01-01T00:00:00.000Z"fixture-6d6100dc"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02212024-01-01T00:00:00.000Z"fixture-6d6100dd"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02222024-01-01T00:00:00.000Z"fixture-6d6100de"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02232024-01-01T00:00:00.000Z"fixture-6d6100df"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02242024-01-01T00:00:00.000Z"fixture-6d6100e0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02252024-01-01T00:00:00.000Z"fixture-6d6100e1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02262024-01-01T00:00:00.000Z"fixture-6d6100e2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02272024-01-01T00:00:00.000Z"fixture-6d6100e3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02282024-01-01T00:00:00.000Z"fixture-6d6100e4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02292024-01-01T00:00:00.000Z"fixture-6d6100e5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02302024-01-01T00:00:00.000Z"fixture-6d6100e6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02312024-01-01T00:00:00.000Z"fixture-6d6100e7"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02322024-01-01T00:00:00.000Z"fixture-6d6100e8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02332024-01-01T00:00:00.000Z"fixture-6d6100e9"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02342024-01-01T00:00:00.000Z"fixture-6d6100ea"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02352024-01-01T00:00:00.000Z"fixture-6d6100eb"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02362024-01-01T00:00:00.000Z"fixture-6d6100ec"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02372024-01-01T00:00:00.000Z"fixture-6d6100ed"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02382024-01-01T00:00:00.000Z"fixture-6d6100ee"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02392024-01-01T00:00:00.000Z"fixture-6d6100ef"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02402024-01-01T00:00:00.000Z"fixture-6d6100f0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02412024-01-01T00:00:00.000Z"fixture-6d6100f1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02422024-01-01T00:00:00.000Z"fixture-6d6100f2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02432024-01-01T00:00:00.000Z"fixture-6d6100f3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02442024-01-01T00:00:00.000Z"fixture-6d6100f4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02452024-01-01T00:00:00.000Z"fixture-6d6100f5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02462024-01-01T00:00:00.000Z"fixture-6d6100f6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02472024-01-01T00:00:00.000Z"fixture-6d6100f7"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02482024-01-01T00:00:00.000Z"fixture-6d6100f8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02492024-01-01T00:00:00.000Z"fixture-6d6100f9"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02502024-01-01T00:00:00.000Z"fixture-6d6100fa"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02512024-01-01T00:00:00.000Z"fixture-6d6100fb"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02522024-01-01T00:00:00.000Z"fixture-6d6100fc"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02532024-01-01T00:00:00.000Z"fixture-6d6100fd"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02542024-01-01T00:00:00.000Z"fixture-6d6100fe"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02552024-01-01T00:00:00.000Z"fixture-6d6100ff"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02562024-01-01T00:00:00.000Z"fixture-6d610100"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02572024-01-01T00:00:00.000Z"fixture-6d610101"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02582024-01-01T00:00:00.000Z"fixture-6d610102"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02592024-01-01T00:00:00.000Z"fixture-6d610103"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02602024-01-01T00:00:00.000Z"fixture-6d610104"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02612024-01-01T00:00:00.000Z"fixture-6d610105"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02622024-01-01T00:00:00.000Z"fixture-6d610106"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02632024-01-01T00:00:00.000Z"fixture-6d610107"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02642024-01-01T00:00:00.000Z"fixture-6d610108"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02652024-01-01T00:00:00.000Z"fixture-6d610109"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02662024-01-01T00:00:00.000Z"fixture-6d61010a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02672024-01-01T00:00:00.000Z"fixture-6d61010b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02682024-01-01T00:00:00.000Z"fixture-6d61010c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02692024-01-01T00:00:00.000Z"fixture-6d61010d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02702024-01-01T00:00:00.000Z"fixture-6d61010e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02712024-01-01T00:00:00.000Z"fixture-6d61010f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02722024-01-01T00:00:00.000Z"fixture-6d610110"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02732024-01-01T00:00:00.000Z"fixture-6d610111"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02742024-01-01T00:00:00.000Z"fixture-6d610112"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02752024-01-01T00:00:00.000Z"fixture-6d610113"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02762024-01-01T00:00:00.000Z"fixture-6d610114"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02772024-01-01T00:00:00.000Z"fixture-6d610115"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02782024-01-01T00:00:00.000Z"fixture-6d610116"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02792024-01-01T00:00:00.000Z"fixture-6d610117"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02802024-01-01T00:00:00.000Z"fixture-6d610118"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02812024-01-01T00:00:00.000Z"fixture-6d610119"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02822024-01-01T00:00:00.000Z"fixture-6d61011a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02832024-01-01T00:00:00.000Z"fixture-6d61011b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02842024-01-01T00:00:00.000Z"fixture-6d61011c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02852024-01-01T00:00:00.000Z"fixture-6d61011d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02862024-01-01T00:00:00.000Z"fixture-6d61011e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02872024-01-01T00:00:00.000Z"fixture-6d61011f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02882024-01-01T00:00:00.000Z"fixture-6d610120"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02892024-01-01T00:00:00.000Z"fixture-6d610121"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02902024-01-01T00:00:00.000Z"fixture-6d610122"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02912024-01-01T00:00:00.000Z"fixture-6d610123"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02922024-01-01T00:00:00.000Z"fixture-6d610124"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02932024-01-01T00:00:00.000Z"fixture-6d610125"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02942024-01-01T00:00:00.000Z"fixture-6d610126"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02952024-01-01T00:00:00.000Z"fixture-6d610127"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02962024-01-01T00:00:00.000Z"fixture-6d610128"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02972024-01-01T00:00:00.000Z"fixture-6d610129"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02982024-01-01T00:00:00.000Z"fixture-6d61012a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02992024-01-01T00:00:00.000Z"fixture-6d61012b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03002024-01-01T00:00:00.000Z"fixture-6d61012c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03012024-01-01T00:00:00.000Z"fixture-6d61012d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03022024-01-01T00:00:00.000Z"fixture-6d61012e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03032024-01-01T00:00:00.000Z"fixture-6d61012f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03042024-01-01T00:00:00.000Z"fixture-6d610130"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03052024-01-01T00:00:00.000Z"fixture-6d610131"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03062024-01-01T00:00:00.000Z"fixture-6d610132"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03072024-01-01T00:00:00.000Z"fixture-6d610133"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03082024-01-01T00:00:00.000Z"fixture-6d610134"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03092024-01-01T00:00:00.000Z"fixture-6d610135"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03102024-01-01T00:00:00.000Z"fixture-6d610136"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03112024-01-01T00:00:00.000Z"fixture-6d610137"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03122024-01-01T00:00:00.000Z"fixture-6d610138"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03132024-01-01T00:00:00.000Z"fixture-6d610139"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03142024-01-01T00:00:00.000Z"fixture-6d61013a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03152024-01-01T00:00:00.000Z"fixture-6d61013b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03162024-01-01T00:00:00.000Z"fixture-6d61013c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03172024-01-01T00:00:00.000Z"fixture-6d61013d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03182024-01-01T00:00:00.000Z"fixture-6d61013e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03192024-01-01T00:00:00.000Z"fixture-6d61013f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03202024-01-01T00:00:00.000Z"fixture-6d610140"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03212024-01-01T00:00:00.000Z"fixture-6d610141"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03222024-01-01T00:00:00.000Z"fixture-6d610142"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03232024-01-01T00:00:00.000Z"fixture-6d610143"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03242024-01-01T00:00:00.000Z"fixture-6d610144"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03252024-01-01T00:00:00.000Z"fixture-6d610145"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03262024-01-01T00:00:00.000Z"fixture-6d610146"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03272024-01-01T00:00:00.000Z"fixture-6d610147"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03282024-01-01T00:00:00.000Z"fixture-6d610148"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03292024-01-01T00:00:00.000Z"fixture-6d610149"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03302024-01-01T00:00:00.000Z"fixture-6d61014a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03312024-01-01T00:00:00.000Z"fixture-6d61014b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03322024-01-01T00:00:00.000Z"fixture-6d61014c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03332024-01-01T00:00:00.000Z"fixture-6d61014d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03342024-01-01T00:00:00.000Z"fixture-6d61014e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03352024-01-01T00:00:00.000Z"fixture-6d61014f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03362024-01-01T00:00:00.000Z"fixture-6d610150"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03372024-01-01T00:00:00.000Z"fixture-6d610151"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03382024-01-01T00:00:00.000Z"fixture-6d610152"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03392024-01-01T00:00:00.000Z"fixture-6d610153"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03402024-01-01T00:00:00.000Z"fixture-6d610154"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03412024-01-01T00:00:00.000Z"fixture-6d610155"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03422024-01-01T00:00:00.000Z"fixture-6d610156"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03432024-01-01T00:00:00.000Z"fixture-6d610157"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03442024-01-01T00:00:00.000Z"fixture-6d610158"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03452024-01-01T00:00:00.000Z"fixture-6d610159"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03462024-01-01T00:00:00.000Z"fixture-6d61015a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03472024-01-01T00:00:00.000Z"fixture-6d61015b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03482024-01-01T00:00:00.000Z"fixture-6d61015c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03492024-01-01T00:00:00.000Z"fixture-6d61015d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03502024-01-01T00:00:00.000Z"fixture-6d61015e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03512024-01-01T00:00:00.000Z"fixture-6d61015f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03522024-01-01T00:00:00.000Z"fixture-6d610160"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03532024-01-01T00:00:00.000Z"fixture-6d610161"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03542024-01-01T00:00:00.000Z"fixture-6d610162"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03552024-01-01T00:00:00.000Z"fixture-6d610163"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03562024-01-01T00:00:00.000Z"fixture-6d610164"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03572024-01-01T00:00:00.000Z"fixture-6d610165"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03582024-01-01T00:00:00.000Z"fixture-6d610166"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03592024-01-01T00:00:00.000Z"fixture-6d610167"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03602024-01-01T00:00:00.000Z"fixture-6d610168"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03612024-01-01T00:00:00.000Z"fixture-6d610169"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03622024-01-01T00:00:00.000Z"fixture-6d61016a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03632024-01-01T00:00:00.000Z"fixture-6d61016b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03642024-01-01T00:00:00.000Z"fixture-6d61016c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03652024-01-01T00:00:00.000Z"fixture-6d61016d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03662024-01-01T00:00:00.000Z"fixture-6d61016e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03672024-01-01T00:00:00.000Z"fixture-6d61016f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03682024-01-01T00:00:00.000Z"fixture-6d610170"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03692024-01-01T00:00:00.000Z"fixture-6d610171"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03702024-01-01T00:00:00.000Z"fixture-6d610172"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03712024-01-01T00:00:00.000Z"fixture-6d610173"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03722024-01-01T00:00:00.000Z"fixture-6d610174"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03732024-01-01T00:00:00.000Z"fixture-6d610175"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03742024-01-01T00:00:00.000Z"fixture-6d610176"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03752024-01-01T00:00:00.000Z"fixture-6d610177"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03762024-01-01T00:00:00.000Z"fixture-6d610178"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03772024-01-01T00:00:00.000Z"fixture-6d610179"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03782024-01-01T00:00:00.000Z"fixture-6d61017a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03792024-01-01T00:00:00.000Z"fixture-6d61017b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03802024-01-01T00:00:00.000Z"fixture-6d61017c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03812024-01-01T00:00:00.000Z"fixture-6d61017d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03822024-01-01T00:00:00.000Z"fixture-6d61017e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03832024-01-01T00:00:00.000Z"fixture-6d61017f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03842024-01-01T00:00:00.000Z"fixture-6d610180"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03852024-01-01T00:00:00.000Z"fixture-6d610181"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03862024-01-01T00:00:00.000Z"fixture-6d610182"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03872024-01-01T00:00:00.000Z"fixture-6d610183"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03882024-01-01T00:00:00.000Z"fixture-6d610184"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03892024-01-01T00:00:00.000Z"fixture-6d610185"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03902024-01-01T00:00:00.000Z"fixture-6d610186"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03912024-01-01T00:00:00.000Z"fixture-6d610187"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03922024-01-01T00:00:00.000Z"fixture-6d610188"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03932024-01-01T00:00:00.000Z"fixture-6d610189"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03942024-01-01T00:00:00.000Z"fixture-6d61018a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03952024-01-01T00:00:00.000Z"fixture-6d61018b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03962024-01-01T00:00:00.000Z"fixture-6d61018c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03972024-01-01T00:00:00.000Z"fixture-6d61018d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03982024-01-01T00:00:00.000Z"fixture-6d61018e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03992024-01-01T00:00:00.000Z"fixture-6d61018f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04002024-01-01T00:00:00.000Z"fixture-6d610190"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04012024-01-01T00:00:00.000Z"fixture-6d610191"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04022024-01-01T00:00:00.000Z"fixture-6d610192"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04032024-01-01T00:00:00.000Z"fixture-6d610193"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04042024-01-01T00:00:00.000Z"fixture-6d610194"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04052024-01-01T00:00:00.000Z"fixture-6d610195"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04062024-01-01T00:00:00.000Z"fixture-6d610196"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04072024-01-01T00:00:00.000Z"fixture-6d610197"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04082024-01-01T00:00:00.000Z"fixture-6d610198"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04092024-01-01T00:00:00.000Z"fixture-6d610199"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04102024-01-01T00:00:00.000Z"fixture-6d61019a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04112024-01-01T00:00:00.000Z"fixture-6d61019b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04122024-01-01T00:00:00.000Z"fixture-6d61019c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04132024-01-01T00:00:00.000Z"fixture-6d61019d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04142024-01-01T00:00:00.000Z"fixture-6d61019e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04152024-01-01T00:00:00.000Z"fixture-6d61019f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04162024-01-01T00:00:00.000Z"fixture-6d6101a0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04172024-01-01T00:00:00.000Z"fixture-6d6101a1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04182024-01-01T00:00:00.000Z"fixture-6d6101a2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04192024-01-01T00:00:00.000Z"fixture-6d6101a3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04202024-01-01T00:00:00.000Z"fixture-6d6101a4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04212024-01-01T00:00:00.000Z"fixture-6d6101a5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04222024-01-01T00:00:00.000Z"fixture-6d6101a6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04232024-01-01T00:00:00.000Z"fixture-6d6101a7"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04242024-01-01T00:00:00.000Z"fixture-6d6101a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04252024-01-01T00:00:00.000Z"fixture-6d6101a9"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04262024-01-01T00:00:00.000Z"fixture-6d6101aa"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04272024-01-01T00:00:00.000Z"fixture-6d6101ab"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04282024-01-01T00:00:00.000Z"fixture-6d6101ac"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04292024-01-01T00:00:00.000Z"fixture-6d6101ad"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04302024-01-01T00:00:00.000Z"fixture-6d6101ae"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04312024-01-01T00:00:00.000Z"fixture-6d6101af"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04322024-01-01T00:00:00.000Z"fixture-6d6101b0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04332024-01-01T00:00:00.000Z"fixture-6d6101b1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04342024-01-01T00:00:00.000Z"fixture-6d6101b2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04352024-01-01T00:00:00.000Z"fixture-6d6101b3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04362024-01-01T00:00:00.000Z"fixture-6d6101b4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04372024-01-01T00:00:00.000Z"fixture-6d6101b5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04382024-01-01T00:00:00.000Z"fixture-6d6101b6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04392024-01-01T00:00:00.000Z"fixture-6d6101b7"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04402024-01-01T00:00:00.000Z"fixture-6d6101b8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04412024-01-01T00:00:00.000Z"fixture-6d6101b9"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04422024-01-01T00:00:00.000Z"fixture-6d6101ba"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04432024-01-01T00:00:00.000Z"fixture-6d6101bb"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04442024-01-01T00:00:00.000Z"fixture-6d6101bc"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04452024-01-01T00:00:00.000Z"fixture-6d6101bd"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04462024-01-01T00:00:00.000Z"fixture-6d6101be"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04472024-01-01T00:00:00.000Z"fixture-6d6101bf"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04482024-01-01T00:00:00.000Z"fixture-6d6101c0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04492024-01-01T00:00:00.000Z"fixture-6d6101c1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04502024-01-01T00:00:00.000Z"fixture-6d6101c2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04512024-01-01T00:00:00.000Z"fixture-6d6101c3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04522024-01-01T00:00:00.000Z"fixture-6d6101c4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04532024-01-01T00:00:00.000Z"fixture-6d6101c5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04542024-01-01T00:00:00.000Z"fixture-6d6101c6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04552024-01-01T00:00:00.000Z"fixture-6d6101c7"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04562024-01-01T00:00:00.000Z"fixture-6d6101c8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04572024-01-01T00:00:00.000Z"fixture-6d6101c9"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04582024-01-01T00:00:00.000Z"fixture-6d6101ca"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04592024-01-01T00:00:00.000Z"fixture-6d6101cb"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04602024-01-01T00:00:00.000Z"fixture-6d6101cc"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04612024-01-01T00:00:00.000Z"fixture-6d6101cd"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04622024-01-01T00:00:00.000Z"fixture-6d6101ce"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04632024-01-01T00:00:00.000Z"fixture-6d6101cf"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04642024-01-01T00:00:00.000Z"fixture-6d6101d0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04652024-01-01T00:00:00.000Z"fixture-6d6101d1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04662024-01-01T00:00:00.000Z"fixture-6d6101d2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04672024-01-01T00:00:00.000Z"fixture-6d6101d3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04682024-01-01T00:00:00.000Z"fixture-6d6101d4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04692024-01-01T00:00:00.000Z"fixture-6d6101d5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04702024-01-01T00:00:00.000Z"fixture-6d6101d6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04712024-01-01T00:00:00.000Z"fixture-6d6101d7"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04722024-01-01T00:00:00.000Z"fixture-6d6101d8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04732024-01-01T00:00:00.000Z"fixture-6d6101d9"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04742024-01-01T00:00:00.000Z"fixture-6d6101da"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04752024-01-01T00:00:00.000Z"fixture-6d6101db"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04762024-01-01T00:00:00.000Z"fixture-6d6101dc"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04772024-01-01T00:00:00.000Z"fixture-6d6101dd"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04782024-01-01T00:00:00.000Z"fixture-6d6101de"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04792024-01-01T00:00:00.000Z"fixture-6d6101df"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04802024-01-01T00:00:00.000Z"fixture-6d6101e0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04812024-01-01T00:00:00.000Z"fixture-6d6101e1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04822024-01-01T00:00:00.000Z"fixture-6d6101e2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04832024-01-01T00:00:00.000Z"fixture-6d6101e3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04842024-01-01T00:00:00.000Z"fixture-6d6101e4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04852024-01-01T00:00:00.000Z"fixture-6d6101e5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04862024-01-01T00:00:00.000Z"fixture-6d6101e6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04872024-01-01T00:00:00.000Z"fixture-6d6101e7"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04882024-01-01T00:00:00.000Z"fixture-6d6101e8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04892024-01-01T00:00:00.000Z"fixture-6d6101e9"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04902024-01-01T00:00:00.000Z"fixture-6d6101ea"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04912024-01-01T00:00:00.000Z"fixture-6d6101eb"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04922024-01-01T00:00:00.000Z"fixture-6d6101ec"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04932024-01-01T00:00:00.000Z"fixture-6d6101ed"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04942024-01-01T00:00:00.000Z"fixture-6d6101ee"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04952024-01-01T00:00:00.000Z"fixture-6d6101ef"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04962024-01-01T00:00:00.000Z"fixture-6d6101f0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04972024-01-01T00:00:00.000Z"fixture-6d6101f1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04982024-01-01T00:00:00.000Z"fixture-6d6101f2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04992024-01-01T00:00:00.000Z"fixture-6d6101f3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05002024-01-01T00:00:00.000Z"fixture-6d6101f4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05012024-01-01T00:00:00.000Z"fixture-6d6101f5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05022024-01-01T00:00:00.000Z"fixture-6d6101f6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05032024-01-01T00:00:00.000Z"fixture-6d6101f7"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05042024-01-01T00:00:00.000Z"fixture-6d6101f8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05052024-01-01T00:00:00.000Z"fixture-6d6101f9"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05062024-01-01T00:00:00.000Z"fixture-6d6101fa"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05072024-01-01T00:00:00.000Z"fixture-6d6101fb"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05082024-01-01T00:00:00.000Z"fixture-6d6101fc"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05092024-01-01T00:00:00.000Z"fixture-6d6101fd"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05102024-01-01T00:00:00.000Z"fixture-6d6101fe"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05112024-01-01T00:00:00.000Z"fixture-6d6101ff"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05122024-01-01T00:00:00.000Z"fixture-6d610200"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05132024-01-01T00:00:00.000Z"fixture-6d610201"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05142024-01-01T00:00:00.000Z"fixture-6d610202"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05152024-01-01T00:00:00.000Z"fixture-6d610203"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05162024-01-01T00:00:00.000Z"fixture-6d610204"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05172024-01-01T00:00:00.000Z"fixture-6d610205"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05182024-01-01T00:00:00.000Z"fixture-6d610206"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05192024-01-01T00:00:00.000Z"fixture-6d610207"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05202024-01-01T00:00:00.000Z"fixture-6d610208"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05212024-01-01T00:00:00.000Z"fixture-6d610209"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05222024-01-01T00:00:00.000Z"fixture-6d61020a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05232024-01-01T00:00:00.000Z"fixture-6d61020b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05242024-01-01T00:00:00.000Z"fixture-6d61020c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05252024-01-01T00:00:00.000Z"fixture-6d61020d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05262024-01-01T00:00:00.000Z"fixture-6d61020e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05272024-01-01T00:00:00.000Z"fixture-6d61020f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05282024-01-01T00:00:00.000Z"fixture-6d610210"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05292024-01-01T00:00:00.000Z"fixture-6d610211"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05302024-01-01T00:00:00.000Z"fixture-6d610212"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05312024-01-01T00:00:00.000Z"fixture-6d610213"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05322024-01-01T00:00:00.000Z"fixture-6d610214"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05332024-01-01T00:00:00.000Z"fixture-6d610215"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05342024-01-01T00:00:00.000Z"fixture-6d610216"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05352024-01-01T00:00:00.000Z"fixture-6d610217"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05362024-01-01T00:00:00.000Z"fixture-6d610218"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05372024-01-01T00:00:00.000Z"fixture-6d610219"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05382024-01-01T00:00:00.000Z"fixture-6d61021a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05392024-01-01T00:00:00.000Z"fixture-6d61021b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05402024-01-01T00:00:00.000Z"fixture-6d61021c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05412024-01-01T00:00:00.000Z"fixture-6d61021d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05422024-01-01T00:00:00.000Z"fixture-6d61021e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05432024-01-01T00:00:00.000Z"fixture-6d61021f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05442024-01-01T00:00:00.000Z"fixture-6d610220"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05452024-01-01T00:00:00.000Z"fixture-6d610221"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05462024-01-01T00:00:00.000Z"fixture-6d610222"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05472024-01-01T00:00:00.000Z"fixture-6d610223"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05482024-01-01T00:00:00.000Z"fixture-6d610224"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05492024-01-01T00:00:00.000Z"fixture-6d610225"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05502024-01-01T00:00:00.000Z"fixture-6d610226"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05512024-01-01T00:00:00.000Z"fixture-6d610227"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05522024-01-01T00:00:00.000Z"fixture-6d610228"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05532024-01-01T00:00:00.000Z"fixture-6d610229"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05542024-01-01T00:00:00.000Z"fixture-6d61022a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05552024-01-01T00:00:00.000Z"fixture-6d61022b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05562024-01-01T00:00:00.000Z"fixture-6d61022c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05572024-01-01T00:00:00.000Z"fixture-6d61022d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05582024-01-01T00:00:00.000Z"fixture-6d61022e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05592024-01-01T00:00:00.000Z"fixture-6d61022f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05602024-01-01T00:00:00.000Z"fixture-6d610230"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05612024-01-01T00:00:00.000Z"fixture-6d610231"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05622024-01-01T00:00:00.000Z"fixture-6d610232"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05632024-01-01T00:00:00.000Z"fixture-6d610233"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05642024-01-01T00:00:00.000Z"fixture-6d610234"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05652024-01-01T00:00:00.000Z"fixture-6d610235"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05662024-01-01T00:00:00.000Z"fixture-6d610236"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05672024-01-01T00:00:00.000Z"fixture-6d610237"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05682024-01-01T00:00:00.000Z"fixture-6d610238"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05692024-01-01T00:00:00.000Z"fixture-6d610239"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05702024-01-01T00:00:00.000Z"fixture-6d61023a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05712024-01-01T00:00:00.000Z"fixture-6d61023b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05722024-01-01T00:00:00.000Z"fixture-6d61023c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05732024-01-01T00:00:00.000Z"fixture-6d61023d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05742024-01-01T00:00:00.000Z"fixture-6d61023e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05752024-01-01T00:00:00.000Z"fixture-6d61023f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05762024-01-01T00:00:00.000Z"fixture-6d610240"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05772024-01-01T00:00:00.000Z"fixture-6d610241"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05782024-01-01T00:00:00.000Z"fixture-6d610242"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05792024-01-01T00:00:00.000Z"fixture-6d610243"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05802024-01-01T00:00:00.000Z"fixture-6d610244"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05812024-01-01T00:00:00.000Z"fixture-6d610245"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05822024-01-01T00:00:00.000Z"fixture-6d610246"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05832024-01-01T00:00:00.000Z"fixture-6d610247"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05842024-01-01T00:00:00.000Z"fixture-6d610248"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05852024-01-01T00:00:00.000Z"fixture-6d610249"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05862024-01-01T00:00:00.000Z"fixture-6d61024a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05872024-01-01T00:00:00.000Z"fixture-6d61024b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05882024-01-01T00:00:00.000Z"fixture-6d61024c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05892024-01-01T00:00:00.000Z"fixture-6d61024d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05902024-01-01T00:00:00.000Z"fixture-6d61024e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05912024-01-01T00:00:00.000Z"fixture-6d61024f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05922024-01-01T00:00:00.000Z"fixture-6d610250"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05932024-01-01T00:00:00.000Z"fixture-6d610251"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05942024-01-01T00:00:00.000Z"fixture-6d610252"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05952024-01-01T00:00:00.000Z"fixture-6d610253"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05962024-01-01T00:00:00.000Z"fixture-6d610254"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05972024-01-01T00:00:00.000Z"fixture-6d610255"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05982024-01-01T00:00:00.000Z"fixture-6d610256"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05992024-01-01T00:00:00.000Z"fixture-6d610257"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06002024-01-01T00:00:00.000Z"fixture-6d610258"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06012024-01-01T00:00:00.000Z"fixture-6d610259"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06022024-01-01T00:00:00.000Z"fixture-6d61025a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06032024-01-01T00:00:00.000Z"fixture-6d61025b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06042024-01-01T00:00:00.000Z"fixture-6d61025c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06052024-01-01T00:00:00.000Z"fixture-6d61025d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06062024-01-01T00:00:00.000Z"fixture-6d61025e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06072024-01-01T00:00:00.000Z"fixture-6d61025f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06082024-01-01T00:00:00.000Z"fixture-6d610260"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06092024-01-01T00:00:00.000Z"fixture-6d610261"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06102024-01-01T00:00:00.000Z"fixture-6d610262"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06112024-01-01T00:00:00.000Z"fixture-6d610263"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06122024-01-01T00:00:00.000Z"fixture-6d610264"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06132024-01-01T00:00:00.000Z"fixture-6d610265"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06142024-01-01T00:00:00.000Z"fixture-6d610266"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06152024-01-01T00:00:00.000Z"fixture-6d610267"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06162024-01-01T00:00:00.000Z"fixture-6d610268"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06172024-01-01T00:00:00.000Z"fixture-6d610269"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06182024-01-01T00:00:00.000Z"fixture-6d61026a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06192024-01-01T00:00:00.000Z"fixture-6d61026b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06202024-01-01T00:00:00.000Z"fixture-6d61026c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06212024-01-01T00:00:00.000Z"fixture-6d61026d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06222024-01-01T00:00:00.000Z"fixture-6d61026e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06232024-01-01T00:00:00.000Z"fixture-6d61026f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06242024-01-01T00:00:00.000Z"fixture-6d610270"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06252024-01-01T00:00:00.000Z"fixture-6d610271"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06262024-01-01T00:00:00.000Z"fixture-6d610272"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06272024-01-01T00:00:00.000Z"fixture-6d610273"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06282024-01-01T00:00:00.000Z"fixture-6d610274"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06292024-01-01T00:00:00.000Z"fixture-6d610275"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06302024-01-01T00:00:00.000Z"fixture-6d610276"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06312024-01-01T00:00:00.000Z"fixture-6d610277"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06322024-01-01T00:00:00.000Z"fixture-6d610278"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06332024-01-01T00:00:00.000Z"fixture-6d610279"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06342024-01-01T00:00:00.000Z"fixture-6d61027a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06352024-01-01T00:00:00.000Z"fixture-6d61027b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06362024-01-01T00:00:00.000Z"fixture-6d61027c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06372024-01-01T00:00:00.000Z"fixture-6d61027d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06382024-01-01T00:00:00.000Z"fixture-6d61027e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06392024-01-01T00:00:00.000Z"fixture-6d61027f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06402024-01-01T00:00:00.000Z"fixture-6d610280"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06412024-01-01T00:00:00.000Z"fixture-6d610281"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06422024-01-01T00:00:00.000Z"fixture-6d610282"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06432024-01-01T00:00:00.000Z"fixture-6d610283"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06442024-01-01T00:00:00.000Z"fixture-6d610284"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06452024-01-01T00:00:00.000Z"fixture-6d610285"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06462024-01-01T00:00:00.000Z"fixture-6d610286"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06472024-01-01T00:00:00.000Z"fixture-6d610287"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06482024-01-01T00:00:00.000Z"fixture-6d610288"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06492024-01-01T00:00:00.000Z"fixture-6d610289"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06502024-01-01T00:00:00.000Z"fixture-6d61028a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06512024-01-01T00:00:00.000Z"fixture-6d61028b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06522024-01-01T00:00:00.000Z"fixture-6d61028c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06532024-01-01T00:00:00.000Z"fixture-6d61028d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06542024-01-01T00:00:00.000Z"fixture-6d61028e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06552024-01-01T00:00:00.000Z"fixture-6d61028f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06562024-01-01T00:00:00.000Z"fixture-6d610290"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06572024-01-01T00:00:00.000Z"fixture-6d610291"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06582024-01-01T00:00:00.000Z"fixture-6d610292"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06592024-01-01T00:00:00.000Z"fixture-6d610293"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06602024-01-01T00:00:00.000Z"fixture-6d610294"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06612024-01-01T00:00:00.000Z"fixture-6d610295"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06622024-01-01T00:00:00.000Z"fixture-6d610296"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06632024-01-01T00:00:00.000Z"fixture-6d610297"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06642024-01-01T00:00:00.000Z"fixture-6d610298"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06652024-01-01T00:00:00.000Z"fixture-6d610299"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06662024-01-01T00:00:00.000Z"fixture-6d61029a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06672024-01-01T00:00:00.000Z"fixture-6d61029b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06682024-01-01T00:00:00.000Z"fixture-6d61029c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06692024-01-01T00:00:00.000Z"fixture-6d61029d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06702024-01-01T00:00:00.000Z"fixture-6d61029e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06712024-01-01T00:00:00.000Z"fixture-6d61029f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06722024-01-01T00:00:00.000Z"fixture-6d6102a0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06732024-01-01T00:00:00.000Z"fixture-6d6102a1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06742024-01-01T00:00:00.000Z"fixture-6d6102a2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06752024-01-01T00:00:00.000Z"fixture-6d6102a3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06762024-01-01T00:00:00.000Z"fixture-6d6102a4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06772024-01-01T00:00:00.000Z"fixture-6d6102a5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06782024-01-01T00:00:00.000Z"fixture-6d6102a6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06792024-01-01T00:00:00.000Z"fixture-6d6102a7"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06802024-01-01T00:00:00.000Z"fixture-6d6102a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06812024-01-01T00:00:00.000Z"fixture-6d6102a9"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06822024-01-01T00:00:00.000Z"fixture-6d6102aa"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06832024-01-01T00:00:00.000Z"fixture-6d6102ab"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06842024-01-01T00:00:00.000Z"fixture-6d6102ac"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06852024-01-01T00:00:00.000Z"fixture-6d6102ad"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06862024-01-01T00:00:00.000Z"fixture-6d6102ae"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06872024-01-01T00:00:00.000Z"fixture-6d6102af"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06882024-01-01T00:00:00.000Z"fixture-6d6102b0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06892024-01-01T00:00:00.000Z"fixture-6d6102b1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06902024-01-01T00:00:00.000Z"fixture-6d6102b2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06912024-01-01T00:00:00.000Z"fixture-6d6102b3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06922024-01-01T00:00:00.000Z"fixture-6d6102b4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06932024-01-01T00:00:00.000Z"fixture-6d6102b5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06942024-01-01T00:00:00.000Z"fixture-6d6102b6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06952024-01-01T00:00:00.000Z"fixture-6d6102b7"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06962024-01-01T00:00:00.000Z"fixture-6d6102b8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06972024-01-01T00:00:00.000Z"fixture-6d6102b9"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06982024-01-01T00:00:00.000Z"fixture-6d6102ba"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06992024-01-01T00:00:00.000Z"fixture-6d6102bb"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07002024-01-01T00:00:00.000Z"fixture-6d6102bc"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07012024-01-01T00:00:00.000Z"fixture-6d6102bd"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07022024-01-01T00:00:00.000Z"fixture-6d6102be"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07032024-01-01T00:00:00.000Z"fixture-6d6102bf"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07042024-01-01T00:00:00.000Z"fixture-6d6102c0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07052024-01-01T00:00:00.000Z"fixture-6d6102c1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07062024-01-01T00:00:00.000Z"fixture-6d6102c2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07072024-01-01T00:00:00.000Z"fixture-6d6102c3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07082024-01-01T00:00:00.000Z"fixture-6d6102c4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07092024-01-01T00:00:00.000Z"fixture-6d6102c5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07102024-01-01T00:00:00.000Z"fixture-6d6102c6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07112024-01-01T00:00:00.000Z"fixture-6d6102c7"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07122024-01-01T00:00:00.000Z"fixture-6d6102c8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07132024-01-01T00:00:00.000Z"fixture-6d6102c9"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07142024-01-01T00:00:00.000Z"fixture-6d6102ca"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07152024-01-01T00:00:00.000Z"fixture-6d6102cb"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07162024-01-01T00:00:00.000Z"fixture-6d6102cc"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07172024-01-01T00:00:00.000Z"fixture-6d6102cd"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07182024-01-01T00:00:00.000Z"fixture-6d6102ce"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07192024-01-01T00:00:00.000Z"fixture-6d6102cf"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07202024-01-01T00:00:00.000Z"fixture-6d6102d0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07212024-01-01T00:00:00.000Z"fixture-6d6102d1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07222024-01-01T00:00:00.000Z"fixture-6d6102d2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07232024-01-01T00:00:00.000Z"fixture-6d6102d3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07242024-01-01T00:00:00.000Z"fixture-6d6102d4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07252024-01-01T00:00:00.000Z"fixture-6d6102d5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07262024-01-01T00:00:00.000Z"fixture-6d6102d6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07272024-01-01T00:00:00.000Z"fixture-6d6102d7"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07282024-01-01T00:00:00.000Z"fixture-6d6102d8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07292024-01-01T00:00:00.000Z"fixture-6d6102d9"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07302024-01-01T00:00:00.000Z"fixture-6d6102da"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07312024-01-01T00:00:00.000Z"fixture-6d6102db"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07322024-01-01T00:00:00.000Z"fixture-6d6102dc"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07332024-01-01T00:00:00.000Z"fixture-6d6102dd"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07342024-01-01T00:00:00.000Z"fixture-6d6102de"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07352024-01-01T00:00:00.000Z"fixture-6d6102df"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07362024-01-01T00:00:00.000Z"fixture-6d6102e0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07372024-01-01T00:00:00.000Z"fixture-6d6102e1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07382024-01-01T00:00:00.000Z"fixture-6d6102e2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07392024-01-01T00:00:00.000Z"fixture-6d6102e3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07402024-01-01T00:00:00.000Z"fixture-6d6102e4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07412024-01-01T00:00:00.000Z"fixture-6d6102e5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07422024-01-01T00:00:00.000Z"fixture-6d6102e6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07432024-01-01T00:00:00.000Z"fixture-6d6102e7"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07442024-01-01T00:00:00.000Z"fixture-6d6102e8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07452024-01-01T00:00:00.000Z"fixture-6d6102e9"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07462024-01-01T00:00:00.000Z"fixture-6d6102ea"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07472024-01-01T00:00:00.000Z"fixture-6d6102eb"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07482024-01-01T00:00:00.000Z"fixture-6d6102ec"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07492024-01-01T00:00:00.000Z"fixture-6d6102ed"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07502024-01-01T00:00:00.000Z"fixture-6d6102ee"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07512024-01-01T00:00:00.000Z"fixture-6d6102ef"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07522024-01-01T00:00:00.000Z"fixture-6d6102f0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07532024-01-01T00:00:00.000Z"fixture-6d6102f1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07542024-01-01T00:00:00.000Z"fixture-6d6102f2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07552024-01-01T00:00:00.000Z"fixture-6d6102f3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07562024-01-01T00:00:00.000Z"fixture-6d6102f4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07572024-01-01T00:00:00.000Z"fixture-6d6102f5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07582024-01-01T00:00:00.000Z"fixture-6d6102f6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07592024-01-01T00:00:00.000Z"fixture-6d6102f7"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07602024-01-01T00:00:00.000Z"fixture-6d6102f8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07612024-01-01T00:00:00.000Z"fixture-6d6102f9"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07622024-01-01T00:00:00.000Z"fixture-6d6102fa"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07632024-01-01T00:00:00.000Z"fixture-6d6102fb"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07642024-01-01T00:00:00.000Z"fixture-6d6102fc"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07652024-01-01T00:00:00.000Z"fixture-6d6102fd"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07662024-01-01T00:00:00.000Z"fixture-6d6102fe"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07672024-01-01T00:00:00.000Z"fixture-6d6102ff"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07682024-01-01T00:00:00.000Z"fixture-6d610300"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07692024-01-01T00:00:00.000Z"fixture-6d610301"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07702024-01-01T00:00:00.000Z"fixture-6d610302"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07712024-01-01T00:00:00.000Z"fixture-6d610303"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07722024-01-01T00:00:00.000Z"fixture-6d610304"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07732024-01-01T00:00:00.000Z"fixture-6d610305"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07742024-01-01T00:00:00.000Z"fixture-6d610306"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07752024-01-01T00:00:00.000Z"fixture-6d610307"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07762024-01-01T00:00:00.000Z"fixture-6d610308"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07772024-01-01T00:00:00.000Z"fixture-6d610309"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07782024-01-01T00:00:00.000Z"fixture-6d61030a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07792024-01-01T00:00:00.000Z"fixture-6d61030b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07802024-01-01T00:00:00.000Z"fixture-6d61030c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07812024-01-01T00:00:00.000Z"fixture-6d61030d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07822024-01-01T00:00:00.000Z"fixture-6d61030e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07832024-01-01T00:00:00.000Z"fixture-6d61030f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07842024-01-01T00:00:00.000Z"fixture-6d610310"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07852024-01-01T00:00:00.000Z"fixture-6d610311"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07862024-01-01T00:00:00.000Z"fixture-6d610312"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07872024-01-01T00:00:00.000Z"fixture-6d610313"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07882024-01-01T00:00:00.000Z"fixture-6d610314"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07892024-01-01T00:00:00.000Z"fixture-6d610315"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07902024-01-01T00:00:00.000Z"fixture-6d610316"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07912024-01-01T00:00:00.000Z"fixture-6d610317"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07922024-01-01T00:00:00.000Z"fixture-6d610318"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07932024-01-01T00:00:00.000Z"fixture-6d610319"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07942024-01-01T00:00:00.000Z"fixture-6d61031a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07952024-01-01T00:00:00.000Z"fixture-6d61031b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07962024-01-01T00:00:00.000Z"fixture-6d61031c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07972024-01-01T00:00:00.000Z"fixture-6d61031d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07982024-01-01T00:00:00.000Z"fixture-6d61031e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07992024-01-01T00:00:00.000Z"fixture-6d61031f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08002024-01-01T00:00:00.000Z"fixture-6d610320"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08012024-01-01T00:00:00.000Z"fixture-6d610321"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08022024-01-01T00:00:00.000Z"fixture-6d610322"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08032024-01-01T00:00:00.000Z"fixture-6d610323"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08042024-01-01T00:00:00.000Z"fixture-6d610324"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08052024-01-01T00:00:00.000Z"fixture-6d610325"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08062024-01-01T00:00:00.000Z"fixture-6d610326"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08072024-01-01T00:00:00.000Z"fixture-6d610327"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08082024-01-01T00:00:00.000Z"fixture-6d610328"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08092024-01-01T00:00:00.000Z"fixture-6d610329"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08102024-01-01T00:00:00.000Z"fixture-6d61032a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08112024-01-01T00:00:00.000Z"fixture-6d61032b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08122024-01-01T00:00:00.000Z"fixture-6d61032c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08132024-01-01T00:00:00.000Z"fixture-6d61032d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08142024-01-01T00:00:00.000Z"fixture-6d61032e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08152024-01-01T00:00:00.000Z"fixture-6d61032f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08162024-01-01T00:00:00.000Z"fixture-6d610330"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08172024-01-01T00:00:00.000Z"fixture-6d610331"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08182024-01-01T00:00:00.000Z"fixture-6d610332"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08192024-01-01T00:00:00.000Z"fixture-6d610333"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08202024-01-01T00:00:00.000Z"fixture-6d610334"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08212024-01-01T00:00:00.000Z"fixture-6d610335"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08222024-01-01T00:00:00.000Z"fixture-6d610336"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08232024-01-01T00:00:00.000Z"fixture-6d610337"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08242024-01-01T00:00:00.000Z"fixture-6d610338"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08252024-01-01T00:00:00.000Z"fixture-6d610339"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08262024-01-01T00:00:00.000Z"fixture-6d61033a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08272024-01-01T00:00:00.000Z"fixture-6d61033b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08282024-01-01T00:00:00.000Z"fixture-6d61033c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08292024-01-01T00:00:00.000Z"fixture-6d61033d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08302024-01-01T00:00:00.000Z"fixture-6d61033e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08312024-01-01T00:00:00.000Z"fixture-6d61033f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08322024-01-01T00:00:00.000Z"fixture-6d610340"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08332024-01-01T00:00:00.000Z"fixture-6d610341"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08342024-01-01T00:00:00.000Z"fixture-6d610342"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08352024-01-01T00:00:00.000Z"fixture-6d610343"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08362024-01-01T00:00:00.000Z"fixture-6d610344"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08372024-01-01T00:00:00.000Z"fixture-6d610345"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08382024-01-01T00:00:00.000Z"fixture-6d610346"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08392024-01-01T00:00:00.000Z"fixture-6d610347"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08402024-01-01T00:00:00.000Z"fixture-6d610348"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08412024-01-01T00:00:00.000Z"fixture-6d610349"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08422024-01-01T00:00:00.000Z"fixture-6d61034a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08432024-01-01T00:00:00.000Z"fixture-6d61034b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08442024-01-01T00:00:00.000Z"fixture-6d61034c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08452024-01-01T00:00:00.000Z"fixture-6d61034d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08462024-01-01T00:00:00.000Z"fixture-6d61034e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08472024-01-01T00:00:00.000Z"fixture-6d61034f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08482024-01-01T00:00:00.000Z"fixture-6d610350"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08492024-01-01T00:00:00.000Z"fixture-6d610351"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08502024-01-01T00:00:00.000Z"fixture-6d610352"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08512024-01-01T00:00:00.000Z"fixture-6d610353"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08522024-01-01T00:00:00.000Z"fixture-6d610354"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08532024-01-01T00:00:00.000Z"fixture-6d610355"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08542024-01-01T00:00:00.000Z"fixture-6d610356"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08552024-01-01T00:00:00.000Z"fixture-6d610357"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08562024-01-01T00:00:00.000Z"fixture-6d610358"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08572024-01-01T00:00:00.000Z"fixture-6d610359"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08582024-01-01T00:00:00.000Z"fixture-6d61035a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08592024-01-01T00:00:00.000Z"fixture-6d61035b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08602024-01-01T00:00:00.000Z"fixture-6d61035c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08612024-01-01T00:00:00.000Z"fixture-6d61035d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08622024-01-01T00:00:00.000Z"fixture-6d61035e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08632024-01-01T00:00:00.000Z"fixture-6d61035f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08642024-01-01T00:00:00.000Z"fixture-6d610360"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08652024-01-01T00:00:00.000Z"fixture-6d610361"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08662024-01-01T00:00:00.000Z"fixture-6d610362"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08672024-01-01T00:00:00.000Z"fixture-6d610363"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08682024-01-01T00:00:00.000Z"fixture-6d610364"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08692024-01-01T00:00:00.000Z"fixture-6d610365"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08702024-01-01T00:00:00.000Z"fixture-6d610366"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08712024-01-01T00:00:00.000Z"fixture-6d610367"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08722024-01-01T00:00:00.000Z"fixture-6d610368"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08732024-01-01T00:00:00.000Z"fixture-6d610369"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08742024-01-01T00:00:00.000Z"fixture-6d61036a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08752024-01-01T00:00:00.000Z"fixture-6d61036b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08762024-01-01T00:00:00.000Z"fixture-6d61036c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08772024-01-01T00:00:00.000Z"fixture-6d61036d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08782024-01-01T00:00:00.000Z"fixture-6d61036e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08792024-01-01T00:00:00.000Z"fixture-6d61036f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08802024-01-01T00:00:00.000Z"fixture-6d610370"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08812024-01-01T00:00:00.000Z"fixture-6d610371"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08822024-01-01T00:00:00.000Z"fixture-6d610372"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08832024-01-01T00:00:00.000Z"fixture-6d610373"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08842024-01-01T00:00:00.000Z"fixture-6d610374"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08852024-01-01T00:00:00.000Z"fixture-6d610375"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08862024-01-01T00:00:00.000Z"fixture-6d610376"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08872024-01-01T00:00:00.000Z"fixture-6d610377"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08882024-01-01T00:00:00.000Z"fixture-6d610378"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08892024-01-01T00:00:00.000Z"fixture-6d610379"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08902024-01-01T00:00:00.000Z"fixture-6d61037a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08912024-01-01T00:00:00.000Z"fixture-6d61037b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08922024-01-01T00:00:00.000Z"fixture-6d61037c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08932024-01-01T00:00:00.000Z"fixture-6d61037d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08942024-01-01T00:00:00.000Z"fixture-6d61037e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08952024-01-01T00:00:00.000Z"fixture-6d61037f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08962024-01-01T00:00:00.000Z"fixture-6d610380"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08972024-01-01T00:00:00.000Z"fixture-6d610381"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08982024-01-01T00:00:00.000Z"fixture-6d610382"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08992024-01-01T00:00:00.000Z"fixture-6d610383"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09002024-01-01T00:00:00.000Z"fixture-6d610384"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09012024-01-01T00:00:00.000Z"fixture-6d610385"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09022024-01-01T00:00:00.000Z"fixture-6d610386"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09032024-01-01T00:00:00.000Z"fixture-6d610387"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09042024-01-01T00:00:00.000Z"fixture-6d610388"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09052024-01-01T00:00:00.000Z"fixture-6d610389"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09062024-01-01T00:00:00.000Z"fixture-6d61038a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09072024-01-01T00:00:00.000Z"fixture-6d61038b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09082024-01-01T00:00:00.000Z"fixture-6d61038c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09092024-01-01T00:00:00.000Z"fixture-6d61038d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09102024-01-01T00:00:00.000Z"fixture-6d61038e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09112024-01-01T00:00:00.000Z"fixture-6d61038f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09122024-01-01T00:00:00.000Z"fixture-6d610390"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09132024-01-01T00:00:00.000Z"fixture-6d610391"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09142024-01-01T00:00:00.000Z"fixture-6d610392"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09152024-01-01T00:00:00.000Z"fixture-6d610393"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09162024-01-01T00:00:00.000Z"fixture-6d610394"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09172024-01-01T00:00:00.000Z"fixture-6d610395"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09182024-01-01T00:00:00.000Z"fixture-6d610396"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09192024-01-01T00:00:00.000Z"fixture-6d610397"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09202024-01-01T00:00:00.000Z"fixture-6d610398"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09212024-01-01T00:00:00.000Z"fixture-6d610399"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09222024-01-01T00:00:00.000Z"fixture-6d61039a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09232024-01-01T00:00:00.000Z"fixture-6d61039b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09242024-01-01T00:00:00.000Z"fixture-6d61039c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09252024-01-01T00:00:00.000Z"fixture-6d61039d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09262024-01-01T00:00:00.000Z"fixture-6d61039e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09272024-01-01T00:00:00.000Z"fixture-6d61039f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09282024-01-01T00:00:00.000Z"fixture-6d6103a0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09292024-01-01T00:00:00.000Z"fixture-6d6103a1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09302024-01-01T00:00:00.000Z"fixture-6d6103a2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09312024-01-01T00:00:00.000Z"fixture-6d6103a3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09322024-01-01T00:00:00.000Z"fixture-6d6103a4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09332024-01-01T00:00:00.000Z"fixture-6d6103a5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09342024-01-01T00:00:00.000Z"fixture-6d6103a6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09352024-01-01T00:00:00.000Z"fixture-6d6103a7"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09362024-01-01T00:00:00.000Z"fixture-6d6103a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09372024-01-01T00:00:00.000Z"fixture-6d6103a9"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09382024-01-01T00:00:00.000Z"fixture-6d6103aa"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09392024-01-01T00:00:00.000Z"fixture-6d6103ab"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09402024-01-01T00:00:00.000Z"fixture-6d6103ac"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09412024-01-01T00:00:00.000Z"fixture-6d6103ad"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09422024-01-01T00:00:00.000Z"fixture-6d6103ae"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09432024-01-01T00:00:00.000Z"fixture-6d6103af"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09442024-01-01T00:00:00.000Z"fixture-6d6103b0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09452024-01-01T00:00:00.000Z"fixture-6d6103b1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09462024-01-01T00:00:00.000Z"fixture-6d6103b2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09472024-01-01T00:00:00.000Z"fixture-6d6103b3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09482024-01-01T00:00:00.000Z"fixture-6d6103b4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09492024-01-01T00:00:00.000Z"fixture-6d6103b5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09502024-01-01T00:00:00.000Z"fixture-6d6103b6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09512024-01-01T00:00:00.000Z"fixture-6d6103b7"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09522024-01-01T00:00:00.000Z"fixture-6d6103b8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09532024-01-01T00:00:00.000Z"fixture-6d6103b9"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09542024-01-01T00:00:00.000Z"fixture-6d6103ba"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09552024-01-01T00:00:00.000Z"fixture-6d6103bb"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09562024-01-01T00:00:00.000Z"fixture-6d6103bc"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09572024-01-01T00:00:00.000Z"fixture-6d6103bd"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09582024-01-01T00:00:00.000Z"fixture-6d6103be"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09592024-01-01T00:00:00.000Z"fixture-6d6103bf"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09602024-01-01T00:00:00.000Z"fixture-6d6103c0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09612024-01-01T00:00:00.000Z"fixture-6d6103c1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09622024-01-01T00:00:00.000Z"fixture-6d6103c2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09632024-01-01T00:00:00.000Z"fixture-6d6103c3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09642024-01-01T00:00:00.000Z"fixture-6d6103c4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09652024-01-01T00:00:00.000Z"fixture-6d6103c5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09662024-01-01T00:00:00.000Z"fixture-6d6103c6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09672024-01-01T00:00:00.000Z"fixture-6d6103c7"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09682024-01-01T00:00:00.000Z"fixture-6d6103c8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09692024-01-01T00:00:00.000Z"fixture-6d6103c9"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09702024-01-01T00:00:00.000Z"fixture-6d6103ca"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09712024-01-01T00:00:00.000Z"fixture-6d6103cb"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09722024-01-01T00:00:00.000Z"fixture-6d6103cc"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09732024-01-01T00:00:00.000Z"fixture-6d6103cd"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09742024-01-01T00:00:00.000Z"fixture-6d6103ce"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09752024-01-01T00:00:00.000Z"fixture-6d6103cf"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09762024-01-01T00:00:00.000Z"fixture-6d6103d0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09772024-01-01T00:00:00.000Z"fixture-6d6103d1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09782024-01-01T00:00:00.000Z"fixture-6d6103d2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09792024-01-01T00:00:00.000Z"fixture-6d6103d3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09802024-01-01T00:00:00.000Z"fixture-6d6103d4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09812024-01-01T00:00:00.000Z"fixture-6d6103d5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09822024-01-01T00:00:00.000Z"fixture-6d6103d6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09832024-01-01T00:00:00.000Z"fixture-6d6103d7"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09842024-01-01T00:00:00.000Z"fixture-6d6103d8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09852024-01-01T00:00:00.000Z"fixture-6d6103d9"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09862024-01-01T00:00:00.000Z"fixture-6d6103da"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09872024-01-01T00:00:00.000Z"fixture-6d6103db"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09882024-01-01T00:00:00.000Z"fixture-6d6103dc"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09892024-01-01T00:00:00.000Z"fixture-6d6103dd"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09902024-01-01T00:00:00.000Z"fixture-6d6103de"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09912024-01-01T00:00:00.000Z"fixture-6d6103df"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09922024-01-01T00:00:00.000Z"fixture-6d6103e0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09932024-01-01T00:00:00.000Z"fixture-6d6103e1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09942024-01-01T00:00:00.000Z"fixture-6d6103e2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09952024-01-01T00:00:00.000Z"fixture-6d6103e3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09962024-01-01T00:00:00.000Z"fixture-6d6103e4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09972024-01-01T00:00:00.000Z"fixture-6d6103e5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09982024-01-01T00:00:00.000Z"fixture-6d6103e6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09992024-01-01T00:00:00.000Z"fixture-6d6103e7"CRC64NVMEFULL_OBJECT1STANDARD" + "data": "\nInternalErrorWe encountered an internal error. Please try again.fixturefixture" }, "framing": "chunked" } - }, + } + ], + "optional": true + }, + { + "alternatives": [ { "request": [ { @@ -102106,7 +140884,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -102114,7 +140892,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/multipart/object.bin" } }, { @@ -102126,27 +140904,27 @@ } }, { - "at": "/query/list-type", + "at": "/query/partNumber", "optional": false, "rule": { "is": "equal", - "value": "2" + "value": "1" } }, { - "at": "/query/prefix", + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "object-tests/many/" + "value": "fixture-upload+/276ca18046f9=" } }, { - "at": "/query/encoding-type", + "at": "/headers/x-amz-copy-source", "optional": false, "rule": { - "is": "equal", - "value": "url" + "is": "matches", + "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" } } ], @@ -102160,17 +140938,17 @@ "content-type": "application/xml", "date": { "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { "encoding": "utf8", - "data": "\nfixtureobject-tests/many/fixture-marker+/3a4e1000=10001000urltrueobject-tests/many/00002024-01-01T00:00:00.000Z"fixture-6d610000"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00012024-01-01T00:00:00.000Z"fixture-6d610001"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00022024-01-01T00:00:00.000Z"fixture-6d610002"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00032024-01-01T00:00:00.000Z"fixture-6d610003"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00042024-01-01T00:00:00.000Z"fixture-6d610004"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00052024-01-01T00:00:00.000Z"fixture-6d610005"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00062024-01-01T00:00:00.000Z"fixture-6d610006"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00072024-01-01T00:00:00.000Z"fixture-6d610007"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00082024-01-01T00:00:00.000Z"fixture-6d610008"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00092024-01-01T00:00:00.000Z"fixture-6d610009"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00102024-01-01T00:00:00.000Z"fixture-6d61000a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00112024-01-01T00:00:00.000Z"fixture-6d61000b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00122024-01-01T00:00:00.000Z"fixture-6d61000c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00132024-01-01T00:00:00.000Z"fixture-6d61000d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00142024-01-01T00:00:00.000Z"fixture-6d61000e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00152024-01-01T00:00:00.000Z"fixture-6d61000f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00162024-01-01T00:00:00.000Z"fixture-6d610010"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00172024-01-01T00:00:00.000Z"fixture-6d610011"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00182024-01-01T00:00:00.000Z"fixture-6d610012"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00192024-01-01T00:00:00.000Z"fixture-6d610013"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00202024-01-01T00:00:00.000Z"fixture-6d610014"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00212024-01-01T00:00:00.000Z"fixture-6d610015"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00222024-01-01T00:00:00.000Z"fixture-6d610016"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00232024-01-01T00:00:00.000Z"fixture-6d610017"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00242024-01-01T00:00:00.000Z"fixture-6d610018"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00252024-01-01T00:00:00.000Z"fixture-6d610019"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00262024-01-01T00:00:00.000Z"fixture-6d61001a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00272024-01-01T00:00:00.000Z"fixture-6d61001b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00282024-01-01T00:00:00.000Z"fixture-6d61001c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00292024-01-01T00:00:00.000Z"fixture-6d61001d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00302024-01-01T00:00:00.000Z"fixture-6d61001e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00312024-01-01T00:00:00.000Z"fixture-6d61001f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00322024-01-01T00:00:00.000Z"fixture-6d610020"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00332024-01-01T00:00:00.000Z"fixture-6d610021"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00342024-01-01T00:00:00.000Z"fixture-6d610022"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00352024-01-01T00:00:00.000Z"fixture-6d610023"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00362024-01-01T00:00:00.000Z"fixture-6d610024"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00372024-01-01T00:00:00.000Z"fixture-6d610025"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00382024-01-01T00:00:00.000Z"fixture-6d610026"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00392024-01-01T00:00:00.000Z"fixture-6d610027"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00402024-01-01T00:00:00.000Z"fixture-6d610028"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00412024-01-01T00:00:00.000Z"fixture-6d610029"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00422024-01-01T00:00:00.000Z"fixture-6d61002a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00432024-01-01T00:00:00.000Z"fixture-6d61002b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00442024-01-01T00:00:00.000Z"fixture-6d61002c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00452024-01-01T00:00:00.000Z"fixture-6d61002d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00462024-01-01T00:00:00.000Z"fixture-6d61002e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00472024-01-01T00:00:00.000Z"fixture-6d61002f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00482024-01-01T00:00:00.000Z"fixture-6d610030"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00492024-01-01T00:00:00.000Z"fixture-6d610031"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00502024-01-01T00:00:00.000Z"fixture-6d610032"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00512024-01-01T00:00:00.000Z"fixture-6d610033"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00522024-01-01T00:00:00.000Z"fixture-6d610034"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00532024-01-01T00:00:00.000Z"fixture-6d610035"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00542024-01-01T00:00:00.000Z"fixture-6d610036"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00552024-01-01T00:00:00.000Z"fixture-6d610037"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00562024-01-01T00:00:00.000Z"fixture-6d610038"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00572024-01-01T00:00:00.000Z"fixture-6d610039"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00582024-01-01T00:00:00.000Z"fixture-6d61003a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00592024-01-01T00:00:00.000Z"fixture-6d61003b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00602024-01-01T00:00:00.000Z"fixture-6d61003c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00612024-01-01T00:00:00.000Z"fixture-6d61003d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00622024-01-01T00:00:00.000Z"fixture-6d61003e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00632024-01-01T00:00:00.000Z"fixture-6d61003f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00642024-01-01T00:00:00.000Z"fixture-6d610040"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00652024-01-01T00:00:00.000Z"fixture-6d610041"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00662024-01-01T00:00:00.000Z"fixture-6d610042"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00672024-01-01T00:00:00.000Z"fixture-6d610043"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00682024-01-01T00:00:00.000Z"fixture-6d610044"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00692024-01-01T00:00:00.000Z"fixture-6d610045"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00702024-01-01T00:00:00.000Z"fixture-6d610046"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00712024-01-01T00:00:00.000Z"fixture-6d610047"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00722024-01-01T00:00:00.000Z"fixture-6d610048"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00732024-01-01T00:00:00.000Z"fixture-6d610049"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00742024-01-01T00:00:00.000Z"fixture-6d61004a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00752024-01-01T00:00:00.000Z"fixture-6d61004b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00762024-01-01T00:00:00.000Z"fixture-6d61004c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00772024-01-01T00:00:00.000Z"fixture-6d61004d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00782024-01-01T00:00:00.000Z"fixture-6d61004e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00792024-01-01T00:00:00.000Z"fixture-6d61004f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00802024-01-01T00:00:00.000Z"fixture-6d610050"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00812024-01-01T00:00:00.000Z"fixture-6d610051"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00822024-01-01T00:00:00.000Z"fixture-6d610052"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00832024-01-01T00:00:00.000Z"fixture-6d610053"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00842024-01-01T00:00:00.000Z"fixture-6d610054"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00852024-01-01T00:00:00.000Z"fixture-6d610055"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00862024-01-01T00:00:00.000Z"fixture-6d610056"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00872024-01-01T00:00:00.000Z"fixture-6d610057"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00882024-01-01T00:00:00.000Z"fixture-6d610058"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00892024-01-01T00:00:00.000Z"fixture-6d610059"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00902024-01-01T00:00:00.000Z"fixture-6d61005a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00912024-01-01T00:00:00.000Z"fixture-6d61005b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00922024-01-01T00:00:00.000Z"fixture-6d61005c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00932024-01-01T00:00:00.000Z"fixture-6d61005d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00942024-01-01T00:00:00.000Z"fixture-6d61005e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00952024-01-01T00:00:00.000Z"fixture-6d61005f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00962024-01-01T00:00:00.000Z"fixture-6d610060"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00972024-01-01T00:00:00.000Z"fixture-6d610061"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00982024-01-01T00:00:00.000Z"fixture-6d610062"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/00992024-01-01T00:00:00.000Z"fixture-6d610063"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01002024-01-01T00:00:00.000Z"fixture-6d610064"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01012024-01-01T00:00:00.000Z"fixture-6d610065"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01022024-01-01T00:00:00.000Z"fixture-6d610066"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01032024-01-01T00:00:00.000Z"fixture-6d610067"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01042024-01-01T00:00:00.000Z"fixture-6d610068"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01052024-01-01T00:00:00.000Z"fixture-6d610069"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01062024-01-01T00:00:00.000Z"fixture-6d61006a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01072024-01-01T00:00:00.000Z"fixture-6d61006b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01082024-01-01T00:00:00.000Z"fixture-6d61006c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01092024-01-01T00:00:00.000Z"fixture-6d61006d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01102024-01-01T00:00:00.000Z"fixture-6d61006e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01112024-01-01T00:00:00.000Z"fixture-6d61006f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01122024-01-01T00:00:00.000Z"fixture-6d610070"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01132024-01-01T00:00:00.000Z"fixture-6d610071"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01142024-01-01T00:00:00.000Z"fixture-6d610072"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01152024-01-01T00:00:00.000Z"fixture-6d610073"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01162024-01-01T00:00:00.000Z"fixture-6d610074"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01172024-01-01T00:00:00.000Z"fixture-6d610075"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01182024-01-01T00:00:00.000Z"fixture-6d610076"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01192024-01-01T00:00:00.000Z"fixture-6d610077"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01202024-01-01T00:00:00.000Z"fixture-6d610078"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01212024-01-01T00:00:00.000Z"fixture-6d610079"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01222024-01-01T00:00:00.000Z"fixture-6d61007a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01232024-01-01T00:00:00.000Z"fixture-6d61007b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01242024-01-01T00:00:00.000Z"fixture-6d61007c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01252024-01-01T00:00:00.000Z"fixture-6d61007d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01262024-01-01T00:00:00.000Z"fixture-6d61007e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01272024-01-01T00:00:00.000Z"fixture-6d61007f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01282024-01-01T00:00:00.000Z"fixture-6d610080"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01292024-01-01T00:00:00.000Z"fixture-6d610081"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01302024-01-01T00:00:00.000Z"fixture-6d610082"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01312024-01-01T00:00:00.000Z"fixture-6d610083"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01322024-01-01T00:00:00.000Z"fixture-6d610084"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01332024-01-01T00:00:00.000Z"fixture-6d610085"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01342024-01-01T00:00:00.000Z"fixture-6d610086"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01352024-01-01T00:00:00.000Z"fixture-6d610087"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01362024-01-01T00:00:00.000Z"fixture-6d610088"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01372024-01-01T00:00:00.000Z"fixture-6d610089"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01382024-01-01T00:00:00.000Z"fixture-6d61008a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01392024-01-01T00:00:00.000Z"fixture-6d61008b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01402024-01-01T00:00:00.000Z"fixture-6d61008c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01412024-01-01T00:00:00.000Z"fixture-6d61008d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01422024-01-01T00:00:00.000Z"fixture-6d61008e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01432024-01-01T00:00:00.000Z"fixture-6d61008f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01442024-01-01T00:00:00.000Z"fixture-6d610090"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01452024-01-01T00:00:00.000Z"fixture-6d610091"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01462024-01-01T00:00:00.000Z"fixture-6d610092"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01472024-01-01T00:00:00.000Z"fixture-6d610093"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01482024-01-01T00:00:00.000Z"fixture-6d610094"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01492024-01-01T00:00:00.000Z"fixture-6d610095"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01502024-01-01T00:00:00.000Z"fixture-6d610096"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01512024-01-01T00:00:00.000Z"fixture-6d610097"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01522024-01-01T00:00:00.000Z"fixture-6d610098"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01532024-01-01T00:00:00.000Z"fixture-6d610099"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01542024-01-01T00:00:00.000Z"fixture-6d61009a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01552024-01-01T00:00:00.000Z"fixture-6d61009b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01562024-01-01T00:00:00.000Z"fixture-6d61009c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01572024-01-01T00:00:00.000Z"fixture-6d61009d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01582024-01-01T00:00:00.000Z"fixture-6d61009e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01592024-01-01T00:00:00.000Z"fixture-6d61009f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01602024-01-01T00:00:00.000Z"fixture-6d6100a0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01612024-01-01T00:00:00.000Z"fixture-6d6100a1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01622024-01-01T00:00:00.000Z"fixture-6d6100a2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01632024-01-01T00:00:00.000Z"fixture-6d6100a3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01642024-01-01T00:00:00.000Z"fixture-6d6100a4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01652024-01-01T00:00:00.000Z"fixture-6d6100a5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01662024-01-01T00:00:00.000Z"fixture-6d6100a6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01672024-01-01T00:00:00.000Z"fixture-6d6100a7"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01682024-01-01T00:00:00.000Z"fixture-6d6100a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01692024-01-01T00:00:00.000Z"fixture-6d6100a9"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01702024-01-01T00:00:00.000Z"fixture-6d6100aa"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01712024-01-01T00:00:00.000Z"fixture-6d6100ab"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01722024-01-01T00:00:00.000Z"fixture-6d6100ac"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01732024-01-01T00:00:00.000Z"fixture-6d6100ad"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01742024-01-01T00:00:00.000Z"fixture-6d6100ae"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01752024-01-01T00:00:00.000Z"fixture-6d6100af"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01762024-01-01T00:00:00.000Z"fixture-6d6100b0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01772024-01-01T00:00:00.000Z"fixture-6d6100b1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01782024-01-01T00:00:00.000Z"fixture-6d6100b2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01792024-01-01T00:00:00.000Z"fixture-6d6100b3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01802024-01-01T00:00:00.000Z"fixture-6d6100b4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01812024-01-01T00:00:00.000Z"fixture-6d6100b5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01822024-01-01T00:00:00.000Z"fixture-6d6100b6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01832024-01-01T00:00:00.000Z"fixture-6d6100b7"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01842024-01-01T00:00:00.000Z"fixture-6d6100b8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01852024-01-01T00:00:00.000Z"fixture-6d6100b9"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01862024-01-01T00:00:00.000Z"fixture-6d6100ba"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01872024-01-01T00:00:00.000Z"fixture-6d6100bb"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01882024-01-01T00:00:00.000Z"fixture-6d6100bc"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01892024-01-01T00:00:00.000Z"fixture-6d6100bd"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01902024-01-01T00:00:00.000Z"fixture-6d6100be"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01912024-01-01T00:00:00.000Z"fixture-6d6100bf"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01922024-01-01T00:00:00.000Z"fixture-6d6100c0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01932024-01-01T00:00:00.000Z"fixture-6d6100c1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01942024-01-01T00:00:00.000Z"fixture-6d6100c2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01952024-01-01T00:00:00.000Z"fixture-6d6100c3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01962024-01-01T00:00:00.000Z"fixture-6d6100c4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01972024-01-01T00:00:00.000Z"fixture-6d6100c5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01982024-01-01T00:00:00.000Z"fixture-6d6100c6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/01992024-01-01T00:00:00.000Z"fixture-6d6100c7"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02002024-01-01T00:00:00.000Z"fixture-6d6100c8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02012024-01-01T00:00:00.000Z"fixture-6d6100c9"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02022024-01-01T00:00:00.000Z"fixture-6d6100ca"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02032024-01-01T00:00:00.000Z"fixture-6d6100cb"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02042024-01-01T00:00:00.000Z"fixture-6d6100cc"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02052024-01-01T00:00:00.000Z"fixture-6d6100cd"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02062024-01-01T00:00:00.000Z"fixture-6d6100ce"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02072024-01-01T00:00:00.000Z"fixture-6d6100cf"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02082024-01-01T00:00:00.000Z"fixture-6d6100d0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02092024-01-01T00:00:00.000Z"fixture-6d6100d1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02102024-01-01T00:00:00.000Z"fixture-6d6100d2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02112024-01-01T00:00:00.000Z"fixture-6d6100d3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02122024-01-01T00:00:00.000Z"fixture-6d6100d4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02132024-01-01T00:00:00.000Z"fixture-6d6100d5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02142024-01-01T00:00:00.000Z"fixture-6d6100d6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02152024-01-01T00:00:00.000Z"fixture-6d6100d7"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02162024-01-01T00:00:00.000Z"fixture-6d6100d8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02172024-01-01T00:00:00.000Z"fixture-6d6100d9"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02182024-01-01T00:00:00.000Z"fixture-6d6100da"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02192024-01-01T00:00:00.000Z"fixture-6d6100db"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02202024-01-01T00:00:00.000Z"fixture-6d6100dc"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02212024-01-01T00:00:00.000Z"fixture-6d6100dd"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02222024-01-01T00:00:00.000Z"fixture-6d6100de"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02232024-01-01T00:00:00.000Z"fixture-6d6100df"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02242024-01-01T00:00:00.000Z"fixture-6d6100e0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02252024-01-01T00:00:00.000Z"fixture-6d6100e1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02262024-01-01T00:00:00.000Z"fixture-6d6100e2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02272024-01-01T00:00:00.000Z"fixture-6d6100e3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02282024-01-01T00:00:00.000Z"fixture-6d6100e4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02292024-01-01T00:00:00.000Z"fixture-6d6100e5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02302024-01-01T00:00:00.000Z"fixture-6d6100e6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02312024-01-01T00:00:00.000Z"fixture-6d6100e7"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02322024-01-01T00:00:00.000Z"fixture-6d6100e8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02332024-01-01T00:00:00.000Z"fixture-6d6100e9"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02342024-01-01T00:00:00.000Z"fixture-6d6100ea"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02352024-01-01T00:00:00.000Z"fixture-6d6100eb"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02362024-01-01T00:00:00.000Z"fixture-6d6100ec"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02372024-01-01T00:00:00.000Z"fixture-6d6100ed"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02382024-01-01T00:00:00.000Z"fixture-6d6100ee"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02392024-01-01T00:00:00.000Z"fixture-6d6100ef"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02402024-01-01T00:00:00.000Z"fixture-6d6100f0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02412024-01-01T00:00:00.000Z"fixture-6d6100f1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02422024-01-01T00:00:00.000Z"fixture-6d6100f2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02432024-01-01T00:00:00.000Z"fixture-6d6100f3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02442024-01-01T00:00:00.000Z"fixture-6d6100f4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02452024-01-01T00:00:00.000Z"fixture-6d6100f5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02462024-01-01T00:00:00.000Z"fixture-6d6100f6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02472024-01-01T00:00:00.000Z"fixture-6d6100f7"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02482024-01-01T00:00:00.000Z"fixture-6d6100f8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02492024-01-01T00:00:00.000Z"fixture-6d6100f9"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02502024-01-01T00:00:00.000Z"fixture-6d6100fa"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02512024-01-01T00:00:00.000Z"fixture-6d6100fb"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02522024-01-01T00:00:00.000Z"fixture-6d6100fc"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02532024-01-01T00:00:00.000Z"fixture-6d6100fd"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02542024-01-01T00:00:00.000Z"fixture-6d6100fe"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02552024-01-01T00:00:00.000Z"fixture-6d6100ff"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02562024-01-01T00:00:00.000Z"fixture-6d610100"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02572024-01-01T00:00:00.000Z"fixture-6d610101"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02582024-01-01T00:00:00.000Z"fixture-6d610102"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02592024-01-01T00:00:00.000Z"fixture-6d610103"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02602024-01-01T00:00:00.000Z"fixture-6d610104"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02612024-01-01T00:00:00.000Z"fixture-6d610105"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02622024-01-01T00:00:00.000Z"fixture-6d610106"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02632024-01-01T00:00:00.000Z"fixture-6d610107"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02642024-01-01T00:00:00.000Z"fixture-6d610108"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02652024-01-01T00:00:00.000Z"fixture-6d610109"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02662024-01-01T00:00:00.000Z"fixture-6d61010a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02672024-01-01T00:00:00.000Z"fixture-6d61010b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02682024-01-01T00:00:00.000Z"fixture-6d61010c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02692024-01-01T00:00:00.000Z"fixture-6d61010d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02702024-01-01T00:00:00.000Z"fixture-6d61010e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02712024-01-01T00:00:00.000Z"fixture-6d61010f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02722024-01-01T00:00:00.000Z"fixture-6d610110"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02732024-01-01T00:00:00.000Z"fixture-6d610111"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02742024-01-01T00:00:00.000Z"fixture-6d610112"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02752024-01-01T00:00:00.000Z"fixture-6d610113"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02762024-01-01T00:00:00.000Z"fixture-6d610114"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02772024-01-01T00:00:00.000Z"fixture-6d610115"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02782024-01-01T00:00:00.000Z"fixture-6d610116"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02792024-01-01T00:00:00.000Z"fixture-6d610117"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02802024-01-01T00:00:00.000Z"fixture-6d610118"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02812024-01-01T00:00:00.000Z"fixture-6d610119"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02822024-01-01T00:00:00.000Z"fixture-6d61011a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02832024-01-01T00:00:00.000Z"fixture-6d61011b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02842024-01-01T00:00:00.000Z"fixture-6d61011c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02852024-01-01T00:00:00.000Z"fixture-6d61011d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02862024-01-01T00:00:00.000Z"fixture-6d61011e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02872024-01-01T00:00:00.000Z"fixture-6d61011f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02882024-01-01T00:00:00.000Z"fixture-6d610120"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02892024-01-01T00:00:00.000Z"fixture-6d610121"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02902024-01-01T00:00:00.000Z"fixture-6d610122"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02912024-01-01T00:00:00.000Z"fixture-6d610123"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02922024-01-01T00:00:00.000Z"fixture-6d610124"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02932024-01-01T00:00:00.000Z"fixture-6d610125"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02942024-01-01T00:00:00.000Z"fixture-6d610126"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02952024-01-01T00:00:00.000Z"fixture-6d610127"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02962024-01-01T00:00:00.000Z"fixture-6d610128"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02972024-01-01T00:00:00.000Z"fixture-6d610129"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02982024-01-01T00:00:00.000Z"fixture-6d61012a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/02992024-01-01T00:00:00.000Z"fixture-6d61012b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03002024-01-01T00:00:00.000Z"fixture-6d61012c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03012024-01-01T00:00:00.000Z"fixture-6d61012d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03022024-01-01T00:00:00.000Z"fixture-6d61012e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03032024-01-01T00:00:00.000Z"fixture-6d61012f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03042024-01-01T00:00:00.000Z"fixture-6d610130"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03052024-01-01T00:00:00.000Z"fixture-6d610131"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03062024-01-01T00:00:00.000Z"fixture-6d610132"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03072024-01-01T00:00:00.000Z"fixture-6d610133"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03082024-01-01T00:00:00.000Z"fixture-6d610134"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03092024-01-01T00:00:00.000Z"fixture-6d610135"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03102024-01-01T00:00:00.000Z"fixture-6d610136"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03112024-01-01T00:00:00.000Z"fixture-6d610137"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03122024-01-01T00:00:00.000Z"fixture-6d610138"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03132024-01-01T00:00:00.000Z"fixture-6d610139"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03142024-01-01T00:00:00.000Z"fixture-6d61013a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03152024-01-01T00:00:00.000Z"fixture-6d61013b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03162024-01-01T00:00:00.000Z"fixture-6d61013c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03172024-01-01T00:00:00.000Z"fixture-6d61013d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03182024-01-01T00:00:00.000Z"fixture-6d61013e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03192024-01-01T00:00:00.000Z"fixture-6d61013f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03202024-01-01T00:00:00.000Z"fixture-6d610140"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03212024-01-01T00:00:00.000Z"fixture-6d610141"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03222024-01-01T00:00:00.000Z"fixture-6d610142"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03232024-01-01T00:00:00.000Z"fixture-6d610143"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03242024-01-01T00:00:00.000Z"fixture-6d610144"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03252024-01-01T00:00:00.000Z"fixture-6d610145"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03262024-01-01T00:00:00.000Z"fixture-6d610146"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03272024-01-01T00:00:00.000Z"fixture-6d610147"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03282024-01-01T00:00:00.000Z"fixture-6d610148"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03292024-01-01T00:00:00.000Z"fixture-6d610149"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03302024-01-01T00:00:00.000Z"fixture-6d61014a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03312024-01-01T00:00:00.000Z"fixture-6d61014b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03322024-01-01T00:00:00.000Z"fixture-6d61014c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03332024-01-01T00:00:00.000Z"fixture-6d61014d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03342024-01-01T00:00:00.000Z"fixture-6d61014e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03352024-01-01T00:00:00.000Z"fixture-6d61014f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03362024-01-01T00:00:00.000Z"fixture-6d610150"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03372024-01-01T00:00:00.000Z"fixture-6d610151"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03382024-01-01T00:00:00.000Z"fixture-6d610152"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03392024-01-01T00:00:00.000Z"fixture-6d610153"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03402024-01-01T00:00:00.000Z"fixture-6d610154"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03412024-01-01T00:00:00.000Z"fixture-6d610155"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03422024-01-01T00:00:00.000Z"fixture-6d610156"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03432024-01-01T00:00:00.000Z"fixture-6d610157"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03442024-01-01T00:00:00.000Z"fixture-6d610158"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03452024-01-01T00:00:00.000Z"fixture-6d610159"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03462024-01-01T00:00:00.000Z"fixture-6d61015a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03472024-01-01T00:00:00.000Z"fixture-6d61015b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03482024-01-01T00:00:00.000Z"fixture-6d61015c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03492024-01-01T00:00:00.000Z"fixture-6d61015d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03502024-01-01T00:00:00.000Z"fixture-6d61015e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03512024-01-01T00:00:00.000Z"fixture-6d61015f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03522024-01-01T00:00:00.000Z"fixture-6d610160"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03532024-01-01T00:00:00.000Z"fixture-6d610161"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03542024-01-01T00:00:00.000Z"fixture-6d610162"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03552024-01-01T00:00:00.000Z"fixture-6d610163"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03562024-01-01T00:00:00.000Z"fixture-6d610164"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03572024-01-01T00:00:00.000Z"fixture-6d610165"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03582024-01-01T00:00:00.000Z"fixture-6d610166"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03592024-01-01T00:00:00.000Z"fixture-6d610167"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03602024-01-01T00:00:00.000Z"fixture-6d610168"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03612024-01-01T00:00:00.000Z"fixture-6d610169"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03622024-01-01T00:00:00.000Z"fixture-6d61016a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03632024-01-01T00:00:00.000Z"fixture-6d61016b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03642024-01-01T00:00:00.000Z"fixture-6d61016c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03652024-01-01T00:00:00.000Z"fixture-6d61016d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03662024-01-01T00:00:00.000Z"fixture-6d61016e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03672024-01-01T00:00:00.000Z"fixture-6d61016f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03682024-01-01T00:00:00.000Z"fixture-6d610170"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03692024-01-01T00:00:00.000Z"fixture-6d610171"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03702024-01-01T00:00:00.000Z"fixture-6d610172"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03712024-01-01T00:00:00.000Z"fixture-6d610173"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03722024-01-01T00:00:00.000Z"fixture-6d610174"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03732024-01-01T00:00:00.000Z"fixture-6d610175"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03742024-01-01T00:00:00.000Z"fixture-6d610176"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03752024-01-01T00:00:00.000Z"fixture-6d610177"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03762024-01-01T00:00:00.000Z"fixture-6d610178"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03772024-01-01T00:00:00.000Z"fixture-6d610179"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03782024-01-01T00:00:00.000Z"fixture-6d61017a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03792024-01-01T00:00:00.000Z"fixture-6d61017b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03802024-01-01T00:00:00.000Z"fixture-6d61017c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03812024-01-01T00:00:00.000Z"fixture-6d61017d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03822024-01-01T00:00:00.000Z"fixture-6d61017e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03832024-01-01T00:00:00.000Z"fixture-6d61017f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03842024-01-01T00:00:00.000Z"fixture-6d610180"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03852024-01-01T00:00:00.000Z"fixture-6d610181"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03862024-01-01T00:00:00.000Z"fixture-6d610182"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03872024-01-01T00:00:00.000Z"fixture-6d610183"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03882024-01-01T00:00:00.000Z"fixture-6d610184"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03892024-01-01T00:00:00.000Z"fixture-6d610185"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03902024-01-01T00:00:00.000Z"fixture-6d610186"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03912024-01-01T00:00:00.000Z"fixture-6d610187"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03922024-01-01T00:00:00.000Z"fixture-6d610188"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03932024-01-01T00:00:00.000Z"fixture-6d610189"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03942024-01-01T00:00:00.000Z"fixture-6d61018a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03952024-01-01T00:00:00.000Z"fixture-6d61018b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03962024-01-01T00:00:00.000Z"fixture-6d61018c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03972024-01-01T00:00:00.000Z"fixture-6d61018d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03982024-01-01T00:00:00.000Z"fixture-6d61018e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/03992024-01-01T00:00:00.000Z"fixture-6d61018f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04002024-01-01T00:00:00.000Z"fixture-6d610190"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04012024-01-01T00:00:00.000Z"fixture-6d610191"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04022024-01-01T00:00:00.000Z"fixture-6d610192"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04032024-01-01T00:00:00.000Z"fixture-6d610193"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04042024-01-01T00:00:00.000Z"fixture-6d610194"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04052024-01-01T00:00:00.000Z"fixture-6d610195"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04062024-01-01T00:00:00.000Z"fixture-6d610196"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04072024-01-01T00:00:00.000Z"fixture-6d610197"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04082024-01-01T00:00:00.000Z"fixture-6d610198"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04092024-01-01T00:00:00.000Z"fixture-6d610199"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04102024-01-01T00:00:00.000Z"fixture-6d61019a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04112024-01-01T00:00:00.000Z"fixture-6d61019b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04122024-01-01T00:00:00.000Z"fixture-6d61019c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04132024-01-01T00:00:00.000Z"fixture-6d61019d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04142024-01-01T00:00:00.000Z"fixture-6d61019e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04152024-01-01T00:00:00.000Z"fixture-6d61019f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04162024-01-01T00:00:00.000Z"fixture-6d6101a0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04172024-01-01T00:00:00.000Z"fixture-6d6101a1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04182024-01-01T00:00:00.000Z"fixture-6d6101a2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04192024-01-01T00:00:00.000Z"fixture-6d6101a3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04202024-01-01T00:00:00.000Z"fixture-6d6101a4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04212024-01-01T00:00:00.000Z"fixture-6d6101a5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04222024-01-01T00:00:00.000Z"fixture-6d6101a6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04232024-01-01T00:00:00.000Z"fixture-6d6101a7"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04242024-01-01T00:00:00.000Z"fixture-6d6101a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04252024-01-01T00:00:00.000Z"fixture-6d6101a9"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04262024-01-01T00:00:00.000Z"fixture-6d6101aa"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04272024-01-01T00:00:00.000Z"fixture-6d6101ab"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04282024-01-01T00:00:00.000Z"fixture-6d6101ac"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04292024-01-01T00:00:00.000Z"fixture-6d6101ad"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04302024-01-01T00:00:00.000Z"fixture-6d6101ae"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04312024-01-01T00:00:00.000Z"fixture-6d6101af"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04322024-01-01T00:00:00.000Z"fixture-6d6101b0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04332024-01-01T00:00:00.000Z"fixture-6d6101b1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04342024-01-01T00:00:00.000Z"fixture-6d6101b2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04352024-01-01T00:00:00.000Z"fixture-6d6101b3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04362024-01-01T00:00:00.000Z"fixture-6d6101b4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04372024-01-01T00:00:00.000Z"fixture-6d6101b5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04382024-01-01T00:00:00.000Z"fixture-6d6101b6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04392024-01-01T00:00:00.000Z"fixture-6d6101b7"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04402024-01-01T00:00:00.000Z"fixture-6d6101b8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04412024-01-01T00:00:00.000Z"fixture-6d6101b9"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04422024-01-01T00:00:00.000Z"fixture-6d6101ba"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04432024-01-01T00:00:00.000Z"fixture-6d6101bb"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04442024-01-01T00:00:00.000Z"fixture-6d6101bc"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04452024-01-01T00:00:00.000Z"fixture-6d6101bd"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04462024-01-01T00:00:00.000Z"fixture-6d6101be"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04472024-01-01T00:00:00.000Z"fixture-6d6101bf"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04482024-01-01T00:00:00.000Z"fixture-6d6101c0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04492024-01-01T00:00:00.000Z"fixture-6d6101c1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04502024-01-01T00:00:00.000Z"fixture-6d6101c2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04512024-01-01T00:00:00.000Z"fixture-6d6101c3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04522024-01-01T00:00:00.000Z"fixture-6d6101c4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04532024-01-01T00:00:00.000Z"fixture-6d6101c5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04542024-01-01T00:00:00.000Z"fixture-6d6101c6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04552024-01-01T00:00:00.000Z"fixture-6d6101c7"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04562024-01-01T00:00:00.000Z"fixture-6d6101c8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04572024-01-01T00:00:00.000Z"fixture-6d6101c9"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04582024-01-01T00:00:00.000Z"fixture-6d6101ca"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04592024-01-01T00:00:00.000Z"fixture-6d6101cb"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04602024-01-01T00:00:00.000Z"fixture-6d6101cc"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04612024-01-01T00:00:00.000Z"fixture-6d6101cd"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04622024-01-01T00:00:00.000Z"fixture-6d6101ce"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04632024-01-01T00:00:00.000Z"fixture-6d6101cf"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04642024-01-01T00:00:00.000Z"fixture-6d6101d0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04652024-01-01T00:00:00.000Z"fixture-6d6101d1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04662024-01-01T00:00:00.000Z"fixture-6d6101d2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04672024-01-01T00:00:00.000Z"fixture-6d6101d3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04682024-01-01T00:00:00.000Z"fixture-6d6101d4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04692024-01-01T00:00:00.000Z"fixture-6d6101d5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04702024-01-01T00:00:00.000Z"fixture-6d6101d6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04712024-01-01T00:00:00.000Z"fixture-6d6101d7"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04722024-01-01T00:00:00.000Z"fixture-6d6101d8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04732024-01-01T00:00:00.000Z"fixture-6d6101d9"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04742024-01-01T00:00:00.000Z"fixture-6d6101da"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04752024-01-01T00:00:00.000Z"fixture-6d6101db"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04762024-01-01T00:00:00.000Z"fixture-6d6101dc"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04772024-01-01T00:00:00.000Z"fixture-6d6101dd"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04782024-01-01T00:00:00.000Z"fixture-6d6101de"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04792024-01-01T00:00:00.000Z"fixture-6d6101df"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04802024-01-01T00:00:00.000Z"fixture-6d6101e0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04812024-01-01T00:00:00.000Z"fixture-6d6101e1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04822024-01-01T00:00:00.000Z"fixture-6d6101e2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04832024-01-01T00:00:00.000Z"fixture-6d6101e3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04842024-01-01T00:00:00.000Z"fixture-6d6101e4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04852024-01-01T00:00:00.000Z"fixture-6d6101e5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04862024-01-01T00:00:00.000Z"fixture-6d6101e6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04872024-01-01T00:00:00.000Z"fixture-6d6101e7"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04882024-01-01T00:00:00.000Z"fixture-6d6101e8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04892024-01-01T00:00:00.000Z"fixture-6d6101e9"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04902024-01-01T00:00:00.000Z"fixture-6d6101ea"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04912024-01-01T00:00:00.000Z"fixture-6d6101eb"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04922024-01-01T00:00:00.000Z"fixture-6d6101ec"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04932024-01-01T00:00:00.000Z"fixture-6d6101ed"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04942024-01-01T00:00:00.000Z"fixture-6d6101ee"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04952024-01-01T00:00:00.000Z"fixture-6d6101ef"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04962024-01-01T00:00:00.000Z"fixture-6d6101f0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04972024-01-01T00:00:00.000Z"fixture-6d6101f1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04982024-01-01T00:00:00.000Z"fixture-6d6101f2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/04992024-01-01T00:00:00.000Z"fixture-6d6101f3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05002024-01-01T00:00:00.000Z"fixture-6d6101f4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05012024-01-01T00:00:00.000Z"fixture-6d6101f5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05022024-01-01T00:00:00.000Z"fixture-6d6101f6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05032024-01-01T00:00:00.000Z"fixture-6d6101f7"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05042024-01-01T00:00:00.000Z"fixture-6d6101f8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05052024-01-01T00:00:00.000Z"fixture-6d6101f9"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05062024-01-01T00:00:00.000Z"fixture-6d6101fa"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05072024-01-01T00:00:00.000Z"fixture-6d6101fb"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05082024-01-01T00:00:00.000Z"fixture-6d6101fc"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05092024-01-01T00:00:00.000Z"fixture-6d6101fd"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05102024-01-01T00:00:00.000Z"fixture-6d6101fe"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05112024-01-01T00:00:00.000Z"fixture-6d6101ff"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05122024-01-01T00:00:00.000Z"fixture-6d610200"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05132024-01-01T00:00:00.000Z"fixture-6d610201"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05142024-01-01T00:00:00.000Z"fixture-6d610202"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05152024-01-01T00:00:00.000Z"fixture-6d610203"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05162024-01-01T00:00:00.000Z"fixture-6d610204"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05172024-01-01T00:00:00.000Z"fixture-6d610205"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05182024-01-01T00:00:00.000Z"fixture-6d610206"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05192024-01-01T00:00:00.000Z"fixture-6d610207"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05202024-01-01T00:00:00.000Z"fixture-6d610208"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05212024-01-01T00:00:00.000Z"fixture-6d610209"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05222024-01-01T00:00:00.000Z"fixture-6d61020a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05232024-01-01T00:00:00.000Z"fixture-6d61020b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05242024-01-01T00:00:00.000Z"fixture-6d61020c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05252024-01-01T00:00:00.000Z"fixture-6d61020d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05262024-01-01T00:00:00.000Z"fixture-6d61020e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05272024-01-01T00:00:00.000Z"fixture-6d61020f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05282024-01-01T00:00:00.000Z"fixture-6d610210"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05292024-01-01T00:00:00.000Z"fixture-6d610211"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05302024-01-01T00:00:00.000Z"fixture-6d610212"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05312024-01-01T00:00:00.000Z"fixture-6d610213"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05322024-01-01T00:00:00.000Z"fixture-6d610214"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05332024-01-01T00:00:00.000Z"fixture-6d610215"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05342024-01-01T00:00:00.000Z"fixture-6d610216"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05352024-01-01T00:00:00.000Z"fixture-6d610217"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05362024-01-01T00:00:00.000Z"fixture-6d610218"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05372024-01-01T00:00:00.000Z"fixture-6d610219"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05382024-01-01T00:00:00.000Z"fixture-6d61021a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05392024-01-01T00:00:00.000Z"fixture-6d61021b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05402024-01-01T00:00:00.000Z"fixture-6d61021c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05412024-01-01T00:00:00.000Z"fixture-6d61021d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05422024-01-01T00:00:00.000Z"fixture-6d61021e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05432024-01-01T00:00:00.000Z"fixture-6d61021f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05442024-01-01T00:00:00.000Z"fixture-6d610220"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05452024-01-01T00:00:00.000Z"fixture-6d610221"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05462024-01-01T00:00:00.000Z"fixture-6d610222"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05472024-01-01T00:00:00.000Z"fixture-6d610223"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05482024-01-01T00:00:00.000Z"fixture-6d610224"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05492024-01-01T00:00:00.000Z"fixture-6d610225"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05502024-01-01T00:00:00.000Z"fixture-6d610226"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05512024-01-01T00:00:00.000Z"fixture-6d610227"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05522024-01-01T00:00:00.000Z"fixture-6d610228"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05532024-01-01T00:00:00.000Z"fixture-6d610229"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05542024-01-01T00:00:00.000Z"fixture-6d61022a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05552024-01-01T00:00:00.000Z"fixture-6d61022b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05562024-01-01T00:00:00.000Z"fixture-6d61022c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05572024-01-01T00:00:00.000Z"fixture-6d61022d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05582024-01-01T00:00:00.000Z"fixture-6d61022e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05592024-01-01T00:00:00.000Z"fixture-6d61022f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05602024-01-01T00:00:00.000Z"fixture-6d610230"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05612024-01-01T00:00:00.000Z"fixture-6d610231"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05622024-01-01T00:00:00.000Z"fixture-6d610232"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05632024-01-01T00:00:00.000Z"fixture-6d610233"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05642024-01-01T00:00:00.000Z"fixture-6d610234"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05652024-01-01T00:00:00.000Z"fixture-6d610235"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05662024-01-01T00:00:00.000Z"fixture-6d610236"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05672024-01-01T00:00:00.000Z"fixture-6d610237"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05682024-01-01T00:00:00.000Z"fixture-6d610238"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05692024-01-01T00:00:00.000Z"fixture-6d610239"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05702024-01-01T00:00:00.000Z"fixture-6d61023a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05712024-01-01T00:00:00.000Z"fixture-6d61023b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05722024-01-01T00:00:00.000Z"fixture-6d61023c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05732024-01-01T00:00:00.000Z"fixture-6d61023d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05742024-01-01T00:00:00.000Z"fixture-6d61023e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05752024-01-01T00:00:00.000Z"fixture-6d61023f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05762024-01-01T00:00:00.000Z"fixture-6d610240"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05772024-01-01T00:00:00.000Z"fixture-6d610241"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05782024-01-01T00:00:00.000Z"fixture-6d610242"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05792024-01-01T00:00:00.000Z"fixture-6d610243"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05802024-01-01T00:00:00.000Z"fixture-6d610244"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05812024-01-01T00:00:00.000Z"fixture-6d610245"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05822024-01-01T00:00:00.000Z"fixture-6d610246"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05832024-01-01T00:00:00.000Z"fixture-6d610247"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05842024-01-01T00:00:00.000Z"fixture-6d610248"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05852024-01-01T00:00:00.000Z"fixture-6d610249"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05862024-01-01T00:00:00.000Z"fixture-6d61024a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05872024-01-01T00:00:00.000Z"fixture-6d61024b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05882024-01-01T00:00:00.000Z"fixture-6d61024c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05892024-01-01T00:00:00.000Z"fixture-6d61024d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05902024-01-01T00:00:00.000Z"fixture-6d61024e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05912024-01-01T00:00:00.000Z"fixture-6d61024f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05922024-01-01T00:00:00.000Z"fixture-6d610250"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05932024-01-01T00:00:00.000Z"fixture-6d610251"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05942024-01-01T00:00:00.000Z"fixture-6d610252"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05952024-01-01T00:00:00.000Z"fixture-6d610253"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05962024-01-01T00:00:00.000Z"fixture-6d610254"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05972024-01-01T00:00:00.000Z"fixture-6d610255"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05982024-01-01T00:00:00.000Z"fixture-6d610256"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/05992024-01-01T00:00:00.000Z"fixture-6d610257"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06002024-01-01T00:00:00.000Z"fixture-6d610258"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06012024-01-01T00:00:00.000Z"fixture-6d610259"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06022024-01-01T00:00:00.000Z"fixture-6d61025a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06032024-01-01T00:00:00.000Z"fixture-6d61025b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06042024-01-01T00:00:00.000Z"fixture-6d61025c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06052024-01-01T00:00:00.000Z"fixture-6d61025d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06062024-01-01T00:00:00.000Z"fixture-6d61025e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06072024-01-01T00:00:00.000Z"fixture-6d61025f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06082024-01-01T00:00:00.000Z"fixture-6d610260"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06092024-01-01T00:00:00.000Z"fixture-6d610261"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06102024-01-01T00:00:00.000Z"fixture-6d610262"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06112024-01-01T00:00:00.000Z"fixture-6d610263"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06122024-01-01T00:00:00.000Z"fixture-6d610264"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06132024-01-01T00:00:00.000Z"fixture-6d610265"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06142024-01-01T00:00:00.000Z"fixture-6d610266"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06152024-01-01T00:00:00.000Z"fixture-6d610267"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06162024-01-01T00:00:00.000Z"fixture-6d610268"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06172024-01-01T00:00:00.000Z"fixture-6d610269"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06182024-01-01T00:00:00.000Z"fixture-6d61026a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06192024-01-01T00:00:00.000Z"fixture-6d61026b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06202024-01-01T00:00:00.000Z"fixture-6d61026c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06212024-01-01T00:00:00.000Z"fixture-6d61026d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06222024-01-01T00:00:00.000Z"fixture-6d61026e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06232024-01-01T00:00:00.000Z"fixture-6d61026f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06242024-01-01T00:00:00.000Z"fixture-6d610270"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06252024-01-01T00:00:00.000Z"fixture-6d610271"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06262024-01-01T00:00:00.000Z"fixture-6d610272"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06272024-01-01T00:00:00.000Z"fixture-6d610273"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06282024-01-01T00:00:00.000Z"fixture-6d610274"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06292024-01-01T00:00:00.000Z"fixture-6d610275"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06302024-01-01T00:00:00.000Z"fixture-6d610276"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06312024-01-01T00:00:00.000Z"fixture-6d610277"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06322024-01-01T00:00:00.000Z"fixture-6d610278"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06332024-01-01T00:00:00.000Z"fixture-6d610279"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06342024-01-01T00:00:00.000Z"fixture-6d61027a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06352024-01-01T00:00:00.000Z"fixture-6d61027b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06362024-01-01T00:00:00.000Z"fixture-6d61027c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06372024-01-01T00:00:00.000Z"fixture-6d61027d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06382024-01-01T00:00:00.000Z"fixture-6d61027e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06392024-01-01T00:00:00.000Z"fixture-6d61027f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06402024-01-01T00:00:00.000Z"fixture-6d610280"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06412024-01-01T00:00:00.000Z"fixture-6d610281"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06422024-01-01T00:00:00.000Z"fixture-6d610282"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06432024-01-01T00:00:00.000Z"fixture-6d610283"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06442024-01-01T00:00:00.000Z"fixture-6d610284"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06452024-01-01T00:00:00.000Z"fixture-6d610285"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06462024-01-01T00:00:00.000Z"fixture-6d610286"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06472024-01-01T00:00:00.000Z"fixture-6d610287"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06482024-01-01T00:00:00.000Z"fixture-6d610288"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06492024-01-01T00:00:00.000Z"fixture-6d610289"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06502024-01-01T00:00:00.000Z"fixture-6d61028a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06512024-01-01T00:00:00.000Z"fixture-6d61028b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06522024-01-01T00:00:00.000Z"fixture-6d61028c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06532024-01-01T00:00:00.000Z"fixture-6d61028d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06542024-01-01T00:00:00.000Z"fixture-6d61028e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06552024-01-01T00:00:00.000Z"fixture-6d61028f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06562024-01-01T00:00:00.000Z"fixture-6d610290"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06572024-01-01T00:00:00.000Z"fixture-6d610291"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06582024-01-01T00:00:00.000Z"fixture-6d610292"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06592024-01-01T00:00:00.000Z"fixture-6d610293"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06602024-01-01T00:00:00.000Z"fixture-6d610294"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06612024-01-01T00:00:00.000Z"fixture-6d610295"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06622024-01-01T00:00:00.000Z"fixture-6d610296"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06632024-01-01T00:00:00.000Z"fixture-6d610297"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06642024-01-01T00:00:00.000Z"fixture-6d610298"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06652024-01-01T00:00:00.000Z"fixture-6d610299"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06662024-01-01T00:00:00.000Z"fixture-6d61029a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06672024-01-01T00:00:00.000Z"fixture-6d61029b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06682024-01-01T00:00:00.000Z"fixture-6d61029c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06692024-01-01T00:00:00.000Z"fixture-6d61029d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06702024-01-01T00:00:00.000Z"fixture-6d61029e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06712024-01-01T00:00:00.000Z"fixture-6d61029f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06722024-01-01T00:00:00.000Z"fixture-6d6102a0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06732024-01-01T00:00:00.000Z"fixture-6d6102a1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06742024-01-01T00:00:00.000Z"fixture-6d6102a2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06752024-01-01T00:00:00.000Z"fixture-6d6102a3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06762024-01-01T00:00:00.000Z"fixture-6d6102a4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06772024-01-01T00:00:00.000Z"fixture-6d6102a5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06782024-01-01T00:00:00.000Z"fixture-6d6102a6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06792024-01-01T00:00:00.000Z"fixture-6d6102a7"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06802024-01-01T00:00:00.000Z"fixture-6d6102a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06812024-01-01T00:00:00.000Z"fixture-6d6102a9"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06822024-01-01T00:00:00.000Z"fixture-6d6102aa"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06832024-01-01T00:00:00.000Z"fixture-6d6102ab"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06842024-01-01T00:00:00.000Z"fixture-6d6102ac"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06852024-01-01T00:00:00.000Z"fixture-6d6102ad"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06862024-01-01T00:00:00.000Z"fixture-6d6102ae"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06872024-01-01T00:00:00.000Z"fixture-6d6102af"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06882024-01-01T00:00:00.000Z"fixture-6d6102b0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06892024-01-01T00:00:00.000Z"fixture-6d6102b1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06902024-01-01T00:00:00.000Z"fixture-6d6102b2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06912024-01-01T00:00:00.000Z"fixture-6d6102b3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06922024-01-01T00:00:00.000Z"fixture-6d6102b4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06932024-01-01T00:00:00.000Z"fixture-6d6102b5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06942024-01-01T00:00:00.000Z"fixture-6d6102b6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06952024-01-01T00:00:00.000Z"fixture-6d6102b7"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06962024-01-01T00:00:00.000Z"fixture-6d6102b8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06972024-01-01T00:00:00.000Z"fixture-6d6102b9"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06982024-01-01T00:00:00.000Z"fixture-6d6102ba"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/06992024-01-01T00:00:00.000Z"fixture-6d6102bb"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07002024-01-01T00:00:00.000Z"fixture-6d6102bc"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07012024-01-01T00:00:00.000Z"fixture-6d6102bd"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07022024-01-01T00:00:00.000Z"fixture-6d6102be"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07032024-01-01T00:00:00.000Z"fixture-6d6102bf"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07042024-01-01T00:00:00.000Z"fixture-6d6102c0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07052024-01-01T00:00:00.000Z"fixture-6d6102c1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07062024-01-01T00:00:00.000Z"fixture-6d6102c2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07072024-01-01T00:00:00.000Z"fixture-6d6102c3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07082024-01-01T00:00:00.000Z"fixture-6d6102c4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07092024-01-01T00:00:00.000Z"fixture-6d6102c5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07102024-01-01T00:00:00.000Z"fixture-6d6102c6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07112024-01-01T00:00:00.000Z"fixture-6d6102c7"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07122024-01-01T00:00:00.000Z"fixture-6d6102c8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07132024-01-01T00:00:00.000Z"fixture-6d6102c9"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07142024-01-01T00:00:00.000Z"fixture-6d6102ca"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07152024-01-01T00:00:00.000Z"fixture-6d6102cb"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07162024-01-01T00:00:00.000Z"fixture-6d6102cc"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07172024-01-01T00:00:00.000Z"fixture-6d6102cd"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07182024-01-01T00:00:00.000Z"fixture-6d6102ce"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07192024-01-01T00:00:00.000Z"fixture-6d6102cf"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07202024-01-01T00:00:00.000Z"fixture-6d6102d0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07212024-01-01T00:00:00.000Z"fixture-6d6102d1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07222024-01-01T00:00:00.000Z"fixture-6d6102d2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07232024-01-01T00:00:00.000Z"fixture-6d6102d3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07242024-01-01T00:00:00.000Z"fixture-6d6102d4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07252024-01-01T00:00:00.000Z"fixture-6d6102d5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07262024-01-01T00:00:00.000Z"fixture-6d6102d6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07272024-01-01T00:00:00.000Z"fixture-6d6102d7"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07282024-01-01T00:00:00.000Z"fixture-6d6102d8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07292024-01-01T00:00:00.000Z"fixture-6d6102d9"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07302024-01-01T00:00:00.000Z"fixture-6d6102da"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07312024-01-01T00:00:00.000Z"fixture-6d6102db"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07322024-01-01T00:00:00.000Z"fixture-6d6102dc"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07332024-01-01T00:00:00.000Z"fixture-6d6102dd"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07342024-01-01T00:00:00.000Z"fixture-6d6102de"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07352024-01-01T00:00:00.000Z"fixture-6d6102df"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07362024-01-01T00:00:00.000Z"fixture-6d6102e0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07372024-01-01T00:00:00.000Z"fixture-6d6102e1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07382024-01-01T00:00:00.000Z"fixture-6d6102e2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07392024-01-01T00:00:00.000Z"fixture-6d6102e3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07402024-01-01T00:00:00.000Z"fixture-6d6102e4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07412024-01-01T00:00:00.000Z"fixture-6d6102e5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07422024-01-01T00:00:00.000Z"fixture-6d6102e6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07432024-01-01T00:00:00.000Z"fixture-6d6102e7"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07442024-01-01T00:00:00.000Z"fixture-6d6102e8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07452024-01-01T00:00:00.000Z"fixture-6d6102e9"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07462024-01-01T00:00:00.000Z"fixture-6d6102ea"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07472024-01-01T00:00:00.000Z"fixture-6d6102eb"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07482024-01-01T00:00:00.000Z"fixture-6d6102ec"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07492024-01-01T00:00:00.000Z"fixture-6d6102ed"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07502024-01-01T00:00:00.000Z"fixture-6d6102ee"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07512024-01-01T00:00:00.000Z"fixture-6d6102ef"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07522024-01-01T00:00:00.000Z"fixture-6d6102f0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07532024-01-01T00:00:00.000Z"fixture-6d6102f1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07542024-01-01T00:00:00.000Z"fixture-6d6102f2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07552024-01-01T00:00:00.000Z"fixture-6d6102f3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07562024-01-01T00:00:00.000Z"fixture-6d6102f4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07572024-01-01T00:00:00.000Z"fixture-6d6102f5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07582024-01-01T00:00:00.000Z"fixture-6d6102f6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07592024-01-01T00:00:00.000Z"fixture-6d6102f7"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07602024-01-01T00:00:00.000Z"fixture-6d6102f8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07612024-01-01T00:00:00.000Z"fixture-6d6102f9"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07622024-01-01T00:00:00.000Z"fixture-6d6102fa"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07632024-01-01T00:00:00.000Z"fixture-6d6102fb"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07642024-01-01T00:00:00.000Z"fixture-6d6102fc"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07652024-01-01T00:00:00.000Z"fixture-6d6102fd"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07662024-01-01T00:00:00.000Z"fixture-6d6102fe"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07672024-01-01T00:00:00.000Z"fixture-6d6102ff"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07682024-01-01T00:00:00.000Z"fixture-6d610300"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07692024-01-01T00:00:00.000Z"fixture-6d610301"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07702024-01-01T00:00:00.000Z"fixture-6d610302"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07712024-01-01T00:00:00.000Z"fixture-6d610303"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07722024-01-01T00:00:00.000Z"fixture-6d610304"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07732024-01-01T00:00:00.000Z"fixture-6d610305"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07742024-01-01T00:00:00.000Z"fixture-6d610306"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07752024-01-01T00:00:00.000Z"fixture-6d610307"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07762024-01-01T00:00:00.000Z"fixture-6d610308"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07772024-01-01T00:00:00.000Z"fixture-6d610309"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07782024-01-01T00:00:00.000Z"fixture-6d61030a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07792024-01-01T00:00:00.000Z"fixture-6d61030b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07802024-01-01T00:00:00.000Z"fixture-6d61030c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07812024-01-01T00:00:00.000Z"fixture-6d61030d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07822024-01-01T00:00:00.000Z"fixture-6d61030e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07832024-01-01T00:00:00.000Z"fixture-6d61030f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07842024-01-01T00:00:00.000Z"fixture-6d610310"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07852024-01-01T00:00:00.000Z"fixture-6d610311"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07862024-01-01T00:00:00.000Z"fixture-6d610312"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07872024-01-01T00:00:00.000Z"fixture-6d610313"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07882024-01-01T00:00:00.000Z"fixture-6d610314"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07892024-01-01T00:00:00.000Z"fixture-6d610315"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07902024-01-01T00:00:00.000Z"fixture-6d610316"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07912024-01-01T00:00:00.000Z"fixture-6d610317"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07922024-01-01T00:00:00.000Z"fixture-6d610318"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07932024-01-01T00:00:00.000Z"fixture-6d610319"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07942024-01-01T00:00:00.000Z"fixture-6d61031a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07952024-01-01T00:00:00.000Z"fixture-6d61031b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07962024-01-01T00:00:00.000Z"fixture-6d61031c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07972024-01-01T00:00:00.000Z"fixture-6d61031d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07982024-01-01T00:00:00.000Z"fixture-6d61031e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/07992024-01-01T00:00:00.000Z"fixture-6d61031f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08002024-01-01T00:00:00.000Z"fixture-6d610320"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08012024-01-01T00:00:00.000Z"fixture-6d610321"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08022024-01-01T00:00:00.000Z"fixture-6d610322"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08032024-01-01T00:00:00.000Z"fixture-6d610323"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08042024-01-01T00:00:00.000Z"fixture-6d610324"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08052024-01-01T00:00:00.000Z"fixture-6d610325"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08062024-01-01T00:00:00.000Z"fixture-6d610326"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08072024-01-01T00:00:00.000Z"fixture-6d610327"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08082024-01-01T00:00:00.000Z"fixture-6d610328"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08092024-01-01T00:00:00.000Z"fixture-6d610329"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08102024-01-01T00:00:00.000Z"fixture-6d61032a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08112024-01-01T00:00:00.000Z"fixture-6d61032b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08122024-01-01T00:00:00.000Z"fixture-6d61032c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08132024-01-01T00:00:00.000Z"fixture-6d61032d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08142024-01-01T00:00:00.000Z"fixture-6d61032e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08152024-01-01T00:00:00.000Z"fixture-6d61032f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08162024-01-01T00:00:00.000Z"fixture-6d610330"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08172024-01-01T00:00:00.000Z"fixture-6d610331"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08182024-01-01T00:00:00.000Z"fixture-6d610332"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08192024-01-01T00:00:00.000Z"fixture-6d610333"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08202024-01-01T00:00:00.000Z"fixture-6d610334"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08212024-01-01T00:00:00.000Z"fixture-6d610335"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08222024-01-01T00:00:00.000Z"fixture-6d610336"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08232024-01-01T00:00:00.000Z"fixture-6d610337"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08242024-01-01T00:00:00.000Z"fixture-6d610338"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08252024-01-01T00:00:00.000Z"fixture-6d610339"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08262024-01-01T00:00:00.000Z"fixture-6d61033a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08272024-01-01T00:00:00.000Z"fixture-6d61033b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08282024-01-01T00:00:00.000Z"fixture-6d61033c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08292024-01-01T00:00:00.000Z"fixture-6d61033d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08302024-01-01T00:00:00.000Z"fixture-6d61033e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08312024-01-01T00:00:00.000Z"fixture-6d61033f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08322024-01-01T00:00:00.000Z"fixture-6d610340"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08332024-01-01T00:00:00.000Z"fixture-6d610341"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08342024-01-01T00:00:00.000Z"fixture-6d610342"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08352024-01-01T00:00:00.000Z"fixture-6d610343"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08362024-01-01T00:00:00.000Z"fixture-6d610344"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08372024-01-01T00:00:00.000Z"fixture-6d610345"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08382024-01-01T00:00:00.000Z"fixture-6d610346"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08392024-01-01T00:00:00.000Z"fixture-6d610347"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08402024-01-01T00:00:00.000Z"fixture-6d610348"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08412024-01-01T00:00:00.000Z"fixture-6d610349"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08422024-01-01T00:00:00.000Z"fixture-6d61034a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08432024-01-01T00:00:00.000Z"fixture-6d61034b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08442024-01-01T00:00:00.000Z"fixture-6d61034c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08452024-01-01T00:00:00.000Z"fixture-6d61034d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08462024-01-01T00:00:00.000Z"fixture-6d61034e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08472024-01-01T00:00:00.000Z"fixture-6d61034f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08482024-01-01T00:00:00.000Z"fixture-6d610350"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08492024-01-01T00:00:00.000Z"fixture-6d610351"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08502024-01-01T00:00:00.000Z"fixture-6d610352"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08512024-01-01T00:00:00.000Z"fixture-6d610353"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08522024-01-01T00:00:00.000Z"fixture-6d610354"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08532024-01-01T00:00:00.000Z"fixture-6d610355"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08542024-01-01T00:00:00.000Z"fixture-6d610356"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08552024-01-01T00:00:00.000Z"fixture-6d610357"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08562024-01-01T00:00:00.000Z"fixture-6d610358"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08572024-01-01T00:00:00.000Z"fixture-6d610359"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08582024-01-01T00:00:00.000Z"fixture-6d61035a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08592024-01-01T00:00:00.000Z"fixture-6d61035b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08602024-01-01T00:00:00.000Z"fixture-6d61035c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08612024-01-01T00:00:00.000Z"fixture-6d61035d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08622024-01-01T00:00:00.000Z"fixture-6d61035e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08632024-01-01T00:00:00.000Z"fixture-6d61035f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08642024-01-01T00:00:00.000Z"fixture-6d610360"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08652024-01-01T00:00:00.000Z"fixture-6d610361"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08662024-01-01T00:00:00.000Z"fixture-6d610362"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08672024-01-01T00:00:00.000Z"fixture-6d610363"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08682024-01-01T00:00:00.000Z"fixture-6d610364"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08692024-01-01T00:00:00.000Z"fixture-6d610365"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08702024-01-01T00:00:00.000Z"fixture-6d610366"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08712024-01-01T00:00:00.000Z"fixture-6d610367"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08722024-01-01T00:00:00.000Z"fixture-6d610368"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08732024-01-01T00:00:00.000Z"fixture-6d610369"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08742024-01-01T00:00:00.000Z"fixture-6d61036a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08752024-01-01T00:00:00.000Z"fixture-6d61036b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08762024-01-01T00:00:00.000Z"fixture-6d61036c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08772024-01-01T00:00:00.000Z"fixture-6d61036d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08782024-01-01T00:00:00.000Z"fixture-6d61036e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08792024-01-01T00:00:00.000Z"fixture-6d61036f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08802024-01-01T00:00:00.000Z"fixture-6d610370"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08812024-01-01T00:00:00.000Z"fixture-6d610371"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08822024-01-01T00:00:00.000Z"fixture-6d610372"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08832024-01-01T00:00:00.000Z"fixture-6d610373"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08842024-01-01T00:00:00.000Z"fixture-6d610374"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08852024-01-01T00:00:00.000Z"fixture-6d610375"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08862024-01-01T00:00:00.000Z"fixture-6d610376"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08872024-01-01T00:00:00.000Z"fixture-6d610377"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08882024-01-01T00:00:00.000Z"fixture-6d610378"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08892024-01-01T00:00:00.000Z"fixture-6d610379"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08902024-01-01T00:00:00.000Z"fixture-6d61037a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08912024-01-01T00:00:00.000Z"fixture-6d61037b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08922024-01-01T00:00:00.000Z"fixture-6d61037c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08932024-01-01T00:00:00.000Z"fixture-6d61037d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08942024-01-01T00:00:00.000Z"fixture-6d61037e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08952024-01-01T00:00:00.000Z"fixture-6d61037f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08962024-01-01T00:00:00.000Z"fixture-6d610380"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08972024-01-01T00:00:00.000Z"fixture-6d610381"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08982024-01-01T00:00:00.000Z"fixture-6d610382"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/08992024-01-01T00:00:00.000Z"fixture-6d610383"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09002024-01-01T00:00:00.000Z"fixture-6d610384"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09012024-01-01T00:00:00.000Z"fixture-6d610385"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09022024-01-01T00:00:00.000Z"fixture-6d610386"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09032024-01-01T00:00:00.000Z"fixture-6d610387"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09042024-01-01T00:00:00.000Z"fixture-6d610388"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09052024-01-01T00:00:00.000Z"fixture-6d610389"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09062024-01-01T00:00:00.000Z"fixture-6d61038a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09072024-01-01T00:00:00.000Z"fixture-6d61038b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09082024-01-01T00:00:00.000Z"fixture-6d61038c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09092024-01-01T00:00:00.000Z"fixture-6d61038d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09102024-01-01T00:00:00.000Z"fixture-6d61038e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09112024-01-01T00:00:00.000Z"fixture-6d61038f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09122024-01-01T00:00:00.000Z"fixture-6d610390"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09132024-01-01T00:00:00.000Z"fixture-6d610391"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09142024-01-01T00:00:00.000Z"fixture-6d610392"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09152024-01-01T00:00:00.000Z"fixture-6d610393"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09162024-01-01T00:00:00.000Z"fixture-6d610394"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09172024-01-01T00:00:00.000Z"fixture-6d610395"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09182024-01-01T00:00:00.000Z"fixture-6d610396"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09192024-01-01T00:00:00.000Z"fixture-6d610397"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09202024-01-01T00:00:00.000Z"fixture-6d610398"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09212024-01-01T00:00:00.000Z"fixture-6d610399"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09222024-01-01T00:00:00.000Z"fixture-6d61039a"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09232024-01-01T00:00:00.000Z"fixture-6d61039b"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09242024-01-01T00:00:00.000Z"fixture-6d61039c"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09252024-01-01T00:00:00.000Z"fixture-6d61039d"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09262024-01-01T00:00:00.000Z"fixture-6d61039e"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09272024-01-01T00:00:00.000Z"fixture-6d61039f"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09282024-01-01T00:00:00.000Z"fixture-6d6103a0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09292024-01-01T00:00:00.000Z"fixture-6d6103a1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09302024-01-01T00:00:00.000Z"fixture-6d6103a2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09312024-01-01T00:00:00.000Z"fixture-6d6103a3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09322024-01-01T00:00:00.000Z"fixture-6d6103a4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09332024-01-01T00:00:00.000Z"fixture-6d6103a5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09342024-01-01T00:00:00.000Z"fixture-6d6103a6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09352024-01-01T00:00:00.000Z"fixture-6d6103a7"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09362024-01-01T00:00:00.000Z"fixture-6d6103a8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09372024-01-01T00:00:00.000Z"fixture-6d6103a9"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09382024-01-01T00:00:00.000Z"fixture-6d6103aa"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09392024-01-01T00:00:00.000Z"fixture-6d6103ab"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09402024-01-01T00:00:00.000Z"fixture-6d6103ac"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09412024-01-01T00:00:00.000Z"fixture-6d6103ad"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09422024-01-01T00:00:00.000Z"fixture-6d6103ae"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09432024-01-01T00:00:00.000Z"fixture-6d6103af"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09442024-01-01T00:00:00.000Z"fixture-6d6103b0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09452024-01-01T00:00:00.000Z"fixture-6d6103b1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09462024-01-01T00:00:00.000Z"fixture-6d6103b2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09472024-01-01T00:00:00.000Z"fixture-6d6103b3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09482024-01-01T00:00:00.000Z"fixture-6d6103b4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09492024-01-01T00:00:00.000Z"fixture-6d6103b5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09502024-01-01T00:00:00.000Z"fixture-6d6103b6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09512024-01-01T00:00:00.000Z"fixture-6d6103b7"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09522024-01-01T00:00:00.000Z"fixture-6d6103b8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09532024-01-01T00:00:00.000Z"fixture-6d6103b9"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09542024-01-01T00:00:00.000Z"fixture-6d6103ba"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09552024-01-01T00:00:00.000Z"fixture-6d6103bb"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09562024-01-01T00:00:00.000Z"fixture-6d6103bc"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09572024-01-01T00:00:00.000Z"fixture-6d6103bd"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09582024-01-01T00:00:00.000Z"fixture-6d6103be"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09592024-01-01T00:00:00.000Z"fixture-6d6103bf"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09602024-01-01T00:00:00.000Z"fixture-6d6103c0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09612024-01-01T00:00:00.000Z"fixture-6d6103c1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09622024-01-01T00:00:00.000Z"fixture-6d6103c2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09632024-01-01T00:00:00.000Z"fixture-6d6103c3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09642024-01-01T00:00:00.000Z"fixture-6d6103c4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09652024-01-01T00:00:00.000Z"fixture-6d6103c5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09662024-01-01T00:00:00.000Z"fixture-6d6103c6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09672024-01-01T00:00:00.000Z"fixture-6d6103c7"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09682024-01-01T00:00:00.000Z"fixture-6d6103c8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09692024-01-01T00:00:00.000Z"fixture-6d6103c9"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09702024-01-01T00:00:00.000Z"fixture-6d6103ca"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09712024-01-01T00:00:00.000Z"fixture-6d6103cb"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09722024-01-01T00:00:00.000Z"fixture-6d6103cc"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09732024-01-01T00:00:00.000Z"fixture-6d6103cd"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09742024-01-01T00:00:00.000Z"fixture-6d6103ce"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09752024-01-01T00:00:00.000Z"fixture-6d6103cf"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09762024-01-01T00:00:00.000Z"fixture-6d6103d0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09772024-01-01T00:00:00.000Z"fixture-6d6103d1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09782024-01-01T00:00:00.000Z"fixture-6d6103d2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09792024-01-01T00:00:00.000Z"fixture-6d6103d3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09802024-01-01T00:00:00.000Z"fixture-6d6103d4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09812024-01-01T00:00:00.000Z"fixture-6d6103d5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09822024-01-01T00:00:00.000Z"fixture-6d6103d6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09832024-01-01T00:00:00.000Z"fixture-6d6103d7"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09842024-01-01T00:00:00.000Z"fixture-6d6103d8"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09852024-01-01T00:00:00.000Z"fixture-6d6103d9"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09862024-01-01T00:00:00.000Z"fixture-6d6103da"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09872024-01-01T00:00:00.000Z"fixture-6d6103db"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09882024-01-01T00:00:00.000Z"fixture-6d6103dc"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09892024-01-01T00:00:00.000Z"fixture-6d6103dd"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09902024-01-01T00:00:00.000Z"fixture-6d6103de"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09912024-01-01T00:00:00.000Z"fixture-6d6103df"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09922024-01-01T00:00:00.000Z"fixture-6d6103e0"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09932024-01-01T00:00:00.000Z"fixture-6d6103e1"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09942024-01-01T00:00:00.000Z"fixture-6d6103e2"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09952024-01-01T00:00:00.000Z"fixture-6d6103e3"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09962024-01-01T00:00:00.000Z"fixture-6d6103e4"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09972024-01-01T00:00:00.000Z"fixture-6d6103e5"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09982024-01-01T00:00:00.000Z"fixture-6d6103e6"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/many/09992024-01-01T00:00:00.000Z"fixture-6d6103e7"CRC64NVMEFULL_OBJECT1STANDARD" + "data": "\nInternalErrorWe encountered an internal error. Please try again.fixturefixture" }, "framing": "chunked" } } - ] + ], + "optional": true }, { "alternatives": [ @@ -102181,7 +140959,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -102189,7 +140967,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/multipart/object.bin" } }, { @@ -102201,27 +140979,27 @@ } }, { - "at": "/query/list-type", + "at": "/query/partNumber", "optional": false, "rule": { "is": "equal", - "value": "2" + "value": "1" } }, { - "at": "/query/prefix", + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "object-tests/many/" + "value": "fixture-upload+/276ca18046f9=" } }, { - "at": "/query/continuation-token", + "at": "/headers/x-amz-copy-source", "optional": false, "rule": { - "is": "equal", - "value": "fixture-marker+/3a4e1000=" + "is": "matches", + "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" } } ], @@ -102235,16 +141013,55 @@ "content-type": "application/xml", "date": { "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { "encoding": "utf8", - "data": "\nfixtureobject-tests/many/fixture-marker+/3a4e1000=11000falseobject-tests/many/10002024-01-01T00:00:00.000Z"fixture-6d6103e8"CRC64NVMEFULL_OBJECT1STANDARD" + "data": "\nInternalErrorWe encountered an internal error. Please try again.fixturefixture" }, "framing": "chunked" } - }, + } + ], + "optional": true + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "InternalError" + } + } + ], + "refusal": null + }, + { + "id": "operations/s3/staged-after-abort", + "profile": "s3", + "lane": "core", + "purpose": "staged after abort", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "key": "object-tests/multipart/aborted.bin", + "op": "s3.list_parts", + "upload_id": "fixture-upload+/f85cf0cd3a3f=" + }, + "exchanges": [ + { + "alternatives": [ { "request": [ { @@ -102260,7 +141077,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/multipart/aborted.bin" } }, { @@ -102272,35 +141089,254 @@ } }, { - "at": "/query/list-type", + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "2" + "value": "fixture-upload+/f85cf0cd3a3f=" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 404, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + } + }, + "body": { + "encoding": "utf8", + "data": "\nNoSuchUploadFixture error" + }, + "framing": "chunked" + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 404 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "NoSuchUpload" + } + } + ], + "refusal": null + }, + { + "id": "operations/s3/staged-replacement", + "profile": "s3", + "lane": "core", + "purpose": "staged replacement", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "key": "object-tests/multipart/replaced.bin", + "op": "s3.list_parts", + "upload_id": "fixture-upload+/6ba3c5e480a2=" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" } }, { - "at": "/query/prefix", + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/multipart/replaced.bin" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/uploadId", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-upload+/6ba3c5e480a2=" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "utf8", + "data": "\nfixtureobject-tests/multipart/replaced.binfixture-upload+/6ba3c5e480a2=fixture-ownerfixture-ownerfixture-ownerSTANDARD021000false12024-01-01T00:00:00.000Z"fixture-5945c592bad7"122024-01-01T00:00:00.000Z"fixture-3c6b3668db13"6" + }, + "framing": "chunked" + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/parts/0/number", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/parts/0/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/parts/0/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-5945c592bad7\"" + } + }, + { + "at": "/value/parts/1/number", + "optional": false, + "rule": { + "is": "equal", + "value": 2 + } + }, + { + "at": "/value/parts/1/size", + "optional": false, + "rule": { + "is": "equal", + "value": 6 + } + }, + { + "at": "/value/parts/1/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-3c6b3668db13\"" + } + }, + { + "at": "/value/parts", + "optional": false, + "rule": { + "is": "array_length", + "value": 2 + } + } + ], + "refusal": null + }, + { + "id": "operations/s3/staged-unknown-upload", + "profile": "s3", + "lane": "core", + "purpose": "staged unknown upload", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "key": "object-tests/multipart/object.bin", + "op": "s3.list_parts", + "upload_id": "fixture-upload+/4d0d5ccc4993=" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", "optional": false, "rule": { "is": "equal", - "value": "object-tests/many/" + "value": "/fixture/object-tests/multipart/object.bin" } }, { - "at": "/query/continuation-token", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "fixture-marker+/3a4e1000=" + "value": "" } }, { - "at": "/query/encoding-type", + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "url" + "value": "fixture-upload+/4d0d5ccc4993=" } } ], @@ -102309,17 +141345,16 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 404, "headers": { "content-type": "application/xml", "date": { "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { "encoding": "utf8", - "data": "\nfixtureobject-tests/many/fixture-marker+/3a4e1000=11000urlfalseobject-tests/many/10002024-01-01T00:00:00.000Z"fixture-6d6103e8"CRC64NVMEFULL_OBJECT1STANDARD" + "data": "\nNoSuchUploadFixture error" }, "framing": "chunked" } @@ -102333,1034 +141368,40 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "error" } }, { - "at": "/value/keys", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": [ - "object-tests/many/0000", - "object-tests/many/0001", - "object-tests/many/0002", - "object-tests/many/0003", - "object-tests/many/0004", - "object-tests/many/0005", - "object-tests/many/0006", - "object-tests/many/0007", - "object-tests/many/0008", - "object-tests/many/0009", - "object-tests/many/0010", - "object-tests/many/0011", - "object-tests/many/0012", - "object-tests/many/0013", - "object-tests/many/0014", - "object-tests/many/0015", - "object-tests/many/0016", - "object-tests/many/0017", - "object-tests/many/0018", - "object-tests/many/0019", - "object-tests/many/0020", - "object-tests/many/0021", - "object-tests/many/0022", - "object-tests/many/0023", - "object-tests/many/0024", - "object-tests/many/0025", - "object-tests/many/0026", - "object-tests/many/0027", - "object-tests/many/0028", - "object-tests/many/0029", - "object-tests/many/0030", - "object-tests/many/0031", - "object-tests/many/0032", - "object-tests/many/0033", - "object-tests/many/0034", - "object-tests/many/0035", - "object-tests/many/0036", - "object-tests/many/0037", - "object-tests/many/0038", - "object-tests/many/0039", - "object-tests/many/0040", - "object-tests/many/0041", - "object-tests/many/0042", - "object-tests/many/0043", - "object-tests/many/0044", - "object-tests/many/0045", - "object-tests/many/0046", - "object-tests/many/0047", - "object-tests/many/0048", - "object-tests/many/0049", - "object-tests/many/0050", - "object-tests/many/0051", - "object-tests/many/0052", - "object-tests/many/0053", - "object-tests/many/0054", - "object-tests/many/0055", - "object-tests/many/0056", - "object-tests/many/0057", - "object-tests/many/0058", - "object-tests/many/0059", - "object-tests/many/0060", - "object-tests/many/0061", - "object-tests/many/0062", - "object-tests/many/0063", - "object-tests/many/0064", - "object-tests/many/0065", - "object-tests/many/0066", - "object-tests/many/0067", - "object-tests/many/0068", - "object-tests/many/0069", - "object-tests/many/0070", - "object-tests/many/0071", - "object-tests/many/0072", - "object-tests/many/0073", - "object-tests/many/0074", - "object-tests/many/0075", - "object-tests/many/0076", - "object-tests/many/0077", - "object-tests/many/0078", - "object-tests/many/0079", - "object-tests/many/0080", - "object-tests/many/0081", - "object-tests/many/0082", - "object-tests/many/0083", - "object-tests/many/0084", - "object-tests/many/0085", - "object-tests/many/0086", - "object-tests/many/0087", - "object-tests/many/0088", - "object-tests/many/0089", - "object-tests/many/0090", - "object-tests/many/0091", - "object-tests/many/0092", - "object-tests/many/0093", - "object-tests/many/0094", - "object-tests/many/0095", - "object-tests/many/0096", - "object-tests/many/0097", - "object-tests/many/0098", - "object-tests/many/0099", - "object-tests/many/0100", - "object-tests/many/0101", - "object-tests/many/0102", - "object-tests/many/0103", - "object-tests/many/0104", - "object-tests/many/0105", - "object-tests/many/0106", - "object-tests/many/0107", - "object-tests/many/0108", - "object-tests/many/0109", - "object-tests/many/0110", - "object-tests/many/0111", - "object-tests/many/0112", - "object-tests/many/0113", - "object-tests/many/0114", - "object-tests/many/0115", - "object-tests/many/0116", - "object-tests/many/0117", - "object-tests/many/0118", - "object-tests/many/0119", - "object-tests/many/0120", - "object-tests/many/0121", - "object-tests/many/0122", - "object-tests/many/0123", - "object-tests/many/0124", - "object-tests/many/0125", - "object-tests/many/0126", - "object-tests/many/0127", - "object-tests/many/0128", - "object-tests/many/0129", - "object-tests/many/0130", - "object-tests/many/0131", - "object-tests/many/0132", - "object-tests/many/0133", - "object-tests/many/0134", - "object-tests/many/0135", - "object-tests/many/0136", - "object-tests/many/0137", - "object-tests/many/0138", - "object-tests/many/0139", - "object-tests/many/0140", - "object-tests/many/0141", - "object-tests/many/0142", - "object-tests/many/0143", - "object-tests/many/0144", - "object-tests/many/0145", - "object-tests/many/0146", - "object-tests/many/0147", - "object-tests/many/0148", - "object-tests/many/0149", - "object-tests/many/0150", - "object-tests/many/0151", - "object-tests/many/0152", - "object-tests/many/0153", - "object-tests/many/0154", - "object-tests/many/0155", - "object-tests/many/0156", - "object-tests/many/0157", - "object-tests/many/0158", - "object-tests/many/0159", - "object-tests/many/0160", - "object-tests/many/0161", - "object-tests/many/0162", - "object-tests/many/0163", - "object-tests/many/0164", - "object-tests/many/0165", - "object-tests/many/0166", - "object-tests/many/0167", - "object-tests/many/0168", - "object-tests/many/0169", - "object-tests/many/0170", - "object-tests/many/0171", - "object-tests/many/0172", - "object-tests/many/0173", - "object-tests/many/0174", - "object-tests/many/0175", - "object-tests/many/0176", - "object-tests/many/0177", - "object-tests/many/0178", - "object-tests/many/0179", - "object-tests/many/0180", - "object-tests/many/0181", - "object-tests/many/0182", - "object-tests/many/0183", - "object-tests/many/0184", - "object-tests/many/0185", - "object-tests/many/0186", - "object-tests/many/0187", - "object-tests/many/0188", - "object-tests/many/0189", - "object-tests/many/0190", - "object-tests/many/0191", - "object-tests/many/0192", - "object-tests/many/0193", - "object-tests/many/0194", - "object-tests/many/0195", - "object-tests/many/0196", - "object-tests/many/0197", - "object-tests/many/0198", - "object-tests/many/0199", - "object-tests/many/0200", - "object-tests/many/0201", - "object-tests/many/0202", - "object-tests/many/0203", - "object-tests/many/0204", - "object-tests/many/0205", - "object-tests/many/0206", - "object-tests/many/0207", - "object-tests/many/0208", - "object-tests/many/0209", - "object-tests/many/0210", - "object-tests/many/0211", - "object-tests/many/0212", - "object-tests/many/0213", - "object-tests/many/0214", - "object-tests/many/0215", - "object-tests/many/0216", - "object-tests/many/0217", - "object-tests/many/0218", - "object-tests/many/0219", - "object-tests/many/0220", - "object-tests/many/0221", - "object-tests/many/0222", - "object-tests/many/0223", - "object-tests/many/0224", - "object-tests/many/0225", - "object-tests/many/0226", - "object-tests/many/0227", - "object-tests/many/0228", - "object-tests/many/0229", - "object-tests/many/0230", - "object-tests/many/0231", - "object-tests/many/0232", - "object-tests/many/0233", - "object-tests/many/0234", - "object-tests/many/0235", - "object-tests/many/0236", - "object-tests/many/0237", - "object-tests/many/0238", - "object-tests/many/0239", - "object-tests/many/0240", - "object-tests/many/0241", - "object-tests/many/0242", - "object-tests/many/0243", - "object-tests/many/0244", - "object-tests/many/0245", - "object-tests/many/0246", - "object-tests/many/0247", - "object-tests/many/0248", - "object-tests/many/0249", - "object-tests/many/0250", - "object-tests/many/0251", - "object-tests/many/0252", - "object-tests/many/0253", - "object-tests/many/0254", - "object-tests/many/0255", - "object-tests/many/0256", - "object-tests/many/0257", - "object-tests/many/0258", - "object-tests/many/0259", - "object-tests/many/0260", - "object-tests/many/0261", - "object-tests/many/0262", - "object-tests/many/0263", - "object-tests/many/0264", - "object-tests/many/0265", - "object-tests/many/0266", - "object-tests/many/0267", - "object-tests/many/0268", - "object-tests/many/0269", - "object-tests/many/0270", - "object-tests/many/0271", - "object-tests/many/0272", - "object-tests/many/0273", - "object-tests/many/0274", - "object-tests/many/0275", - "object-tests/many/0276", - "object-tests/many/0277", - "object-tests/many/0278", - "object-tests/many/0279", - "object-tests/many/0280", - "object-tests/many/0281", - "object-tests/many/0282", - "object-tests/many/0283", - "object-tests/many/0284", - "object-tests/many/0285", - "object-tests/many/0286", - "object-tests/many/0287", - "object-tests/many/0288", - "object-tests/many/0289", - "object-tests/many/0290", - "object-tests/many/0291", - "object-tests/many/0292", - "object-tests/many/0293", - "object-tests/many/0294", - "object-tests/many/0295", - "object-tests/many/0296", - "object-tests/many/0297", - "object-tests/many/0298", - "object-tests/many/0299", - "object-tests/many/0300", - "object-tests/many/0301", - "object-tests/many/0302", - "object-tests/many/0303", - "object-tests/many/0304", - "object-tests/many/0305", - "object-tests/many/0306", - "object-tests/many/0307", - "object-tests/many/0308", - "object-tests/many/0309", - "object-tests/many/0310", - "object-tests/many/0311", - "object-tests/many/0312", - "object-tests/many/0313", - "object-tests/many/0314", - "object-tests/many/0315", - "object-tests/many/0316", - "object-tests/many/0317", - "object-tests/many/0318", - "object-tests/many/0319", - "object-tests/many/0320", - "object-tests/many/0321", - "object-tests/many/0322", - "object-tests/many/0323", - "object-tests/many/0324", - "object-tests/many/0325", - "object-tests/many/0326", - "object-tests/many/0327", - "object-tests/many/0328", - "object-tests/many/0329", - "object-tests/many/0330", - "object-tests/many/0331", - "object-tests/many/0332", - "object-tests/many/0333", - "object-tests/many/0334", - "object-tests/many/0335", - "object-tests/many/0336", - "object-tests/many/0337", - "object-tests/many/0338", - "object-tests/many/0339", - "object-tests/many/0340", - "object-tests/many/0341", - "object-tests/many/0342", - "object-tests/many/0343", - "object-tests/many/0344", - "object-tests/many/0345", - "object-tests/many/0346", - "object-tests/many/0347", - "object-tests/many/0348", - "object-tests/many/0349", - "object-tests/many/0350", - "object-tests/many/0351", - "object-tests/many/0352", - "object-tests/many/0353", - "object-tests/many/0354", - "object-tests/many/0355", - "object-tests/many/0356", - "object-tests/many/0357", - "object-tests/many/0358", - "object-tests/many/0359", - "object-tests/many/0360", - "object-tests/many/0361", - "object-tests/many/0362", - "object-tests/many/0363", - "object-tests/many/0364", - "object-tests/many/0365", - "object-tests/many/0366", - "object-tests/many/0367", - "object-tests/many/0368", - "object-tests/many/0369", - "object-tests/many/0370", - "object-tests/many/0371", - "object-tests/many/0372", - "object-tests/many/0373", - "object-tests/many/0374", - "object-tests/many/0375", - "object-tests/many/0376", - "object-tests/many/0377", - "object-tests/many/0378", - "object-tests/many/0379", - "object-tests/many/0380", - "object-tests/many/0381", - "object-tests/many/0382", - "object-tests/many/0383", - "object-tests/many/0384", - "object-tests/many/0385", - "object-tests/many/0386", - "object-tests/many/0387", - "object-tests/many/0388", - "object-tests/many/0389", - "object-tests/many/0390", - "object-tests/many/0391", - "object-tests/many/0392", - "object-tests/many/0393", - "object-tests/many/0394", - "object-tests/many/0395", - "object-tests/many/0396", - "object-tests/many/0397", - "object-tests/many/0398", - "object-tests/many/0399", - "object-tests/many/0400", - "object-tests/many/0401", - "object-tests/many/0402", - "object-tests/many/0403", - "object-tests/many/0404", - "object-tests/many/0405", - "object-tests/many/0406", - "object-tests/many/0407", - "object-tests/many/0408", - "object-tests/many/0409", - "object-tests/many/0410", - "object-tests/many/0411", - "object-tests/many/0412", - "object-tests/many/0413", - "object-tests/many/0414", - "object-tests/many/0415", - "object-tests/many/0416", - "object-tests/many/0417", - "object-tests/many/0418", - "object-tests/many/0419", - "object-tests/many/0420", - "object-tests/many/0421", - "object-tests/many/0422", - "object-tests/many/0423", - "object-tests/many/0424", - "object-tests/many/0425", - "object-tests/many/0426", - "object-tests/many/0427", - "object-tests/many/0428", - "object-tests/many/0429", - "object-tests/many/0430", - "object-tests/many/0431", - "object-tests/many/0432", - "object-tests/many/0433", - "object-tests/many/0434", - "object-tests/many/0435", - "object-tests/many/0436", - "object-tests/many/0437", - "object-tests/many/0438", - "object-tests/many/0439", - "object-tests/many/0440", - "object-tests/many/0441", - "object-tests/many/0442", - "object-tests/many/0443", - "object-tests/many/0444", - "object-tests/many/0445", - "object-tests/many/0446", - "object-tests/many/0447", - "object-tests/many/0448", - "object-tests/many/0449", - "object-tests/many/0450", - "object-tests/many/0451", - "object-tests/many/0452", - "object-tests/many/0453", - "object-tests/many/0454", - "object-tests/many/0455", - "object-tests/many/0456", - "object-tests/many/0457", - "object-tests/many/0458", - "object-tests/many/0459", - "object-tests/many/0460", - "object-tests/many/0461", - "object-tests/many/0462", - "object-tests/many/0463", - "object-tests/many/0464", - "object-tests/many/0465", - "object-tests/many/0466", - "object-tests/many/0467", - "object-tests/many/0468", - "object-tests/many/0469", - "object-tests/many/0470", - "object-tests/many/0471", - "object-tests/many/0472", - "object-tests/many/0473", - "object-tests/many/0474", - "object-tests/many/0475", - "object-tests/many/0476", - "object-tests/many/0477", - "object-tests/many/0478", - "object-tests/many/0479", - "object-tests/many/0480", - "object-tests/many/0481", - "object-tests/many/0482", - "object-tests/many/0483", - "object-tests/many/0484", - "object-tests/many/0485", - "object-tests/many/0486", - "object-tests/many/0487", - "object-tests/many/0488", - "object-tests/many/0489", - "object-tests/many/0490", - "object-tests/many/0491", - "object-tests/many/0492", - "object-tests/many/0493", - "object-tests/many/0494", - "object-tests/many/0495", - "object-tests/many/0496", - "object-tests/many/0497", - "object-tests/many/0498", - "object-tests/many/0499", - "object-tests/many/0500", - "object-tests/many/0501", - "object-tests/many/0502", - "object-tests/many/0503", - "object-tests/many/0504", - "object-tests/many/0505", - "object-tests/many/0506", - "object-tests/many/0507", - "object-tests/many/0508", - "object-tests/many/0509", - "object-tests/many/0510", - "object-tests/many/0511", - "object-tests/many/0512", - "object-tests/many/0513", - "object-tests/many/0514", - "object-tests/many/0515", - "object-tests/many/0516", - "object-tests/many/0517", - "object-tests/many/0518", - "object-tests/many/0519", - "object-tests/many/0520", - "object-tests/many/0521", - "object-tests/many/0522", - "object-tests/many/0523", - "object-tests/many/0524", - "object-tests/many/0525", - "object-tests/many/0526", - "object-tests/many/0527", - "object-tests/many/0528", - "object-tests/many/0529", - "object-tests/many/0530", - "object-tests/many/0531", - "object-tests/many/0532", - "object-tests/many/0533", - "object-tests/many/0534", - "object-tests/many/0535", - "object-tests/many/0536", - "object-tests/many/0537", - "object-tests/many/0538", - "object-tests/many/0539", - "object-tests/many/0540", - "object-tests/many/0541", - "object-tests/many/0542", - "object-tests/many/0543", - "object-tests/many/0544", - "object-tests/many/0545", - "object-tests/many/0546", - "object-tests/many/0547", - "object-tests/many/0548", - "object-tests/many/0549", - "object-tests/many/0550", - "object-tests/many/0551", - "object-tests/many/0552", - "object-tests/many/0553", - "object-tests/many/0554", - "object-tests/many/0555", - "object-tests/many/0556", - "object-tests/many/0557", - "object-tests/many/0558", - "object-tests/many/0559", - "object-tests/many/0560", - "object-tests/many/0561", - "object-tests/many/0562", - "object-tests/many/0563", - "object-tests/many/0564", - "object-tests/many/0565", - "object-tests/many/0566", - "object-tests/many/0567", - "object-tests/many/0568", - "object-tests/many/0569", - "object-tests/many/0570", - "object-tests/many/0571", - "object-tests/many/0572", - "object-tests/many/0573", - "object-tests/many/0574", - "object-tests/many/0575", - "object-tests/many/0576", - "object-tests/many/0577", - "object-tests/many/0578", - "object-tests/many/0579", - "object-tests/many/0580", - "object-tests/many/0581", - "object-tests/many/0582", - "object-tests/many/0583", - "object-tests/many/0584", - "object-tests/many/0585", - "object-tests/many/0586", - "object-tests/many/0587", - "object-tests/many/0588", - "object-tests/many/0589", - "object-tests/many/0590", - "object-tests/many/0591", - "object-tests/many/0592", - "object-tests/many/0593", - "object-tests/many/0594", - "object-tests/many/0595", - "object-tests/many/0596", - "object-tests/many/0597", - "object-tests/many/0598", - "object-tests/many/0599", - "object-tests/many/0600", - "object-tests/many/0601", - "object-tests/many/0602", - "object-tests/many/0603", - "object-tests/many/0604", - "object-tests/many/0605", - "object-tests/many/0606", - "object-tests/many/0607", - "object-tests/many/0608", - "object-tests/many/0609", - "object-tests/many/0610", - "object-tests/many/0611", - "object-tests/many/0612", - "object-tests/many/0613", - "object-tests/many/0614", - "object-tests/many/0615", - "object-tests/many/0616", - "object-tests/many/0617", - "object-tests/many/0618", - "object-tests/many/0619", - "object-tests/many/0620", - "object-tests/many/0621", - "object-tests/many/0622", - "object-tests/many/0623", - "object-tests/many/0624", - "object-tests/many/0625", - "object-tests/many/0626", - "object-tests/many/0627", - "object-tests/many/0628", - "object-tests/many/0629", - "object-tests/many/0630", - "object-tests/many/0631", - "object-tests/many/0632", - "object-tests/many/0633", - "object-tests/many/0634", - "object-tests/many/0635", - "object-tests/many/0636", - "object-tests/many/0637", - "object-tests/many/0638", - "object-tests/many/0639", - "object-tests/many/0640", - "object-tests/many/0641", - "object-tests/many/0642", - "object-tests/many/0643", - "object-tests/many/0644", - "object-tests/many/0645", - "object-tests/many/0646", - "object-tests/many/0647", - "object-tests/many/0648", - "object-tests/many/0649", - "object-tests/many/0650", - "object-tests/many/0651", - "object-tests/many/0652", - "object-tests/many/0653", - "object-tests/many/0654", - "object-tests/many/0655", - "object-tests/many/0656", - "object-tests/many/0657", - "object-tests/many/0658", - "object-tests/many/0659", - "object-tests/many/0660", - "object-tests/many/0661", - "object-tests/many/0662", - "object-tests/many/0663", - "object-tests/many/0664", - "object-tests/many/0665", - "object-tests/many/0666", - "object-tests/many/0667", - "object-tests/many/0668", - "object-tests/many/0669", - "object-tests/many/0670", - "object-tests/many/0671", - "object-tests/many/0672", - "object-tests/many/0673", - "object-tests/many/0674", - "object-tests/many/0675", - "object-tests/many/0676", - "object-tests/many/0677", - "object-tests/many/0678", - "object-tests/many/0679", - "object-tests/many/0680", - "object-tests/many/0681", - "object-tests/many/0682", - "object-tests/many/0683", - "object-tests/many/0684", - "object-tests/many/0685", - "object-tests/many/0686", - "object-tests/many/0687", - "object-tests/many/0688", - "object-tests/many/0689", - "object-tests/many/0690", - "object-tests/many/0691", - "object-tests/many/0692", - "object-tests/many/0693", - "object-tests/many/0694", - "object-tests/many/0695", - "object-tests/many/0696", - "object-tests/many/0697", - "object-tests/many/0698", - "object-tests/many/0699", - "object-tests/many/0700", - "object-tests/many/0701", - "object-tests/many/0702", - "object-tests/many/0703", - "object-tests/many/0704", - "object-tests/many/0705", - "object-tests/many/0706", - "object-tests/many/0707", - "object-tests/many/0708", - "object-tests/many/0709", - "object-tests/many/0710", - "object-tests/many/0711", - "object-tests/many/0712", - "object-tests/many/0713", - "object-tests/many/0714", - "object-tests/many/0715", - "object-tests/many/0716", - "object-tests/many/0717", - "object-tests/many/0718", - "object-tests/many/0719", - "object-tests/many/0720", - "object-tests/many/0721", - "object-tests/many/0722", - "object-tests/many/0723", - "object-tests/many/0724", - "object-tests/many/0725", - "object-tests/many/0726", - "object-tests/many/0727", - "object-tests/many/0728", - "object-tests/many/0729", - "object-tests/many/0730", - "object-tests/many/0731", - "object-tests/many/0732", - "object-tests/many/0733", - "object-tests/many/0734", - "object-tests/many/0735", - "object-tests/many/0736", - "object-tests/many/0737", - "object-tests/many/0738", - "object-tests/many/0739", - "object-tests/many/0740", - "object-tests/many/0741", - "object-tests/many/0742", - "object-tests/many/0743", - "object-tests/many/0744", - "object-tests/many/0745", - "object-tests/many/0746", - "object-tests/many/0747", - "object-tests/many/0748", - "object-tests/many/0749", - "object-tests/many/0750", - "object-tests/many/0751", - "object-tests/many/0752", - "object-tests/many/0753", - "object-tests/many/0754", - "object-tests/many/0755", - "object-tests/many/0756", - "object-tests/many/0757", - "object-tests/many/0758", - "object-tests/many/0759", - "object-tests/many/0760", - "object-tests/many/0761", - "object-tests/many/0762", - "object-tests/many/0763", - "object-tests/many/0764", - "object-tests/many/0765", - "object-tests/many/0766", - "object-tests/many/0767", - "object-tests/many/0768", - "object-tests/many/0769", - "object-tests/many/0770", - "object-tests/many/0771", - "object-tests/many/0772", - "object-tests/many/0773", - "object-tests/many/0774", - "object-tests/many/0775", - "object-tests/many/0776", - "object-tests/many/0777", - "object-tests/many/0778", - "object-tests/many/0779", - "object-tests/many/0780", - "object-tests/many/0781", - "object-tests/many/0782", - "object-tests/many/0783", - "object-tests/many/0784", - "object-tests/many/0785", - "object-tests/many/0786", - "object-tests/many/0787", - "object-tests/many/0788", - "object-tests/many/0789", - "object-tests/many/0790", - "object-tests/many/0791", - "object-tests/many/0792", - "object-tests/many/0793", - "object-tests/many/0794", - "object-tests/many/0795", - "object-tests/many/0796", - "object-tests/many/0797", - "object-tests/many/0798", - "object-tests/many/0799", - "object-tests/many/0800", - "object-tests/many/0801", - "object-tests/many/0802", - "object-tests/many/0803", - "object-tests/many/0804", - "object-tests/many/0805", - "object-tests/many/0806", - "object-tests/many/0807", - "object-tests/many/0808", - "object-tests/many/0809", - "object-tests/many/0810", - "object-tests/many/0811", - "object-tests/many/0812", - "object-tests/many/0813", - "object-tests/many/0814", - "object-tests/many/0815", - "object-tests/many/0816", - "object-tests/many/0817", - "object-tests/many/0818", - "object-tests/many/0819", - "object-tests/many/0820", - "object-tests/many/0821", - "object-tests/many/0822", - "object-tests/many/0823", - "object-tests/many/0824", - "object-tests/many/0825", - "object-tests/many/0826", - "object-tests/many/0827", - "object-tests/many/0828", - "object-tests/many/0829", - "object-tests/many/0830", - "object-tests/many/0831", - "object-tests/many/0832", - "object-tests/many/0833", - "object-tests/many/0834", - "object-tests/many/0835", - "object-tests/many/0836", - "object-tests/many/0837", - "object-tests/many/0838", - "object-tests/many/0839", - "object-tests/many/0840", - "object-tests/many/0841", - "object-tests/many/0842", - "object-tests/many/0843", - "object-tests/many/0844", - "object-tests/many/0845", - "object-tests/many/0846", - "object-tests/many/0847", - "object-tests/many/0848", - "object-tests/many/0849", - "object-tests/many/0850", - "object-tests/many/0851", - "object-tests/many/0852", - "object-tests/many/0853", - "object-tests/many/0854", - "object-tests/many/0855", - "object-tests/many/0856", - "object-tests/many/0857", - "object-tests/many/0858", - "object-tests/many/0859", - "object-tests/many/0860", - "object-tests/many/0861", - "object-tests/many/0862", - "object-tests/many/0863", - "object-tests/many/0864", - "object-tests/many/0865", - "object-tests/many/0866", - "object-tests/many/0867", - "object-tests/many/0868", - "object-tests/many/0869", - "object-tests/many/0870", - "object-tests/many/0871", - "object-tests/many/0872", - "object-tests/many/0873", - "object-tests/many/0874", - "object-tests/many/0875", - "object-tests/many/0876", - "object-tests/many/0877", - "object-tests/many/0878", - "object-tests/many/0879", - "object-tests/many/0880", - "object-tests/many/0881", - "object-tests/many/0882", - "object-tests/many/0883", - "object-tests/many/0884", - "object-tests/many/0885", - "object-tests/many/0886", - "object-tests/many/0887", - "object-tests/many/0888", - "object-tests/many/0889", - "object-tests/many/0890", - "object-tests/many/0891", - "object-tests/many/0892", - "object-tests/many/0893", - "object-tests/many/0894", - "object-tests/many/0895", - "object-tests/many/0896", - "object-tests/many/0897", - "object-tests/many/0898", - "object-tests/many/0899", - "object-tests/many/0900", - "object-tests/many/0901", - "object-tests/many/0902", - "object-tests/many/0903", - "object-tests/many/0904", - "object-tests/many/0905", - "object-tests/many/0906", - "object-tests/many/0907", - "object-tests/many/0908", - "object-tests/many/0909", - "object-tests/many/0910", - "object-tests/many/0911", - "object-tests/many/0912", - "object-tests/many/0913", - "object-tests/many/0914", - "object-tests/many/0915", - "object-tests/many/0916", - "object-tests/many/0917", - "object-tests/many/0918", - "object-tests/many/0919", - "object-tests/many/0920", - "object-tests/many/0921", - "object-tests/many/0922", - "object-tests/many/0923", - "object-tests/many/0924", - "object-tests/many/0925", - "object-tests/many/0926", - "object-tests/many/0927", - "object-tests/many/0928", - "object-tests/many/0929", - "object-tests/many/0930", - "object-tests/many/0931", - "object-tests/many/0932", - "object-tests/many/0933", - "object-tests/many/0934", - "object-tests/many/0935", - "object-tests/many/0936", - "object-tests/many/0937", - "object-tests/many/0938", - "object-tests/many/0939", - "object-tests/many/0940", - "object-tests/many/0941", - "object-tests/many/0942", - "object-tests/many/0943", - "object-tests/many/0944", - "object-tests/many/0945", - "object-tests/many/0946", - "object-tests/many/0947", - "object-tests/many/0948", - "object-tests/many/0949", - "object-tests/many/0950", - "object-tests/many/0951", - "object-tests/many/0952", - "object-tests/many/0953", - "object-tests/many/0954", - "object-tests/many/0955", - "object-tests/many/0956", - "object-tests/many/0957", - "object-tests/many/0958", - "object-tests/many/0959", - "object-tests/many/0960", - "object-tests/many/0961", - "object-tests/many/0962", - "object-tests/many/0963", - "object-tests/many/0964", - "object-tests/many/0965", - "object-tests/many/0966", - "object-tests/many/0967", - "object-tests/many/0968", - "object-tests/many/0969", - "object-tests/many/0970", - "object-tests/many/0971", - "object-tests/many/0972", - "object-tests/many/0973", - "object-tests/many/0974", - "object-tests/many/0975", - "object-tests/many/0976", - "object-tests/many/0977", - "object-tests/many/0978", - "object-tests/many/0979", - "object-tests/many/0980", - "object-tests/many/0981", - "object-tests/many/0982", - "object-tests/many/0983", - "object-tests/many/0984", - "object-tests/many/0985", - "object-tests/many/0986", - "object-tests/many/0987", - "object-tests/many/0988", - "object-tests/many/0989", - "object-tests/many/0990", - "object-tests/many/0991", - "object-tests/many/0992", - "object-tests/many/0993", - "object-tests/many/0994", - "object-tests/many/0995", - "object-tests/many/0996", - "object-tests/many/0997", - "object-tests/many/0998", - "object-tests/many/0999", - "object-tests/many/1000" - ] + "value": 404 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "NoSuchUpload" } } ], "refusal": null }, { - "id": "operations/s3/list-start-after", + "id": "operations/s3/staged", "profile": "s3", "lane": "core", - "purpose": "Send start-after, and list only the keys after it", + "purpose": "staged", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "op": "list_page", - "prefix": "object-tests/board/", - "start_after": "object-tests/board/a.txt" + "key": "object-tests/multipart/object.bin", + "op": "s3.list_parts", + "upload_id": "fixture-upload+/276ca18046f9=" }, "exchanges": [ { @@ -103380,7 +141421,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/multipart/object.bin" } }, { @@ -103392,27 +141433,152 @@ } }, { - "at": "/query/list-type", + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "2" + "value": "fixture-upload+/276ca18046f9=" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "utf8", + "data": "\nfixtureobject-tests/multipart/object.binfixture-upload+/276ca18046f9=fixture-ownerfixture-ownerfixture-ownerSTANDARD021000false12024-01-01T00:00:00.000Z"fixture-6d60d5bbaa47"524288022024-01-01T00:00:00.000Z"fixture-32b70ae425ac"6" + }, + "framing": "chunked" + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/parts/0/number", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/parts/0/size", + "optional": false, + "rule": { + "is": "equal", + "value": 5242880 + } + }, + { + "at": "/value/parts/0/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-6d60d5bbaa47\"" + } + }, + { + "at": "/value/parts/1/number", + "optional": false, + "rule": { + "is": "equal", + "value": 2 + } + }, + { + "at": "/value/parts/1/size", + "optional": false, + "rule": { + "is": "equal", + "value": 6 + } + }, + { + "at": "/value/parts/1/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-32b70ae425ac\"" + } + }, + { + "at": "/value/parts", + "optional": false, + "rule": { + "is": "array_length", + "value": 2 + } + } + ], + "refusal": null + }, + { + "id": "operations/s3/start-bucket-missing", + "profile": "s3", + "lane": "core", + "purpose": "start bucket missing. A client reports it as container_not_found: the bucket or container is absent, not the object", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "key": "object.bin", + "op": "s3.create_multipart" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "POST" } }, { - "at": "/query/prefix", + "at": "/path", "optional": false, "rule": { "is": "equal", - "value": "object-tests/board/" + "value": "/fixture/object.bin" } }, { - "at": "/query/start-after", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "object-tests/board/a.txt" + "value": "" + } + }, + { + "at": "/query/uploads", + "optional": false, + "rule": { + "is": "equal", + "value": "" } } ], @@ -103421,9 +141587,216 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 404, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + } + }, + "body": { + "encoding": "utf8", + "data": "\nNoSuchBucketFixture error" + }, + "framing": "chunked" + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 404 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "NoSuchBucket" + } + }, + { + "at": "/kind", + "optional": false, + "rule": { + "is": "equal", + "value": "container_not_found" + } + } + ], + "refusal": null + }, + { + "id": "operations/s3/start-unauthenticated", + "profile": "s3", + "lane": "core", + "purpose": "Report the service authorization error for this operation; signature acceptance is tested separately.", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "key": "object-tests/multipart/object.bin", + "op": "s3.create_multipart" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "POST" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/multipart/object.bin" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/uploads", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 403, "headers": { "content-type": "application/xml", + "date": { + "from": "now" + } + }, + "body": { + "encoding": "utf8", + "data": "\nInvalidAccessKeyIdFixture error" + }, + "framing": "chunked" + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 403 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "InvalidAccessKeyId" + } + } + ], + "refusal": null + }, + { + "id": "operations/s3/start", + "profile": "s3", + "lane": "core", + "purpose": "start", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "key": "object-tests/multipart/object.bin", + "op": "s3.create_multipart" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "POST" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/multipart/object.bin" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/uploads", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { "date": { "from": "now" }, @@ -103431,11 +141804,53 @@ }, "body": { "encoding": "utf8", - "data": "\nfixtureobject-tests/board/21000falseobject-tests/board/a.txtobject-tests/board/nested/c.txt2024-01-01T00:00:00.000Z"fixture-626f61720001"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/board/z.txt2024-01-01T00:00:00.000Z"fixture-626f61720002"CRC64NVMEFULL_OBJECT2STANDARD" + "data": "fixtureobject-tests/multipart/object.binfixture-upload+/276ca18046f9=" }, "framing": "chunked" } - }, + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/upload_id", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-upload+/276ca18046f9=" + } + } + ], + "refusal": null + }, + { + "id": "operations/s3/start-content-properties", + "profile": "s3", + "lane": "core", + "purpose": "Start a multipart upload with content properties, which the completed object keeps", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "cache_control": "max-age=3600", + "content_disposition": "attachment; filename=\"report.txt\"", + "content_language": "nl-NL", + "content_type": "text/plain; charset=utf-8", + "key": "object-tests/multipart/object.bin", + "op": "s3.create_multipart" + }, + "exchanges": [ + { + "alternatives": [ { "request": [ { @@ -103443,7 +141858,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "POST" } }, { @@ -103451,7 +141866,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/multipart/object.bin" } }, { @@ -103463,35 +141878,43 @@ } }, { - "at": "/query/list-type", + "at": "/query/uploads", "optional": false, "rule": { "is": "equal", - "value": "2" + "value": "" } }, { - "at": "/query/prefix", + "at": "/headers/content-type", "optional": false, "rule": { "is": "equal", - "value": "object-tests/board/" + "value": "text/plain; charset=utf-8" } }, { - "at": "/query/start-after", + "at": "/headers/content-language", "optional": false, "rule": { "is": "equal", - "value": "object-tests/board/a.txt" + "value": "nl-NL" } }, { - "at": "/query/encoding-type", + "at": "/headers/content-disposition", "optional": false, "rule": { "is": "equal", - "value": "url" + "value": "attachment; filename=\"report.txt\"" + } + }, + { + "at": "/headers/cache-control", + "optional": false, + "rule": { + "is": "equal", + "value": "max-age=3600" } } ], @@ -103502,7 +141925,6 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", "date": { "from": "now" }, @@ -103510,7 +141932,7 @@ }, "body": { "encoding": "utf8", - "data": "\nfixtureobject-tests/board/21000urlfalseobject-tests/board/a.txtobject-tests/board/nested/c.txt2024-01-01T00:00:00.000Z"fixture-626f61720001"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/board/z.txt2024-01-01T00:00:00.000Z"fixture-626f61720002"CRC64NVMEFULL_OBJECT2STANDARD" + "data": "fixtureobject-tests/multipart/object.binfixture-upload+/276ca18046f9=" }, "framing": "chunked" } @@ -103528,99 +141950,627 @@ } }, { - "at": "/value/entries/0/key", + "at": "/value/upload_id", "optional": false, "rule": { "is": "equal", - "value": "object-tests/board/nested/c.txt" + "value": "fixture-upload+/276ca18046f9=" + } + } + ], + "refusal": null + }, + { + "id": "operations/s3/start-with-tags", + "profile": "s3", + "lane": "core", + "purpose": "Start a multipart upload with tags, sent URL-encoded in x-amz-tagging, which the completed object keeps", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "key": "object-tests/multipart/object.bin", + "op": "s3.create_multipart", + "tags": { + "project": "object-tests" + } + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "POST" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/multipart/object.bin" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/uploads", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/x-amz-tagging", + "optional": false, + "rule": { + "is": "equal", + "value": "project=object-tests" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "date": { + "from": "now" + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "utf8", + "data": "fixtureobject-tests/multipart/object.binfixture-upload+/276ca18046f9=" + }, + "framing": "chunked" + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" } }, { - "at": "/value/entries/0/size", + "at": "/value/upload_id", "optional": false, "rule": { "is": "equal", - "value": 1 + "value": "fixture-upload+/276ca18046f9=" + } + } + ], + "refusal": null + }, + { + "id": "operations/s3/start-with-storage-class", + "profile": "s3", + "lane": "core", + "purpose": "Start a multipart upload into a storage class, named in x-amz-storage-class", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "key": "object-tests/multipart/object.bin", + "op": "s3.create_multipart", + "storage_class": "STANDARD_IA" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "POST" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/multipart/object.bin" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/uploads", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/x-amz-storage-class", + "optional": false, + "rule": { + "is": "equal", + "value": "STANDARD_IA" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "date": { + "from": "now" + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "utf8", + "data": "fixtureobject-tests/multipart/object.binfixture-upload+/276ca18046f9=" + }, + "framing": "chunked" + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" } }, { - "at": "/value/entries/0/etag", + "at": "/value/upload_id", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-626f61720001\"" + "value": "fixture-upload+/276ca18046f9=" + } + } + ], + "refusal": null + }, + { + "id": "operations/azure/put-metadata-non-ascii-value", + "profile": "azure", + "lane": "core", + "purpose": "put metadata non ascii value", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "body_base64": "MQ==", + "key": "object-tests/metadata/non-ascii.txt", + "metadata": { + "value": "café" + }, + "op": "put" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/metadata/non-ascii.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MQ==" + } + }, + { + "at": "/headers/x-ms-meta-value", + "optional": false, + "rule": { + "is": "one_of", + "values": [ + "café", + "café" + ] + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "BlockBlob" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 400, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "InvalidMetadata" + }, + "body": { + "encoding": "utf8", + "data": "InvalidMetadataFixture error" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" } }, { - "at": "/value/entries/0/snapshot", - "optional": true, + "at": "/status", + "optional": false, "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "is": "equal", + "value": 400 } }, { - "at": "/value/entries/0/version", + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "InvalidMetadata" + } + } + ], + "refusal": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "refused" + } + }, + { + "at": "/kind", + "optional": false, + "rule": { + "is": "matches", + "pattern": ".+" + } + }, + { + "at": "/parameter", + "optional": false, + "rule": { + "is": "equal", + "value": "metadata" + } + }, + { + "at": "/status", "optional": true, "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "is": "equal", + "value": 400 } }, { - "at": "/value/entries/0/is_current_version", + "at": "/code", "optional": true, "rule": { - "is": "one_of", - "values": [ - null, - false - ] + "is": "equal", + "value": "InvalidMetadata" } + } + ] + }, + { + "id": "operations/azure-hns/put-metadata-non-ascii-value", + "profile": "azure-hns", + "lane": "core", + "purpose": "put metadata non ascii value", + "sources": [ + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" + ], + "call": { + "body_base64": "MQ==", + "key": "object-tests/metadata/non-ascii.txt", + "metadata": { + "value": "café" }, + "op": "put" + }, + "exchanges": [ { - "at": "/value/entries/1/key", + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/metadata/non-ascii.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MQ==" + } + }, + { + "at": "/headers/x-ms-meta-value", + "optional": false, + "rule": { + "is": "one_of", + "values": [ + "café", + "café" + ] + } + }, + { + "at": "/headers/x-ms-blob-type", + "optional": false, + "rule": { + "is": "equal", + "value": "BlockBlob" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 400, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "x-ms-error-code": "InvalidMetadata" + }, + "body": { + "encoding": "utf8", + "data": "InvalidMetadataFixture error" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "object-tests/board/z.txt" + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 400 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "InvalidMetadata" + } + } + ], + "refusal": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "refused" + } + }, + { + "at": "/kind", + "optional": false, + "rule": { + "is": "matches", + "pattern": ".+" + } + }, + { + "at": "/parameter", + "optional": false, + "rule": { + "is": "equal", + "value": "metadata" + } + }, + { + "at": "/status", + "optional": true, + "rule": { + "is": "equal", + "value": 400 + } + }, + { + "at": "/code", + "optional": true, + "rule": { + "is": "equal", + "value": "InvalidMetadata" } + } + ] + }, + { + "id": "operations/s3/put-metadata-non-ascii-value", + "profile": "s3", + "lane": "core", + "purpose": "A general-purpose bucket reads header bytes as ISO-8859-1 and decodes an RFC 2047 encoded word. Send é as the byte e9 or as an encoded word, or refuse the value if the client keeps metadata to ASCII; its UTF-8 bytes store café.", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "body_base64": "MQ==", + "key": "object-tests/metadata/non-ascii.txt", + "metadata": { + "value": "café" }, + "op": "put" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/metadata/non-ascii.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MQ==" + } + }, + { + "at": "/headers/x-amz-meta-value", + "optional": false, + "rule": { + "is": "matches", + "pattern": "café|=\\?(?i:utf-8)\\?(?:(?i:q)\\?caf=(?i:c3)=(?i:a9)|(?i:b)\\?Y2Fmw6k=)\\?=" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "date": { + "from": "now" + }, + "etag": "\"fixture-6c30b210f0a8\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ { - "at": "/value/entries/1/size", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": 2 + "value": "ok" } }, { - "at": "/value/entries/1/etag", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-626f61720002\"" - } - }, - { - "at": "/value/entries/1/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "value": "\"fixture-6c30b210f0a8\"" } }, { - "at": "/value/entries/1/version", + "at": "/value/version", "optional": true, "rule": { "is": "one_of", @@ -103629,58 +142579,50 @@ "" ] } - }, - { - "at": "/value/entries/1/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, + } + ], + "refusal": [ { - "at": "/value/entries", + "at": "/outcome", "optional": false, "rule": { - "is": "array_length", - "value": 2 + "is": "equal", + "value": "refused" } }, { - "at": "/value/prefixes", + "at": "/kind", "optional": false, "rule": { - "is": "array_length", - "value": 0 + "is": "matches", + "pattern": ".+" } }, { - "at": "/value/continuation_token", + "at": "/parameter", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "metadata" } } - ], - "refusal": null + ] }, { - "id": "operations/s3/list-start-after-delimited", + "id": "operations/s3/put-metadata-value-edge-whitespace", "profile": "s3", "lane": "core", - "purpose": "Send a start-after that names no key; it skips the keys and common prefixes up to it", + "purpose": "HTTP drops spaces and tabs at either end of a header value, so S3 would store a. An RFC 2047 encoded word stores them, but a read returns the value unencoded and loses them again. Send an encoded word, or refuse the value.", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "delimiter": "/", - "op": "list_page", - "prefix": "object-tests/board/", - "start_after": "object-tests/board/b" + "body_base64": "MQ==", + "key": "object-tests/metadata/value-edge-whitespace.txt", + "metadata": { + "value": "\ta " + }, + "op": "put" }, "exchanges": [ { @@ -103692,7 +142634,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -103700,7 +142642,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/metadata/value-edge-whitespace.txt" } }, { @@ -103708,39 +142650,15 @@ "optional": false, "rule": { "is": "equal", - "value": "" - } - }, - { - "at": "/query/list-type", - "optional": false, - "rule": { - "is": "equal", - "value": "2" - } - }, - { - "at": "/query/prefix", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/board/" - } - }, - { - "at": "/query/delimiter", - "optional": false, - "rule": { - "is": "equal", - "value": "/" + "value": "MQ==" } }, { - "at": "/query/start-after", + "at": "/headers/x-amz-meta-value", "optional": false, "rule": { - "is": "equal", - "value": "object-tests/board/b" + "is": "matches", + "pattern": "=\\?(?i:utf-8)\\?(?:(?i:q)\\?=(?i:09)a(?:_|=(?i:20))|(?i:b)\\?CWEg)\\?=" } } ], @@ -103751,19 +142669,96 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", "date": { "from": "now" }, + "etag": "\"fixture-6c30b210f0a8\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nfixtureobject-tests/board/21000/falseobject-tests/board/bobject-tests/board/z.txt2024-01-01T00:00:00.000Z"fixture-626f61720002"CRC64NVMEFULL_OBJECT2STANDARDobject-tests/board/nested/" - }, - "framing": "chunked" + "encoding": "base64", + "data": "" + } } - }, + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-6c30b210f0a8\"" + } + }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + } + ], + "refusal": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "refused" + } + }, + { + "at": "/kind", + "optional": false, + "rule": { + "is": "matches", + "pattern": ".+" + } + }, + { + "at": "/parameter", + "optional": false, + "rule": { + "is": "equal", + "value": "metadata" + } + } + ] + }, + { + "id": "operations/s3/put-metadata-value-encoded-word-text", + "profile": "s3", + "lane": "core", + "purpose": "A general-purpose bucket reads each space-separated token that starts with =? and ends with ?= as an RFC 2047 encoded word: it decodes it, or answers 400 or 500 when it cannot. So =?UTF-8?Q?caf=C3=A9?= sent as it is stores café. Wrapped in an encoded word of its own it stores the text, but a read returns it unencoded and decodes it again. Wrap it, or refuse it.", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "body_base64": "MQ==", + "key": "object-tests/metadata/value-encoded-word-text.txt", + "metadata": { + "value": "=?UTF-8?Q?caf=C3=A9?=" + }, + "op": "put" + }, + "exchanges": [ + { + "alternatives": [ { "request": [ { @@ -103771,7 +142766,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -103779,7 +142774,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/metadata/value-encoded-word-text.txt" } }, { @@ -103787,47 +142782,15 @@ "optional": false, "rule": { "is": "equal", - "value": "" - } - }, - { - "at": "/query/list-type", - "optional": false, - "rule": { - "is": "equal", - "value": "2" - } - }, - { - "at": "/query/prefix", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/board/" - } - }, - { - "at": "/query/delimiter", - "optional": false, - "rule": { - "is": "equal", - "value": "/" - } - }, - { - "at": "/query/start-after", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/board/b" + "value": "MQ==" } }, { - "at": "/query/encoding-type", + "at": "/headers/x-amz-meta-value", "optional": false, "rule": { - "is": "equal", - "value": "url" + "is": "matches", + "pattern": "=\\?(?i:utf-8)\\?(?:(?i:q)\\?=(?i:3d)=(?i:3f)UTF-8=(?i:3f)Q=(?i:3f)caf=(?i:3d)C3=(?i:3d)A9=(?i:3f)=(?i:3d)|(?i:b)\\?PT9VVEYtOD9RP2NhZj1DMz1BOT89)\\?=" } } ], @@ -103838,17 +142801,16 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", "date": { "from": "now" }, + "etag": "\"fixture-6c30b210f0a8\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nfixtureobject-tests/board/21000/urlfalseobject-tests/board/bobject-tests/board/z.txt2024-01-01T00:00:00.000Z"fixture-626f61720002"CRC64NVMEFULL_OBJECT2STANDARDobject-tests/board/nested/" - }, - "framing": "chunked" + "encoding": "base64", + "data": "" + } } } ] @@ -103864,42 +142826,15 @@ } }, { - "at": "/value/entries/0/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/board/z.txt" - } - }, - { - "at": "/value/entries/0/size", - "optional": false, - "rule": { - "is": "equal", - "value": 2 - } - }, - { - "at": "/value/entries/0/etag", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-626f61720002\"" - } - }, - { - "at": "/value/entries/0/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "value": "\"fixture-6c30b210f0a8\"" } }, { - "at": "/value/entries/0/version", + "at": "/value/version", "optional": true, "rule": { "is": "one_of", @@ -103908,66 +142843,50 @@ "" ] } - }, - { - "at": "/value/entries/0/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries", - "optional": false, - "rule": { - "is": "array_length", - "value": 1 - } - }, + } + ], + "refusal": [ { - "at": "/value/prefixes/0", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "object-tests/board/nested/" + "value": "refused" } }, { - "at": "/value/prefixes", + "at": "/kind", "optional": false, "rule": { - "is": "array_length", - "value": 1 + "is": "matches", + "pattern": ".+" } }, { - "at": "/value/continuation_token", + "at": "/parameter", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "metadata" } } - ], - "refusal": null + ] }, { - "id": "operations/s3/list-truncated-without-token", + "id": "operations/s3/put-metadata-value-not-an-encoded-word", "profile": "s3", "lane": "core", - "purpose": "Report an error when a truncated page carries no continuation token; do not stop early or list from the start again", + "purpose": "A general-purpose bucket reads each space-separated token that starts with =? and ends with ?= as an RFC 2047 encoded word: it decodes it, or answers 400 or 500 when it cannot. Neither a=?b?=c nor x=?UTF-8?Q?caf=C3=A9?=y is such a token, so S3 stores this value as it is sent, and a read returns it. Send it as it is, or wrapped in an encoded word; do not refuse it.", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], - "origin": "constructed", "call": { - "op": "list", - "page_size": 2, - "prefix": "object-tests/board/" + "body_base64": "MQ==", + "key": "object-tests/metadata/value-not-an-encoded-word.txt", + "metadata": { + "value": "a=?b?=c x=?UTF-8?Q?caf=C3=A9?=y" + }, + "op": "put" }, "exchanges": [ { @@ -103979,7 +142898,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -103987,7 +142906,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/metadata/value-not-an-encoded-word.txt" } }, { @@ -103995,31 +142914,15 @@ "optional": false, "rule": { "is": "equal", - "value": "" - } - }, - { - "at": "/query/list-type", - "optional": false, - "rule": { - "is": "equal", - "value": "2" - } - }, - { - "at": "/query/prefix", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/board/" + "value": "MQ==" } }, { - "at": "/query/max-keys", + "at": "/headers/x-amz-meta-value", "optional": false, "rule": { - "is": "equal", - "value": "2" + "is": "matches", + "pattern": "a=\\?b\\?=c x=\\?UTF-8\\?Q\\?caf=C3=A9\\?=y|=\\?(?i:utf-8)\\?(?:(?i:q)\\?a=(?i:3d)=(?i:3f)b=(?i:3f)=(?i:3d)c(?:_|=(?i:20))x=(?i:3d)=(?i:3f)UTF-8=(?i:3f)Q=(?i:3f)caf=(?i:3d)C3=(?i:3d)A9=(?i:3f)=(?i:3d)y|(?i:b)\\?YT0/Yj89YyB4PT9VVEYtOD9RP2NhZj1DMz1BOT89eQ==)\\?=" } } ], @@ -104030,19 +142933,71 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", "date": { "from": "now" }, + "etag": "\"fixture-6c30b210f0a8\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nfixtureobject-tests/board/22trueobject-tests/board/a.txt2024-01-01T00:00:00.000Z"fixture-626f61720000"CRC64NVMEFULL_OBJECT8STANDARDobject-tests/board/nested/c.txt2024-01-01T00:00:00.000Z"fixture-626f61720001"CRC64NVMEFULL_OBJECT1STANDARD" - }, - "framing": "chunked" + "encoding": "base64", + "data": "" + } } - }, + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-6c30b210f0a8\"" + } + }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + } + ], + "refusal": null + }, + { + "id": "operations/s3/put-metadata-value-control-characters", + "profile": "s3", + "lane": "core", + "purpose": "A control character other than a tab is no valid HTTP field value. Send the value as an RFC 2047 encoded word, which S3 stores and a read decodes again, or refuse it.", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "body_base64": "MQ==", + "key": "object-tests/metadata/value-control-characters.txt", + "metadata": { + "value": "a\u0000bc" + }, + "op": "put" + }, + "exchanges": [ + { + "alternatives": [ { "request": [ { @@ -104050,7 +143005,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -104058,7 +143013,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/metadata/value-control-characters.txt" } }, { @@ -104066,39 +143021,15 @@ "optional": false, "rule": { "is": "equal", - "value": "" - } - }, - { - "at": "/query/list-type", - "optional": false, - "rule": { - "is": "equal", - "value": "2" - } - }, - { - "at": "/query/prefix", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/board/" - } - }, - { - "at": "/query/max-keys", - "optional": false, - "rule": { - "is": "equal", - "value": "2" + "value": "MQ==" } }, { - "at": "/query/encoding-type", + "at": "/headers/x-amz-meta-value", "optional": false, "rule": { - "is": "equal", - "value": "url" + "is": "matches", + "pattern": "=\\?(?i:utf-8)\\?(?:(?i:q)\\?a=(?i:00)b=(?i:7f)c|(?i:b)\\?YQBif2M=)\\?=" } } ], @@ -104109,17 +143040,16 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", "date": { "from": "now" }, + "etag": "\"fixture-6c30b210f0a8\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nfixtureobject-tests/board/22urltrueobject-tests/board/a.txt2024-01-01T00:00:00.000Z"fixture-626f61720000"CRC64NVMEFULL_OBJECT8STANDARDobject-tests/board/nested/c.txt2024-01-01T00:00:00.000Z"fixture-626f61720001"CRC64NVMEFULL_OBJECT1STANDARD" - }, - "framing": "chunked" + "encoding": "base64", + "data": "" + } } } ] @@ -104131,25 +143061,71 @@ "optional": false, "rule": { "is": "equal", - "value": "error" + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-6c30b210f0a8\"" + } + }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] } } ], - "refusal": null + "refusal": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "refused" + } + }, + { + "at": "/kind", + "optional": false, + "rule": { + "is": "matches", + "pattern": ".+" + } + }, + { + "at": "/parameter", + "optional": false, + "rule": { + "is": "equal", + "value": "metadata" + } + } + ] }, { - "id": "operations/s3/list-encoding-ignored", + "id": "operations/s3/put-metadata-value-line-break", "profile": "s3", "lane": "core", - "purpose": "Read the keys as sent when a service ignores encoding-type=url and the page has no EncodingType; a % that begins no escape is text, as in URL percent-decoding", + "purpose": "CR and LF are no valid HTTP field value, and a general-purpose bucket stores each as a space even inside an RFC 2047 encoded word. No request stores the value, so refuse it.", "sources": [ - "https://github.com/rclone/rclone/tree/master/backend/s3/provider", - "https://url.spec.whatwg.org/#percent-decode" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], - "origin": "constructed", "call": { - "op": "list_page", - "prefix": "object-tests/percent/" + "body_base64": "MQ==", + "key": "object-tests/metadata/value-line-break.txt", + "metadata": { + "value": "a\r\nb" + }, + "op": "put" }, "exchanges": [ { @@ -104161,7 +143137,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -104169,7 +143145,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/metadata/value-line-break.txt" } }, { @@ -104177,23 +143153,15 @@ "optional": false, "rule": { "is": "equal", - "value": "" - } - }, - { - "at": "/query/list-type", - "optional": false, - "rule": { - "is": "equal", - "value": "2" + "value": "MQ==" } }, { - "at": "/query/prefix", + "at": "/headers/x-amz-meta-value", "optional": false, "rule": { - "is": "equal", - "value": "object-tests/percent/" + "is": "matches", + "pattern": "=\\?(?i:utf-8)\\?(?:(?i:q)\\?a=(?i:0d)=(?i:0a)b|(?i:b)\\?YQ0KYg==)\\?=" } } ], @@ -104204,19 +143172,77 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", "date": { "from": "now" }, + "etag": "\"fixture-6c30b210f0a8\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nfixtureobject-tests/percent/31000falseobject-tests/percent/%zz.txt2024-01-01T00:00:00.000Z"fixture-706572000000"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/percent/100%-off.txt2024-01-01T00:00:00.000Z"fixture-706572000001"CRC64NVMEFULL_OBJECT2STANDARDobject-tests/percent/50%2024-01-01T00:00:00.000Z"fixture-706572000002"CRC64NVMEFULL_OBJECT3STANDARD" - }, - "framing": "chunked" + "encoding": "base64", + "data": "" + } } - }, + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "refused" + } + } + ], + "refusal": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "refused" + } + }, + { + "at": "/kind", + "optional": false, + "rule": { + "is": "matches", + "pattern": ".+" + } + }, + { + "at": "/parameter", + "optional": false, + "rule": { + "is": "equal", + "value": "metadata" + } + } + ] + }, + { + "id": "operations/s3/put-metadata-value-with-tab", + "profile": "s3", + "lane": "core", + "purpose": "S3 stores a tab inside a value as it is sent. Send it raw, or inside an RFC 2047 encoded word.", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "body_base64": "MQ==", + "key": "object-tests/metadata/value-with-tab.txt", + "metadata": { + "value": "a\tb" + }, + "op": "put" + }, + "exchanges": [ + { + "alternatives": [ { "request": [ { @@ -104224,7 +143250,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -104232,7 +143258,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/fixture/object-tests/metadata/value-with-tab.txt" } }, { @@ -104240,31 +143266,15 @@ "optional": false, "rule": { "is": "equal", - "value": "" - } - }, - { - "at": "/query/list-type", - "optional": false, - "rule": { - "is": "equal", - "value": "2" - } - }, - { - "at": "/query/prefix", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/percent/" + "value": "MQ==" } }, { - "at": "/query/encoding-type", + "at": "/headers/x-amz-meta-value", "optional": false, "rule": { - "is": "equal", - "value": "url" + "is": "matches", + "pattern": "a\tb|=\\?(?i:utf-8)\\?(?:(?i:q)\\?a=(?i:09)b|(?i:b)\\?YQli)\\?=" } } ], @@ -104275,17 +143285,16 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", "date": { "from": "now" }, + "etag": "\"fixture-6c30b210f0a8\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nfixtureobject-tests/percent/31000falseobject-tests/percent/%zz.txt2024-01-01T00:00:00.000Z"fixture-706572000000"CRC64NVMEFULL_OBJECT1STANDARDobject-tests/percent/100%-off.txt2024-01-01T00:00:00.000Z"fixture-706572000001"CRC64NVMEFULL_OBJECT2STANDARDobject-tests/percent/50%2024-01-01T00:00:00.000Z"fixture-706572000002"CRC64NVMEFULL_OBJECT3STANDARD" - }, - "framing": "chunked" + "encoding": "base64", + "data": "" + } } } ] @@ -104301,42 +143310,15 @@ } }, { - "at": "/value/entries/0/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/percent/%zz.txt" - } - }, - { - "at": "/value/entries/0/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/0/etag", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-706572000000\"" - } - }, - { - "at": "/value/entries/0/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "value": "\"fixture-6c30b210f0a8\"" } }, { - "at": "/value/entries/0/version", + "at": "/value/version", "optional": true, "rule": { "is": "one_of", @@ -104345,55 +143327,105 @@ "" ] } + } + ], + "refusal": null + }, + { + "id": "operations/s3/put-metadata-outside-latin-1", + "profile": "s3", + "lane": "core", + "purpose": "No header byte carries 雪, so send it as an RFC 2047 encoded word, or refuse the value if the client keeps metadata to ASCII. A general-purpose bucket stores its UTF-8 bytes as three ISO-8859-1 characters.", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "body_base64": "MQ==", + "key": "object-tests/metadata/outside-latin-1.txt", + "metadata": { + "value": "雪" }, + "op": "put" + }, + "exchanges": [ { - "at": "/value/entries/0/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/1/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/percent/100%-off.txt" - } - }, + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/fixture/object-tests/metadata/outside-latin-1.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MQ==" + } + }, + { + "at": "/headers/x-amz-meta-value", + "optional": false, + "rule": { + "is": "matches", + "pattern": "=\\?(?i:utf-8)\\?(?:(?i:q)\\?=(?i:e9)=(?i:9b)=(?i:aa)|(?i:b)\\?6Zuq)\\?=" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "date": { + "from": "now" + }, + "etag": "\"fixture-6c30b210f0a8\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], + "expect": [ { - "at": "/value/entries/1/size", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": 2 + "value": "ok" } }, { - "at": "/value/entries/1/etag", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-706572000001\"" - } - }, - { - "at": "/value/entries/1/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "value": "\"fixture-6c30b210f0a8\"" } }, { - "at": "/value/entries/1/version", + "at": "/value/version", "optional": true, "rule": { "is": "one_of", @@ -104402,114 +143434,47 @@ "" ] } - }, - { - "at": "/value/entries/1/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/2/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/percent/50%" - } - }, - { - "at": "/value/entries/2/size", - "optional": false, - "rule": { - "is": "equal", - "value": 3 - } - }, + } + ], + "refusal": [ { - "at": "/value/entries/2/etag", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-706572000002\"" - } - }, - { - "at": "/value/entries/2/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/2/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/2/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries", - "optional": false, - "rule": { - "is": "array_length", - "value": 3 + "value": "refused" } }, { - "at": "/value/prefixes", + "at": "/kind", "optional": false, "rule": { - "is": "array_length", - "value": 0 + "is": "matches", + "pattern": ".+" } }, { - "at": "/value/continuation_token", + "at": "/parameter", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "metadata" } } - ], - "refusal": null + ] }, { - "id": "operations/s3/put-bucket-missing", - "profile": "s3", + "id": "operations/s3-express/abort-after-commit", + "profile": "s3-express", "lane": "core", - "purpose": "put bucket missing", + "purpose": "abort after commit", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "body_base64": "bm90aGluZyBpcyBzdG9yZWQ=", - "key": "object.txt", - "op": "put" + "key": "object-tests/multipart/object.bin", + "op": "s3.abort_multipart", + "upload_id": "fixture-upload+/c60fb1e2e00d=" }, "exchanges": [ { @@ -104521,7 +143486,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -104529,15 +143494,38 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object.txt" + "value": "/" } }, { - "at": "/body_base64", + "at": "/query/session", "optional": false, "rule": { "is": "equal", - "value": "bm90aGluZyBpcyBzdG9yZWQ=" + "value": "" + } + }, + { + "at": "/headers/host", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "absent" } } ], @@ -104546,91 +143534,80 @@ ], "allow_query": [], "response": { - "status": 404, + "status": 200, "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - } + "content-type": "application/xml" }, "body": { "encoding": "utf8", - "data": "\nNoSuchBucketFixture error" + "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" }, - "framing": "chunked" + "body_time": { + "text": "SESSION_EXPIRATION", + "offset_seconds": 300 + } } } ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 404 - } }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "equal", - "value": "NoSuchBucket" - } - } - ], - "refusal": null - }, - { - "id": "operations/s3/put-created-empty", - "profile": "s3", - "lane": "core", - "purpose": "put created empty", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "body_base64": "", - "key": "object-tests/write/empty.bin", - "op": "put" - }, - "exchanges": [ { "alternatives": [ { "request": [ { - "at": "/method", + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "DELETE" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/object-tests/multipart/object.bin" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "fixture-upload+/c60fb1e2e00d=" } }, { - "at": "/path", + "at": "/headers/host", "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/write/empty.bin" + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" } }, { - "at": "/body_base64", + "at": "/headers/x-amz-s3session-token", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "fixture-session-token" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } } ], @@ -104639,12 +143616,11 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 204, "headers": { "date": { "from": "now" }, - "etag": "\"fixture-7d64e1430626\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { @@ -104664,41 +143640,22 @@ "is": "equal", "value": "ok" } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-7d64e1430626\"" - } - }, - { - "at": "/value/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } } ], "refusal": null }, { - "id": "operations/s3/put-created", - "profile": "s3", + "id": "operations/s3-express/abort-unknown-upload", + "profile": "s3-express", "lane": "core", - "purpose": "put created", + "purpose": "abort unknown upload", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "body_base64": "MDEyMzQ1Njc4OQ==", - "key": "object-tests/write/object.txt", - "op": "put" + "key": "object-tests/multipart/object.bin", + "op": "s3.abort_multipart", + "upload_id": "fixture-upload+/4d0d5ccc4993=" }, "exchanges": [ { @@ -104710,7 +143667,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -104718,15 +143675,38 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/write/object.txt" + "value": "/" } }, { - "at": "/body_base64", + "at": "/query/session", "optional": false, "rule": { "is": "equal", - "value": "MDEyMzQ1Njc4OQ==" + "value": "" + } + }, + { + "at": "/headers/host", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "absent" } } ], @@ -104737,66 +143717,20 @@ "response": { "status": 200, "headers": { - "date": { - "from": "now" - }, - "etag": "\"fixture-fbe0ab688a03\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + "content-type": "application/xml" }, "body": { - "encoding": "base64", - "data": "" + "encoding": "utf8", + "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" + }, + "body_time": { + "text": "SESSION_EXPIRATION", + "offset_seconds": 300 } } } ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-fbe0ab688a03\"" - } }, - { - "at": "/value/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - } - ], - "refusal": null - }, - { - "id": "operations/s3/put-created-key-question", - "profile": "s3", - "lane": "core", - "purpose": "put created, with the key \"question?mark.txt\"", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "body_base64": "MDEyMzQ1Njc4OQ==", - "key": "object-tests/keys/question?mark.txt", - "op": "put" - }, - "exchanges": [ { "alternatives": [ { @@ -104806,7 +143740,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "DELETE" } }, { @@ -104814,7 +143748,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/question?mark.txt" + "value": "/object-tests/multipart/object.bin" } }, { @@ -104822,7 +143756,39 @@ "optional": false, "rule": { "is": "equal", - "value": "MDEyMzQ1Njc4OQ==" + "value": "" + } + }, + { + "at": "/query/uploadId", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-upload+/4d0d5ccc4993=" + } + }, + { + "at": "/headers/host", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-session-token" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } } ], @@ -104831,18 +143797,18 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 404, "headers": { + "content-type": "application/xml", "date": { "from": "now" - }, - "etag": "\"fixture-fbe0ab688a03\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { - "encoding": "base64", - "data": "" - } + "encoding": "utf8", + "data": "\nNoSuchUploadFixture error" + }, + "framing": "chunked" } } ] @@ -104854,43 +143820,40 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "error" } }, { - "at": "/value/etag", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-fbe0ab688a03\"" + "value": 404 } }, { - "at": "/value/version", - "optional": true, + "at": "/code", + "optional": false, "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "is": "equal", + "value": "NoSuchUpload" } } ], "refusal": null }, { - "id": "operations/s3/put-created-key-hash", - "profile": "s3", + "id": "operations/s3-express/abort", + "profile": "s3-express", "lane": "core", - "purpose": "put created, with the key \"hash#tag.txt\"", + "purpose": "abort", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "body_base64": "MDEyMzQ1Njc4OQ==", - "key": "object-tests/keys/hash#tag.txt", - "op": "put" + "key": "object-tests/multipart/aborted.bin", + "op": "s3.abort_multipart", + "upload_id": "fixture-upload+/4bef2cd6d025=" }, "exchanges": [ { @@ -104902,7 +143865,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -104910,15 +143873,38 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/hash#tag.txt" + "value": "/" } }, { - "at": "/body_base64", + "at": "/query/session", "optional": false, "rule": { "is": "equal", - "value": "MDEyMzQ1Njc4OQ==" + "value": "" + } + }, + { + "at": "/headers/host", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "absent" } } ], @@ -104929,66 +143915,20 @@ "response": { "status": 200, "headers": { - "date": { - "from": "now" - }, - "etag": "\"fixture-fbe0ab688a03\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + "content-type": "application/xml" }, "body": { - "encoding": "base64", - "data": "" + "encoding": "utf8", + "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" + }, + "body_time": { + "text": "SESSION_EXPIRATION", + "offset_seconds": 300 } } } ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-fbe0ab688a03\"" - } }, - { - "at": "/value/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - } - ], - "refusal": null - }, - { - "id": "operations/s3/put-created-key-percent", - "profile": "s3", - "lane": "core", - "purpose": "put created, with the key \"percent%20.txt\"", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "body_base64": "MDEyMzQ1Njc4OQ==", - "key": "object-tests/keys/percent%20.txt", - "op": "put" - }, - "exchanges": [ { "alternatives": [ { @@ -104998,7 +143938,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "DELETE" } }, { @@ -105006,7 +143946,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/percent%20.txt" + "value": "/object-tests/multipart/aborted.bin" } }, { @@ -105014,7 +143954,39 @@ "optional": false, "rule": { "is": "equal", - "value": "MDEyMzQ1Njc4OQ==" + "value": "" + } + }, + { + "at": "/query/uploadId", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-upload+/4bef2cd6d025=" + } + }, + { + "at": "/headers/host", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-session-token" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } } ], @@ -105023,12 +143995,11 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 204, "headers": { "date": { "from": "now" }, - "etag": "\"fixture-fbe0ab688a03\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { @@ -105048,41 +144019,28 @@ "is": "equal", "value": "ok" } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-fbe0ab688a03\"" - } - }, - { - "at": "/value/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } } ], "refusal": null }, { - "id": "operations/s3/put-created-key-plus", - "profile": "s3", + "id": "operations/s3-express/commit-after-abort", + "profile": "s3-express", "lane": "core", - "purpose": "put created, with the key \"plus+plus.txt\"", + "purpose": "commit after abort", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "body_base64": "MDEyMzQ1Njc4OQ==", - "key": "object-tests/keys/plus+plus.txt", - "op": "put" + "key": "object-tests/multipart/aborted.bin", + "op": "s3.complete_multipart", + "parts": [ + { + "etag": "\"fixture-db71b2c0257c\"", + "number": 1 + } + ], + "upload_id": "fixture-upload+/4bef2cd6d025=" }, "exchanges": [ { @@ -105094,7 +144052,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -105102,15 +144060,38 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/plus+plus.txt" + "value": "/" } }, { - "at": "/body_base64", + "at": "/query/session", "optional": false, "rule": { "is": "equal", - "value": "MDEyMzQ1Njc4OQ==" + "value": "" + } + }, + { + "at": "/headers/host", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "absent" } } ], @@ -105121,66 +144102,20 @@ "response": { "status": 200, "headers": { - "date": { - "from": "now" - }, - "etag": "\"fixture-fbe0ab688a03\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + "content-type": "application/xml" }, "body": { - "encoding": "base64", - "data": "" + "encoding": "utf8", + "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" + }, + "body_time": { + "text": "SESSION_EXPIRATION", + "offset_seconds": 300 } } } ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-fbe0ab688a03\"" - } }, - { - "at": "/value/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - } - ], - "refusal": null - }, - { - "id": "operations/s3/put-created-key-space", - "profile": "s3", - "lane": "core", - "purpose": "put created, with the key \"space name.txt\"", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "body_base64": "MDEyMzQ1Njc4OQ==", - "key": "object-tests/keys/space name.txt", - "op": "put" - }, - "exchanges": [ { "alternatives": [ { @@ -105190,7 +144125,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "POST" } }, { @@ -105198,15 +144133,47 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/space name.txt" + "value": "/object-tests/multipart/aborted.bin" } }, { - "at": "/body_base64", + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "1\"fixture-db71b2c0257c\"" + } + }, + { + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "MDEyMzQ1Njc4OQ==" + "value": "fixture-upload+/4bef2cd6d025=" + } + }, + { + "at": "/headers/host", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-session-token" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } } ], @@ -105220,65 +144187,15 @@ "date": { "from": "now" }, - "etag": "\"fixture-fbe0ab688a03\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "" - } + "encoding": "utf8", + "data": "NoSuchUploadFixture error" + }, + "framing": "chunked" } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-fbe0ab688a03\"" - } - }, - { - "at": "/value/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - } - ], - "refusal": null - }, - { - "id": "operations/s3/put-created-key-non-ascii", - "profile": "s3", - "lane": "core", - "purpose": "put created, with the key \"café/雪.txt\"", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "body_base64": "MDEyMzQ1Njc4OQ==", - "key": "object-tests/keys/café/雪.txt", - "op": "put" - }, - "exchanges": [ - { - "alternatives": [ + }, { "request": [ { @@ -105286,7 +144203,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "POST" } }, { @@ -105294,15 +144211,47 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/café/雪.txt" + "value": "/object-tests/multipart/aborted.bin" } }, { - "at": "/body_base64", + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "\"fixture-db71b2c0257c\"1" + } + }, + { + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "MDEyMzQ1Njc4OQ==" + "value": "fixture-upload+/4bef2cd6d025=" + } + }, + { + "at": "/headers/host", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-session-token" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } } ], @@ -105316,13 +144265,13 @@ "date": { "from": "now" }, - "etag": "\"fixture-fbe0ab688a03\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "" - } + "encoding": "utf8", + "data": "NoSuchUploadFixture error" + }, + "framing": "chunked" } } ] @@ -105334,43 +144283,47 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "error" } }, { - "at": "/value/etag", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-fbe0ab688a03\"" + "value": 200 } }, { - "at": "/value/version", - "optional": true, + "at": "/code", + "optional": false, "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "is": "equal", + "value": "NoSuchUpload" } } ], "refusal": null }, { - "id": "operations/s3/put-created-key-double-slash", - "profile": "s3", + "id": "operations/s3-express/commit-lost-the-race-to-create", + "profile": "s3-express", "lane": "core", - "purpose": "put created, with the key \"double//slash.txt\"", + "purpose": "commit lost the race to create", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "body_base64": "MDEyMzQ1Njc4OQ==", - "key": "object-tests/keys/double//slash.txt", - "op": "put" + "if_none_match": "*", + "key": "object-tests/multipart/guarded.bin", + "op": "s3.complete_multipart", + "parts": [ + { + "etag": "\"fixture-201c9ed6f636\"", + "number": 1 + } + ], + "upload_id": "fixture-upload+/c7be505aec65=" }, "exchanges": [ { @@ -105382,7 +144335,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -105390,15 +144343,38 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/double//slash.txt" + "value": "/" } }, { - "at": "/body_base64", + "at": "/query/session", "optional": false, "rule": { "is": "equal", - "value": "MDEyMzQ1Njc4OQ==" + "value": "" + } + }, + { + "at": "/headers/host", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "absent" } } ], @@ -105409,66 +144385,20 @@ "response": { "status": 200, "headers": { - "date": { - "from": "now" - }, - "etag": "\"fixture-fbe0ab688a03\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + "content-type": "application/xml" }, "body": { - "encoding": "base64", - "data": "" + "encoding": "utf8", + "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" + }, + "body_time": { + "text": "SESSION_EXPIRATION", + "offset_seconds": 300 } } } ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-fbe0ab688a03\"" - } }, - { - "at": "/value/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - } - ], - "refusal": null - }, - { - "id": "operations/s3/put-created-key-trailing-slash", - "profile": "s3", - "lane": "core", - "purpose": "put created, with the key \"trailing-slash/\"", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "body_base64": "MDEyMzQ1Njc4OQ==", - "key": "object-tests/keys/trailing-slash/", - "op": "put" - }, - "exchanges": [ { "alternatives": [ { @@ -105478,7 +144408,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "POST" } }, { @@ -105486,15 +144416,55 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/trailing-slash/" + "value": "/object-tests/multipart/guarded.bin" } }, { - "at": "/body_base64", + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "1\"fixture-201c9ed6f636\"" + } + }, + { + "at": "/headers/if-none-match", "optional": false, "rule": { "is": "equal", - "value": "MDEyMzQ1Njc4OQ==" + "value": "*" + } + }, + { + "at": "/query/uploadId", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-upload+/c7be505aec65=" + } + }, + { + "at": "/headers/host", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-session-token" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } } ], @@ -105508,65 +144478,15 @@ "date": { "from": "now" }, - "etag": "\"fixture-fbe0ab688a03\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "" - } + "encoding": "utf8", + "data": "PreconditionFailedFixture error" + }, + "framing": "chunked" } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-fbe0ab688a03\"" - } - }, - { - "at": "/value/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - } - ], - "refusal": null - }, - { - "id": "operations/s3/create-bucket-owned", - "profile": "s3", - "lane": "core", - "purpose": "Refuse to create a bucket that the account already owns", - "sources": [ - "https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html" - ], - "call": { - "bucket": "fixture", - "location": "eu-central-1", - "op": "s3.create_bucket" - }, - "exchanges": [ - { - "alternatives": [ + }, { "request": [ { @@ -105574,7 +144494,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "POST" } }, { @@ -105582,7 +144502,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture" + "value": "/object-tests/multipart/guarded.bin" } }, { @@ -105590,7 +144510,47 @@ "optional": false, "rule": { "is": "xml", - "value": "eu-central-1" + "value": "\"fixture-201c9ed6f636\"1" + } + }, + { + "at": "/headers/if-none-match", + "optional": false, + "rule": { + "is": "equal", + "value": "*" + } + }, + { + "at": "/query/uploadId", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-upload+/c7be505aec65=" + } + }, + { + "at": "/headers/host", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-session-token" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } } ], @@ -105599,16 +144559,16 @@ ], "allow_query": [], "response": { - "status": 409, + "status": 200, "headers": { - "content-type": "application/xml", "date": { "from": "now" - } + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "utf8", - "data": "\nBucketAlreadyOwnedByYouFixture error" + "data": "PreconditionFailedFixture error" }, "framing": "chunked" } @@ -105630,7 +144590,7 @@ "optional": false, "rule": { "is": "equal", - "value": 409 + "value": 200 } }, { @@ -105638,24 +144598,25 @@ "optional": false, "rule": { "is": "equal", - "value": "BucketAlreadyOwnedByYou" + "value": "PreconditionFailed" } } ], "refusal": null }, { - "id": "operations/s3/create-bucket", - "profile": "s3", + "id": "operations/s3-express/commit-nothing", + "profile": "s3-express", "lane": "core", - "purpose": "Create a bucket in the region of the endpoint", + "purpose": "commit nothing", "sources": [ - "https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "bucket": "object-tests-created", - "location": "eu-central-1", - "op": "s3.create_bucket" + "key": "object-tests/multipart/guarded.bin", + "op": "s3.complete_multipart", + "parts": [], + "upload_id": "fixture-upload+/c7be505aec65=" }, "exchanges": [ { @@ -105663,27 +144624,132 @@ { "request": [ { - "at": "/method", + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/" + } + }, + { + "at": "/query/session", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/host", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "absent" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml" + }, + "body": { + "encoding": "utf8", + "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" + }, + "body_time": { + "text": "SESSION_EXPIRATION", + "offset_seconds": 300 + } + } + } + ] + }, + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "POST" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/object-tests/multipart/guarded.bin" + } + }, + { + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "" + } + }, + { + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "fixture-upload+/c7be505aec65=" } }, { - "at": "/path", + "at": "/headers/host", "optional": false, "rule": { "is": "equal", - "value": "/object-tests-created" + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" } }, { - "at": "/body_text", + "at": "/headers/x-amz-s3session-token", "optional": false, "rule": { - "is": "xml", - "value": "eu-central-1" + "is": "equal", + "value": "fixture-session-token" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } } ], @@ -105692,49 +144758,20 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 400, "headers": { + "content-type": "application/xml", "date": { "from": "now" - }, - "location": "/object-tests-created" + } }, "body": { - "encoding": "empty" - } + "encoding": "utf8", + "data": "\nMalformedXMLFixture error" + }, + "framing": "chunked" } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - } - ], - "refusal": null - }, - { - "id": "operations/s3/copy-missing-source", - "profile": "s3", - "lane": "core", - "purpose": "Refuse a copy whose source does not exist", - "sources": [ - "https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html" - ], - "call": { - "key": "object-tests/copy/target.txt", - "op": "copy", - "source_key": "object-tests/copy/absent.txt" - }, - "exchanges": [ - { - "alternatives": [ + }, { "request": [ { @@ -105742,7 +144779,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "POST" } }, { @@ -105750,23 +144787,47 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/copy/target.txt" + "value": "/object-tests/multipart/guarded.bin" } }, { - "at": "/body_base64", + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "" + } + }, + { + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "fixture-upload+/c7be505aec65=" } }, { - "at": "/headers/x-amz-copy-source", + "at": "/headers/host", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-session-token" + } + }, + { + "at": "/headers/authorization", "optional": false, "rule": { "is": "matches", - "pattern": "/?fixture[^/]*/object-tests/copy/absent\\.txt" + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } } ], @@ -105775,7 +144836,7 @@ ], "allow_query": [], "response": { - "status": 404, + "status": 400, "headers": { "content-type": "application/xml", "date": { @@ -105784,7 +144845,7 @@ }, "body": { "encoding": "utf8", - "data": "\nNoSuchKeyFixture error" + "data": "\nMalformedXMLFixture error" }, "framing": "chunked" } @@ -105796,7 +144857,7 @@ "optional": false, "rule": { "is": "equal", - "value": "HEAD" + "value": "POST" } }, { @@ -105804,7 +144865,15 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/copy/absent.txt" + "value": "/object-tests/multipart/guarded.bin" + } + }, + { + "at": "/query/uploadId", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-upload+/c7be505aec65=" } }, { @@ -105814,6 +144883,30 @@ "is": "equal", "value": "" } + }, + { + "at": "/headers/host", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-session-token" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + } } ], "allow_headers": [ @@ -105821,15 +144914,18 @@ ], "allow_query": [], "response": { - "status": 404, + "status": 400, "headers": { + "content-type": "application/xml", "date": { "from": "now" } }, "body": { - "encoding": "empty" - } + "encoding": "utf8", + "data": "\nInvalidRequestYou must specify at least one part" + }, + "framing": "chunked" } } ] @@ -105849,7 +144945,7 @@ "optional": false, "rule": { "is": "equal", - "value": 404 + "value": 400 } }, { @@ -105858,26 +144954,80 @@ "rule": { "is": "one_of", "values": [ - "NoSuchKey", - "" + "MalformedXML", + "InvalidRequest" ] } } ], - "refusal": null + "refusal": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "refused" + } + }, + { + "at": "/kind", + "optional": false, + "rule": { + "is": "matches", + "pattern": ".+" + } + }, + { + "at": "/parameter", + "optional": false, + "rule": { + "is": "equal", + "value": "parts" + } + }, + { + "at": "/status", + "optional": true, + "rule": { + "is": "equal", + "value": 400 + } + }, + { + "at": "/code", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + "MalformedXML", + "InvalidRequest" + ] + } + } + ] }, { - "id": "operations/s3/copy", - "profile": "s3", + "id": "operations/s3-express/commit-out-of-order", + "profile": "s3-express", "lane": "core", - "purpose": "Copy an object to another key in the same bucket", + "purpose": "commit out of order", "sources": [ - "https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/copy/target.txt", - "op": "copy", - "source_key": "object-tests/copy/source.txt" + "key": "object-tests/multipart/object.bin", + "op": "s3.complete_multipart", + "parts": [ + { + "etag": "\"fixture-ec2738a0b15a\"", + "number": 2 + }, + { + "etag": "\"fixture-9aff617fcdf8\"", + "number": 1 + } + ], + "upload_id": "fixture-upload+/c60fb1e2e00d=" }, "exchanges": [ { @@ -105889,7 +145039,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -105897,11 +145047,11 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/copy/target.txt" + "value": "/" } }, { - "at": "/body_base64", + "at": "/query/session", "optional": false, "rule": { "is": "equal", @@ -105909,11 +145059,26 @@ } }, { - "at": "/headers/x-amz-copy-source", + "at": "/headers/host", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + } + }, + { + "at": "/headers/authorization", "optional": false, "rule": { "is": "matches", - "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "absent" } } ], @@ -105924,17 +145089,22 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - } + "content-type": "application/xml" }, "body": { "encoding": "utf8", - "data": "\n2024-01-01T00:00:00.000Z"fixture-etag"" + "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" + }, + "body_time": { + "text": "SESSION_EXPIRATION", + "offset_seconds": 300 } } - }, + } + ] + }, + { + "alternatives": [ { "request": [ { @@ -105942,7 +145112,7 @@ "optional": false, "rule": { "is": "equal", - "value": "HEAD" + "value": "POST" } }, { @@ -105950,170 +145120,47 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/copy/source.txt" + "value": "/object-tests/multipart/object.bin" } }, { - "at": "/body_base64", + "at": "/body_text", "optional": false, "rule": { - "is": "equal", - "value": "" + "is": "xml", + "value": "2\"fixture-ec2738a0b15a\"1\"fixture-9aff617fcdf8\"" } - } - ], - "then": [ - { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "PUT" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/copy/target.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/headers/x-amz-copy-source", - "optional": false, - "rule": { - "is": "matches", - "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" - } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - } - }, - "body": { - "encoding": "utf8", - "data": "\n2024-01-01T00:00:00.000Z"fixture-etag"" - } - } - } - ] - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-length": "5", - "date": { - "from": "now" - }, - "etag": "\"fixture-etag\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, - "body": { - "encoding": "empty" - } - } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-etag\"" - } - } - ], - "refusal": null - }, - { - "id": "operations/s3/copy-200-internal-error", - "profile": "s3", - "lane": "core", - "purpose": "Report a copy answered 200 with an InternalError in the body as an error, never as a success. A client may retry up to 5 times first, and need not retry", - "sources": [ - "https://repost.aws/knowledge-center/s3-resolve-200-internalerror", - "https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html", - "https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html" - ], - "origin": "transient", - "call": { - "key": "object-tests/copy/target.txt", - "op": "copy", - "source_key": "object-tests/copy/source.txt" - }, - "exchanges": [ - { - "alternatives": [ - { - "request": [ { - "at": "/method", + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "fixture-upload+/c60fb1e2e00d=" } }, { - "at": "/path", + "at": "/headers/host", "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/copy/target.txt" + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" } }, { - "at": "/body_base64", + "at": "/headers/x-amz-s3session-token", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "fixture-session-token" } }, { - "at": "/headers/x-amz-copy-source", + "at": "/headers/authorization", "optional": false, "rule": { "is": "matches", - "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } } ], @@ -106122,7 +145169,7 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 400, "headers": { "content-type": "application/xml", "date": { @@ -106131,7 +145178,7 @@ }, "body": { "encoding": "utf8", - "data": "\nInternalErrorWe encountered an internal error. Please try again.fixturefixture" + "data": "\nInvalidPartOrderFixture error" }, "framing": "chunked" } @@ -106143,7 +145190,7 @@ "optional": false, "rule": { "is": "equal", - "value": "HEAD" + "value": "POST" } }, { @@ -106151,133 +145198,47 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/copy/source.txt" + "value": "/object-tests/multipart/object.bin" } }, { - "at": "/body_base64", + "at": "/body_text", "optional": false, "rule": { - "is": "equal", - "value": "" + "is": "xml", + "value": "\"fixture-ec2738a0b15a\"2\"fixture-9aff617fcdf8\"1" } - } - ], - "then": [ - { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "PUT" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/fixture/object-tests/copy/target.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/headers/x-amz-copy-source", - "optional": false, - "rule": { - "is": "matches", - "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" - } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - } - }, - "body": { - "encoding": "utf8", - "data": "\nInternalErrorWe encountered an internal error. Please try again.fixturefixture" - }, - "framing": "chunked" - } - } - ] - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-length": "5", - "date": { - "from": "now" - }, - "etag": "\"fixture-etag\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, - "body": { - "encoding": "empty" - } - } - } - ] - }, - { - "alternatives": [ - { - "request": [ { - "at": "/method", + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "fixture-upload+/c60fb1e2e00d=" } }, { - "at": "/path", + "at": "/headers/host", "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/copy/target.txt" + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" } }, { - "at": "/body_base64", + "at": "/headers/x-amz-s3session-token", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "fixture-session-token" } }, { - "at": "/headers/x-amz-copy-source", + "at": "/headers/authorization", "optional": false, "rule": { "is": "matches", - "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } } ], @@ -106286,7 +145247,7 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 400, "headers": { "content-type": "application/xml", "date": { @@ -106295,14 +145256,107 @@ }, "body": { "encoding": "utf8", - "data": "\nInternalErrorWe encountered an internal error. Please try again.fixturefixture" + "data": "\nInvalidPartOrderFixture error" }, "framing": "chunked" } } - ], - "optional": true + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 400 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "InvalidPartOrder" + } + } + ], + "refusal": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "refused" + } + }, + { + "at": "/kind", + "optional": false, + "rule": { + "is": "matches", + "pattern": ".+" + } + }, + { + "at": "/parameter", + "optional": false, + "rule": { + "is": "equal", + "value": "parts" + } + }, + { + "at": "/status", + "optional": true, + "rule": { + "is": "equal", + "value": 400 + } }, + { + "at": "/code", + "optional": true, + "rule": { + "is": "equal", + "value": "InvalidPartOrder" + } + } + ] + }, + { + "id": "operations/s3-express/commit-part-too-small", + "profile": "s3-express", + "lane": "core", + "purpose": "commit part too small", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "key": "object-tests/multipart/small.bin", + "op": "s3.complete_multipart", + "parts": [ + { + "etag": "\"fixture-132cb4a5de9d\"", + "number": 1 + }, + { + "etag": "\"fixture-2cab82eb728e\"", + "number": 2 + } + ], + "upload_id": "fixture-upload+/09837ae2020c=" + }, + "exchanges": [ { "alternatives": [ { @@ -106312,7 +145366,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -106320,11 +145374,11 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/copy/target.txt" + "value": "/" } }, { - "at": "/body_base64", + "at": "/query/session", "optional": false, "rule": { "is": "equal", @@ -106332,11 +145386,26 @@ } }, { - "at": "/headers/x-amz-copy-source", + "at": "/headers/host", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + } + }, + { + "at": "/headers/authorization", "optional": false, "rule": { "is": "matches", - "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "absent" } } ], @@ -106347,20 +145416,19 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - } + "content-type": "application/xml" }, "body": { "encoding": "utf8", - "data": "\nInternalErrorWe encountered an internal error. Please try again.fixturefixture" + "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" }, - "framing": "chunked" + "body_time": { + "text": "SESSION_EXPIRATION", + "offset_seconds": 300 + } } } - ], - "optional": true + ] }, { "alternatives": [ @@ -106371,7 +145439,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "POST" } }, { @@ -106379,82 +145447,47 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/copy/target.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" + "value": "/object-tests/multipart/small.bin" } }, { - "at": "/headers/x-amz-copy-source", + "at": "/body_text", "optional": false, "rule": { - "is": "matches", - "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" - } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" + "is": "xml", + "value": "1\"fixture-132cb4a5de9d\"2\"fixture-2cab82eb728e\"" } }, - "body": { - "encoding": "utf8", - "data": "\nInternalErrorWe encountered an internal error. Please try again.fixturefixture" - }, - "framing": "chunked" - } - } - ], - "optional": true - }, - { - "alternatives": [ - { - "request": [ { - "at": "/method", + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "fixture-upload+/09837ae2020c=" } }, { - "at": "/path", + "at": "/headers/host", "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/copy/target.txt" + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" } }, { - "at": "/body_base64", + "at": "/headers/x-amz-s3session-token", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "fixture-session-token" } }, { - "at": "/headers/x-amz-copy-source", + "at": "/headers/authorization", "optional": false, "rule": { "is": "matches", - "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } } ], @@ -106465,23 +145498,18 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", "date": { "from": "now" - } + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "utf8", - "data": "\nInternalErrorWe encountered an internal error. Please try again.fixturefixture" + "data": "EntityTooSmallFixture error" }, "framing": "chunked" } - } - ], - "optional": true - }, - { - "alternatives": [ + }, { "request": [ { @@ -106489,7 +145517,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "POST" } }, { @@ -106497,23 +145525,47 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/copy/target.txt" + "value": "/object-tests/multipart/small.bin" } }, { - "at": "/body_base64", + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "\"fixture-132cb4a5de9d\"1\"fixture-2cab82eb728e\"2" + } + }, + { + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "fixture-upload+/09837ae2020c=" } }, { - "at": "/headers/x-amz-copy-source", + "at": "/headers/host", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-session-token" + } + }, + { + "at": "/headers/authorization", "optional": false, "rule": { "is": "matches", - "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } } ], @@ -106524,20 +145576,19 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", "date": { "from": "now" - } + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "utf8", - "data": "\nInternalErrorWe encountered an internal error. Please try again.fixturefixture" + "data": "EntityTooSmallFixture error" }, "framing": "chunked" } } - ], - "optional": true + ] } ], "expect": [ @@ -106549,30 +145600,44 @@ "value": "error" } }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 200 + } + }, { "at": "/code", "optional": false, "rule": { "is": "equal", - "value": "InternalError" + "value": "EntityTooSmall" } } ], "refusal": null }, { - "id": "operations/s3/put-with-unknown-storage-class", - "profile": "s3", + "id": "operations/s3-express/commit-precondition-failed", + "profile": "s3-express", "lane": "core", - "purpose": "Refuse a storage class that S3 does not have", + "purpose": "commit precondition failed", "sources": [ - "https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "body_base64": "Zmlyc3Q=", - "key": "object-tests/classes/object.txt", - "op": "put", - "storage_class": "WARM" + "if_match": "\"fixture-db71b2c0257c\"", + "key": "object-tests/multipart/guarded.bin", + "op": "s3.complete_multipart", + "parts": [ + { + "etag": "\"fixture-201c9ed6f636\"", + "number": 1 + } + ], + "upload_id": "fixture-upload+/c7be505aec65=" }, "exchanges": [ { @@ -106584,7 +145649,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -106592,23 +145657,38 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/classes/object.txt" + "value": "/" } }, { - "at": "/body_base64", + "at": "/query/session", "optional": false, "rule": { "is": "equal", - "value": "Zmlyc3Q=" + "value": "" } }, { - "at": "/headers/x-amz-storage-class", + "at": "/headers/host", "optional": false, "rule": { "is": "equal", - "value": "WARM" + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "absent" } } ], @@ -106617,100 +145697,174 @@ ], "allow_query": [], "response": { - "status": 400, + "status": 200, "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - } + "content-type": "application/xml" }, "body": { "encoding": "utf8", - "data": "\nInvalidStorageClassFixture error" + "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" }, - "framing": "chunked" + "body_time": { + "text": "SESSION_EXPIRATION", + "offset_seconds": 300 + } } } ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "error" - } }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 400 - } - }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "equal", - "value": "InvalidStorageClass" - } - } - ], - "refusal": null - }, - { - "id": "operations/s3/put-with-storage-class", - "profile": "s3", - "lane": "core", - "purpose": "Write an object into the STANDARD_IA storage class", - "sources": [ - "https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html" - ], - "call": { - "body_base64": "Zmlyc3Q=", - "key": "object-tests/classes/object.txt", - "op": "put", - "storage_class": "STANDARD_IA" - }, - "exchanges": [ { "alternatives": [ { "request": [ { - "at": "/method", + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "POST" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/object-tests/multipart/guarded.bin" + } + }, + { + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "1\"fixture-201c9ed6f636\"" + } + }, + { + "at": "/headers/if-match", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-db71b2c0257c\"" + } + }, + { + "at": "/query/uploadId", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-upload+/c7be505aec65=" + } + }, + { + "at": "/headers/host", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-session-token" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "date": { + "from": "now" + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "utf8", + "data": "PreconditionFailedFixture error" + }, + "framing": "chunked" + } + }, + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "POST" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/object-tests/multipart/guarded.bin" + } + }, + { + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "\"fixture-201c9ed6f636\"1" + } + }, + { + "at": "/headers/if-match", "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "\"fixture-db71b2c0257c\"" } }, { - "at": "/path", + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/classes/object.txt" + "value": "fixture-upload+/c7be505aec65=" } }, { - "at": "/body_base64", + "at": "/headers/host", "optional": false, "rule": { "is": "equal", - "value": "Zmlyc3Q=" + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" } }, { - "at": "/headers/x-amz-storage-class", + "at": "/headers/x-amz-s3session-token", "optional": false, "rule": { "is": "equal", - "value": "STANDARD_IA" + "value": "fixture-session-token" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } } ], @@ -106724,12 +145878,13 @@ "date": { "from": "now" }, - "etag": "\"fixture-etag\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "empty" - } + "encoding": "utf8", + "data": "PreconditionFailedFixture error" + }, + "framing": "chunked" } } ] @@ -106741,28 +145896,46 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 200 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "PreconditionFailed" } } ], "refusal": null }, { - "id": "operations/s3/put-with-md5", - "profile": "s3", + "id": "operations/s3-express/commit-single-small-part", + "profile": "s3-express", "lane": "core", - "purpose": "Carry a declared transactional MD5 without substituting a payload or stored-property hash.", + "purpose": "commit single small part", "sources": [ - "https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "body_base64": "aGVsbG8=", - "checksum": { - "algorithm": "md5", - "value_base64": "XUFAKrxLKna5cZ2REBfFkg==" - }, - "key": "object", - "op": "put" + "key": "object-tests/multipart/single.bin", + "op": "s3.complete_multipart", + "parts": [ + { + "etag": "\"fixture-db1e44387ca0\"", + "number": 1 + } + ], + "upload_id": "fixture-upload+/b39780854a14=" }, "exchanges": [ { @@ -106774,7 +145947,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -106782,23 +145955,38 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object" + "value": "/" } }, { - "at": "/body_base64", + "at": "/query/session", "optional": false, "rule": { "is": "equal", - "value": "aGVsbG8=" + "value": "" } }, { - "at": "/headers/content-md5", + "at": "/headers/host", "optional": false, "rule": { "is": "equal", - "value": "XUFAKrxLKna5cZ2REBfFkg==" + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "absent" } } ], @@ -106809,53 +145997,20 @@ "response": { "status": 200, "headers": { - "content-type": "application/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-etag\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-amz-request-id": "fixture-request-id" + "content-type": "application/xml" }, "body": { - "encoding": "base64", - "data": "" + "encoding": "utf8", + "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" + }, + "body_time": { + "text": "SESSION_EXPIRATION", + "offset_seconds": 300 } } } ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - } - ], - "refusal": null - }, - { - "id": "operations/s3/put-md5-mismatch", - "profile": "s3", - "lane": "core", - "purpose": "Declared transactional MD5 must cover the exact body bytes; report service rejection of a mismatch.", - "sources": [ - "https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html" - ], - "call": { - "body_base64": "aGVsbG8=", - "checksum": { - "algorithm": "md5", - "value_base64": "K9opmNmw7hl9oUKgRH9nJQ==" }, - "key": "object", - "op": "put" - }, - "exchanges": [ { "alternatives": [ { @@ -106865,7 +146020,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "POST" } }, { @@ -106873,23 +146028,47 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object" + "value": "/object-tests/multipart/single.bin" } }, { - "at": "/body_base64", + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "1\"fixture-db1e44387ca0\"" + } + }, + { + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "aGVsbG8=" + "value": "fixture-upload+/b39780854a14=" } }, { - "at": "/headers/content-md5", + "at": "/headers/host", "optional": false, "rule": { "is": "equal", - "value": "K9opmNmw7hl9oUKgRH9nJQ==" + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-session-token" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } } ], @@ -106898,66 +146077,20 @@ ], "allow_query": [], "response": { - "status": 400, + "status": 200, "headers": { - "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-etag\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-amz-request-id": "fixture-request-id" + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "utf8", - "data": "\nBadDigestMD5 mismatch" + "data": "https://fixture.invalid/fixture/object-tests/multipart/single.binfixtureobject-tests/multipart/single.bin\"fixture-0841fa5d9c5c\"rzsmsrcRLcM=FULL_OBJECT" }, "framing": "chunked" } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "error" - } - }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "equal", - "value": "BadDigest" - } - } - ], - "refusal": null - }, - { - "id": "operations/s3/put-with-crc32", - "profile": "s3", - "lane": "core", - "purpose": "Send an additional checksum in its x-amz-checksum- header; S3 stores it as the object's one checksum, in place of the CRC64NVME it adds to a write without one", - "sources": [ - "https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html" - ], - "call": { - "body_base64": "Y2hlY2tzdW0K", - "checksum": { - "algorithm": "crc32", - "value_base64": "ItMTFg==" - }, - "key": "object-tests/checksums/crc32.txt", - "op": "put" - }, - "exchanges": [ - { - "alternatives": [ + }, { "request": [ { @@ -106965,7 +146098,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "POST" } }, { @@ -106973,31 +146106,47 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/checksums/crc32.txt" + "value": "/object-tests/multipart/single.bin" } }, { - "at": "/body_base64", + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "\"fixture-db1e44387ca0\"1" + } + }, + { + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "Y2hlY2tzdW0K" + "value": "fixture-upload+/b39780854a14=" } }, { - "at": "/headers/x-amz-checksum-crc32", + "at": "/headers/host", "optional": false, "rule": { "is": "equal", - "value": "ItMTFg==" + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" } }, { - "at": "/headers/x-amz-sdk-checksum-algorithm", - "optional": true, + "at": "/headers/x-amz-s3session-token", + "optional": false, "rule": { "is": "equal", - "value": "CRC32" + "value": "fixture-session-token" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } } ], @@ -107011,14 +146160,13 @@ "date": { "from": "now" }, - "etag": "\"fixture-636b73750000\"", - "x-amz-checksum-crc32": "ItMTFg==", - "x-amz-checksum-type": "FULL_OBJECT" + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "" - } + "encoding": "utf8", + "data": "https://fixture.invalid/fixture/object-tests/multipart/single.binfixtureobject-tests/multipart/single.bin\"fixture-0841fa5d9c5c\"rzsmsrcRLcM=FULL_OBJECT" + }, + "framing": "chunked" } } ] @@ -107038,7 +146186,7 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-636b73750000\"" + "value": "\"fixture-0841fa5d9c5c\"" } }, { @@ -107056,27 +146204,24 @@ "refusal": null }, { - "id": "operations/s3/put-two-checksums", - "profile": "s3", + "id": "operations/s3-express/commit-object-size-mismatch", + "profile": "s3-express", "lane": "core", - "purpose": "Report S3's refusal of a write with two additional checksums; S3 keeps one checksum per object and answers 400 InvalidRequest to more than one x-amz-checksum- header", + "purpose": "Report S3's refusal of a completion whose parts do not add up to the object size stated in x-amz-mp-object-size", "sources": [ - "https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "body_base64": "Y2hlY2tzdW0K", - "checksums": [ - { - "algorithm": "crc32", - "value_base64": "ItMTFg==" - }, + "key": "object-tests/multipart/commit-object-size-mismatch.bin", + "object_size": 4, + "op": "s3.complete_multipart", + "parts": [ { - "algorithm": "sha256", - "value_base64": "YBWjp+qyV9PYdCTLkYJ9WLevegiRR86bT46jxfweu9I=" + "etag": "\"fixture-db1e44387ca0\"", + "number": 1 } ], - "key": "object-tests/checksums/two.txt", - "op": "put" + "upload_id": "fixture-upload+/b39780854a14=" }, "exchanges": [ { @@ -107088,7 +146233,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -107096,42 +146241,38 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/checksums/two.txt" + "value": "/" } }, { - "at": "/body_base64", + "at": "/query/session", "optional": false, "rule": { "is": "equal", - "value": "Y2hlY2tzdW0K" + "value": "" } }, { - "at": "/headers/x-amz-checksum-crc32", + "at": "/headers/host", "optional": false, "rule": { "is": "equal", - "value": "ItMTFg==" + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" } }, { - "at": "/headers/x-amz-checksum-sha256", + "at": "/headers/authorization", "optional": false, "rule": { - "is": "equal", - "value": "YBWjp+qyV9PYdCTLkYJ9WLevegiRR86bT46jxfweu9I=" + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } }, { - "at": "/headers/x-amz-sdk-checksum-algorithm", - "optional": true, + "at": "/headers/x-amz-s3session-token", + "optional": false, "rule": { - "is": "one_of", - "values": [ - "CRC32", - "SHA256" - ] + "is": "absent" } } ], @@ -107140,109 +146281,22 @@ ], "allow_query": [], "response": { - "status": 400, + "status": 200, "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - } + "content-type": "application/xml" }, "body": { "encoding": "utf8", - "data": "\nInvalidRequestExpecting a single x-amz-checksum- header. Multiple checksum Types are not allowed.fixturefixture" + "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" }, - "framing": "chunked" + "body_time": { + "text": "SESSION_EXPIRATION", + "offset_seconds": 300 + } } } ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 400 - } - }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "equal", - "value": "InvalidRequest" - } - } - ], - "refusal": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "refused" - } - }, - { - "at": "/kind", - "optional": false, - "rule": { - "is": "matches", - "pattern": ".+" - } - }, - { - "at": "/parameter", - "optional": false, - "rule": { - "is": "equal", - "value": "checksums" - } - }, - { - "at": "/status", - "optional": true, - "rule": { - "is": "equal", - "value": 400 - } }, - { - "at": "/code", - "optional": true, - "rule": { - "is": "equal", - "value": "InvalidRequest" - } - } - ] - }, - { - "id": "operations/s3/put-with-tags", - "profile": "s3", - "lane": "core", - "purpose": "Write an object with tags", - "sources": [ - "https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html" - ], - "call": { - "body_base64": "Zmlyc3Q=", - "key": "object-tests/tags/object.txt", - "op": "put", - "tags": { - "project": "object-tests" - } - }, - "exchanges": [ { "alternatives": [ { @@ -107252,7 +146306,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "POST" } }, { @@ -107260,23 +146314,55 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/tags/object.txt" + "value": "/object-tests/multipart/commit-object-size-mismatch.bin" } }, { - "at": "/body_base64", + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "1\"fixture-db1e44387ca0\"" + } + }, + { + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "Zmlyc3Q=" + "value": "fixture-upload+/b39780854a14=" } }, { - "at": "/headers/x-amz-tagging", + "at": "/headers/host", "optional": false, "rule": { "is": "equal", - "value": "project=object-tests" + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-session-token" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + } + }, + { + "at": "/headers/x-amz-mp-object-size", + "optional": false, + "rule": { + "is": "equal", + "value": "4" } } ], @@ -107287,47 +146373,18 @@ "response": { "status": 200, "headers": { + "content-type": "application/xml", "date": { "from": "now" - }, - "etag": "\"fixture-etag\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { - "encoding": "empty" - } + "encoding": "utf8", + "data": "\nInvalidRequestThe provided x-amz-mp-object-size header value 4 does not match what was computed: 3fixturefixture" + }, + "framing": "chunked" } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - } - ], - "refusal": null - }, - { - "id": "operations/s3/get-tagging", - "profile": "s3", - "lane": "core", - "purpose": "Read the tags of an object", - "sources": [ - "https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectTagging.html" - ], - "call": { - "key": "object-tests/tags/object.txt", - "op": "s3.get_tagging" - }, - "exchanges": [ - { - "alternatives": [ + }, { "request": [ { @@ -107335,7 +146392,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "POST" } }, { @@ -107343,23 +146400,55 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/tags/object.txt" + "value": "/object-tests/multipart/commit-object-size-mismatch.bin" } }, { - "at": "/body_base64", + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "\"fixture-db1e44387ca0\"1" + } + }, + { + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "fixture-upload+/b39780854a14=" } }, { - "at": "/query/tagging", + "at": "/headers/host", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-session-token" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + } + }, + { + "at": "/headers/x-amz-mp-object-size", + "optional": false, + "rule": { + "is": "equal", + "value": "4" } } ], @@ -107377,7 +146466,7 @@ }, "body": { "encoding": "utf8", - "data": "\nprojectobject-tests" + "data": "\nInvalidRequestThe provided x-amz-mp-object-size header value 4 does not match what was computed: 3fixturefixture" }, "framing": "chunked" } @@ -107391,36 +146480,47 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "error" } }, { - "at": "/value/tags", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": { - "project": "object-tests" - } + "value": 200 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "InvalidRequest" } } ], "refusal": null }, { - "id": "operations/s3/put-tagging", - "profile": "s3", + "id": "operations/s3-express/commit-object-size", + "profile": "s3-express", "lane": "core", - "purpose": "Replace the tags of an object", + "purpose": "Send the object size the caller expects in x-amz-mp-object-size; a completion whose parts add up to it succeeds", "sources": [ - "https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectTagging.html" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/tags/object.txt", - "op": "s3.put_tagging", - "tags": { - "project": "object-tests" - } + "key": "object-tests/multipart/commit-object-size.bin", + "object_size": 3, + "op": "s3.complete_multipart", + "parts": [ + { + "etag": "\"fixture-db1e44387ca0\"", + "number": 1 + } + ], + "upload_id": "fixture-upload+/b39780854a14=" }, "exchanges": [ { @@ -107432,7 +146532,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -107440,31 +146540,38 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/tags/object.txt" + "value": "/" } }, { - "at": "/body_text", + "at": "/query/session", "optional": false, "rule": { - "is": "xml", - "value": "projectobject-tests" + "is": "equal", + "value": "" } }, { - "at": "/query/tagging", + "at": "/headers/host", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" } }, { - "at": "/headers/x-amz-checksum-crc64nvme", + "at": "/headers/authorization", "optional": false, "rule": { "is": "matches", - "pattern": "[A-Za-z0-9+/]{11}=" + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "absent" } } ], @@ -107475,45 +146582,20 @@ "response": { "status": 200, "headers": { - "date": { - "from": "now" - } + "content-type": "application/xml" }, "body": { - "encoding": "empty" + "encoding": "utf8", + "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" + }, + "body_time": { + "text": "SESSION_EXPIRATION", + "offset_seconds": 300 } } } ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - } - ], - "refusal": null - }, - { - "id": "operations/s3/put-internal-error", - "profile": "s3", - "lane": "core", - "purpose": "Report a 500 InternalError answer as an error, after at most 5 retries", - "sources": [ - "https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html" - ], - "origin": "transient", - "call": { - "body_base64": "MDEyMzQ1Njc4OQ==", - "key": "object-tests/write/object.txt", - "op": "put" - }, - "exchanges": [ + }, { "alternatives": [ { @@ -107523,7 +146605,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "POST" } }, { @@ -107531,65 +146613,55 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/write/object.txt" + "value": "/object-tests/multipart/commit-object-size.bin" } }, { - "at": "/body_base64", + "at": "/body_text", "optional": false, "rule": { - "is": "equal", - "value": "MDEyMzQ1Njc4OQ==" - } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 500, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" + "is": "xml", + "value": "1\"fixture-db1e44387ca0\"" } }, - "body": { - "encoding": "utf8", - "data": "\nInternalErrorWe encountered an internal error. Please try again.fixture" + { + "at": "/query/uploadId", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-upload+/b39780854a14=" + } }, - "framing": "chunked" - } - } - ] - }, - { - "alternatives": [ - { - "request": [ { - "at": "/method", + "at": "/headers/host", "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" } }, { - "at": "/path", + "at": "/headers/x-amz-s3session-token", "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/write/object.txt" + "value": "fixture-session-token" } }, { - "at": "/body_base64", + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + } + }, + { + "at": "/headers/x-amz-mp-object-size", "optional": false, "rule": { "is": "equal", - "value": "MDEyMzQ1Njc4OQ==" + "value": "3" } } ], @@ -107598,25 +146670,20 @@ ], "allow_query": [], "response": { - "status": 500, + "status": 200, "headers": { - "content-type": "application/xml", "date": { "from": "now" - } + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "utf8", - "data": "\nInternalErrorWe encountered an internal error. Please try again.fixture" + "data": "https://fixture.invalid/fixture/object-tests/multipart/commit-object-size.binfixtureobject-tests/multipart/commit-object-size.bin\"fixture-0841fa5d9c5c\"rzsmsrcRLcM=FULL_OBJECT" }, "framing": "chunked" } - } - ], - "optional": true - }, - { - "alternatives": [ + }, { "request": [ { @@ -107624,7 +146691,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "POST" } }, { @@ -107632,66 +146699,55 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/write/object.txt" + "value": "/object-tests/multipart/commit-object-size.bin" } }, { - "at": "/body_base64", + "at": "/body_text", "optional": false, "rule": { - "is": "equal", - "value": "MDEyMzQ1Njc4OQ==" - } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 500, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" + "is": "xml", + "value": "\"fixture-db1e44387ca0\"1" } }, - "body": { - "encoding": "utf8", - "data": "\nInternalErrorWe encountered an internal error. Please try again.fixture" + { + "at": "/query/uploadId", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-upload+/b39780854a14=" + } }, - "framing": "chunked" - } - } - ], - "optional": true - }, - { - "alternatives": [ - { - "request": [ { - "at": "/method", + "at": "/headers/host", "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" } }, { - "at": "/path", + "at": "/headers/x-amz-s3session-token", "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/write/object.txt" + "value": "fixture-session-token" } }, { - "at": "/body_base64", + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + } + }, + { + "at": "/headers/x-amz-mp-object-size", "optional": false, "rule": { "is": "equal", - "value": "MDEyMzQ1Njc4OQ==" + "value": "3" } } ], @@ -107700,23 +146756,74 @@ ], "allow_query": [], "response": { - "status": 500, + "status": 200, "headers": { - "content-type": "application/xml", "date": { "from": "now" - } + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "utf8", - "data": "\nInternalErrorWe encountered an internal error. Please try again.fixture" + "data": "https://fixture.invalid/fixture/object-tests/multipart/commit-object-size.binfixtureobject-tests/multipart/commit-object-size.bin\"fixture-0841fa5d9c5c\"rzsmsrcRLcM=FULL_OBJECT" }, "framing": "chunked" } } - ], - "optional": true + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-0841fa5d9c5c\"" + } }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + } + ], + "refusal": null + }, + { + "id": "operations/s3-express/commit-one-empty-part", + "profile": "s3-express", + "lane": "core", + "purpose": "Complete an upload of one empty part, which writes an empty object; a client that refuses a completion of no parts writes an empty object this way", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "key": "object-tests/multipart/empty.bin", + "op": "s3.complete_multipart", + "parts": [ + { + "etag": "\"fixture-db1e44387ca0\"", + "number": 1 + } + ], + "upload_id": "fixture-upload+/b39780854a14=" + }, + "exchanges": [ { "alternatives": [ { @@ -107726,7 +146833,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -107734,15 +146841,38 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/write/object.txt" + "value": "/" } }, { - "at": "/body_base64", + "at": "/query/session", "optional": false, "rule": { "is": "equal", - "value": "MDEyMzQ1Njc4OQ==" + "value": "" + } + }, + { + "at": "/headers/host", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "absent" } } ], @@ -107751,22 +146881,21 @@ ], "allow_query": [], "response": { - "status": 500, + "status": 200, "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - } + "content-type": "application/xml" }, "body": { "encoding": "utf8", - "data": "\nInternalErrorWe encountered an internal error. Please try again.fixture" + "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" }, - "framing": "chunked" + "body_time": { + "text": "SESSION_EXPIRATION", + "offset_seconds": 300 + } } } - ], - "optional": true + ] }, { "alternatives": [ @@ -107777,7 +146906,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "POST" } }, { @@ -107785,86 +146914,69 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/write/object.txt" + "value": "/object-tests/multipart/empty.bin" } }, { - "at": "/body_base64", + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "1\"fixture-db1e44387ca0\"" + } + }, + { + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "MDEyMzQ1Njc4OQ==" + "value": "fixture-upload+/b39780854a14=" } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 500, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" + }, + { + "at": "/headers/host", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" } }, - "body": { - "encoding": "utf8", - "data": "\nInternalErrorWe encountered an internal error. Please try again.fixture" + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-session-token" + } }, - "framing": "chunked" - } - } - ], - "optional": true - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 500 - } - }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "equal", - "value": "InternalError" - } - } - ], - "refusal": null - }, - { - "id": "operations/s3/put-content-encoding-gzip", - "profile": "s3", - "lane": "core", - "purpose": "Store Content-Encoding: gzip with a write, and the gzip bytes unchanged", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "body_base64": "H4sIAAAAAAACA0vOzy0oSi0uTk1RyM9TKCgtKsgvTuUCAAHVPIcWAAAA", - "content_encoding": "gzip", - "key": "object-tests/write/object.txt", - "op": "put" - }, - "exchanges": [ - { - "alternatives": [ + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "date": { + "from": "now" + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "utf8", + "data": "https://fixture.invalid/fixture/object-tests/multipart/empty.binfixtureobject-tests/multipart/empty.bin\"fixture-0841fa5d9c5c\"rzsmsrcRLcM=FULL_OBJECT" + }, + "framing": "chunked" + } + }, { "request": [ { @@ -107872,7 +146984,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "POST" } }, { @@ -107880,23 +146992,47 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/write/object.txt" + "value": "/object-tests/multipart/empty.bin" } }, { - "at": "/body_base64", + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "\"fixture-db1e44387ca0\"1" + } + }, + { + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "H4sIAAAAAAACA0vOzy0oSi0uTk1RyM9TKCgtKsgvTuUCAAHVPIcWAAAA" + "value": "fixture-upload+/b39780854a14=" } }, { - "at": "/headers/content-encoding", + "at": "/headers/host", "optional": false, "rule": { "is": "equal", - "value": "gzip" + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-session-token" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } } ], @@ -107910,13 +147046,13 @@ "date": { "from": "now" }, - "etag": "\"fixture-fbe0ab688a03\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "" - } + "encoding": "utf8", + "data": "https://fixture.invalid/fixture/object-tests/multipart/empty.binfixtureobject-tests/multipart/empty.bin\"fixture-0841fa5d9c5c\"rzsmsrcRLcM=FULL_OBJECT" + }, + "framing": "chunked" } } ] @@ -107936,7 +147072,7 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-fbe0ab688a03\"" + "value": "\"fixture-0841fa5d9c5c\"" } }, { @@ -107954,21 +147090,23 @@ "refusal": null }, { - "id": "operations/s3/put-content-properties", - "profile": "s3", + "id": "operations/s3-express/commit-subset", + "profile": "s3-express", "lane": "core", - "purpose": "Store Content-Type, Content-Language, Content-Disposition and Cache-Control with a write", + "purpose": "commit subset", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "body_base64": "MDEyMzQ1Njc4OQ==", - "cache_control": "max-age=3600", - "content_disposition": "attachment; filename=\"report.txt\"", - "content_language": "nl-NL", - "content_type": "text/plain; charset=utf-8", - "key": "object-tests/write/object.txt", - "op": "put" + "key": "object-tests/multipart/replaced.bin", + "op": "s3.complete_multipart", + "parts": [ + { + "etag": "\"fixture-09ac5e35935f\"", + "number": 1 + } + ], + "upload_id": "fixture-upload+/3cc68ed16e61=" }, "exchanges": [ { @@ -107980,7 +147118,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -107988,47 +147126,38 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/write/object.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "MDEyMzQ1Njc4OQ==" + "value": "/" } }, { - "at": "/headers/content-type", + "at": "/query/session", "optional": false, "rule": { "is": "equal", - "value": "text/plain; charset=utf-8" + "value": "" } }, { - "at": "/headers/content-language", + "at": "/headers/host", "optional": false, "rule": { "is": "equal", - "value": "nl-NL" + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" } }, { - "at": "/headers/content-disposition", + "at": "/headers/authorization", "optional": false, "rule": { - "is": "equal", - "value": "attachment; filename=\"report.txt\"" + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } }, { - "at": "/headers/cache-control", + "at": "/headers/x-amz-s3session-token", "optional": false, "rule": { - "is": "equal", - "value": "max-age=3600" + "is": "absent" } } ], @@ -108039,67 +147168,20 @@ "response": { "status": 200, "headers": { - "date": { - "from": "now" - }, - "etag": "\"fixture-fbe0ab688a03\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + "content-type": "application/xml" }, "body": { - "encoding": "base64", - "data": "" + "encoding": "utf8", + "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" + }, + "body_time": { + "text": "SESSION_EXPIRATION", + "offset_seconds": 300 } } } ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-fbe0ab688a03\"" - } }, - { - "at": "/value/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - } - ], - "refusal": null - }, - { - "id": "operations/s3/put-if-match-current", - "profile": "s3", - "lane": "core", - "purpose": "put if match current", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "body_base64": "cmVwbGFjZWQ=", - "if_match": "\"fixture-fbe0ab688a03\"", - "key": "object-tests/write/object.txt", - "op": "put" - }, - "exchanges": [ { "alternatives": [ { @@ -108109,7 +147191,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "POST" } }, { @@ -108117,23 +147199,47 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/write/object.txt" + "value": "/object-tests/multipart/replaced.bin" } }, { - "at": "/body_base64", + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "1\"fixture-09ac5e35935f\"" + } + }, + { + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "cmVwbGFjZWQ=" + "value": "fixture-upload+/3cc68ed16e61=" } }, { - "at": "/headers/if-match", + "at": "/headers/host", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-fbe0ab688a03\"" + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-session-token" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } } ], @@ -108147,66 +147253,15 @@ "date": { "from": "now" }, - "etag": "\"fixture-01da46aa1994\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "" - } + "encoding": "utf8", + "data": "https://fixture.invalid/fixture/object-tests/multipart/replaced.binfixtureobject-tests/multipart/replaced.bin\"fixture-eef5a071f9f6\"DZyVHeSVZ7c=FULL_OBJECT" + }, + "framing": "chunked" } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-01da46aa1994\"" - } - }, - { - "at": "/value/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - } - ], - "refusal": null - }, - { - "id": "operations/s3/put-if-none-match-missing", - "profile": "s3", - "lane": "core", - "purpose": "put if none match missing", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "body_base64": "ZnJlc2g=", - "if_none_match": "*", - "key": "object-tests/write/fresh.txt", - "op": "put" - }, - "exchanges": [ - { - "alternatives": [ + }, { "request": [ { @@ -108214,7 +147269,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "POST" } }, { @@ -108222,23 +147277,47 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/write/fresh.txt" + "value": "/object-tests/multipart/replaced.bin" } }, { - "at": "/body_base64", + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "\"fixture-09ac5e35935f\"1" + } + }, + { + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "ZnJlc2g=" + "value": "fixture-upload+/3cc68ed16e61=" } }, { - "at": "/headers/if-none-match", + "at": "/headers/host", "optional": false, "rule": { "is": "equal", - "value": "*" + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-session-token" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } } ], @@ -108252,13 +147331,13 @@ "date": { "from": "now" }, - "etag": "\"fixture-891ed8521bb8\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "" - } + "encoding": "utf8", + "data": "https://fixture.invalid/fixture/object-tests/multipart/replaced.binfixtureobject-tests/multipart/replaced.bin\"fixture-eef5a071f9f6\"DZyVHeSVZ7c=FULL_OBJECT" + }, + "framing": "chunked" } } ] @@ -108278,7 +147357,7 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-891ed8521bb8\"" + "value": "\"fixture-eef5a071f9f6\"" } }, { @@ -108296,17 +147375,27 @@ "refusal": null }, { - "id": "operations/s3/put-key-1024", - "profile": "s3", + "id": "operations/s3-express/commit-unstaged-part", + "profile": "s3-express", "lane": "core", - "purpose": "put key 1024", + "purpose": "commit unstaged part", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "body_base64": "MQ==", - "key": "object-tests/long/kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", - "op": "put" + "key": "object-tests/multipart/object.bin", + "op": "s3.complete_multipart", + "parts": [ + { + "etag": "\"fixture-9aff617fcdf8\"", + "number": 1 + }, + { + "etag": "\"fixture-db71b2c0257c\"", + "number": 3 + } + ], + "upload_id": "fixture-upload+/c60fb1e2e00d=" }, "exchanges": [ { @@ -108318,7 +147407,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -108326,15 +147415,38 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/long/kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk" + "value": "/" } }, { - "at": "/body_base64", + "at": "/query/session", "optional": false, "rule": { "is": "equal", - "value": "MQ==" + "value": "" + } + }, + { + "at": "/headers/host", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "absent" } } ], @@ -108345,66 +147457,20 @@ "response": { "status": 200, "headers": { - "date": { - "from": "now" - }, - "etag": "\"fixture-6c30b210f0a8\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + "content-type": "application/xml" }, "body": { - "encoding": "base64", - "data": "" + "encoding": "utf8", + "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" + }, + "body_time": { + "text": "SESSION_EXPIRATION", + "offset_seconds": 300 } } } ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-6c30b210f0a8\"" - } }, - { - "at": "/value/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - } - ], - "refusal": null - }, - { - "id": "operations/s3/put-key-1025", - "profile": "s3", - "lane": "core", - "purpose": "put key 1025", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "body_base64": "MQ==", - "key": "object-tests/long/kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", - "op": "put" - }, - "exchanges": [ { "alternatives": [ { @@ -108414,7 +147480,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "POST" } }, { @@ -108422,15 +147488,47 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/long/kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk" + "value": "/object-tests/multipart/object.bin" } }, { - "at": "/body_base64", + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "1\"fixture-9aff617fcdf8\"3\"fixture-db71b2c0257c\"" + } + }, + { + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "MQ==" + "value": "fixture-upload+/c60fb1e2e00d=" + } + }, + { + "at": "/headers/host", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-session-token" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } } ], @@ -108448,100 +147546,11 @@ }, "body": { "encoding": "utf8", - "data": "\nKeyTooLongErrorFixture error" + "data": "\nInvalidPartOrderFixture error" }, "framing": "chunked" } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 400 - } - }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "equal", - "value": "KeyTooLongError" - } - } - ], - "refusal": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "refused" - } - }, - { - "at": "/kind", - "optional": false, - "rule": { - "is": "matches", - "pattern": ".+" - } - }, - { - "at": "/parameter", - "optional": false, - "rule": { - "is": "equal", - "value": "key" - } - }, - { - "at": "/status", - "optional": true, - "rule": { - "is": "equal", - "value": 400 - } - }, - { - "at": "/code", - "optional": true, - "rule": { - "is": "equal", - "value": "KeyTooLongError" - } - } - ] - }, - { - "id": "operations/s3/put-lost-the-race-to-create", - "profile": "s3", - "lane": "core", - "purpose": "put lost the race to create", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "body_base64": "YW5vdGhlciBvYmplY3Q=", - "if_none_match": "*", - "key": "object-tests/write/object.txt", - "op": "put" - }, - "exchanges": [ - { - "alternatives": [ + }, { "request": [ { @@ -108549,7 +147558,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "POST" } }, { @@ -108557,23 +147566,47 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/write/object.txt" + "value": "/object-tests/multipart/object.bin" } }, { - "at": "/body_base64", + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "\"fixture-9aff617fcdf8\"1\"fixture-db71b2c0257c\"3" + } + }, + { + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "YW5vdGhlciBvYmplY3Q=" + "value": "fixture-upload+/c60fb1e2e00d=" } }, { - "at": "/headers/if-none-match", + "at": "/headers/host", "optional": false, "rule": { "is": "equal", - "value": "*" + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-session-token" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } } ], @@ -108582,7 +147615,7 @@ ], "allow_query": [], "response": { - "status": 412, + "status": 400, "headers": { "content-type": "application/xml", "date": { @@ -108591,7 +147624,7 @@ }, "body": { "encoding": "utf8", - "data": "\nPreconditionFailedFixture error" + "data": "\nInvalidPartOrderFixture error" }, "framing": "chunked" } @@ -108613,7 +147646,7 @@ "optional": false, "rule": { "is": "equal", - "value": 412 + "value": 400 } }, { @@ -108621,26 +147654,34 @@ "optional": false, "rule": { "is": "equal", - "value": "PreconditionFailed" + "value": "InvalidPartOrder" } } ], "refusal": null }, { - "id": "operations/s3/put-conditional-conflict", - "profile": "s3", + "id": "operations/s3-express/commit-wrong-etag", + "profile": "s3-express", "lane": "core", - "purpose": "Report a 409 ConditionalRequestConflict to a conditional put as an error. AWS advises retrying a put, so a client may retry up to 5 times first, and need not retry", + "purpose": "commit wrong etag", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], - "origin": "transient", "call": { - "body_base64": "YW5vdGhlciBvYmplY3Q=", - "if_none_match": "*", - "key": "object-tests/write/object.txt", - "op": "put" + "key": "object-tests/multipart/object.bin", + "op": "s3.complete_multipart", + "parts": [ + { + "etag": "\"fixture-db71b2c0257c\"", + "number": 1 + }, + { + "etag": "\"fixture-ec2738a0b15a\"", + "number": 2 + } + ], + "upload_id": "fixture-upload+/c60fb1e2e00d=" }, "exchanges": [ { @@ -108652,7 +147693,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -108660,81 +147701,38 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/write/object.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "YW5vdGhlciBvYmplY3Q=" - } - }, - { - "at": "/headers/if-none-match", - "optional": false, - "rule": { - "is": "equal", - "value": "*" - } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 409, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" + "value": "/" } }, - "body": { - "encoding": "utf8", - "data": "\nConditionalRequestConflictA conflicting operation occurred. If using PutObject you can retry the request. If using multipart upload you should initiate another CreateMultipartUpload request and re-upload each part.fixturefixture" - }, - "framing": "chunked" - } - } - ] - }, - { - "alternatives": [ - { - "request": [ { - "at": "/method", + "at": "/query/session", "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "" } }, { - "at": "/path", + "at": "/headers/host", "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/write/object.txt" + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" } }, { - "at": "/body_base64", + "at": "/headers/authorization", "optional": false, "rule": { - "is": "equal", - "value": "YW5vdGhlciBvYmplY3Q=" + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } }, { - "at": "/headers/if-none-match", + "at": "/headers/x-amz-s3session-token", "optional": false, "rule": { - "is": "equal", - "value": "*" + "is": "absent" } } ], @@ -108743,22 +147741,21 @@ ], "allow_query": [], "response": { - "status": 409, + "status": 200, "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - } + "content-type": "application/xml" }, "body": { "encoding": "utf8", - "data": "\nConditionalRequestConflictA conflicting operation occurred. If using PutObject you can retry the request. If using multipart upload you should initiate another CreateMultipartUpload request and re-upload each part.fixturefixture" + "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" }, - "framing": "chunked" + "body_time": { + "text": "SESSION_EXPIRATION", + "offset_seconds": 300 + } } } - ], - "optional": true + ] }, { "alternatives": [ @@ -108769,7 +147766,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "POST" } }, { @@ -108777,82 +147774,47 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/write/object.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "YW5vdGhlciBvYmplY3Q=" + "value": "/object-tests/multipart/object.bin" } }, { - "at": "/headers/if-none-match", + "at": "/body_text", "optional": false, "rule": { - "is": "equal", - "value": "*" - } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 409, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" + "is": "xml", + "value": "1\"fixture-db71b2c0257c\"2\"fixture-ec2738a0b15a\"" } }, - "body": { - "encoding": "utf8", - "data": "\nConditionalRequestConflictA conflicting operation occurred. If using PutObject you can retry the request. If using multipart upload you should initiate another CreateMultipartUpload request and re-upload each part.fixturefixture" - }, - "framing": "chunked" - } - } - ], - "optional": true - }, - { - "alternatives": [ - { - "request": [ { - "at": "/method", + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "fixture-upload+/c60fb1e2e00d=" } }, { - "at": "/path", + "at": "/headers/host", "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/write/object.txt" + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" } }, { - "at": "/body_base64", + "at": "/headers/x-amz-s3session-token", "optional": false, "rule": { "is": "equal", - "value": "YW5vdGhlciBvYmplY3Q=" + "value": "fixture-session-token" } }, { - "at": "/headers/if-none-match", + "at": "/headers/authorization", "optional": false, "rule": { - "is": "equal", - "value": "*" + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } } ], @@ -108861,25 +147823,20 @@ ], "allow_query": [], "response": { - "status": 409, + "status": 200, "headers": { - "content-type": "application/xml", "date": { "from": "now" - } + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "utf8", - "data": "\nConditionalRequestConflictA conflicting operation occurred. If using PutObject you can retry the request. If using multipart upload you should initiate another CreateMultipartUpload request and re-upload each part.fixturefixture" + "data": "InvalidPartFixture error" }, "framing": "chunked" } - } - ], - "optional": true - }, - { - "alternatives": [ + }, { "request": [ { @@ -108887,7 +147844,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "POST" } }, { @@ -108895,82 +147852,47 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/write/object.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "YW5vdGhlciBvYmplY3Q=" + "value": "/object-tests/multipart/object.bin" } }, { - "at": "/headers/if-none-match", + "at": "/body_text", "optional": false, "rule": { - "is": "equal", - "value": "*" - } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 409, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" + "is": "xml", + "value": "\"fixture-db71b2c0257c\"1\"fixture-ec2738a0b15a\"2" } }, - "body": { - "encoding": "utf8", - "data": "\nConditionalRequestConflictA conflicting operation occurred. If using PutObject you can retry the request. If using multipart upload you should initiate another CreateMultipartUpload request and re-upload each part.fixturefixture" - }, - "framing": "chunked" - } - } - ], - "optional": true - }, - { - "alternatives": [ - { - "request": [ { - "at": "/method", + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "fixture-upload+/c60fb1e2e00d=" } }, { - "at": "/path", + "at": "/headers/host", "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/write/object.txt" + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" } }, { - "at": "/body_base64", + "at": "/headers/x-amz-s3session-token", "optional": false, "rule": { "is": "equal", - "value": "YW5vdGhlciBvYmplY3Q=" + "value": "fixture-session-token" } }, { - "at": "/headers/if-none-match", + "at": "/headers/authorization", "optional": false, "rule": { - "is": "equal", - "value": "*" + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } } ], @@ -108979,22 +147901,21 @@ ], "allow_query": [], "response": { - "status": 409, + "status": 200, "headers": { - "content-type": "application/xml", "date": { "from": "now" - } + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "utf8", - "data": "\nConditionalRequestConflictA conflicting operation occurred. If using PutObject you can retry the request. If using multipart upload you should initiate another CreateMultipartUpload request and re-upload each part.fixturefixture" + "data": "InvalidPartFixture error" }, "framing": "chunked" } } - ], - "optional": true + ] } ], "expect": [ @@ -109011,7 +147932,7 @@ "optional": false, "rule": { "is": "equal", - "value": 409 + "value": 200 } }, { @@ -109019,27 +147940,34 @@ "optional": false, "rule": { "is": "equal", - "value": "ConditionalRequestConflict" + "value": "InvalidPart" } } ], "refusal": null }, { - "id": "operations/s3/put-metadata-empty-value", - "profile": "s3", + "id": "operations/s3-express/commit", + "profile": "s3-express", "lane": "core", - "purpose": "put metadata empty value", + "purpose": "commit", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "body_base64": "MQ==", - "key": "object-tests/metadata/empty-value.txt", - "metadata": { - "empty": "" - }, - "op": "put" + "key": "object-tests/multipart/object.bin", + "op": "s3.complete_multipart", + "parts": [ + { + "etag": "\"fixture-9aff617fcdf8\"", + "number": 1 + }, + { + "etag": "\"fixture-ec2738a0b15a\"", + "number": 2 + } + ], + "upload_id": "fixture-upload+/c60fb1e2e00d=" }, "exchanges": [ { @@ -109051,7 +147979,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -109059,23 +147987,38 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/metadata/empty-value.txt" + "value": "/" } }, { - "at": "/body_base64", + "at": "/query/session", "optional": false, "rule": { "is": "equal", - "value": "MQ==" + "value": "" } }, { - "at": "/headers/x-amz-meta-empty", + "at": "/headers/host", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "absent" } } ], @@ -109086,69 +148029,20 @@ "response": { "status": 200, "headers": { - "date": { - "from": "now" - }, - "etag": "\"fixture-6c30b210f0a8\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + "content-type": "application/xml" }, "body": { - "encoding": "base64", - "data": "" + "encoding": "utf8", + "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" + }, + "body_time": { + "text": "SESSION_EXPIRATION", + "offset_seconds": 300 } } } ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-6c30b210f0a8\"" - } - }, - { - "at": "/value/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - } - ], - "refusal": null - }, - { - "id": "operations/s3/put-metadata-hyphen-name", - "profile": "s3", - "lane": "core", - "purpose": "put metadata hyphen name", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "body_base64": "MQ==", - "key": "object-tests/metadata/hyphen-name.txt", - "metadata": { - "not-valid": "1" }, - "op": "put" - }, - "exchanges": [ { "alternatives": [ { @@ -109158,31 +148052,55 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "POST" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/object-tests/multipart/object.bin" + } + }, + { + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "1\"fixture-9aff617fcdf8\"2\"fixture-ec2738a0b15a\"" + } + }, + { + "at": "/query/uploadId", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-upload+/c60fb1e2e00d=" } }, { - "at": "/path", + "at": "/headers/host", "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/metadata/hyphen-name.txt" + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" } }, { - "at": "/body_base64", + "at": "/headers/x-amz-s3session-token", "optional": false, "rule": { "is": "equal", - "value": "MQ==" + "value": "fixture-session-token" } }, { - "at": "/headers/x-amz-meta-not-valid", + "at": "/headers/authorization", "optional": false, "rule": { - "is": "equal", - "value": "1" + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } } ], @@ -109196,69 +148114,15 @@ "date": { "from": "now" }, - "etag": "\"fixture-6c30b210f0a8\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "" - } + "encoding": "utf8", + "data": "https://fixture.invalid/fixture/object-tests/multipart/object.binfixtureobject-tests/multipart/object.bin\"fixture-ec4f3b9bcac2\"E0gM19kR9Fk=FULL_OBJECT" + }, + "framing": "chunked" } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-6c30b210f0a8\"" - } - }, - { - "at": "/value/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - } - ], - "refusal": null - }, - { - "id": "operations/s3/put-metadata-names-differ-in-case", - "profile": "s3", - "lane": "core", - "purpose": "S3 matches a metadata name without case. A general-purpose bucket merges two names that differ only in case into one pair, dup: one,two, which does not read back as sent, so refuse the call.", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "body_base64": "MQ==", - "key": "object-tests/metadata/names-differ-in-case.txt", - "metadata": { - "DUP": "two", - "dup": "one" - }, - "op": "put" - }, - "exchanges": [ - { - "alternatives": [ + }, { "request": [ { @@ -109266,7 +148130,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "POST" } }, { @@ -109274,145 +148138,47 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/metadata/names-differ-in-case.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "MQ==" + "value": "/object-tests/multipart/object.bin" } }, { - "at": "/headers/x-amz-meta-dup", + "at": "/body_text", "optional": false, "rule": { - "is": "one_of", - "values": [ - [ - "one", - "two" - ], - [ - "two", - "one" - ] - ] + "is": "xml", + "value": "\"fixture-9aff617fcdf8\"1\"fixture-ec2738a0b15a\"2" } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "date": { - "from": "now" - }, - "etag": "\"fixture-6c30b210f0a8\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, - "body": { - "encoding": "base64", - "data": "" - } - } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "refused" - } - } - ], - "refusal": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "refused" - } - }, - { - "at": "/kind", - "optional": false, - "rule": { - "is": "matches", - "pattern": ".+" - } - }, - { - "at": "/parameter", - "optional": false, - "rule": { - "is": "equal", - "value": "metadata" - } - } - ] - }, - { - "id": "operations/s3/put-metadata-punctuation-name", - "profile": "s3", - "lane": "core", - "purpose": "S3 stores a name that holds any character of an HTTP token, and one that starts with a digit.", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "body_base64": "MQ==", - "key": "object-tests/metadata/punctuation-name.txt", - "metadata": { - "1a!#$%&'*+.^_`|~b": "1" - }, - "op": "put" - }, - "exchanges": [ - { - "alternatives": [ - { - "request": [ { - "at": "/method", + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "fixture-upload+/c60fb1e2e00d=" } }, { - "at": "/path", + "at": "/headers/host", "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/metadata/punctuation-name.txt" + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" } }, { - "at": "/body_base64", + "at": "/headers/x-amz-s3session-token", "optional": false, "rule": { "is": "equal", - "value": "MQ==" + "value": "fixture-session-token" } }, { - "at": "/headers/x-amz-meta-1a!#$%&'*+.^_`|~0b", + "at": "/headers/authorization", "optional": false, "rule": { - "is": "equal", - "value": "1" + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } } ], @@ -109426,13 +148192,13 @@ "date": { "from": "now" }, - "etag": "\"fixture-6c30b210f0a8\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "" - } + "encoding": "utf8", + "data": "https://fixture.invalid/fixture/object-tests/multipart/object.binfixtureobject-tests/multipart/object.bin\"fixture-ec4f3b9bcac2\"E0gM19kR9Fk=FULL_OBJECT" + }, + "framing": "chunked" } } ] @@ -109452,7 +148218,7 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-6c30b210f0a8\"" + "value": "\"fixture-ec4f3b9bcac2\"" } }, { @@ -109470,17 +148236,27 @@ "refusal": null }, { - "id": "operations/s3/put-metadata-replaced", - "profile": "s3", + "id": "operations/s3-express/commit-key-question", + "profile": "s3-express", "lane": "core", - "purpose": "put metadata replaced", + "purpose": "commit, with the key \"question?mark.txt\"", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "body_base64": "Mg==", - "key": "object-tests/metadata/replaced.txt", - "op": "put" + "key": "object-tests/keys/question?mark.txt", + "op": "s3.complete_multipart", + "parts": [ + { + "etag": "\"fixture-9aff617fcdf8\"", + "number": 1 + }, + { + "etag": "\"fixture-ec2738a0b15a\"", + "number": 2 + } + ], + "upload_id": "fixture-upload+/c60fb1e2e00d=" }, "exchanges": [ { @@ -109492,7 +148268,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -109500,15 +148276,38 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/metadata/replaced.txt" + "value": "/" } }, { - "at": "/body_base64", + "at": "/query/session", "optional": false, "rule": { "is": "equal", - "value": "Mg==" + "value": "" + } + }, + { + "at": "/headers/host", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "absent" } } ], @@ -109519,70 +148318,20 @@ "response": { "status": 200, "headers": { - "date": { - "from": "now" - }, - "etag": "\"fixture-ea4c238956b1\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + "content-type": "application/xml" }, "body": { - "encoding": "base64", - "data": "" + "encoding": "utf8", + "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" + }, + "body_time": { + "text": "SESSION_EXPIRATION", + "offset_seconds": 300 } } } ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-ea4c238956b1\"" - } - }, - { - "at": "/value/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - } - ], - "refusal": null - }, - { - "id": "operations/s3/put-metadata", - "profile": "s3", - "lane": "core", - "purpose": "put metadata", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "body_base64": "MQ==", - "key": "object-tests/metadata/object.txt", - "metadata": { - "name": "value", - "second": "2" }, - "op": "put" - }, - "exchanges": [ { "alternatives": [ { @@ -109592,7 +148341,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "POST" } }, { @@ -109600,31 +148349,47 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/metadata/object.txt" + "value": "/object-tests/keys/question?mark.txt" } }, { - "at": "/body_base64", + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "1\"fixture-9aff617fcdf8\"2\"fixture-ec2738a0b15a\"" + } + }, + { + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "MQ==" + "value": "fixture-upload+/c60fb1e2e00d=" } }, { - "at": "/headers/x-amz-meta-name", + "at": "/headers/host", "optional": false, "rule": { "is": "equal", - "value": "value" + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" } }, { - "at": "/headers/x-amz-meta-second", + "at": "/headers/x-amz-s3session-token", "optional": false, "rule": { "is": "equal", - "value": "2" + "value": "fixture-session-token" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } } ], @@ -109638,65 +148403,15 @@ "date": { "from": "now" }, - "etag": "\"fixture-6c30b210f0a8\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "" - } + "encoding": "utf8", + "data": "https://fixture.invalid/fixture/object-tests/keys/question?mark.txtfixtureobject-tests/keys/question?mark.txt\"fixture-ec4f3b9bcac2\"E0gM19kR9Fk=FULL_OBJECT" + }, + "framing": "chunked" } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-6c30b210f0a8\"" - } - }, - { - "at": "/value/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - } - ], - "refusal": null - }, - { - "id": "operations/s3/put-overwrite", - "profile": "s3", - "lane": "core", - "purpose": "put overwrite", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "body_base64": "b3ZlcndyaXR0ZW4=", - "key": "object-tests/write/object.txt", - "op": "put" - }, - "exchanges": [ - { - "alternatives": [ + }, { "request": [ { @@ -109704,7 +148419,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "POST" } }, { @@ -109712,15 +148427,47 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/write/object.txt" + "value": "/object-tests/keys/question?mark.txt" } }, { - "at": "/body_base64", + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "\"fixture-9aff617fcdf8\"1\"fixture-ec2738a0b15a\"2" + } + }, + { + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "b3ZlcndyaXR0ZW4=" + "value": "fixture-upload+/c60fb1e2e00d=" + } + }, + { + "at": "/headers/host", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-session-token" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } } ], @@ -109734,13 +148481,13 @@ "date": { "from": "now" }, - "etag": "\"fixture-a62b555324ac\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "" - } + "encoding": "utf8", + "data": "https://fixture.invalid/fixture/object-tests/keys/question?mark.txtfixtureobject-tests/keys/question?mark.txt\"fixture-ec4f3b9bcac2\"E0gM19kR9Fk=FULL_OBJECT" + }, + "framing": "chunked" } } ] @@ -109760,7 +148507,7 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-a62b555324ac\"" + "value": "\"fixture-ec4f3b9bcac2\"" } }, { @@ -109778,18 +148525,27 @@ "refusal": null }, { - "id": "operations/s3/put-precondition-failed", - "profile": "s3", + "id": "operations/s3-express/commit-key-hash", + "profile": "s3-express", "lane": "core", - "purpose": "put precondition failed", + "purpose": "commit, with the key \"hash#tag.txt\"", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "body_base64": "YW5vdGhlciBvYmplY3Q=", - "if_match": "\"fixture-db71b2c0257c\"", - "key": "object-tests/write/object.txt", - "op": "put" + "key": "object-tests/keys/hash#tag.txt", + "op": "s3.complete_multipart", + "parts": [ + { + "etag": "\"fixture-9aff617fcdf8\"", + "number": 1 + }, + { + "etag": "\"fixture-ec2738a0b15a\"", + "number": 2 + } + ], + "upload_id": "fixture-upload+/c60fb1e2e00d=" }, "exchanges": [ { @@ -109801,7 +148557,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -109809,23 +148565,38 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/write/object.txt" + "value": "/" } }, { - "at": "/body_base64", + "at": "/query/session", "optional": false, "rule": { "is": "equal", - "value": "YW5vdGhlciBvYmplY3Q=" + "value": "" } }, { - "at": "/headers/if-match", + "at": "/headers/host", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-db71b2c0257c\"" + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "absent" } } ], @@ -109834,65 +148605,22 @@ ], "allow_query": [], "response": { - "status": 412, + "status": 200, "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - } + "content-type": "application/xml" }, "body": { "encoding": "utf8", - "data": "\nPreconditionFailedFixture error" + "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" }, - "framing": "chunked" + "body_time": { + "text": "SESSION_EXPIRATION", + "offset_seconds": 300 + } } } ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 412 - } }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "equal", - "value": "PreconditionFailed" - } - } - ], - "refusal": null - }, - { - "id": "operations/s3/put-unauthenticated", - "profile": "s3", - "lane": "core", - "purpose": "Report the service authorization error for this operation; signature acceptance is tested separately.", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "body_base64": "bm90aGluZyBpcyBzdG9yZWQ=", - "key": "object-tests/write/object.txt", - "op": "put" - }, - "exchanges": [ { "alternatives": [ { @@ -109902,7 +148630,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "POST" } }, { @@ -109910,15 +148638,47 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/write/object.txt" + "value": "/object-tests/keys/hash#tag.txt" } }, { - "at": "/body_base64", + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "1\"fixture-9aff617fcdf8\"2\"fixture-ec2738a0b15a\"" + } + }, + { + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "bm90aGluZyBpcyBzdG9yZWQ=" + "value": "fixture-upload+/c60fb1e2e00d=" + } + }, + { + "at": "/headers/host", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-session-token" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } } ], @@ -109927,69 +148687,20 @@ ], "allow_query": [], "response": { - "status": 403, + "status": 200, "headers": { - "content-type": "application/xml", "date": { "from": "now" - } + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "utf8", - "data": "\nInvalidAccessKeyIdFixture error" + "data": "https://fixture.invalid/fixture/object-tests/keys/hash#tag.txtfixtureobject-tests/keys/hash#tag.txt\"fixture-ec4f3b9bcac2\"E0gM19kR9Fk=FULL_OBJECT" }, "framing": "chunked" } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 403 - } - }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "equal", - "value": "InvalidAccessKeyId" - } - } - ], - "refusal": null - }, - { - "id": "operations/s3/stage-after-abort", - "profile": "s3", - "lane": "core", - "purpose": "stage after abort", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "body_base64": "eA==", - "key": "object-tests/multipart/aborted.bin", - "op": "s3.upload_part", - "part_number": 2, - "upload_id": "fixture-upload+/f85cf0cd3a3f=" - }, - "exchanges": [ - { - "alternatives": [ + }, { "request": [ { @@ -109997,7 +148708,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "POST" } }, { @@ -110005,31 +148716,47 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/aborted.bin" + "value": "/object-tests/keys/hash#tag.txt" } }, { - "at": "/body_base64", + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "\"fixture-9aff617fcdf8\"1\"fixture-ec2738a0b15a\"2" + } + }, + { + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "eA==" + "value": "fixture-upload+/c60fb1e2e00d=" } }, { - "at": "/query/partNumber", + "at": "/headers/host", "optional": false, "rule": { "is": "equal", - "value": "2" + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" } }, { - "at": "/query/uploadId", + "at": "/headers/x-amz-s3session-token", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/f85cf0cd3a3f=" + "value": "fixture-session-token" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } } ], @@ -110038,16 +148765,16 @@ ], "allow_query": [], "response": { - "status": 404, + "status": 200, "headers": { - "content-type": "application/xml", "date": { "from": "now" - } + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "utf8", - "data": "\nNoSuchUploadFixture error" + "data": "https://fixture.invalid/fixture/object-tests/keys/hash#tag.txtfixtureobject-tests/keys/hash#tag.txt\"fixture-ec4f3b9bcac2\"E0gM19kR9Fk=FULL_OBJECT" }, "framing": "chunked" } @@ -110061,42 +148788,53 @@ "optional": false, "rule": { "is": "equal", - "value": "error" + "value": "ok" } }, { - "at": "/status", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": 404 + "value": "\"fixture-ec4f3b9bcac2\"" } }, { - "at": "/code", - "optional": false, + "at": "/value/version", + "optional": true, "rule": { - "is": "equal", - "value": "NoSuchUpload" + "is": "one_of", + "values": [ + null, + "" + ] } } ], "refusal": null }, { - "id": "operations/s3/stage-last", - "profile": "s3", + "id": "operations/s3-express/commit-key-percent", + "profile": "s3-express", "lane": "core", - "purpose": "stage last", + "purpose": "commit, with the key \"percent%20.txt\"", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "body_base64": "c2Vjb25k", - "key": "object-tests/multipart/object.bin", - "op": "s3.upload_part", - "part_number": 2, - "upload_id": "fixture-upload+/276ca18046f9=" + "key": "object-tests/keys/percent%20.txt", + "op": "s3.complete_multipart", + "parts": [ + { + "etag": "\"fixture-9aff617fcdf8\"", + "number": 1 + }, + { + "etag": "\"fixture-ec2738a0b15a\"", + "number": 2 + } + ], + "upload_id": "fixture-upload+/c60fb1e2e00d=" }, "exchanges": [ { @@ -110108,7 +148846,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -110116,31 +148854,38 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/object.bin" + "value": "/" } }, { - "at": "/body_base64", + "at": "/query/session", "optional": false, "rule": { "is": "equal", - "value": "c2Vjb25k" + "value": "" } }, { - "at": "/query/partNumber", + "at": "/headers/host", "optional": false, "rule": { "is": "equal", - "value": "2" + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" } }, { - "at": "/query/uploadId", + "at": "/headers/authorization", "optional": false, "rule": { - "is": "equal", - "value": "fixture-upload+/276ca18046f9=" + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "absent" } } ], @@ -110151,57 +148896,20 @@ "response": { "status": 200, "headers": { - "date": { - "from": "now" - }, - "etag": "\"fixture-32b70ae425ac\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + "content-type": "application/xml" }, "body": { - "encoding": "base64", - "data": "" + "encoding": "utf8", + "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" + }, + "body_time": { + "text": "SESSION_EXPIRATION", + "offset_seconds": 300 } } } ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-32b70ae425ac\"" - } - } - ], - "refusal": null - }, - { - "id": "operations/s3/stage-part-10000", - "profile": "s3", - "lane": "core", - "purpose": "Part numbers run from 1 to 10,000. Stage part 10,000; only 0 and 10,001 may be refused.", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "body_base64": "c2Vjb25k", - "key": "object-tests/multipart/object.bin", - "op": "s3.upload_part", - "part_number": 10000, - "upload_id": "fixture-upload+/276ca18046f9=" - }, - "exchanges": [ { "alternatives": [ { @@ -110211,7 +148919,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "POST" } }, { @@ -110219,31 +148927,47 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/object.bin" + "value": "/object-tests/keys/percent%20.txt" } }, { - "at": "/body_base64", + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "1\"fixture-9aff617fcdf8\"2\"fixture-ec2738a0b15a\"" + } + }, + { + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "c2Vjb25k" + "value": "fixture-upload+/c60fb1e2e00d=" } }, { - "at": "/query/partNumber", + "at": "/headers/host", "optional": false, "rule": { "is": "equal", - "value": "10000" + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" } }, { - "at": "/query/uploadId", + "at": "/headers/x-amz-s3session-token", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/276ca18046f9=" + "value": "fixture-session-token" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } } ], @@ -110257,56 +148981,15 @@ "date": { "from": "now" }, - "etag": "\"fixture-32b70ae425ac\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "" - } + "encoding": "utf8", + "data": "https://fixture.invalid/fixture/object-tests/keys/percent%20.txtfixtureobject-tests/keys/percent%20.txt\"fixture-ec4f3b9bcac2\"E0gM19kR9Fk=FULL_OBJECT" + }, + "framing": "chunked" } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-32b70ae425ac\"" - } - } - ], - "refusal": null - }, - { - "id": "operations/s3/stage-part-10001", - "profile": "s3", - "lane": "core", - "purpose": "stage part 10001", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "body_base64": "eA==", - "key": "object-tests/multipart/object.bin", - "op": "s3.upload_part", - "part_number": 10001, - "upload_id": "fixture-upload+/276ca18046f9=" - }, - "exchanges": [ - { - "alternatives": [ + }, { "request": [ { @@ -110314,7 +148997,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "POST" } }, { @@ -110322,31 +149005,47 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/object.bin" + "value": "/object-tests/keys/percent%20.txt" } }, { - "at": "/body_base64", + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "\"fixture-9aff617fcdf8\"1\"fixture-ec2738a0b15a\"2" + } + }, + { + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "eA==" + "value": "fixture-upload+/c60fb1e2e00d=" } }, { - "at": "/query/partNumber", + "at": "/headers/host", "optional": false, "rule": { "is": "equal", - "value": "10001" + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" } }, { - "at": "/query/uploadId", + "at": "/headers/x-amz-s3session-token", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/276ca18046f9=" + "value": "fixture-session-token" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } } ], @@ -110355,16 +149054,16 @@ ], "allow_query": [], "response": { - "status": 400, + "status": 200, "headers": { - "content-type": "application/xml", "date": { "from": "now" - } + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "utf8", - "data": "\nInvalidArgumentFixture error" + "data": "https://fixture.invalid/fixture/object-tests/keys/percent%20.txtfixtureobject-tests/keys/percent%20.txt\"fixture-ec4f3b9bcac2\"E0gM19kR9Fk=FULL_OBJECT" }, "framing": "chunked" } @@ -110378,83 +149077,53 @@ "optional": false, "rule": { "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 400 - } - }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "equal", - "value": "InvalidArgument" - } - } - ], - "refusal": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "refused" - } - }, - { - "at": "/kind", - "optional": false, - "rule": { - "is": "matches", - "pattern": ".+" + "value": "ok" } }, { - "at": "/parameter", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": "part_number" - } - }, - { - "at": "/status", - "optional": true, - "rule": { - "is": "equal", - "value": 400 + "value": "\"fixture-ec4f3b9bcac2\"" } }, { - "at": "/code", + "at": "/value/version", "optional": true, "rule": { - "is": "equal", - "value": "InvalidArgument" + "is": "one_of", + "values": [ + null, + "" + ] } } - ] + ], + "refusal": null }, { - "id": "operations/s3/stage-part-zero", - "profile": "s3", + "id": "operations/s3-express/commit-key-plus", + "profile": "s3-express", "lane": "core", - "purpose": "stage part zero", + "purpose": "commit, with the key \"plus+plus.txt\"", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "body_base64": "eA==", - "key": "object-tests/multipart/object.bin", - "op": "s3.upload_part", - "part_number": 0, - "upload_id": "fixture-upload+/276ca18046f9=" + "key": "object-tests/keys/plus+plus.txt", + "op": "s3.complete_multipart", + "parts": [ + { + "etag": "\"fixture-9aff617fcdf8\"", + "number": 1 + }, + { + "etag": "\"fixture-ec2738a0b15a\"", + "number": 2 + } + ], + "upload_id": "fixture-upload+/c60fb1e2e00d=" }, "exchanges": [ { @@ -110466,7 +149135,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -110474,31 +149143,38 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/object.bin" + "value": "/" } }, { - "at": "/body_base64", + "at": "/query/session", "optional": false, "rule": { "is": "equal", - "value": "eA==" + "value": "" } }, { - "at": "/query/partNumber", + "at": "/headers/host", "optional": false, "rule": { "is": "equal", - "value": "0" + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" } }, { - "at": "/query/uploadId", + "at": "/headers/authorization", "optional": false, "rule": { - "is": "equal", - "value": "fixture-upload+/276ca18046f9=" + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "absent" } } ], @@ -110507,108 +149183,22 @@ ], "allow_query": [], "response": { - "status": 400, + "status": 200, "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - } + "content-type": "application/xml" }, "body": { "encoding": "utf8", - "data": "\nInvalidArgumentFixture error" + "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" }, - "framing": "chunked" + "body_time": { + "text": "SESSION_EXPIRATION", + "offset_seconds": 300 + } } } ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 400 - } - }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "equal", - "value": "InvalidArgument" - } - } - ], - "refusal": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "refused" - } - }, - { - "at": "/kind", - "optional": false, - "rule": { - "is": "matches", - "pattern": ".+" - } - }, - { - "at": "/parameter", - "optional": false, - "rule": { - "is": "equal", - "value": "part_number" - } - }, - { - "at": "/status", - "optional": true, - "rule": { - "is": "equal", - "value": 400 - } }, - { - "at": "/code", - "optional": true, - "rule": { - "is": "equal", - "value": "InvalidArgument" - } - } - ] - }, - { - "id": "operations/s3/stage-unknown-upload", - "profile": "s3", - "lane": "core", - "purpose": "stage unknown upload", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "body_base64": "eA==", - "key": "object-tests/multipart/object.bin", - "op": "s3.upload_part", - "part_number": 1, - "upload_id": "fixture-upload+/4d0d5ccc4993=" - }, - "exchanges": [ { "alternatives": [ { @@ -110618,7 +149208,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "POST" } }, { @@ -110626,31 +149216,47 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/object.bin" + "value": "/object-tests/keys/plus+plus.txt" } }, { - "at": "/body_base64", + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "1\"fixture-9aff617fcdf8\"2\"fixture-ec2738a0b15a\"" + } + }, + { + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "eA==" + "value": "fixture-upload+/c60fb1e2e00d=" } }, { - "at": "/query/partNumber", + "at": "/headers/host", "optional": false, "rule": { "is": "equal", - "value": "1" + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" } }, { - "at": "/query/uploadId", + "at": "/headers/x-amz-s3session-token", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/4d0d5ccc4993=" + "value": "fixture-session-token" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } } ], @@ -110659,16 +149265,94 @@ ], "allow_query": [], "response": { - "status": 404, + "status": 200, "headers": { - "content-type": "application/xml", "date": { "from": "now" + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "utf8", + "data": "https://fixture.invalid/fixture/object-tests/keys/plus+plus.txtfixtureobject-tests/keys/plus+plus.txt\"fixture-ec4f3b9bcac2\"E0gM19kR9Fk=FULL_OBJECT" + }, + "framing": "chunked" + } + }, + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "POST" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/object-tests/keys/plus+plus.txt" + } + }, + { + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "\"fixture-9aff617fcdf8\"1\"fixture-ec2738a0b15a\"2" + } + }, + { + "at": "/query/uploadId", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-upload+/c60fb1e2e00d=" + } + }, + { + "at": "/headers/host", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-session-token" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "date": { + "from": "now" + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "utf8", - "data": "\nNoSuchUploadFixture error" + "data": "https://fixture.invalid/fixture/object-tests/keys/plus+plus.txtfixtureobject-tests/keys/plus+plus.txt\"fixture-ec4f3b9bcac2\"E0gM19kR9Fk=FULL_OBJECT" }, "framing": "chunked" } @@ -110682,42 +149366,53 @@ "optional": false, "rule": { "is": "equal", - "value": "error" + "value": "ok" } }, { - "at": "/status", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": 404 + "value": "\"fixture-ec4f3b9bcac2\"" } }, { - "at": "/code", - "optional": false, + "at": "/value/version", + "optional": true, "rule": { - "is": "equal", - "value": "NoSuchUpload" + "is": "one_of", + "values": [ + null, + "" + ] } } ], "refusal": null }, { - "id": "operations/s3/stage", - "profile": "s3", + "id": "operations/s3-express/commit-key-space", + "profile": "s3-express", "lane": "core", - "purpose": "stage", + "purpose": "commit, with the key \"space name.txt\"", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "body_base64": "cGFydA==", - "key": "object-tests/multipart/object.bin", - "op": "s3.upload_part", - "part_number": 1, - "upload_id": "fixture-upload+/276ca18046f9=" + "key": "object-tests/keys/space name.txt", + "op": "s3.complete_multipart", + "parts": [ + { + "etag": "\"fixture-9aff617fcdf8\"", + "number": 1 + }, + { + "etag": "\"fixture-ec2738a0b15a\"", + "number": 2 + } + ], + "upload_id": "fixture-upload+/c60fb1e2e00d=" }, "exchanges": [ { @@ -110729,7 +149424,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -110737,31 +149432,38 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/object.bin" + "value": "/" } }, { - "at": "/body_base64", + "at": "/query/session", "optional": false, "rule": { "is": "equal", - "value": "cGFydA==" + "value": "" } }, { - "at": "/query/partNumber", + "at": "/headers/host", "optional": false, "rule": { "is": "equal", - "value": "1" + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" } }, { - "at": "/query/uploadId", + "at": "/headers/authorization", "optional": false, "rule": { - "is": "equal", - "value": "fixture-upload+/276ca18046f9=" + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "absent" } } ], @@ -110772,57 +149474,20 @@ "response": { "status": 200, "headers": { - "date": { - "from": "now" - }, - "etag": "\"fixture-6d60d5bbaa47\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + "content-type": "application/xml" }, "body": { - "encoding": "base64", - "data": "" + "encoding": "utf8", + "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" + }, + "body_time": { + "text": "SESSION_EXPIRATION", + "offset_seconds": 300 } } } ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-6d60d5bbaa47\"" - } - } - ], - "refusal": null - }, - { - "id": "operations/s3/stage-key-question", - "profile": "s3", - "lane": "core", - "purpose": "stage, with the key \"question?mark.txt\"", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "body_base64": "cGFydA==", - "key": "object-tests/keys/question?mark.txt", - "op": "s3.upload_part", - "part_number": 1, - "upload_id": "fixture-upload+/276ca18046f9=" - }, - "exchanges": [ { "alternatives": [ { @@ -110832,7 +149497,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "POST" } }, { @@ -110840,31 +149505,47 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/question?mark.txt" + "value": "/object-tests/keys/space name.txt" } }, { - "at": "/body_base64", + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "1\"fixture-9aff617fcdf8\"2\"fixture-ec2738a0b15a\"" + } + }, + { + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "cGFydA==" + "value": "fixture-upload+/c60fb1e2e00d=" } }, { - "at": "/query/partNumber", + "at": "/headers/host", "optional": false, "rule": { "is": "equal", - "value": "1" + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" } }, { - "at": "/query/uploadId", + "at": "/headers/x-amz-s3session-token", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/276ca18046f9=" + "value": "fixture-session-token" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } } ], @@ -110878,56 +149559,15 @@ "date": { "from": "now" }, - "etag": "\"fixture-6d60d5bbaa47\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "" - } + "encoding": "utf8", + "data": "https://fixture.invalid/fixture/object-tests/keys/space name.txtfixtureobject-tests/keys/space name.txt\"fixture-ec4f3b9bcac2\"E0gM19kR9Fk=FULL_OBJECT" + }, + "framing": "chunked" } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-6d60d5bbaa47\"" - } - } - ], - "refusal": null - }, - { - "id": "operations/s3/stage-key-hash", - "profile": "s3", - "lane": "core", - "purpose": "stage, with the key \"hash#tag.txt\"", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "body_base64": "cGFydA==", - "key": "object-tests/keys/hash#tag.txt", - "op": "s3.upload_part", - "part_number": 1, - "upload_id": "fixture-upload+/276ca18046f9=" - }, - "exchanges": [ - { - "alternatives": [ + }, { "request": [ { @@ -110935,7 +149575,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "POST" } }, { @@ -110943,31 +149583,47 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/hash#tag.txt" + "value": "/object-tests/keys/space name.txt" } }, { - "at": "/body_base64", + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "\"fixture-9aff617fcdf8\"1\"fixture-ec2738a0b15a\"2" + } + }, + { + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "cGFydA==" + "value": "fixture-upload+/c60fb1e2e00d=" } }, { - "at": "/query/partNumber", + "at": "/headers/host", "optional": false, "rule": { "is": "equal", - "value": "1" + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" } }, { - "at": "/query/uploadId", + "at": "/headers/x-amz-s3session-token", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/276ca18046f9=" + "value": "fixture-session-token" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } } ], @@ -110981,13 +149637,13 @@ "date": { "from": "now" }, - "etag": "\"fixture-6d60d5bbaa47\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "" - } + "encoding": "utf8", + "data": "https://fixture.invalid/fixture/object-tests/keys/space name.txtfixtureobject-tests/keys/space name.txt\"fixture-ec4f3b9bcac2\"E0gM19kR9Fk=FULL_OBJECT" + }, + "framing": "chunked" } } ] @@ -111007,26 +149663,45 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-6d60d5bbaa47\"" + "value": "\"fixture-ec4f3b9bcac2\"" + } + }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] } } ], "refusal": null }, { - "id": "operations/s3/stage-key-percent", - "profile": "s3", + "id": "operations/s3-express/commit-key-non-ascii", + "profile": "s3-express", "lane": "core", - "purpose": "stage, with the key \"percent%20.txt\"", + "purpose": "commit, with the key \"café/雪.txt\"", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "body_base64": "cGFydA==", - "key": "object-tests/keys/percent%20.txt", - "op": "s3.upload_part", - "part_number": 1, - "upload_id": "fixture-upload+/276ca18046f9=" + "key": "object-tests/keys/café/雪.txt", + "op": "s3.complete_multipart", + "parts": [ + { + "etag": "\"fixture-9aff617fcdf8\"", + "number": 1 + }, + { + "etag": "\"fixture-ec2738a0b15a\"", + "number": 2 + } + ], + "upload_id": "fixture-upload+/c60fb1e2e00d=" }, "exchanges": [ { @@ -111038,7 +149713,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -111046,31 +149721,38 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/percent%20.txt" + "value": "/" } }, { - "at": "/body_base64", + "at": "/query/session", "optional": false, "rule": { "is": "equal", - "value": "cGFydA==" + "value": "" } }, { - "at": "/query/partNumber", + "at": "/headers/host", "optional": false, "rule": { "is": "equal", - "value": "1" + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" } }, { - "at": "/query/uploadId", + "at": "/headers/authorization", "optional": false, "rule": { - "is": "equal", - "value": "fixture-upload+/276ca18046f9=" + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "absent" } } ], @@ -111081,57 +149763,20 @@ "response": { "status": 200, "headers": { - "date": { - "from": "now" - }, - "etag": "\"fixture-6d60d5bbaa47\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + "content-type": "application/xml" }, "body": { - "encoding": "base64", - "data": "" + "encoding": "utf8", + "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" + }, + "body_time": { + "text": "SESSION_EXPIRATION", + "offset_seconds": 300 } } } ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-6d60d5bbaa47\"" - } - } - ], - "refusal": null - }, - { - "id": "operations/s3/stage-key-plus", - "profile": "s3", - "lane": "core", - "purpose": "stage, with the key \"plus+plus.txt\"", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "body_base64": "cGFydA==", - "key": "object-tests/keys/plus+plus.txt", - "op": "s3.upload_part", - "part_number": 1, - "upload_id": "fixture-upload+/276ca18046f9=" - }, - "exchanges": [ { "alternatives": [ { @@ -111141,7 +149786,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "POST" } }, { @@ -111149,31 +149794,47 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/plus+plus.txt" + "value": "/object-tests/keys/café/雪.txt" } }, { - "at": "/body_base64", + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "1\"fixture-9aff617fcdf8\"2\"fixture-ec2738a0b15a\"" + } + }, + { + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "cGFydA==" + "value": "fixture-upload+/c60fb1e2e00d=" } }, { - "at": "/query/partNumber", + "at": "/headers/host", "optional": false, "rule": { "is": "equal", - "value": "1" + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" } }, { - "at": "/query/uploadId", + "at": "/headers/x-amz-s3session-token", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/276ca18046f9=" + "value": "fixture-session-token" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } } ], @@ -111187,56 +149848,15 @@ "date": { "from": "now" }, - "etag": "\"fixture-6d60d5bbaa47\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "" - } + "encoding": "utf8", + "data": "https://fixture.invalid/fixture/object-tests/keys/café/雪.txtfixtureobject-tests/keys/café/雪.txt\"fixture-ec4f3b9bcac2\"E0gM19kR9Fk=FULL_OBJECT" + }, + "framing": "chunked" } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-6d60d5bbaa47\"" - } - } - ], - "refusal": null - }, - { - "id": "operations/s3/stage-key-space", - "profile": "s3", - "lane": "core", - "purpose": "stage, with the key \"space name.txt\"", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "body_base64": "cGFydA==", - "key": "object-tests/keys/space name.txt", - "op": "s3.upload_part", - "part_number": 1, - "upload_id": "fixture-upload+/276ca18046f9=" - }, - "exchanges": [ - { - "alternatives": [ + }, { "request": [ { @@ -111244,7 +149864,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "POST" } }, { @@ -111252,31 +149872,47 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/space name.txt" + "value": "/object-tests/keys/café/雪.txt" } }, { - "at": "/body_base64", + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "\"fixture-9aff617fcdf8\"1\"fixture-ec2738a0b15a\"2" + } + }, + { + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "cGFydA==" + "value": "fixture-upload+/c60fb1e2e00d=" } }, { - "at": "/query/partNumber", + "at": "/headers/host", "optional": false, "rule": { "is": "equal", - "value": "1" + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" } }, { - "at": "/query/uploadId", + "at": "/headers/x-amz-s3session-token", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/276ca18046f9=" + "value": "fixture-session-token" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } } ], @@ -111290,13 +149926,13 @@ "date": { "from": "now" }, - "etag": "\"fixture-6d60d5bbaa47\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "" - } + "encoding": "utf8", + "data": "https://fixture.invalid/fixture/object-tests/keys/café/雪.txtfixtureobject-tests/keys/café/雪.txt\"fixture-ec4f3b9bcac2\"E0gM19kR9Fk=FULL_OBJECT" + }, + "framing": "chunked" } } ] @@ -111316,26 +149952,45 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-6d60d5bbaa47\"" + "value": "\"fixture-ec4f3b9bcac2\"" + } + }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] } } ], "refusal": null }, { - "id": "operations/s3/stage-key-non-ascii", - "profile": "s3", + "id": "operations/s3-express/commit-key-double-slash", + "profile": "s3-express", "lane": "core", - "purpose": "stage, with the key \"café/雪.txt\"", + "purpose": "commit, with the key \"double//slash.txt\"", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "body_base64": "cGFydA==", - "key": "object-tests/keys/café/雪.txt", - "op": "s3.upload_part", - "part_number": 1, - "upload_id": "fixture-upload+/276ca18046f9=" + "key": "object-tests/keys/double//slash.txt", + "op": "s3.complete_multipart", + "parts": [ + { + "etag": "\"fixture-9aff617fcdf8\"", + "number": 1 + }, + { + "etag": "\"fixture-ec2738a0b15a\"", + "number": 2 + } + ], + "upload_id": "fixture-upload+/c60fb1e2e00d=" }, "exchanges": [ { @@ -111347,7 +150002,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -111355,31 +150010,38 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/café/雪.txt" + "value": "/" } }, { - "at": "/body_base64", + "at": "/query/session", "optional": false, "rule": { "is": "equal", - "value": "cGFydA==" + "value": "" } }, { - "at": "/query/partNumber", + "at": "/headers/host", "optional": false, "rule": { "is": "equal", - "value": "1" + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" } }, { - "at": "/query/uploadId", + "at": "/headers/authorization", "optional": false, "rule": { - "is": "equal", - "value": "fixture-upload+/276ca18046f9=" + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "absent" } } ], @@ -111390,57 +150052,20 @@ "response": { "status": 200, "headers": { - "date": { - "from": "now" - }, - "etag": "\"fixture-6d60d5bbaa47\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + "content-type": "application/xml" }, "body": { - "encoding": "base64", - "data": "" + "encoding": "utf8", + "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" + }, + "body_time": { + "text": "SESSION_EXPIRATION", + "offset_seconds": 300 } } } ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-6d60d5bbaa47\"" - } - } - ], - "refusal": null - }, - { - "id": "operations/s3/stage-key-double-slash", - "profile": "s3", - "lane": "core", - "purpose": "stage, with the key \"double//slash.txt\"", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "body_base64": "cGFydA==", - "key": "object-tests/keys/double//slash.txt", - "op": "s3.upload_part", - "part_number": 1, - "upload_id": "fixture-upload+/276ca18046f9=" - }, - "exchanges": [ { "alternatives": [ { @@ -111450,7 +150075,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "POST" } }, { @@ -111458,31 +150083,47 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/double//slash.txt" + "value": "/object-tests/keys/double//slash.txt" } }, { - "at": "/body_base64", + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "1\"fixture-9aff617fcdf8\"2\"fixture-ec2738a0b15a\"" + } + }, + { + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "cGFydA==" + "value": "fixture-upload+/c60fb1e2e00d=" } }, { - "at": "/query/partNumber", + "at": "/headers/host", "optional": false, "rule": { "is": "equal", - "value": "1" + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" } }, { - "at": "/query/uploadId", + "at": "/headers/x-amz-s3session-token", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/276ca18046f9=" + "value": "fixture-session-token" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } } ], @@ -111496,56 +150137,15 @@ "date": { "from": "now" }, - "etag": "\"fixture-6d60d5bbaa47\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "" - } + "encoding": "utf8", + "data": "https://fixture.invalid/fixture/object-tests/keys/double//slash.txtfixtureobject-tests/keys/double//slash.txt\"fixture-ec4f3b9bcac2\"E0gM19kR9Fk=FULL_OBJECT" + }, + "framing": "chunked" } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-6d60d5bbaa47\"" - } - } - ], - "refusal": null - }, - { - "id": "operations/s3/stage-key-trailing-slash", - "profile": "s3", - "lane": "core", - "purpose": "stage, with the key \"trailing-slash/\"", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "body_base64": "cGFydA==", - "key": "object-tests/keys/trailing-slash/", - "op": "s3.upload_part", - "part_number": 1, - "upload_id": "fixture-upload+/276ca18046f9=" - }, - "exchanges": [ - { - "alternatives": [ + }, { "request": [ { @@ -111553,7 +150153,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "POST" } }, { @@ -111561,31 +150161,47 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/keys/trailing-slash/" + "value": "/object-tests/keys/double//slash.txt" } }, { - "at": "/body_base64", + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "\"fixture-9aff617fcdf8\"1\"fixture-ec2738a0b15a\"2" + } + }, + { + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "cGFydA==" + "value": "fixture-upload+/c60fb1e2e00d=" } }, { - "at": "/query/partNumber", + "at": "/headers/host", "optional": false, "rule": { "is": "equal", - "value": "1" + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" } }, { - "at": "/query/uploadId", + "at": "/headers/x-amz-s3session-token", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/276ca18046f9=" + "value": "fixture-session-token" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } } ], @@ -111599,13 +150215,13 @@ "date": { "from": "now" }, - "etag": "\"fixture-6d60d5bbaa47\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "" - } + "encoding": "utf8", + "data": "https://fixture.invalid/fixture/object-tests/keys/double//slash.txtfixtureobject-tests/keys/double//slash.txt\"fixture-ec4f3b9bcac2\"E0gM19kR9Fk=FULL_OBJECT" + }, + "framing": "chunked" } } ] @@ -111625,26 +150241,45 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-6d60d5bbaa47\"" + "value": "\"fixture-ec4f3b9bcac2\"" + } + }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] } } ], "refusal": null }, { - "id": "operations/s3/stage-empty-part", - "profile": "s3", + "id": "operations/s3-express/commit-key-trailing-slash", + "profile": "s3-express", "lane": "core", - "purpose": "Stage an empty part, which S3 takes", + "purpose": "commit, with the key \"trailing-slash/\"", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "body_base64": "", - "key": "object-tests/multipart/object.bin", - "op": "s3.upload_part", - "part_number": 1, - "upload_id": "fixture-upload+/276ca18046f9=" + "key": "object-tests/keys/trailing-slash/", + "op": "s3.complete_multipart", + "parts": [ + { + "etag": "\"fixture-9aff617fcdf8\"", + "number": 1 + }, + { + "etag": "\"fixture-ec2738a0b15a\"", + "number": 2 + } + ], + "upload_id": "fixture-upload+/c60fb1e2e00d=" }, "exchanges": [ { @@ -111656,7 +150291,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -111664,11 +150299,11 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/object.bin" + "value": "/" } }, { - "at": "/body_base64", + "at": "/query/session", "optional": false, "rule": { "is": "equal", @@ -111676,19 +150311,26 @@ } }, { - "at": "/query/partNumber", + "at": "/headers/host", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + } + }, + { + "at": "/headers/authorization", "optional": false, "rule": { - "is": "equal", - "value": "1" + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } }, { - "at": "/query/uploadId", + "at": "/headers/x-amz-s3session-token", "optional": false, "rule": { - "is": "equal", - "value": "fixture-upload+/276ca18046f9=" + "is": "absent" } } ], @@ -111699,55 +150341,20 @@ "response": { "status": 200, "headers": { - "date": { - "from": "now" - }, - "etag": "\"fixture-6d60d5bbaa47\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + "content-type": "application/xml" }, "body": { - "encoding": "base64", - "data": "" + "encoding": "utf8", + "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" + }, + "body_time": { + "text": "SESSION_EXPIRATION", + "offset_seconds": 300 } } } ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-6d60d5bbaa47\"" - } - } - ], - "refusal": null - }, - { - "id": "operations/s3/staged-after-abort", - "profile": "s3", - "lane": "core", - "purpose": "staged after abort", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "key": "object-tests/multipart/aborted.bin", - "op": "s3.list_parts", - "upload_id": "fixture-upload+/f85cf0cd3a3f=" - }, - "exchanges": [ { "alternatives": [ { @@ -111757,7 +150364,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "POST" } }, { @@ -111765,15 +150372,15 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/aborted.bin" + "value": "/object-tests/keys/trailing-slash/" } }, { - "at": "/body_base64", + "at": "/body_text", "optional": false, "rule": { - "is": "equal", - "value": "" + "is": "xml", + "value": "1\"fixture-9aff617fcdf8\"2\"fixture-ec2738a0b15a\"" } }, { @@ -111781,7 +150388,31 @@ "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/f85cf0cd3a3f=" + "value": "fixture-upload+/c60fb1e2e00d=" + } + }, + { + "at": "/headers/host", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-session-token" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } } ], @@ -111790,67 +150421,20 @@ ], "allow_query": [], "response": { - "status": 404, + "status": 200, "headers": { - "content-type": "application/xml", "date": { "from": "now" - } + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "utf8", - "data": "\nNoSuchUploadFixture error" + "data": "https://fixture.invalid/fixture/object-tests/keys/trailing-slash/fixtureobject-tests/keys/trailing-slash/\"fixture-ec4f3b9bcac2\"E0gM19kR9Fk=FULL_OBJECT" }, "framing": "chunked" } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 404 - } - }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "equal", - "value": "NoSuchUpload" - } - } - ], - "refusal": null - }, - { - "id": "operations/s3/staged-replacement", - "profile": "s3", - "lane": "core", - "purpose": "staged replacement", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "key": "object-tests/multipart/replaced.bin", - "op": "s3.list_parts", - "upload_id": "fixture-upload+/6ba3c5e480a2=" - }, - "exchanges": [ - { - "alternatives": [ + }, { "request": [ { @@ -111858,7 +150442,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "POST" } }, { @@ -111866,15 +150450,15 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/replaced.bin" + "value": "/object-tests/keys/trailing-slash/" } }, { - "at": "/body_base64", + "at": "/body_text", "optional": false, "rule": { - "is": "equal", - "value": "" + "is": "xml", + "value": "\"fixture-9aff617fcdf8\"1\"fixture-ec2738a0b15a\"2" } }, { @@ -111882,7 +150466,31 @@ "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/6ba3c5e480a2=" + "value": "fixture-upload+/c60fb1e2e00d=" + } + }, + { + "at": "/headers/host", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-session-token" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } } ], @@ -111893,7 +150501,6 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", "date": { "from": "now" }, @@ -111901,7 +150508,7 @@ }, "body": { "encoding": "utf8", - "data": "\nfixtureobject-tests/multipart/replaced.binfixture-upload+/6ba3c5e480a2=fixture-ownerfixture-ownerfixture-ownerSTANDARD021000false12024-01-01T00:00:00.000Z"fixture-5945c592bad7"122024-01-01T00:00:00.000Z"fixture-3c6b3668db13"6" + "data": "https://fixture.invalid/fixture/object-tests/keys/trailing-slash/fixtureobject-tests/keys/trailing-slash/\"fixture-ec4f3b9bcac2\"E0gM19kR9Fk=FULL_OBJECT" }, "framing": "chunked" } @@ -111919,76 +150526,53 @@ } }, { - "at": "/value/parts/0/number", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/parts/0/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/parts/0/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-5945c592bad7\"" - } - }, - { - "at": "/value/parts/1/number", - "optional": false, - "rule": { - "is": "equal", - "value": 2 - } - }, - { - "at": "/value/parts/1/size", - "optional": false, - "rule": { - "is": "equal", - "value": 6 - } - }, - { - "at": "/value/parts/1/etag", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-3c6b3668db13\"" + "value": "\"fixture-ec4f3b9bcac2\"" } }, { - "at": "/value/parts", - "optional": false, + "at": "/value/version", + "optional": true, "rule": { - "is": "array_length", - "value": 2 + "is": "one_of", + "values": [ + null, + "" + ] } } ], "refusal": null }, { - "id": "operations/s3/staged-unknown-upload", - "profile": "s3", + "id": "operations/s3-express/commit-200-internal-error", + "profile": "s3-express", "lane": "core", - "purpose": "staged unknown upload", + "purpose": "Report a completion answered 200 with an InternalError in the body as an error, never as a success. A client may retry up to 5 times first, and need not retry", "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + "https://repost.aws/knowledge-center/s3-resolve-200-internalerror", + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html", + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html" ], + "origin": "transient", + "derived_from": "operations/s3-express/commit", "call": { "key": "object-tests/multipart/object.bin", - "op": "s3.list_parts", - "upload_id": "fixture-upload+/4d0d5ccc4993=" + "op": "s3.complete_multipart", + "parts": [ + { + "etag": "\"fixture-9aff617fcdf8\"", + "number": 1 + }, + { + "etag": "\"fixture-ec2738a0b15a\"", + "number": 2 + } + ], + "upload_id": "fixture-upload+/c60fb1e2e00d=" }, "exchanges": [ { @@ -112008,11 +150592,11 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/object.bin" + "value": "/" } }, { - "at": "/body_base64", + "at": "/query/session", "optional": false, "rule": { "is": "equal", @@ -112020,11 +150604,26 @@ } }, { - "at": "/query/uploadId", + "at": "/headers/host", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/4d0d5ccc4993=" + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "absent" } } ], @@ -112033,65 +150632,22 @@ ], "allow_query": [], "response": { - "status": 404, + "status": 200, "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - } + "content-type": "application/xml" }, "body": { "encoding": "utf8", - "data": "\nNoSuchUploadFixture error" + "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" }, - "framing": "chunked" + "body_time": { + "text": "SESSION_EXPIRATION", + "offset_seconds": 300 + } } } ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 404 - } }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "equal", - "value": "NoSuchUpload" - } - } - ], - "refusal": null - }, - { - "id": "operations/s3/staged", - "profile": "s3", - "lane": "core", - "purpose": "staged", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "key": "object-tests/multipart/object.bin", - "op": "s3.list_parts", - "upload_id": "fixture-upload+/276ca18046f9=" - }, - "exchanges": [ { "alternatives": [ { @@ -112101,7 +150657,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "POST" } }, { @@ -112109,15 +150665,15 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/object.bin" + "value": "/object-tests/multipart/object.bin" } }, { - "at": "/body_base64", + "at": "/body_text", "optional": false, "rule": { - "is": "equal", - "value": "" + "is": "xml", + "value": "1\"fixture-9aff617fcdf8\"2\"fixture-ec2738a0b15a\"" } }, { @@ -112125,7 +150681,31 @@ "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/276ca18046f9=" + "value": "fixture-upload+/c60fb1e2e00d=" + } + }, + { + "at": "/headers/host", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-session-token" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } } ], @@ -112139,102 +150719,15 @@ "content-type": "application/xml", "date": { "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { "encoding": "utf8", - "data": "\nfixtureobject-tests/multipart/object.binfixture-upload+/276ca18046f9=fixture-ownerfixture-ownerfixture-ownerSTANDARD021000false12024-01-01T00:00:00.000Z"fixture-6d60d5bbaa47"524288022024-01-01T00:00:00.000Z"fixture-32b70ae425ac"6" + "data": "\nInternalErrorWe encountered an internal error. Please try again.fixturefixture" }, "framing": "chunked" } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/parts/0/number", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/parts/0/size", - "optional": false, - "rule": { - "is": "equal", - "value": 5242880 - } - }, - { - "at": "/value/parts/0/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-6d60d5bbaa47\"" - } - }, - { - "at": "/value/parts/1/number", - "optional": false, - "rule": { - "is": "equal", - "value": 2 - } - }, - { - "at": "/value/parts/1/size", - "optional": false, - "rule": { - "is": "equal", - "value": 6 - } - }, - { - "at": "/value/parts/1/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-32b70ae425ac\"" - } - }, - { - "at": "/value/parts", - "optional": false, - "rule": { - "is": "array_length", - "value": 2 - } - } - ], - "refusal": null - }, - { - "id": "operations/s3/start-bucket-missing", - "profile": "s3", - "lane": "core", - "purpose": "start bucket missing", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "key": "object.bin", - "op": "s3.create_multipart" - }, - "exchanges": [ - { - "alternatives": [ + }, { "request": [ { @@ -112250,23 +150743,47 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object.bin" + "value": "/object-tests/multipart/object.bin" } }, { - "at": "/body_base64", + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "\"fixture-9aff617fcdf8\"1\"fixture-ec2738a0b15a\"2" + } + }, + { + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "fixture-upload+/c60fb1e2e00d=" } }, { - "at": "/query/uploads", + "at": "/headers/host", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-session-token" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } } ], @@ -112275,7 +150792,7 @@ ], "allow_query": [], "response": { - "status": 404, + "status": 200, "headers": { "content-type": "application/xml", "date": { @@ -112284,55 +150801,13 @@ }, "body": { "encoding": "utf8", - "data": "\nNoSuchBucketFixture error" + "data": "\nInternalErrorWe encountered an internal error. Please try again.fixturefixture" }, "framing": "chunked" } } ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 404 - } }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "equal", - "value": "NoSuchBucket" - } - } - ], - "refusal": null - }, - { - "id": "operations/s3/start-unauthenticated", - "profile": "s3", - "lane": "core", - "purpose": "Report the service authorization error for this operation; signature acceptance is tested separately.", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "key": "object-tests/multipart/object.bin", - "op": "s3.create_multipart" - }, - "exchanges": [ { "alternatives": [ { @@ -112350,23 +150825,47 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/object.bin" + "value": "/object-tests/multipart/object.bin" } }, { - "at": "/body_base64", + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "1\"fixture-9aff617fcdf8\"2\"fixture-ec2738a0b15a\"" + } + }, + { + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "fixture-upload+/c60fb1e2e00d=" } }, { - "at": "/query/uploads", + "at": "/headers/host", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-session-token" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } } ], @@ -112375,7 +150874,7 @@ ], "allow_query": [], "response": { - "status": 403, + "status": 200, "headers": { "content-type": "application/xml", "date": { @@ -112384,57 +150883,11 @@ }, "body": { "encoding": "utf8", - "data": "\nInvalidAccessKeyIdFixture error" + "data": "\nInternalErrorWe encountered an internal error. Please try again.fixturefixture" }, "framing": "chunked" } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 403 - } - }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "equal", - "value": "InvalidAccessKeyId" - } - } - ], - "refusal": null - }, - { - "id": "operations/s3/start", - "profile": "s3", - "lane": "core", - "purpose": "start", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "key": "object-tests/multipart/object.bin", - "op": "s3.create_multipart" - }, - "exchanges": [ - { - "alternatives": [ + }, { "request": [ { @@ -112450,23 +150903,47 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/multipart/object.bin" + "value": "/object-tests/multipart/object.bin" } }, { - "at": "/body_base64", + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "\"fixture-9aff617fcdf8\"1\"fixture-ec2738a0b15a\"2" + } + }, + { + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "fixture-upload+/c60fb1e2e00d=" } }, { - "at": "/query/uploads", + "at": "/headers/host", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-session-token" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } } ], @@ -112477,58 +150954,21 @@ "response": { "status": 200, "headers": { + "content-type": "application/xml", "date": { "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { "encoding": "utf8", - "data": "fixtureobject-tests/multipart/object.binfixture-upload+/276ca18046f9=" + "data": "\nInternalErrorWe encountered an internal error. Please try again.fixturefixture" }, "framing": "chunked" } } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/upload_id", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-upload+/276ca18046f9=" - } - } - ], - "refusal": null - }, - { - "id": "operations/azure/put-metadata-non-ascii-value", - "profile": "azure", - "lane": "core", - "purpose": "put metadata non ascii value", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "body_base64": "MQ==", - "key": "object-tests/metadata/non-ascii.txt", - "metadata": { - "value": "café" + ], + "optional": true }, - "op": "put" - }, - "exchanges": [ { "alternatives": [ { @@ -112538,7 +150978,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "POST" } }, { @@ -112546,34 +150986,47 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/metadata/non-ascii.txt" + "value": "/object-tests/multipart/object.bin" } }, { - "at": "/body_base64", + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "1\"fixture-9aff617fcdf8\"2\"fixture-ec2738a0b15a\"" + } + }, + { + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "MQ==" + "value": "fixture-upload+/c60fb1e2e00d=" } }, { - "at": "/headers/x-ms-meta-value", + "at": "/headers/host", "optional": false, "rule": { - "is": "one_of", - "values": [ - "café", - "café" - ] + "is": "equal", + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" } }, { - "at": "/headers/x-ms-blob-type", + "at": "/headers/x-amz-s3session-token", "optional": false, "rule": { "is": "equal", - "value": "BlockBlob" + "value": "fixture-session-token" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } } ], @@ -112582,111 +151035,20 @@ ], "allow_query": [], "response": { - "status": 400, + "status": 200, "headers": { "content-type": "application/xml", "date": { "from": "now" - }, - "x-ms-error-code": "InvalidMetadata" + } }, "body": { "encoding": "utf8", - "data": "InvalidMetadataFixture error" - } + "data": "\nInternalErrorWe encountered an internal error. Please try again.fixturefixture" + }, + "framing": "chunked" } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 400 - } - }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "equal", - "value": "InvalidMetadata" - } - } - ], - "refusal": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "refused" - } - }, - { - "at": "/kind", - "optional": false, - "rule": { - "is": "matches", - "pattern": ".+" - } - }, - { - "at": "/parameter", - "optional": false, - "rule": { - "is": "equal", - "value": "metadata" - } - }, - { - "at": "/status", - "optional": true, - "rule": { - "is": "equal", - "value": 400 - } - }, - { - "at": "/code", - "optional": true, - "rule": { - "is": "equal", - "value": "InvalidMetadata" - } - } - ] - }, - { - "id": "operations/azure-hns/put-metadata-non-ascii-value", - "profile": "azure-hns", - "lane": "core", - "purpose": "put metadata non ascii value", - "sources": [ - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_rest_client.cpp" - ], - "call": { - "body_base64": "MQ==", - "key": "object-tests/metadata/non-ascii.txt", - "metadata": { - "value": "café" - }, - "op": "put" - }, - "exchanges": [ - { - "alternatives": [ + }, { "request": [ { @@ -112694,7 +151056,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "POST" } }, { @@ -112702,34 +151064,47 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/metadata/non-ascii.txt" + "value": "/object-tests/multipart/object.bin" } }, { - "at": "/body_base64", + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "\"fixture-9aff617fcdf8\"1\"fixture-ec2738a0b15a\"2" + } + }, + { + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "MQ==" + "value": "fixture-upload+/c60fb1e2e00d=" } }, { - "at": "/headers/x-ms-meta-value", + "at": "/headers/host", "optional": false, "rule": { - "is": "one_of", - "values": [ - "café", - "café" - ] + "is": "equal", + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" } }, { - "at": "/headers/x-ms-blob-type", + "at": "/headers/x-amz-s3session-token", "optional": false, "rule": { "is": "equal", - "value": "BlockBlob" + "value": "fixture-session-token" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } } ], @@ -112738,109 +151113,23 @@ ], "allow_query": [], "response": { - "status": 400, + "status": 200, "headers": { "content-type": "application/xml", "date": { "from": "now" - }, - "x-ms-error-code": "InvalidMetadata" + } }, "body": { "encoding": "utf8", - "data": "InvalidMetadataFixture error" - } + "data": "\nInternalErrorWe encountered an internal error. Please try again.fixturefixture" + }, + "framing": "chunked" } } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 400 - } - }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "equal", - "value": "InvalidMetadata" - } - } - ], - "refusal": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "refused" - } - }, - { - "at": "/kind", - "optional": false, - "rule": { - "is": "matches", - "pattern": ".+" - } - }, - { - "at": "/parameter", - "optional": false, - "rule": { - "is": "equal", - "value": "metadata" - } - }, - { - "at": "/status", - "optional": true, - "rule": { - "is": "equal", - "value": 400 - } - }, - { - "at": "/code", - "optional": true, - "rule": { - "is": "equal", - "value": "InvalidMetadata" - } - } - ] - }, - { - "id": "operations/s3/put-metadata-non-ascii-value", - "profile": "s3", - "lane": "core", - "purpose": "A general-purpose bucket reads header bytes as ISO-8859-1 and decodes an RFC 2047 encoded word. Send é as the byte e9 or as an encoded word, or refuse the value if the client keeps metadata to ASCII; its UTF-8 bytes store café.", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "body_base64": "MQ==", - "key": "object-tests/metadata/non-ascii.txt", - "metadata": { - "value": "café" + ], + "optional": true }, - "op": "put" - }, - "exchanges": [ { "alternatives": [ { @@ -112850,7 +151139,85 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "POST" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/object-tests/multipart/object.bin" + } + }, + { + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "1\"fixture-9aff617fcdf8\"2\"fixture-ec2738a0b15a\"" + } + }, + { + "at": "/query/uploadId", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-upload+/c60fb1e2e00d=" + } + }, + { + "at": "/headers/host", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-session-token" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + } + }, + "body": { + "encoding": "utf8", + "data": "\nInternalErrorWe encountered an internal error. Please try again.fixturefixture" + }, + "framing": "chunked" + } + }, + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "POST" } }, { @@ -112858,23 +151225,47 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/metadata/non-ascii.txt" + "value": "/object-tests/multipart/object.bin" } }, { - "at": "/body_base64", + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "\"fixture-9aff617fcdf8\"1\"fixture-ec2738a0b15a\"2" + } + }, + { + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "MQ==" + "value": "fixture-upload+/c60fb1e2e00d=" } }, { - "at": "/headers/x-amz-meta-value", + "at": "/headers/host", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-session-token" + } + }, + { + "at": "/headers/authorization", "optional": false, "rule": { "is": "matches", - "pattern": "café|=\\?(?i:utf-8)\\?(?:(?i:q)\\?caf=(?i:c3)=(?i:a9)|(?i:b)\\?Y2Fmw6k=)\\?=" + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } } ], @@ -112885,94 +151276,21 @@ "response": { "status": 200, "headers": { + "content-type": "application/xml", "date": { "from": "now" - }, - "etag": "\"fixture-6c30b210f0a8\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { - "encoding": "base64", - "data": "" - } + "encoding": "utf8", + "data": "\nInternalErrorWe encountered an internal error. Please try again.fixturefixture" + }, + "framing": "chunked" } } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-6c30b210f0a8\"" - } - }, - { - "at": "/value/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - } - ], - "refusal": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "refused" - } - }, - { - "at": "/kind", - "optional": false, - "rule": { - "is": "matches", - "pattern": ".+" - } - }, - { - "at": "/parameter", - "optional": false, - "rule": { - "is": "equal", - "value": "metadata" - } - } - ] - }, - { - "id": "operations/s3/put-metadata-value-edge-whitespace", - "profile": "s3", - "lane": "core", - "purpose": "HTTP drops spaces and tabs at either end of a header value, so S3 would store a. An RFC 2047 encoded word stores them, but a read returns the value unencoded and loses them again. Send an encoded word, or refuse the value.", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "body_base64": "MQ==", - "key": "object-tests/metadata/value-edge-whitespace.txt", - "metadata": { - "value": "\ta " + ], + "optional": true }, - "op": "put" - }, - "exchanges": [ { "alternatives": [ { @@ -112982,7 +151300,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "POST" } }, { @@ -112990,23 +151308,47 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/metadata/value-edge-whitespace.txt" + "value": "/object-tests/multipart/object.bin" } }, { - "at": "/body_base64", + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "1\"fixture-9aff617fcdf8\"2\"fixture-ec2738a0b15a\"" + } + }, + { + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "MQ==" + "value": "fixture-upload+/c60fb1e2e00d=" } }, { - "at": "/headers/x-amz-meta-value", + "at": "/headers/host", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-session-token" + } + }, + { + "at": "/headers/authorization", "optional": false, "rule": { "is": "matches", - "pattern": "=\\?(?i:utf-8)\\?(?:(?i:q)\\?=(?i:09)a(?:_|=(?i:20))|(?i:b)\\?CWEg)\\?=" + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } } ], @@ -113017,96 +151359,18 @@ "response": { "status": 200, "headers": { + "content-type": "application/xml", "date": { "from": "now" - }, - "etag": "\"fixture-6c30b210f0a8\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { - "encoding": "base64", - "data": "" - } + "encoding": "utf8", + "data": "\nInternalErrorWe encountered an internal error. Please try again.fixturefixture" + }, + "framing": "chunked" } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-6c30b210f0a8\"" - } - }, - { - "at": "/value/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - } - ], - "refusal": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "refused" - } - }, - { - "at": "/kind", - "optional": false, - "rule": { - "is": "matches", - "pattern": ".+" - } - }, - { - "at": "/parameter", - "optional": false, - "rule": { - "is": "equal", - "value": "metadata" - } - } - ] - }, - { - "id": "operations/s3/put-metadata-value-encoded-word-text", - "profile": "s3", - "lane": "core", - "purpose": "A general-purpose bucket reads each space-separated token that starts with =? and ends with ?= as an RFC 2047 encoded word: it decodes it, or answers 400 or 500 when it cannot. So =?UTF-8?Q?caf=C3=A9?= sent as it is stores café. Wrapped in an encoded word of its own it stores the text, but a read returns it unencoded and decodes it again. Wrap it, or refuse it.", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "body_base64": "MQ==", - "key": "object-tests/metadata/value-encoded-word-text.txt", - "metadata": { - "value": "=?UTF-8?Q?caf=C3=A9?=" - }, - "op": "put" - }, - "exchanges": [ - { - "alternatives": [ + }, { "request": [ { @@ -113114,7 +151378,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "POST" } }, { @@ -113122,23 +151386,47 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/metadata/value-encoded-word-text.txt" + "value": "/object-tests/multipart/object.bin" } }, { - "at": "/body_base64", + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "\"fixture-9aff617fcdf8\"1\"fixture-ec2738a0b15a\"2" + } + }, + { + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "MQ==" + "value": "fixture-upload+/c60fb1e2e00d=" } }, { - "at": "/headers/x-amz-meta-value", + "at": "/headers/host", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-session-token" + } + }, + { + "at": "/headers/authorization", "optional": false, "rule": { "is": "matches", - "pattern": "=\\?(?i:utf-8)\\?(?:(?i:q)\\?=(?i:3d)=(?i:3f)UTF-8=(?i:3f)Q=(?i:3f)caf=(?i:3d)C3=(?i:3d)A9=(?i:3f)=(?i:3d)|(?i:b)\\?PT9VVEYtOD9RP2NhZj1DMz1BOT89)\\?=" + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } } ], @@ -113149,94 +151437,21 @@ "response": { "status": 200, "headers": { + "content-type": "application/xml", "date": { "from": "now" - }, - "etag": "\"fixture-6c30b210f0a8\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { - "encoding": "base64", - "data": "" - } + "encoding": "utf8", + "data": "\nInternalErrorWe encountered an internal error. Please try again.fixturefixture" + }, + "framing": "chunked" } } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-6c30b210f0a8\"" - } - }, - { - "at": "/value/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - } - ], - "refusal": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "refused" - } - }, - { - "at": "/kind", - "optional": false, - "rule": { - "is": "matches", - "pattern": ".+" - } - }, - { - "at": "/parameter", - "optional": false, - "rule": { - "is": "equal", - "value": "metadata" - } - } - ] - }, - { - "id": "operations/s3/put-metadata-value-not-an-encoded-word", - "profile": "s3", - "lane": "core", - "purpose": "A general-purpose bucket reads each space-separated token that starts with =? and ends with ?= as an RFC 2047 encoded word: it decodes it, or answers 400 or 500 when it cannot. Neither a=?b?=c nor x=?UTF-8?Q?caf=C3=A9?=y is such a token, so S3 stores this value as it is sent, and a read returns it. Send it as it is, or wrapped in an encoded word; do not refuse it.", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "body_base64": "MQ==", - "key": "object-tests/metadata/value-not-an-encoded-word.txt", - "metadata": { - "value": "a=?b?=c x=?UTF-8?Q?caf=C3=A9?=y" + ], + "optional": true }, - "op": "put" - }, - "exchanges": [ { "alternatives": [ { @@ -113246,7 +151461,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "POST" } }, { @@ -113254,23 +151469,47 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/metadata/value-not-an-encoded-word.txt" + "value": "/object-tests/multipart/object.bin" } }, { - "at": "/body_base64", + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "1\"fixture-9aff617fcdf8\"2\"fixture-ec2738a0b15a\"" + } + }, + { + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "MQ==" + "value": "fixture-upload+/c60fb1e2e00d=" } }, { - "at": "/headers/x-amz-meta-value", + "at": "/headers/host", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-session-token" + } + }, + { + "at": "/headers/authorization", "optional": false, "rule": { "is": "matches", - "pattern": "a=\\?b\\?=c x=\\?UTF-8\\?Q\\?caf=C3=A9\\?=y|=\\?(?i:utf-8)\\?(?:(?i:q)\\?a=(?i:3d)=(?i:3f)b=(?i:3f)=(?i:3d)c(?:_|=(?i:20))x=(?i:3d)=(?i:3f)UTF-8=(?i:3f)Q=(?i:3f)caf=(?i:3d)C3=(?i:3d)A9=(?i:3f)=(?i:3d)y|(?i:b)\\?YT0/Yj89YyB4PT9VVEYtOD9RP2NhZj1DMz1BOT89eQ==)\\?=" + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } } ], @@ -113281,71 +151520,18 @@ "response": { "status": 200, "headers": { + "content-type": "application/xml", "date": { "from": "now" - }, - "etag": "\"fixture-6c30b210f0a8\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { - "encoding": "base64", - "data": "" - } + "encoding": "utf8", + "data": "\nInternalErrorWe encountered an internal error. Please try again.fixturefixture" + }, + "framing": "chunked" } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-6c30b210f0a8\"" - } - }, - { - "at": "/value/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - } - ], - "refusal": null - }, - { - "id": "operations/s3/put-metadata-value-control-characters", - "profile": "s3", - "lane": "core", - "purpose": "A control character other than a tab is no valid HTTP field value. Send the value as an RFC 2047 encoded word, which S3 stores and a read decodes again, or refuse it.", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "body_base64": "MQ==", - "key": "object-tests/metadata/value-control-characters.txt", - "metadata": { - "value": "a\u0000bc" - }, - "op": "put" - }, - "exchanges": [ - { - "alternatives": [ + }, { "request": [ { @@ -113353,7 +151539,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "POST" } }, { @@ -113361,23 +151547,47 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/metadata/value-control-characters.txt" + "value": "/object-tests/multipart/object.bin" } }, { - "at": "/body_base64", + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "\"fixture-9aff617fcdf8\"1\"fixture-ec2738a0b15a\"2" + } + }, + { + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "MQ==" + "value": "fixture-upload+/c60fb1e2e00d=" } }, { - "at": "/headers/x-amz-meta-value", + "at": "/headers/host", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-session-token" + } + }, + { + "at": "/headers/authorization", "optional": false, "rule": { "is": "matches", - "pattern": "=\\?(?i:utf-8)\\?(?:(?i:q)\\?a=(?i:00)b=(?i:7f)c|(?i:b)\\?YQBif2M=)\\?=" + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } } ], @@ -113388,19 +151598,20 @@ "response": { "status": 200, "headers": { + "content-type": "application/xml", "date": { "from": "now" - }, - "etag": "\"fixture-6c30b210f0a8\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { - "encoding": "base64", - "data": "" - } + "encoding": "utf8", + "data": "\nInternalErrorWe encountered an internal error. Please try again.fixturefixture" + }, + "framing": "chunked" } } - ] + ], + "optional": true } ], "expect": [ @@ -113409,71 +151620,39 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "error" } }, { - "at": "/value/etag", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-6c30b210f0a8\"" - } - }, - { - "at": "/value/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "value": "InternalError" } } ], - "refusal": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "refused" - } - }, - { - "at": "/kind", - "optional": false, - "rule": { - "is": "matches", - "pattern": ".+" - } - }, - { - "at": "/parameter", - "optional": false, - "rule": { - "is": "equal", - "value": "metadata" - } - } - ] + "refusal": null }, { - "id": "operations/s3/put-metadata-value-line-break", - "profile": "s3", + "id": "operations/s3-express/complete-multipart-200-error", + "profile": "s3-express", "lane": "core", - "purpose": "CR and LF are no valid HTTP field value, and a general-purpose bucket stores each as a space even inside an RFC 2047 encoded word. No request stores the value, so refuse it.", + "purpose": "complete multipart 200 error", "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html" ], + "origin": "transient", "call": { - "body_base64": "MQ==", - "key": "object-tests/metadata/value-line-break.txt", - "metadata": { - "value": "a\r\nb" - }, - "op": "put" + "key": "object", + "op": "s3.complete_multipart", + "parts": [ + { + "etag": "\"part\"", + "number": 1 + } + ], + "upload_id": "upload+/=" }, "exchanges": [ { @@ -113485,7 +151664,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -113493,23 +151672,38 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/metadata/value-line-break.txt" + "value": "/" } }, { - "at": "/body_base64", + "at": "/query/session", "optional": false, "rule": { "is": "equal", - "value": "MQ==" + "value": "" } }, { - "at": "/headers/x-amz-meta-value", + "at": "/headers/host", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + } + }, + { + "at": "/headers/authorization", "optional": false, "rule": { "is": "matches", - "pattern": "=\\?(?i:utf-8)\\?(?:(?i:q)\\?a=(?i:0d)=(?i:0a)b|(?i:b)\\?YQ0KYg==)\\?=" + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "absent" } } ], @@ -113520,75 +151714,20 @@ "response": { "status": 200, "headers": { - "date": { - "from": "now" - }, - "etag": "\"fixture-6c30b210f0a8\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + "content-type": "application/xml" }, "body": { - "encoding": "base64", - "data": "" + "encoding": "utf8", + "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" + }, + "body_time": { + "text": "SESSION_EXPIRATION", + "offset_seconds": 300 } } } ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "refused" - } - } - ], - "refusal": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "refused" - } - }, - { - "at": "/kind", - "optional": false, - "rule": { - "is": "matches", - "pattern": ".+" - } - }, - { - "at": "/parameter", - "optional": false, - "rule": { - "is": "equal", - "value": "metadata" - } - } - ] - }, - { - "id": "operations/s3/put-metadata-value-with-tab", - "profile": "s3", - "lane": "core", - "purpose": "S3 stores a tab inside a value as it is sent. Send it raw, or inside an RFC 2047 encoded word.", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "body_base64": "MQ==", - "key": "object-tests/metadata/value-with-tab.txt", - "metadata": { - "value": "a\tb" }, - "op": "put" - }, - "exchanges": [ { "alternatives": [ { @@ -113598,7 +151737,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "POST" } }, { @@ -113606,23 +151745,47 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/metadata/value-with-tab.txt" + "value": "/object" } }, { - "at": "/body_base64", + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "MQ==" + "value": "upload+/=" } }, { - "at": "/headers/x-amz-meta-value", + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "1\"part\"" + } + }, + { + "at": "/headers/host", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-session-token" + } + }, + { + "at": "/headers/authorization", "optional": false, "rule": { "is": "matches", - "pattern": "a\tb|=\\?(?i:utf-8)\\?(?:(?i:q)\\?a=(?i:09)b|(?i:b)\\?YQli)\\?=" + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } } ], @@ -113633,71 +151796,21 @@ "response": { "status": 200, "headers": { + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-6c30b210f0a8\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-amz-request-id": "fixture-request-id" }, "body": { "encoding": "base64", - "data": "" - } + "data": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPEVycm9yPjxDb2RlPkludmFsaWRQYXJ0PC9Db2RlPjxNZXNzYWdlPmZpeHR1cmUgZXJyb3I8L01lc3NhZ2U+PC9FcnJvcj4=" + }, + "framing": "chunked" } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-6c30b210f0a8\"" - } - }, - { - "at": "/value/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - } - ], - "refusal": null - }, - { - "id": "operations/s3/put-metadata-outside-latin-1", - "profile": "s3", - "lane": "core", - "purpose": "No header byte carries 雪, so send it as an RFC 2047 encoded word, or refuse the value if the client keeps metadata to ASCII. A general-purpose bucket stores its UTF-8 bytes as three ISO-8859-1 characters.", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "body_base64": "MQ==", - "key": "object-tests/metadata/outside-latin-1.txt", - "metadata": { - "value": "雪" - }, - "op": "put" - }, - "exchanges": [ - { - "alternatives": [ + }, { "request": [ { @@ -113705,7 +151818,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "POST" } }, { @@ -113713,23 +151826,47 @@ "optional": false, "rule": { "is": "equal", - "value": "/fixture/object-tests/metadata/outside-latin-1.txt" + "value": "/object" } }, { - "at": "/body_base64", + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "MQ==" + "value": "upload+/=" } }, { - "at": "/headers/x-amz-meta-value", + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "\"part\"1" + } + }, + { + "at": "/headers/host", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-session-token" + } + }, + { + "at": "/headers/authorization", "optional": false, "rule": { "is": "matches", - "pattern": "=\\?(?i:utf-8)\\?(?:(?i:q)\\?=(?i:e9)=(?i:9b)=(?i:aa)|(?i:b)\\?6Zuq)\\?=" + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } } ], @@ -113740,16 +151877,19 @@ "response": { "status": 200, "headers": { + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-6c30b210f0a8\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-amz-request-id": "fixture-request-id" }, "body": { "encoding": "base64", - "data": "" - } + "data": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPEVycm9yPjxDb2RlPkludmFsaWRQYXJ0PC9Db2RlPjxNZXNzYWdlPmZpeHR1cmUgZXJyb3I8L01lc3NhZ2U+PC9FcnJvcj4=" + }, + "framing": "chunked" } } ] @@ -113761,68 +151901,31 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "error" } }, { - "at": "/value/etag", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-6c30b210f0a8\"" - } - }, - { - "at": "/value/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "value": "InvalidPart" } } ], - "refusal": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "refused" - } - }, - { - "at": "/kind", - "optional": false, - "rule": { - "is": "matches", - "pattern": ".+" - } - }, - { - "at": "/parameter", - "optional": false, - "rule": { - "is": "equal", - "value": "metadata" - } - } - ] + "refusal": null }, { - "id": "operations/s3-express/abort-after-commit", + "id": "operations/s3-express/delete-accepted", "profile": "s3-express", "lane": "core", - "purpose": "abort after commit", + "purpose": "delete accepted", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/multipart/object.bin", - "op": "s3.abort_multipart", - "upload_id": "fixture-upload+/c60fb1e2e00d=" + "key": "object-tests/remove/present.txt", + "op": "delete" }, "exchanges": [ { @@ -113915,7 +152018,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/multipart/object.bin" + "value": "/object-tests/remove/present.txt" } }, { @@ -113926,14 +152029,6 @@ "value": "" } }, - { - "at": "/query/uploadId", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-upload+/c60fb1e2e00d=" - } - }, { "at": "/headers/host", "optional": false, @@ -113993,17 +152088,16 @@ "refusal": null }, { - "id": "operations/s3-express/abort-unknown-upload", + "id": "operations/s3-express/delete-accepted-key-question", "profile": "s3-express", "lane": "core", - "purpose": "abort unknown upload", + "purpose": "delete accepted, with the key \"question?mark.txt\"", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/multipart/object.bin", - "op": "s3.abort_multipart", - "upload_id": "fixture-upload+/4d0d5ccc4993=" + "key": "object-tests/keys/question?mark.txt", + "op": "delete" }, "exchanges": [ { @@ -114096,7 +152190,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/multipart/object.bin" + "value": "/object-tests/keys/question?mark.txt" } }, { @@ -114107,14 +152201,6 @@ "value": "" } }, - { - "at": "/query/uploadId", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-upload+/4d0d5ccc4993=" - } - }, { "at": "/headers/host", "optional": false, @@ -114145,18 +152231,17 @@ ], "allow_query": [], "response": { - "status": 404, + "status": 204, "headers": { - "content-type": "application/xml", "date": { "from": "now" - } + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nNoSuchUploadFixture error" - }, - "framing": "chunked" + "encoding": "base64", + "data": "" + } } } ] @@ -114168,40 +152253,23 @@ "optional": false, "rule": { "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 404 - } - }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "equal", - "value": "NoSuchUpload" + "value": "ok" } } ], "refusal": null }, { - "id": "operations/s3-express/abort", + "id": "operations/s3-express/delete-accepted-key-hash", "profile": "s3-express", "lane": "core", - "purpose": "abort", + "purpose": "delete accepted, with the key \"hash#tag.txt\"", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/multipart/aborted.bin", - "op": "s3.abort_multipart", - "upload_id": "fixture-upload+/4bef2cd6d025=" + "key": "object-tests/keys/hash#tag.txt", + "op": "delete" }, "exchanges": [ { @@ -114294,7 +152362,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/multipart/aborted.bin" + "value": "/object-tests/keys/hash#tag.txt" } }, { @@ -114305,14 +152373,6 @@ "value": "" } }, - { - "at": "/query/uploadId", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-upload+/4bef2cd6d025=" - } - }, { "at": "/headers/host", "optional": false, @@ -114372,23 +152432,16 @@ "refusal": null }, { - "id": "operations/s3-express/commit-after-abort", + "id": "operations/s3-express/delete-accepted-key-percent", "profile": "s3-express", "lane": "core", - "purpose": "commit after abort", + "purpose": "delete accepted, with the key \"percent%20.txt\"", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/multipart/aborted.bin", - "op": "s3.complete_multipart", - "parts": [ - { - "etag": "\"fixture-db71b2c0257c\"", - "number": 1 - } - ], - "upload_id": "fixture-upload+/4bef2cd6d025=" + "key": "object-tests/keys/percent%20.txt", + "op": "delete" }, "exchanges": [ { @@ -114473,7 +152526,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "DELETE" } }, { @@ -114481,23 +152534,15 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/multipart/aborted.bin" - } - }, - { - "at": "/body_text", - "optional": false, - "rule": { - "is": "xml", - "value": "1\"fixture-db71b2c0257c\"" + "value": "/object-tests/keys/percent%20.txt" } }, { - "at": "/query/uploadId", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/4bef2cd6d025=" + "value": "" } }, { @@ -114530,7 +152575,7 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 204, "headers": { "date": { "from": "now" @@ -114538,88 +152583,9 @@ "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "NoSuchUploadFixture error" - }, - "framing": "chunked" - } - }, - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "POST" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/object-tests/multipart/aborted.bin" - } - }, - { - "at": "/body_text", - "optional": false, - "rule": { - "is": "xml", - "value": "\"fixture-db71b2c0257c\"1" - } - }, - { - "at": "/query/uploadId", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-upload+/4bef2cd6d025=" - } - }, - { - "at": "/headers/host", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" - } - }, - { - "at": "/headers/x-amz-s3session-token", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-session-token" - } - }, - { - "at": "/headers/authorization", - "optional": false, - "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" - } + "encoding": "base64", + "data": "" } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "date": { - "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" - }, - "body": { - "encoding": "utf8", - "data": "NoSuchUploadFixture error" - }, - "framing": "chunked" } } ] @@ -114631,47 +152597,23 @@ "optional": false, "rule": { "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 200 - } - }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "equal", - "value": "NoSuchUpload" + "value": "ok" } } ], "refusal": null }, { - "id": "operations/s3-express/commit-lost-the-race-to-create", + "id": "operations/s3-express/delete-accepted-key-plus", "profile": "s3-express", "lane": "core", - "purpose": "commit lost the race to create", + "purpose": "delete accepted, with the key \"plus+plus.txt\"", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "if_none_match": "*", - "key": "object-tests/multipart/guarded.bin", - "op": "s3.complete_multipart", - "parts": [ - { - "etag": "\"fixture-201c9ed6f636\"", - "number": 1 - } - ], - "upload_id": "fixture-upload+/c7be505aec65=" + "key": "object-tests/keys/plus+plus.txt", + "op": "delete" }, "exchanges": [ { @@ -114756,7 +152698,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "DELETE" } }, { @@ -114764,31 +152706,15 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/multipart/guarded.bin" - } - }, - { - "at": "/body_text", - "optional": false, - "rule": { - "is": "xml", - "value": "1\"fixture-201c9ed6f636\"" - } - }, - { - "at": "/headers/if-none-match", - "optional": false, - "rule": { - "is": "equal", - "value": "*" + "value": "/object-tests/keys/plus+plus.txt" } }, { - "at": "/query/uploadId", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/c7be505aec65=" + "value": "" } }, { @@ -114821,7 +152747,7 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 204, "headers": { "date": { "from": "now" @@ -114829,12 +152755,41 @@ "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "PreconditionFailedFixture error" - }, - "framing": "chunked" + "encoding": "base64", + "data": "" + } } - }, + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + } + ], + "refusal": null + }, + { + "id": "operations/s3-express/delete-accepted-key-space", + "profile": "s3-express", + "lane": "core", + "purpose": "delete accepted, with the key \"space name.txt\"", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "key": "object-tests/keys/space name.txt", + "op": "delete" + }, + "exchanges": [ + { + "alternatives": [ { "request": [ { @@ -114842,7 +152797,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "GET" } }, { @@ -114850,31 +152805,88 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/multipart/guarded.bin" + "value": "/" } }, { - "at": "/body_text", + "at": "/query/session", "optional": false, "rule": { - "is": "xml", - "value": "\"fixture-201c9ed6f636\"1" + "is": "equal", + "value": "" } }, { - "at": "/headers/if-none-match", + "at": "/headers/host", "optional": false, "rule": { "is": "equal", - "value": "*" + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" } }, { - "at": "/query/uploadId", + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "absent" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml" + }, + "body": { + "encoding": "utf8", + "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" + }, + "body_time": { + "text": "SESSION_EXPIRATION", + "offset_seconds": 300 + } + } + } + ] + }, + { + "alternatives": [ + { + "request": [ + { + "at": "/method", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/c7be505aec65=" + "value": "DELETE" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/object-tests/keys/space name.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" } }, { @@ -114907,7 +152919,7 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 204, "headers": { "date": { "from": "now" @@ -114915,10 +152927,9 @@ "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "PreconditionFailedFixture error" - }, - "framing": "chunked" + "encoding": "base64", + "data": "" + } } } ] @@ -114930,41 +152941,23 @@ "optional": false, "rule": { "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 200 - } - }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "equal", - "value": "PreconditionFailed" + "value": "ok" } } ], "refusal": null }, { - "id": "operations/s3-express/commit-nothing", + "id": "operations/s3-express/delete-accepted-key-non-ascii", "profile": "s3-express", "lane": "core", - "purpose": "commit nothing", + "purpose": "delete accepted, with the key \"café/雪.txt\"", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/multipart/guarded.bin", - "op": "s3.complete_multipart", - "parts": [], - "upload_id": "fixture-upload+/c7be505aec65=" + "key": "object-tests/keys/café/雪.txt", + "op": "delete" }, "exchanges": [ { @@ -115049,7 +153042,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "DELETE" } }, { @@ -115057,23 +153050,15 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/multipart/guarded.bin" - } - }, - { - "at": "/body_text", - "optional": false, - "rule": { - "is": "xml", - "value": "" + "value": "/object-tests/keys/café/雪.txt" } }, { - "at": "/query/uploadId", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/c7be505aec65=" + "value": "" } }, { @@ -115106,20 +153091,49 @@ ], "allow_query": [], "response": { - "status": 400, + "status": 204, "headers": { - "content-type": "application/xml", "date": { "from": "now" - } + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nMalformedXMLFixture error" - }, - "framing": "chunked" + "encoding": "base64", + "data": "" + } } - }, + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + } + ], + "refusal": null + }, + { + "id": "operations/s3-express/delete-accepted-key-double-slash", + "profile": "s3-express", + "lane": "core", + "purpose": "delete accepted, with the key \"double//slash.txt\"", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "key": "object-tests/keys/double//slash.txt", + "op": "delete" + }, + "exchanges": [ + { + "alternatives": [ { "request": [ { @@ -115127,31 +153141,23 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/object-tests/multipart/guarded.bin" + "value": "GET" } }, { - "at": "/body_text", + "at": "/path", "optional": false, "rule": { - "is": "xml", - "value": "" + "is": "equal", + "value": "/" } }, { - "at": "/query/uploadId", + "at": "/query/session", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/c7be505aec65=" + "value": "" } }, { @@ -115163,19 +153169,18 @@ } }, { - "at": "/headers/x-amz-s3session-token", + "at": "/headers/authorization", "optional": false, "rule": { - "is": "equal", - "value": "fixture-session-token" + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } }, { - "at": "/headers/authorization", + "at": "/headers/x-amz-s3session-token", "optional": false, "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + "is": "absent" } } ], @@ -115184,20 +153189,24 @@ ], "allow_query": [], "response": { - "status": 400, + "status": 200, "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - } + "content-type": "application/xml" }, "body": { "encoding": "utf8", - "data": "\nMalformedXMLFixture error" + "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" }, - "framing": "chunked" + "body_time": { + "text": "SESSION_EXPIRATION", + "offset_seconds": 300 + } } - }, + } + ] + }, + { + "alternatives": [ { "request": [ { @@ -115205,7 +153214,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "DELETE" } }, { @@ -115213,15 +153222,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/multipart/guarded.bin" - } - }, - { - "at": "/query/uploadId", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-upload+/c7be505aec65=" + "value": "/object-tests/keys/double//slash.txt" } }, { @@ -115262,18 +153263,17 @@ ], "allow_query": [], "response": { - "status": 400, + "status": 204, "headers": { - "content-type": "application/xml", "date": { "from": "now" - } + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nInvalidRequestYou must specify at least one part" - }, - "framing": "chunked" + "encoding": "base64", + "data": "" + } } } ] @@ -115285,97 +153285,23 @@ "optional": false, "rule": { "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 400 - } - }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "one_of", - "values": [ - "MalformedXML", - "InvalidRequest" - ] + "value": "ok" } } ], - "refusal": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "refused" - } - }, - { - "at": "/kind", - "optional": false, - "rule": { - "is": "matches", - "pattern": ".+" - } - }, - { - "at": "/parameter", - "optional": false, - "rule": { - "is": "equal", - "value": "parts" - } - }, - { - "at": "/status", - "optional": true, - "rule": { - "is": "equal", - "value": 400 - } - }, - { - "at": "/code", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - "MalformedXML", - "InvalidRequest" - ] - } - } - ] + "refusal": null }, { - "id": "operations/s3-express/commit-out-of-order", + "id": "operations/s3-express/delete-accepted-key-trailing-slash", "profile": "s3-express", "lane": "core", - "purpose": "commit out of order", + "purpose": "delete accepted, with the key \"trailing-slash/\"", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/multipart/object.bin", - "op": "s3.complete_multipart", - "parts": [ - { - "etag": "\"fixture-ec2738a0b15a\"", - "number": 2 - }, - { - "etag": "\"fixture-9aff617fcdf8\"", - "number": 1 - } - ], - "upload_id": "fixture-upload+/c60fb1e2e00d=" + "key": "object-tests/keys/trailing-slash/", + "op": "delete" }, "exchanges": [ { @@ -115460,7 +153386,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "DELETE" } }, { @@ -115468,23 +153394,15 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/multipart/object.bin" - } - }, - { - "at": "/body_text", - "optional": false, - "rule": { - "is": "xml", - "value": "2\"fixture-ec2738a0b15a\"1\"fixture-9aff617fcdf8\"" + "value": "/object-tests/keys/trailing-slash/" } }, { - "at": "/query/uploadId", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/c60fb1e2e00d=" + "value": "" } }, { @@ -115517,20 +153435,53 @@ ], "allow_query": [], "response": { - "status": 400, + "status": 204, "headers": { - "content-type": "application/xml", "date": { "from": "now" - } + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nInvalidPartOrderFixture error" - }, - "framing": "chunked" + "encoding": "base64", + "data": "" + } } - }, + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + } + ], + "refusal": null + }, + { + "id": "operations/s3-express/delete-many", + "profile": "s3-express", + "lane": "core", + "purpose": "Delete several objects in one request and report each result", + "sources": [ + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjects.html" + ], + "call": { + "keys": [ + "object-tests/batch/a.txt", + "object-tests/batch/b.txt", + "object-tests/batch/absent.txt" + ], + "op": "delete_many" + }, + "exchanges": [ + { + "alternatives": [ { "request": [ { @@ -115538,7 +153489,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "GET" } }, { @@ -115546,23 +153497,15 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/multipart/object.bin" - } - }, - { - "at": "/body_text", - "optional": false, - "rule": { - "is": "xml", - "value": "\"fixture-ec2738a0b15a\"2\"fixture-9aff617fcdf8\"1" + "value": "/" } }, { - "at": "/query/uploadId", + "at": "/query/session", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/c60fb1e2e00d=" + "value": "" } }, { @@ -115574,39 +153517,139 @@ } }, { - "at": "/headers/x-amz-s3session-token", + "at": "/headers/authorization", "optional": false, "rule": { - "is": "equal", - "value": "fixture-session-token" + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } }, { - "at": "/headers/authorization", + "at": "/headers/x-amz-s3session-token", "optional": false, "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + "is": "absent" } } ], + "then": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "POST" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/" + } + }, + { + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "object-tests/batch/a.txtobject-tests/batch/b.txtobject-tests/batch/absent.txt" + } + }, + { + "at": "/query/delete", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/x-amz-checksum-crc64nvme", + "optional": false, + "rule": { + "is": "matches", + "pattern": "[A-Za-z0-9+/]{11}=" + } + }, + { + "at": "/headers/host", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-session-token" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + } + }, + { + "at": "", + "optional": false, + "rule": { + "is": "body_checksum", + "header": "x-amz-checksum-crc64nvme", + "algorithm": "crc64nvme" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + } + }, + "body": { + "encoding": "utf8", + "data": "\nobject-tests/batch/a.txtobject-tests/batch/b.txtobject-tests/batch/absent.txt" + }, + "framing": "chunked" + } + } + ] + } + ], "allow_headers": [ "content-type" ], "allow_query": [], "response": { - "status": 400, + "status": 200, "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - } + "content-type": "application/xml" }, "body": { "encoding": "utf8", - "data": "\nInvalidPartOrderFixture error" + "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" }, - "framing": "chunked" + "body_time": { + "text": "SESSION_EXPIRATION", + "offset_seconds": 300 + } } } ] @@ -115618,91 +153661,49 @@ "optional": false, "rule": { "is": "equal", - "value": "error" + "value": "ok" } }, { - "at": "/status", + "at": "/value/deleted", "optional": false, "rule": { "is": "equal", - "value": 400 + "value": [ + "object-tests/batch/a.txt", + "object-tests/batch/b.txt", + "object-tests/batch/absent.txt" + ] } }, { - "at": "/code", + "at": "/value/errors", "optional": false, "rule": { "is": "equal", - "value": "InvalidPartOrder" + "value": [] } } ], - "refusal": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "refused" - } - }, - { - "at": "/kind", - "optional": false, - "rule": { - "is": "matches", - "pattern": ".+" - } - }, - { - "at": "/parameter", - "optional": false, - "rule": { - "is": "equal", - "value": "parts" - } - }, - { - "at": "/status", - "optional": true, - "rule": { - "is": "equal", - "value": 400 - } - }, - { - "at": "/code", - "optional": true, - "rule": { - "is": "equal", - "value": "InvalidPartOrder" - } - } - ] + "refusal": null }, { - "id": "operations/s3-express/commit-part-too-small", + "id": "operations/s3-express/delete-many-errors", "profile": "s3-express", "lane": "core", - "purpose": "commit part too small", + "purpose": "Report each key that S3 lists as an Error in a DeleteObjects answer, here AccessDenied, as that key's error, and the others as deleted", "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjects.html" ], + "origin": "transient", + "derived_from": "operations/s3-express/delete-many", "call": { - "key": "object-tests/multipart/small.bin", - "op": "s3.complete_multipart", - "parts": [ - { - "etag": "\"fixture-132cb4a5de9d\"", - "number": 1 - }, - { - "etag": "\"fixture-2cab82eb728e\"", - "number": 2 - } + "keys": [ + "object-tests/batch/a.txt", + "object-tests/batch/b.txt", + "object-tests/batch/absent.txt" ], - "upload_id": "fixture-upload+/09837ae2020c=" + "op": "delete_many" }, "exchanges": [ { @@ -115757,6 +153758,107 @@ } } ], + "then": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "POST" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/" + } + }, + { + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "object-tests/batch/a.txtobject-tests/batch/b.txtobject-tests/batch/absent.txt" + } + }, + { + "at": "/query/delete", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/x-amz-checksum-crc64nvme", + "optional": false, + "rule": { + "is": "matches", + "pattern": "[A-Za-z0-9+/]{11}=" + } + }, + { + "at": "/headers/host", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-session-token" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + } + }, + { + "at": "", + "optional": false, + "rule": { + "is": "body_checksum", + "header": "x-amz-checksum-crc64nvme", + "algorithm": "crc64nvme" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + } + }, + "body": { + "encoding": "utf8", + "data": "\nobject-tests/batch/a.txtobject-tests/batch/b.txtobject-tests/batch/absent.txtAccessDeniedFixture error" + }, + "framing": "chunked" + } + } + ] + } + ], "allow_headers": [ "content-type" ], @@ -115777,7 +153879,1058 @@ } } ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/deleted", + "optional": false, + "rule": { + "is": "equal", + "value": [ + "object-tests/batch/a.txt", + "object-tests/batch/b.txt" + ] + } }, + { + "at": "/value/errors", + "optional": false, + "rule": { + "is": "equal", + "value": [ + { + "code": "AccessDenied", + "key": "object-tests/batch/absent.txt" + } + ] + } + } + ], + "refusal": null + }, + { + "id": "operations/s3-express/delete-many-1000", + "profile": "s3-express", + "lane": "core", + "purpose": "Delete 1,000 keys in one DeleteObjects request, the most S3 takes", + "sources": [ + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjects.html" + ], + "call": { + "keys": [ + "object-tests/batch/many-0000.txt", + "object-tests/batch/many-0001.txt", + "object-tests/batch/many-0002.txt", + "object-tests/batch/many-0003.txt", + "object-tests/batch/many-0004.txt", + "object-tests/batch/many-0005.txt", + "object-tests/batch/many-0006.txt", + "object-tests/batch/many-0007.txt", + "object-tests/batch/many-0008.txt", + "object-tests/batch/many-0009.txt", + "object-tests/batch/many-0010.txt", + "object-tests/batch/many-0011.txt", + "object-tests/batch/many-0012.txt", + "object-tests/batch/many-0013.txt", + "object-tests/batch/many-0014.txt", + "object-tests/batch/many-0015.txt", + "object-tests/batch/many-0016.txt", + "object-tests/batch/many-0017.txt", + "object-tests/batch/many-0018.txt", + "object-tests/batch/many-0019.txt", + "object-tests/batch/many-0020.txt", + "object-tests/batch/many-0021.txt", + "object-tests/batch/many-0022.txt", + "object-tests/batch/many-0023.txt", + "object-tests/batch/many-0024.txt", + "object-tests/batch/many-0025.txt", + "object-tests/batch/many-0026.txt", + "object-tests/batch/many-0027.txt", + "object-tests/batch/many-0028.txt", + "object-tests/batch/many-0029.txt", + "object-tests/batch/many-0030.txt", + "object-tests/batch/many-0031.txt", + "object-tests/batch/many-0032.txt", + "object-tests/batch/many-0033.txt", + "object-tests/batch/many-0034.txt", + "object-tests/batch/many-0035.txt", + "object-tests/batch/many-0036.txt", + "object-tests/batch/many-0037.txt", + "object-tests/batch/many-0038.txt", + "object-tests/batch/many-0039.txt", + "object-tests/batch/many-0040.txt", + "object-tests/batch/many-0041.txt", + "object-tests/batch/many-0042.txt", + "object-tests/batch/many-0043.txt", + "object-tests/batch/many-0044.txt", + "object-tests/batch/many-0045.txt", + "object-tests/batch/many-0046.txt", + "object-tests/batch/many-0047.txt", + "object-tests/batch/many-0048.txt", + "object-tests/batch/many-0049.txt", + "object-tests/batch/many-0050.txt", + "object-tests/batch/many-0051.txt", + "object-tests/batch/many-0052.txt", + "object-tests/batch/many-0053.txt", + "object-tests/batch/many-0054.txt", + "object-tests/batch/many-0055.txt", + "object-tests/batch/many-0056.txt", + "object-tests/batch/many-0057.txt", + "object-tests/batch/many-0058.txt", + "object-tests/batch/many-0059.txt", + "object-tests/batch/many-0060.txt", + "object-tests/batch/many-0061.txt", + "object-tests/batch/many-0062.txt", + "object-tests/batch/many-0063.txt", + "object-tests/batch/many-0064.txt", + "object-tests/batch/many-0065.txt", + "object-tests/batch/many-0066.txt", + "object-tests/batch/many-0067.txt", + "object-tests/batch/many-0068.txt", + "object-tests/batch/many-0069.txt", + "object-tests/batch/many-0070.txt", + "object-tests/batch/many-0071.txt", + "object-tests/batch/many-0072.txt", + "object-tests/batch/many-0073.txt", + "object-tests/batch/many-0074.txt", + "object-tests/batch/many-0075.txt", + "object-tests/batch/many-0076.txt", + "object-tests/batch/many-0077.txt", + "object-tests/batch/many-0078.txt", + "object-tests/batch/many-0079.txt", + "object-tests/batch/many-0080.txt", + "object-tests/batch/many-0081.txt", + "object-tests/batch/many-0082.txt", + "object-tests/batch/many-0083.txt", + "object-tests/batch/many-0084.txt", + "object-tests/batch/many-0085.txt", + "object-tests/batch/many-0086.txt", + "object-tests/batch/many-0087.txt", + "object-tests/batch/many-0088.txt", + "object-tests/batch/many-0089.txt", + "object-tests/batch/many-0090.txt", + "object-tests/batch/many-0091.txt", + "object-tests/batch/many-0092.txt", + "object-tests/batch/many-0093.txt", + "object-tests/batch/many-0094.txt", + "object-tests/batch/many-0095.txt", + "object-tests/batch/many-0096.txt", + "object-tests/batch/many-0097.txt", + "object-tests/batch/many-0098.txt", + "object-tests/batch/many-0099.txt", + "object-tests/batch/many-0100.txt", + "object-tests/batch/many-0101.txt", + "object-tests/batch/many-0102.txt", + "object-tests/batch/many-0103.txt", + "object-tests/batch/many-0104.txt", + "object-tests/batch/many-0105.txt", + "object-tests/batch/many-0106.txt", + "object-tests/batch/many-0107.txt", + "object-tests/batch/many-0108.txt", + "object-tests/batch/many-0109.txt", + "object-tests/batch/many-0110.txt", + "object-tests/batch/many-0111.txt", + "object-tests/batch/many-0112.txt", + "object-tests/batch/many-0113.txt", + "object-tests/batch/many-0114.txt", + "object-tests/batch/many-0115.txt", + "object-tests/batch/many-0116.txt", + "object-tests/batch/many-0117.txt", + "object-tests/batch/many-0118.txt", + "object-tests/batch/many-0119.txt", + "object-tests/batch/many-0120.txt", + "object-tests/batch/many-0121.txt", + "object-tests/batch/many-0122.txt", + "object-tests/batch/many-0123.txt", + "object-tests/batch/many-0124.txt", + "object-tests/batch/many-0125.txt", + "object-tests/batch/many-0126.txt", + "object-tests/batch/many-0127.txt", + "object-tests/batch/many-0128.txt", + "object-tests/batch/many-0129.txt", + "object-tests/batch/many-0130.txt", + "object-tests/batch/many-0131.txt", + "object-tests/batch/many-0132.txt", + "object-tests/batch/many-0133.txt", + "object-tests/batch/many-0134.txt", + "object-tests/batch/many-0135.txt", + "object-tests/batch/many-0136.txt", + "object-tests/batch/many-0137.txt", + "object-tests/batch/many-0138.txt", + "object-tests/batch/many-0139.txt", + "object-tests/batch/many-0140.txt", + "object-tests/batch/many-0141.txt", + "object-tests/batch/many-0142.txt", + "object-tests/batch/many-0143.txt", + "object-tests/batch/many-0144.txt", + "object-tests/batch/many-0145.txt", + "object-tests/batch/many-0146.txt", + "object-tests/batch/many-0147.txt", + "object-tests/batch/many-0148.txt", + "object-tests/batch/many-0149.txt", + "object-tests/batch/many-0150.txt", + "object-tests/batch/many-0151.txt", + "object-tests/batch/many-0152.txt", + "object-tests/batch/many-0153.txt", + "object-tests/batch/many-0154.txt", + "object-tests/batch/many-0155.txt", + "object-tests/batch/many-0156.txt", + "object-tests/batch/many-0157.txt", + "object-tests/batch/many-0158.txt", + "object-tests/batch/many-0159.txt", + "object-tests/batch/many-0160.txt", + "object-tests/batch/many-0161.txt", + "object-tests/batch/many-0162.txt", + "object-tests/batch/many-0163.txt", + "object-tests/batch/many-0164.txt", + "object-tests/batch/many-0165.txt", + "object-tests/batch/many-0166.txt", + "object-tests/batch/many-0167.txt", + "object-tests/batch/many-0168.txt", + "object-tests/batch/many-0169.txt", + "object-tests/batch/many-0170.txt", + "object-tests/batch/many-0171.txt", + "object-tests/batch/many-0172.txt", + "object-tests/batch/many-0173.txt", + "object-tests/batch/many-0174.txt", + "object-tests/batch/many-0175.txt", + "object-tests/batch/many-0176.txt", + "object-tests/batch/many-0177.txt", + "object-tests/batch/many-0178.txt", + "object-tests/batch/many-0179.txt", + "object-tests/batch/many-0180.txt", + "object-tests/batch/many-0181.txt", + "object-tests/batch/many-0182.txt", + "object-tests/batch/many-0183.txt", + "object-tests/batch/many-0184.txt", + "object-tests/batch/many-0185.txt", + "object-tests/batch/many-0186.txt", + "object-tests/batch/many-0187.txt", + "object-tests/batch/many-0188.txt", + "object-tests/batch/many-0189.txt", + "object-tests/batch/many-0190.txt", + "object-tests/batch/many-0191.txt", + "object-tests/batch/many-0192.txt", + "object-tests/batch/many-0193.txt", + "object-tests/batch/many-0194.txt", + "object-tests/batch/many-0195.txt", + "object-tests/batch/many-0196.txt", + "object-tests/batch/many-0197.txt", + "object-tests/batch/many-0198.txt", + "object-tests/batch/many-0199.txt", + "object-tests/batch/many-0200.txt", + "object-tests/batch/many-0201.txt", + "object-tests/batch/many-0202.txt", + "object-tests/batch/many-0203.txt", + "object-tests/batch/many-0204.txt", + "object-tests/batch/many-0205.txt", + "object-tests/batch/many-0206.txt", + "object-tests/batch/many-0207.txt", + "object-tests/batch/many-0208.txt", + "object-tests/batch/many-0209.txt", + "object-tests/batch/many-0210.txt", + "object-tests/batch/many-0211.txt", + "object-tests/batch/many-0212.txt", + "object-tests/batch/many-0213.txt", + "object-tests/batch/many-0214.txt", + "object-tests/batch/many-0215.txt", + "object-tests/batch/many-0216.txt", + "object-tests/batch/many-0217.txt", + "object-tests/batch/many-0218.txt", + "object-tests/batch/many-0219.txt", + "object-tests/batch/many-0220.txt", + "object-tests/batch/many-0221.txt", + "object-tests/batch/many-0222.txt", + "object-tests/batch/many-0223.txt", + "object-tests/batch/many-0224.txt", + "object-tests/batch/many-0225.txt", + "object-tests/batch/many-0226.txt", + "object-tests/batch/many-0227.txt", + "object-tests/batch/many-0228.txt", + "object-tests/batch/many-0229.txt", + "object-tests/batch/many-0230.txt", + "object-tests/batch/many-0231.txt", + "object-tests/batch/many-0232.txt", + "object-tests/batch/many-0233.txt", + "object-tests/batch/many-0234.txt", + "object-tests/batch/many-0235.txt", + "object-tests/batch/many-0236.txt", + "object-tests/batch/many-0237.txt", + "object-tests/batch/many-0238.txt", + "object-tests/batch/many-0239.txt", + "object-tests/batch/many-0240.txt", + "object-tests/batch/many-0241.txt", + "object-tests/batch/many-0242.txt", + "object-tests/batch/many-0243.txt", + "object-tests/batch/many-0244.txt", + "object-tests/batch/many-0245.txt", + "object-tests/batch/many-0246.txt", + "object-tests/batch/many-0247.txt", + "object-tests/batch/many-0248.txt", + "object-tests/batch/many-0249.txt", + "object-tests/batch/many-0250.txt", + "object-tests/batch/many-0251.txt", + "object-tests/batch/many-0252.txt", + "object-tests/batch/many-0253.txt", + "object-tests/batch/many-0254.txt", + "object-tests/batch/many-0255.txt", + "object-tests/batch/many-0256.txt", + "object-tests/batch/many-0257.txt", + "object-tests/batch/many-0258.txt", + "object-tests/batch/many-0259.txt", + "object-tests/batch/many-0260.txt", + "object-tests/batch/many-0261.txt", + "object-tests/batch/many-0262.txt", + "object-tests/batch/many-0263.txt", + "object-tests/batch/many-0264.txt", + "object-tests/batch/many-0265.txt", + "object-tests/batch/many-0266.txt", + "object-tests/batch/many-0267.txt", + "object-tests/batch/many-0268.txt", + "object-tests/batch/many-0269.txt", + "object-tests/batch/many-0270.txt", + "object-tests/batch/many-0271.txt", + "object-tests/batch/many-0272.txt", + "object-tests/batch/many-0273.txt", + "object-tests/batch/many-0274.txt", + "object-tests/batch/many-0275.txt", + "object-tests/batch/many-0276.txt", + "object-tests/batch/many-0277.txt", + "object-tests/batch/many-0278.txt", + "object-tests/batch/many-0279.txt", + "object-tests/batch/many-0280.txt", + "object-tests/batch/many-0281.txt", + "object-tests/batch/many-0282.txt", + "object-tests/batch/many-0283.txt", + "object-tests/batch/many-0284.txt", + "object-tests/batch/many-0285.txt", + "object-tests/batch/many-0286.txt", + "object-tests/batch/many-0287.txt", + "object-tests/batch/many-0288.txt", + "object-tests/batch/many-0289.txt", + "object-tests/batch/many-0290.txt", + "object-tests/batch/many-0291.txt", + "object-tests/batch/many-0292.txt", + "object-tests/batch/many-0293.txt", + "object-tests/batch/many-0294.txt", + "object-tests/batch/many-0295.txt", + "object-tests/batch/many-0296.txt", + "object-tests/batch/many-0297.txt", + "object-tests/batch/many-0298.txt", + "object-tests/batch/many-0299.txt", + "object-tests/batch/many-0300.txt", + "object-tests/batch/many-0301.txt", + "object-tests/batch/many-0302.txt", + "object-tests/batch/many-0303.txt", + "object-tests/batch/many-0304.txt", + "object-tests/batch/many-0305.txt", + "object-tests/batch/many-0306.txt", + "object-tests/batch/many-0307.txt", + "object-tests/batch/many-0308.txt", + "object-tests/batch/many-0309.txt", + "object-tests/batch/many-0310.txt", + "object-tests/batch/many-0311.txt", + "object-tests/batch/many-0312.txt", + "object-tests/batch/many-0313.txt", + "object-tests/batch/many-0314.txt", + "object-tests/batch/many-0315.txt", + "object-tests/batch/many-0316.txt", + "object-tests/batch/many-0317.txt", + "object-tests/batch/many-0318.txt", + "object-tests/batch/many-0319.txt", + "object-tests/batch/many-0320.txt", + "object-tests/batch/many-0321.txt", + "object-tests/batch/many-0322.txt", + "object-tests/batch/many-0323.txt", + "object-tests/batch/many-0324.txt", + "object-tests/batch/many-0325.txt", + "object-tests/batch/many-0326.txt", + "object-tests/batch/many-0327.txt", + "object-tests/batch/many-0328.txt", + "object-tests/batch/many-0329.txt", + "object-tests/batch/many-0330.txt", + "object-tests/batch/many-0331.txt", + "object-tests/batch/many-0332.txt", + "object-tests/batch/many-0333.txt", + "object-tests/batch/many-0334.txt", + "object-tests/batch/many-0335.txt", + "object-tests/batch/many-0336.txt", + "object-tests/batch/many-0337.txt", + "object-tests/batch/many-0338.txt", + "object-tests/batch/many-0339.txt", + "object-tests/batch/many-0340.txt", + "object-tests/batch/many-0341.txt", + "object-tests/batch/many-0342.txt", + "object-tests/batch/many-0343.txt", + "object-tests/batch/many-0344.txt", + "object-tests/batch/many-0345.txt", + "object-tests/batch/many-0346.txt", + "object-tests/batch/many-0347.txt", + "object-tests/batch/many-0348.txt", + "object-tests/batch/many-0349.txt", + "object-tests/batch/many-0350.txt", + "object-tests/batch/many-0351.txt", + "object-tests/batch/many-0352.txt", + "object-tests/batch/many-0353.txt", + "object-tests/batch/many-0354.txt", + "object-tests/batch/many-0355.txt", + "object-tests/batch/many-0356.txt", + "object-tests/batch/many-0357.txt", + "object-tests/batch/many-0358.txt", + "object-tests/batch/many-0359.txt", + "object-tests/batch/many-0360.txt", + "object-tests/batch/many-0361.txt", + "object-tests/batch/many-0362.txt", + "object-tests/batch/many-0363.txt", + "object-tests/batch/many-0364.txt", + "object-tests/batch/many-0365.txt", + "object-tests/batch/many-0366.txt", + "object-tests/batch/many-0367.txt", + "object-tests/batch/many-0368.txt", + "object-tests/batch/many-0369.txt", + "object-tests/batch/many-0370.txt", + "object-tests/batch/many-0371.txt", + "object-tests/batch/many-0372.txt", + "object-tests/batch/many-0373.txt", + "object-tests/batch/many-0374.txt", + "object-tests/batch/many-0375.txt", + "object-tests/batch/many-0376.txt", + "object-tests/batch/many-0377.txt", + "object-tests/batch/many-0378.txt", + "object-tests/batch/many-0379.txt", + "object-tests/batch/many-0380.txt", + "object-tests/batch/many-0381.txt", + "object-tests/batch/many-0382.txt", + "object-tests/batch/many-0383.txt", + "object-tests/batch/many-0384.txt", + "object-tests/batch/many-0385.txt", + "object-tests/batch/many-0386.txt", + "object-tests/batch/many-0387.txt", + "object-tests/batch/many-0388.txt", + "object-tests/batch/many-0389.txt", + "object-tests/batch/many-0390.txt", + "object-tests/batch/many-0391.txt", + "object-tests/batch/many-0392.txt", + "object-tests/batch/many-0393.txt", + "object-tests/batch/many-0394.txt", + "object-tests/batch/many-0395.txt", + "object-tests/batch/many-0396.txt", + "object-tests/batch/many-0397.txt", + "object-tests/batch/many-0398.txt", + "object-tests/batch/many-0399.txt", + "object-tests/batch/many-0400.txt", + "object-tests/batch/many-0401.txt", + "object-tests/batch/many-0402.txt", + "object-tests/batch/many-0403.txt", + "object-tests/batch/many-0404.txt", + "object-tests/batch/many-0405.txt", + "object-tests/batch/many-0406.txt", + "object-tests/batch/many-0407.txt", + "object-tests/batch/many-0408.txt", + "object-tests/batch/many-0409.txt", + "object-tests/batch/many-0410.txt", + "object-tests/batch/many-0411.txt", + "object-tests/batch/many-0412.txt", + "object-tests/batch/many-0413.txt", + "object-tests/batch/many-0414.txt", + "object-tests/batch/many-0415.txt", + "object-tests/batch/many-0416.txt", + "object-tests/batch/many-0417.txt", + "object-tests/batch/many-0418.txt", + "object-tests/batch/many-0419.txt", + "object-tests/batch/many-0420.txt", + "object-tests/batch/many-0421.txt", + "object-tests/batch/many-0422.txt", + "object-tests/batch/many-0423.txt", + "object-tests/batch/many-0424.txt", + "object-tests/batch/many-0425.txt", + "object-tests/batch/many-0426.txt", + "object-tests/batch/many-0427.txt", + "object-tests/batch/many-0428.txt", + "object-tests/batch/many-0429.txt", + "object-tests/batch/many-0430.txt", + "object-tests/batch/many-0431.txt", + "object-tests/batch/many-0432.txt", + "object-tests/batch/many-0433.txt", + "object-tests/batch/many-0434.txt", + "object-tests/batch/many-0435.txt", + "object-tests/batch/many-0436.txt", + "object-tests/batch/many-0437.txt", + "object-tests/batch/many-0438.txt", + "object-tests/batch/many-0439.txt", + "object-tests/batch/many-0440.txt", + "object-tests/batch/many-0441.txt", + "object-tests/batch/many-0442.txt", + "object-tests/batch/many-0443.txt", + "object-tests/batch/many-0444.txt", + "object-tests/batch/many-0445.txt", + "object-tests/batch/many-0446.txt", + "object-tests/batch/many-0447.txt", + "object-tests/batch/many-0448.txt", + "object-tests/batch/many-0449.txt", + "object-tests/batch/many-0450.txt", + "object-tests/batch/many-0451.txt", + "object-tests/batch/many-0452.txt", + "object-tests/batch/many-0453.txt", + "object-tests/batch/many-0454.txt", + "object-tests/batch/many-0455.txt", + "object-tests/batch/many-0456.txt", + "object-tests/batch/many-0457.txt", + "object-tests/batch/many-0458.txt", + "object-tests/batch/many-0459.txt", + "object-tests/batch/many-0460.txt", + "object-tests/batch/many-0461.txt", + "object-tests/batch/many-0462.txt", + "object-tests/batch/many-0463.txt", + "object-tests/batch/many-0464.txt", + "object-tests/batch/many-0465.txt", + "object-tests/batch/many-0466.txt", + "object-tests/batch/many-0467.txt", + "object-tests/batch/many-0468.txt", + "object-tests/batch/many-0469.txt", + "object-tests/batch/many-0470.txt", + "object-tests/batch/many-0471.txt", + "object-tests/batch/many-0472.txt", + "object-tests/batch/many-0473.txt", + "object-tests/batch/many-0474.txt", + "object-tests/batch/many-0475.txt", + "object-tests/batch/many-0476.txt", + "object-tests/batch/many-0477.txt", + "object-tests/batch/many-0478.txt", + "object-tests/batch/many-0479.txt", + "object-tests/batch/many-0480.txt", + "object-tests/batch/many-0481.txt", + "object-tests/batch/many-0482.txt", + "object-tests/batch/many-0483.txt", + "object-tests/batch/many-0484.txt", + "object-tests/batch/many-0485.txt", + "object-tests/batch/many-0486.txt", + "object-tests/batch/many-0487.txt", + "object-tests/batch/many-0488.txt", + "object-tests/batch/many-0489.txt", + "object-tests/batch/many-0490.txt", + "object-tests/batch/many-0491.txt", + "object-tests/batch/many-0492.txt", + "object-tests/batch/many-0493.txt", + "object-tests/batch/many-0494.txt", + "object-tests/batch/many-0495.txt", + "object-tests/batch/many-0496.txt", + "object-tests/batch/many-0497.txt", + "object-tests/batch/many-0498.txt", + "object-tests/batch/many-0499.txt", + "object-tests/batch/many-0500.txt", + "object-tests/batch/many-0501.txt", + "object-tests/batch/many-0502.txt", + "object-tests/batch/many-0503.txt", + "object-tests/batch/many-0504.txt", + "object-tests/batch/many-0505.txt", + "object-tests/batch/many-0506.txt", + "object-tests/batch/many-0507.txt", + "object-tests/batch/many-0508.txt", + "object-tests/batch/many-0509.txt", + "object-tests/batch/many-0510.txt", + "object-tests/batch/many-0511.txt", + "object-tests/batch/many-0512.txt", + "object-tests/batch/many-0513.txt", + "object-tests/batch/many-0514.txt", + "object-tests/batch/many-0515.txt", + "object-tests/batch/many-0516.txt", + "object-tests/batch/many-0517.txt", + "object-tests/batch/many-0518.txt", + "object-tests/batch/many-0519.txt", + "object-tests/batch/many-0520.txt", + "object-tests/batch/many-0521.txt", + "object-tests/batch/many-0522.txt", + "object-tests/batch/many-0523.txt", + "object-tests/batch/many-0524.txt", + "object-tests/batch/many-0525.txt", + "object-tests/batch/many-0526.txt", + "object-tests/batch/many-0527.txt", + "object-tests/batch/many-0528.txt", + "object-tests/batch/many-0529.txt", + "object-tests/batch/many-0530.txt", + "object-tests/batch/many-0531.txt", + "object-tests/batch/many-0532.txt", + "object-tests/batch/many-0533.txt", + "object-tests/batch/many-0534.txt", + "object-tests/batch/many-0535.txt", + "object-tests/batch/many-0536.txt", + "object-tests/batch/many-0537.txt", + "object-tests/batch/many-0538.txt", + "object-tests/batch/many-0539.txt", + "object-tests/batch/many-0540.txt", + "object-tests/batch/many-0541.txt", + "object-tests/batch/many-0542.txt", + "object-tests/batch/many-0543.txt", + "object-tests/batch/many-0544.txt", + "object-tests/batch/many-0545.txt", + "object-tests/batch/many-0546.txt", + "object-tests/batch/many-0547.txt", + "object-tests/batch/many-0548.txt", + "object-tests/batch/many-0549.txt", + "object-tests/batch/many-0550.txt", + "object-tests/batch/many-0551.txt", + "object-tests/batch/many-0552.txt", + "object-tests/batch/many-0553.txt", + "object-tests/batch/many-0554.txt", + "object-tests/batch/many-0555.txt", + "object-tests/batch/many-0556.txt", + "object-tests/batch/many-0557.txt", + "object-tests/batch/many-0558.txt", + "object-tests/batch/many-0559.txt", + "object-tests/batch/many-0560.txt", + "object-tests/batch/many-0561.txt", + "object-tests/batch/many-0562.txt", + "object-tests/batch/many-0563.txt", + "object-tests/batch/many-0564.txt", + "object-tests/batch/many-0565.txt", + "object-tests/batch/many-0566.txt", + "object-tests/batch/many-0567.txt", + "object-tests/batch/many-0568.txt", + "object-tests/batch/many-0569.txt", + "object-tests/batch/many-0570.txt", + "object-tests/batch/many-0571.txt", + "object-tests/batch/many-0572.txt", + "object-tests/batch/many-0573.txt", + "object-tests/batch/many-0574.txt", + "object-tests/batch/many-0575.txt", + "object-tests/batch/many-0576.txt", + "object-tests/batch/many-0577.txt", + "object-tests/batch/many-0578.txt", + "object-tests/batch/many-0579.txt", + "object-tests/batch/many-0580.txt", + "object-tests/batch/many-0581.txt", + "object-tests/batch/many-0582.txt", + "object-tests/batch/many-0583.txt", + "object-tests/batch/many-0584.txt", + "object-tests/batch/many-0585.txt", + "object-tests/batch/many-0586.txt", + "object-tests/batch/many-0587.txt", + "object-tests/batch/many-0588.txt", + "object-tests/batch/many-0589.txt", + "object-tests/batch/many-0590.txt", + "object-tests/batch/many-0591.txt", + "object-tests/batch/many-0592.txt", + "object-tests/batch/many-0593.txt", + "object-tests/batch/many-0594.txt", + "object-tests/batch/many-0595.txt", + "object-tests/batch/many-0596.txt", + "object-tests/batch/many-0597.txt", + "object-tests/batch/many-0598.txt", + "object-tests/batch/many-0599.txt", + "object-tests/batch/many-0600.txt", + "object-tests/batch/many-0601.txt", + "object-tests/batch/many-0602.txt", + "object-tests/batch/many-0603.txt", + "object-tests/batch/many-0604.txt", + "object-tests/batch/many-0605.txt", + "object-tests/batch/many-0606.txt", + "object-tests/batch/many-0607.txt", + "object-tests/batch/many-0608.txt", + "object-tests/batch/many-0609.txt", + "object-tests/batch/many-0610.txt", + "object-tests/batch/many-0611.txt", + "object-tests/batch/many-0612.txt", + "object-tests/batch/many-0613.txt", + "object-tests/batch/many-0614.txt", + "object-tests/batch/many-0615.txt", + "object-tests/batch/many-0616.txt", + "object-tests/batch/many-0617.txt", + "object-tests/batch/many-0618.txt", + "object-tests/batch/many-0619.txt", + "object-tests/batch/many-0620.txt", + "object-tests/batch/many-0621.txt", + "object-tests/batch/many-0622.txt", + "object-tests/batch/many-0623.txt", + "object-tests/batch/many-0624.txt", + "object-tests/batch/many-0625.txt", + "object-tests/batch/many-0626.txt", + "object-tests/batch/many-0627.txt", + "object-tests/batch/many-0628.txt", + "object-tests/batch/many-0629.txt", + "object-tests/batch/many-0630.txt", + "object-tests/batch/many-0631.txt", + "object-tests/batch/many-0632.txt", + "object-tests/batch/many-0633.txt", + "object-tests/batch/many-0634.txt", + "object-tests/batch/many-0635.txt", + "object-tests/batch/many-0636.txt", + "object-tests/batch/many-0637.txt", + "object-tests/batch/many-0638.txt", + "object-tests/batch/many-0639.txt", + "object-tests/batch/many-0640.txt", + "object-tests/batch/many-0641.txt", + "object-tests/batch/many-0642.txt", + "object-tests/batch/many-0643.txt", + "object-tests/batch/many-0644.txt", + "object-tests/batch/many-0645.txt", + "object-tests/batch/many-0646.txt", + "object-tests/batch/many-0647.txt", + "object-tests/batch/many-0648.txt", + "object-tests/batch/many-0649.txt", + "object-tests/batch/many-0650.txt", + "object-tests/batch/many-0651.txt", + "object-tests/batch/many-0652.txt", + "object-tests/batch/many-0653.txt", + "object-tests/batch/many-0654.txt", + "object-tests/batch/many-0655.txt", + "object-tests/batch/many-0656.txt", + "object-tests/batch/many-0657.txt", + "object-tests/batch/many-0658.txt", + "object-tests/batch/many-0659.txt", + "object-tests/batch/many-0660.txt", + "object-tests/batch/many-0661.txt", + "object-tests/batch/many-0662.txt", + "object-tests/batch/many-0663.txt", + "object-tests/batch/many-0664.txt", + "object-tests/batch/many-0665.txt", + "object-tests/batch/many-0666.txt", + "object-tests/batch/many-0667.txt", + "object-tests/batch/many-0668.txt", + "object-tests/batch/many-0669.txt", + "object-tests/batch/many-0670.txt", + "object-tests/batch/many-0671.txt", + "object-tests/batch/many-0672.txt", + "object-tests/batch/many-0673.txt", + "object-tests/batch/many-0674.txt", + "object-tests/batch/many-0675.txt", + "object-tests/batch/many-0676.txt", + "object-tests/batch/many-0677.txt", + "object-tests/batch/many-0678.txt", + "object-tests/batch/many-0679.txt", + "object-tests/batch/many-0680.txt", + "object-tests/batch/many-0681.txt", + "object-tests/batch/many-0682.txt", + "object-tests/batch/many-0683.txt", + "object-tests/batch/many-0684.txt", + "object-tests/batch/many-0685.txt", + "object-tests/batch/many-0686.txt", + "object-tests/batch/many-0687.txt", + "object-tests/batch/many-0688.txt", + "object-tests/batch/many-0689.txt", + "object-tests/batch/many-0690.txt", + "object-tests/batch/many-0691.txt", + "object-tests/batch/many-0692.txt", + "object-tests/batch/many-0693.txt", + "object-tests/batch/many-0694.txt", + "object-tests/batch/many-0695.txt", + "object-tests/batch/many-0696.txt", + "object-tests/batch/many-0697.txt", + "object-tests/batch/many-0698.txt", + "object-tests/batch/many-0699.txt", + "object-tests/batch/many-0700.txt", + "object-tests/batch/many-0701.txt", + "object-tests/batch/many-0702.txt", + "object-tests/batch/many-0703.txt", + "object-tests/batch/many-0704.txt", + "object-tests/batch/many-0705.txt", + "object-tests/batch/many-0706.txt", + "object-tests/batch/many-0707.txt", + "object-tests/batch/many-0708.txt", + "object-tests/batch/many-0709.txt", + "object-tests/batch/many-0710.txt", + "object-tests/batch/many-0711.txt", + "object-tests/batch/many-0712.txt", + "object-tests/batch/many-0713.txt", + "object-tests/batch/many-0714.txt", + "object-tests/batch/many-0715.txt", + "object-tests/batch/many-0716.txt", + "object-tests/batch/many-0717.txt", + "object-tests/batch/many-0718.txt", + "object-tests/batch/many-0719.txt", + "object-tests/batch/many-0720.txt", + "object-tests/batch/many-0721.txt", + "object-tests/batch/many-0722.txt", + "object-tests/batch/many-0723.txt", + "object-tests/batch/many-0724.txt", + "object-tests/batch/many-0725.txt", + "object-tests/batch/many-0726.txt", + "object-tests/batch/many-0727.txt", + "object-tests/batch/many-0728.txt", + "object-tests/batch/many-0729.txt", + "object-tests/batch/many-0730.txt", + "object-tests/batch/many-0731.txt", + "object-tests/batch/many-0732.txt", + "object-tests/batch/many-0733.txt", + "object-tests/batch/many-0734.txt", + "object-tests/batch/many-0735.txt", + "object-tests/batch/many-0736.txt", + "object-tests/batch/many-0737.txt", + "object-tests/batch/many-0738.txt", + "object-tests/batch/many-0739.txt", + "object-tests/batch/many-0740.txt", + "object-tests/batch/many-0741.txt", + "object-tests/batch/many-0742.txt", + "object-tests/batch/many-0743.txt", + "object-tests/batch/many-0744.txt", + "object-tests/batch/many-0745.txt", + "object-tests/batch/many-0746.txt", + "object-tests/batch/many-0747.txt", + "object-tests/batch/many-0748.txt", + "object-tests/batch/many-0749.txt", + "object-tests/batch/many-0750.txt", + "object-tests/batch/many-0751.txt", + "object-tests/batch/many-0752.txt", + "object-tests/batch/many-0753.txt", + "object-tests/batch/many-0754.txt", + "object-tests/batch/many-0755.txt", + "object-tests/batch/many-0756.txt", + "object-tests/batch/many-0757.txt", + "object-tests/batch/many-0758.txt", + "object-tests/batch/many-0759.txt", + "object-tests/batch/many-0760.txt", + "object-tests/batch/many-0761.txt", + "object-tests/batch/many-0762.txt", + "object-tests/batch/many-0763.txt", + "object-tests/batch/many-0764.txt", + "object-tests/batch/many-0765.txt", + "object-tests/batch/many-0766.txt", + "object-tests/batch/many-0767.txt", + "object-tests/batch/many-0768.txt", + "object-tests/batch/many-0769.txt", + "object-tests/batch/many-0770.txt", + "object-tests/batch/many-0771.txt", + "object-tests/batch/many-0772.txt", + "object-tests/batch/many-0773.txt", + "object-tests/batch/many-0774.txt", + "object-tests/batch/many-0775.txt", + "object-tests/batch/many-0776.txt", + "object-tests/batch/many-0777.txt", + "object-tests/batch/many-0778.txt", + "object-tests/batch/many-0779.txt", + "object-tests/batch/many-0780.txt", + "object-tests/batch/many-0781.txt", + "object-tests/batch/many-0782.txt", + "object-tests/batch/many-0783.txt", + "object-tests/batch/many-0784.txt", + "object-tests/batch/many-0785.txt", + "object-tests/batch/many-0786.txt", + "object-tests/batch/many-0787.txt", + "object-tests/batch/many-0788.txt", + "object-tests/batch/many-0789.txt", + "object-tests/batch/many-0790.txt", + "object-tests/batch/many-0791.txt", + "object-tests/batch/many-0792.txt", + "object-tests/batch/many-0793.txt", + "object-tests/batch/many-0794.txt", + "object-tests/batch/many-0795.txt", + "object-tests/batch/many-0796.txt", + "object-tests/batch/many-0797.txt", + "object-tests/batch/many-0798.txt", + "object-tests/batch/many-0799.txt", + "object-tests/batch/many-0800.txt", + "object-tests/batch/many-0801.txt", + "object-tests/batch/many-0802.txt", + "object-tests/batch/many-0803.txt", + "object-tests/batch/many-0804.txt", + "object-tests/batch/many-0805.txt", + "object-tests/batch/many-0806.txt", + "object-tests/batch/many-0807.txt", + "object-tests/batch/many-0808.txt", + "object-tests/batch/many-0809.txt", + "object-tests/batch/many-0810.txt", + "object-tests/batch/many-0811.txt", + "object-tests/batch/many-0812.txt", + "object-tests/batch/many-0813.txt", + "object-tests/batch/many-0814.txt", + "object-tests/batch/many-0815.txt", + "object-tests/batch/many-0816.txt", + "object-tests/batch/many-0817.txt", + "object-tests/batch/many-0818.txt", + "object-tests/batch/many-0819.txt", + "object-tests/batch/many-0820.txt", + "object-tests/batch/many-0821.txt", + "object-tests/batch/many-0822.txt", + "object-tests/batch/many-0823.txt", + "object-tests/batch/many-0824.txt", + "object-tests/batch/many-0825.txt", + "object-tests/batch/many-0826.txt", + "object-tests/batch/many-0827.txt", + "object-tests/batch/many-0828.txt", + "object-tests/batch/many-0829.txt", + "object-tests/batch/many-0830.txt", + "object-tests/batch/many-0831.txt", + "object-tests/batch/many-0832.txt", + "object-tests/batch/many-0833.txt", + "object-tests/batch/many-0834.txt", + "object-tests/batch/many-0835.txt", + "object-tests/batch/many-0836.txt", + "object-tests/batch/many-0837.txt", + "object-tests/batch/many-0838.txt", + "object-tests/batch/many-0839.txt", + "object-tests/batch/many-0840.txt", + "object-tests/batch/many-0841.txt", + "object-tests/batch/many-0842.txt", + "object-tests/batch/many-0843.txt", + "object-tests/batch/many-0844.txt", + "object-tests/batch/many-0845.txt", + "object-tests/batch/many-0846.txt", + "object-tests/batch/many-0847.txt", + "object-tests/batch/many-0848.txt", + "object-tests/batch/many-0849.txt", + "object-tests/batch/many-0850.txt", + "object-tests/batch/many-0851.txt", + "object-tests/batch/many-0852.txt", + "object-tests/batch/many-0853.txt", + "object-tests/batch/many-0854.txt", + "object-tests/batch/many-0855.txt", + "object-tests/batch/many-0856.txt", + "object-tests/batch/many-0857.txt", + "object-tests/batch/many-0858.txt", + "object-tests/batch/many-0859.txt", + "object-tests/batch/many-0860.txt", + "object-tests/batch/many-0861.txt", + "object-tests/batch/many-0862.txt", + "object-tests/batch/many-0863.txt", + "object-tests/batch/many-0864.txt", + "object-tests/batch/many-0865.txt", + "object-tests/batch/many-0866.txt", + "object-tests/batch/many-0867.txt", + "object-tests/batch/many-0868.txt", + "object-tests/batch/many-0869.txt", + "object-tests/batch/many-0870.txt", + "object-tests/batch/many-0871.txt", + "object-tests/batch/many-0872.txt", + "object-tests/batch/many-0873.txt", + "object-tests/batch/many-0874.txt", + "object-tests/batch/many-0875.txt", + "object-tests/batch/many-0876.txt", + "object-tests/batch/many-0877.txt", + "object-tests/batch/many-0878.txt", + "object-tests/batch/many-0879.txt", + "object-tests/batch/many-0880.txt", + "object-tests/batch/many-0881.txt", + "object-tests/batch/many-0882.txt", + "object-tests/batch/many-0883.txt", + "object-tests/batch/many-0884.txt", + "object-tests/batch/many-0885.txt", + "object-tests/batch/many-0886.txt", + "object-tests/batch/many-0887.txt", + "object-tests/batch/many-0888.txt", + "object-tests/batch/many-0889.txt", + "object-tests/batch/many-0890.txt", + "object-tests/batch/many-0891.txt", + "object-tests/batch/many-0892.txt", + "object-tests/batch/many-0893.txt", + "object-tests/batch/many-0894.txt", + "object-tests/batch/many-0895.txt", + "object-tests/batch/many-0896.txt", + "object-tests/batch/many-0897.txt", + "object-tests/batch/many-0898.txt", + "object-tests/batch/many-0899.txt", + "object-tests/batch/many-0900.txt", + "object-tests/batch/many-0901.txt", + "object-tests/batch/many-0902.txt", + "object-tests/batch/many-0903.txt", + "object-tests/batch/many-0904.txt", + "object-tests/batch/many-0905.txt", + "object-tests/batch/many-0906.txt", + "object-tests/batch/many-0907.txt", + "object-tests/batch/many-0908.txt", + "object-tests/batch/many-0909.txt", + "object-tests/batch/many-0910.txt", + "object-tests/batch/many-0911.txt", + "object-tests/batch/many-0912.txt", + "object-tests/batch/many-0913.txt", + "object-tests/batch/many-0914.txt", + "object-tests/batch/many-0915.txt", + "object-tests/batch/many-0916.txt", + "object-tests/batch/many-0917.txt", + "object-tests/batch/many-0918.txt", + "object-tests/batch/many-0919.txt", + "object-tests/batch/many-0920.txt", + "object-tests/batch/many-0921.txt", + "object-tests/batch/many-0922.txt", + "object-tests/batch/many-0923.txt", + "object-tests/batch/many-0924.txt", + "object-tests/batch/many-0925.txt", + "object-tests/batch/many-0926.txt", + "object-tests/batch/many-0927.txt", + "object-tests/batch/many-0928.txt", + "object-tests/batch/many-0929.txt", + "object-tests/batch/many-0930.txt", + "object-tests/batch/many-0931.txt", + "object-tests/batch/many-0932.txt", + "object-tests/batch/many-0933.txt", + "object-tests/batch/many-0934.txt", + "object-tests/batch/many-0935.txt", + "object-tests/batch/many-0936.txt", + "object-tests/batch/many-0937.txt", + "object-tests/batch/many-0938.txt", + "object-tests/batch/many-0939.txt", + "object-tests/batch/many-0940.txt", + "object-tests/batch/many-0941.txt", + "object-tests/batch/many-0942.txt", + "object-tests/batch/many-0943.txt", + "object-tests/batch/many-0944.txt", + "object-tests/batch/many-0945.txt", + "object-tests/batch/many-0946.txt", + "object-tests/batch/many-0947.txt", + "object-tests/batch/many-0948.txt", + "object-tests/batch/many-0949.txt", + "object-tests/batch/many-0950.txt", + "object-tests/batch/many-0951.txt", + "object-tests/batch/many-0952.txt", + "object-tests/batch/many-0953.txt", + "object-tests/batch/many-0954.txt", + "object-tests/batch/many-0955.txt", + "object-tests/batch/many-0956.txt", + "object-tests/batch/many-0957.txt", + "object-tests/batch/many-0958.txt", + "object-tests/batch/many-0959.txt", + "object-tests/batch/many-0960.txt", + "object-tests/batch/many-0961.txt", + "object-tests/batch/many-0962.txt", + "object-tests/batch/many-0963.txt", + "object-tests/batch/many-0964.txt", + "object-tests/batch/many-0965.txt", + "object-tests/batch/many-0966.txt", + "object-tests/batch/many-0967.txt", + "object-tests/batch/many-0968.txt", + "object-tests/batch/many-0969.txt", + "object-tests/batch/many-0970.txt", + "object-tests/batch/many-0971.txt", + "object-tests/batch/many-0972.txt", + "object-tests/batch/many-0973.txt", + "object-tests/batch/many-0974.txt", + "object-tests/batch/many-0975.txt", + "object-tests/batch/many-0976.txt", + "object-tests/batch/many-0977.txt", + "object-tests/batch/many-0978.txt", + "object-tests/batch/many-0979.txt", + "object-tests/batch/many-0980.txt", + "object-tests/batch/many-0981.txt", + "object-tests/batch/many-0982.txt", + "object-tests/batch/many-0983.txt", + "object-tests/batch/many-0984.txt", + "object-tests/batch/many-0985.txt", + "object-tests/batch/many-0986.txt", + "object-tests/batch/many-0987.txt", + "object-tests/batch/many-0988.txt", + "object-tests/batch/many-0989.txt", + "object-tests/batch/many-0990.txt", + "object-tests/batch/many-0991.txt", + "object-tests/batch/many-0992.txt", + "object-tests/batch/many-0993.txt", + "object-tests/batch/many-0994.txt", + "object-tests/batch/many-0995.txt", + "object-tests/batch/many-0996.txt", + "object-tests/batch/many-0997.txt", + "object-tests/batch/many-0998.txt", + "object-tests/batch/many-0999.txt" + ], + "op": "delete_many" + }, + "exchanges": [ { "alternatives": [ { @@ -115787,7 +154940,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "GET" } }, { @@ -115795,23 +154948,15 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/multipart/small.bin" - } - }, - { - "at": "/body_text", - "optional": false, - "rule": { - "is": "xml", - "value": "1\"fixture-132cb4a5de9d\"2\"fixture-2cab82eb728e\"" + "value": "/" } }, { - "at": "/query/uploadId", + "at": "/query/session", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/09837ae2020c=" + "value": "" } }, { @@ -115823,22 +154968,122 @@ } }, { - "at": "/headers/x-amz-s3session-token", + "at": "/headers/authorization", "optional": false, "rule": { - "is": "equal", - "value": "fixture-session-token" + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } }, { - "at": "/headers/authorization", + "at": "/headers/x-amz-s3session-token", "optional": false, "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + "is": "absent" } } ], + "then": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "POST" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/" + } + }, + { + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "object-tests/batch/many-0000.txtobject-tests/batch/many-0001.txtobject-tests/batch/many-0002.txtobject-tests/batch/many-0003.txtobject-tests/batch/many-0004.txtobject-tests/batch/many-0005.txtobject-tests/batch/many-0006.txtobject-tests/batch/many-0007.txtobject-tests/batch/many-0008.txtobject-tests/batch/many-0009.txtobject-tests/batch/many-0010.txtobject-tests/batch/many-0011.txtobject-tests/batch/many-0012.txtobject-tests/batch/many-0013.txtobject-tests/batch/many-0014.txtobject-tests/batch/many-0015.txtobject-tests/batch/many-0016.txtobject-tests/batch/many-0017.txtobject-tests/batch/many-0018.txtobject-tests/batch/many-0019.txtobject-tests/batch/many-0020.txtobject-tests/batch/many-0021.txtobject-tests/batch/many-0022.txtobject-tests/batch/many-0023.txtobject-tests/batch/many-0024.txtobject-tests/batch/many-0025.txtobject-tests/batch/many-0026.txtobject-tests/batch/many-0027.txtobject-tests/batch/many-0028.txtobject-tests/batch/many-0029.txtobject-tests/batch/many-0030.txtobject-tests/batch/many-0031.txtobject-tests/batch/many-0032.txtobject-tests/batch/many-0033.txtobject-tests/batch/many-0034.txtobject-tests/batch/many-0035.txtobject-tests/batch/many-0036.txtobject-tests/batch/many-0037.txtobject-tests/batch/many-0038.txtobject-tests/batch/many-0039.txtobject-tests/batch/many-0040.txtobject-tests/batch/many-0041.txtobject-tests/batch/many-0042.txtobject-tests/batch/many-0043.txtobject-tests/batch/many-0044.txtobject-tests/batch/many-0045.txtobject-tests/batch/many-0046.txtobject-tests/batch/many-0047.txtobject-tests/batch/many-0048.txtobject-tests/batch/many-0049.txtobject-tests/batch/many-0050.txtobject-tests/batch/many-0051.txtobject-tests/batch/many-0052.txtobject-tests/batch/many-0053.txtobject-tests/batch/many-0054.txtobject-tests/batch/many-0055.txtobject-tests/batch/many-0056.txtobject-tests/batch/many-0057.txtobject-tests/batch/many-0058.txtobject-tests/batch/many-0059.txtobject-tests/batch/many-0060.txtobject-tests/batch/many-0061.txtobject-tests/batch/many-0062.txtobject-tests/batch/many-0063.txtobject-tests/batch/many-0064.txtobject-tests/batch/many-0065.txtobject-tests/batch/many-0066.txtobject-tests/batch/many-0067.txtobject-tests/batch/many-0068.txtobject-tests/batch/many-0069.txtobject-tests/batch/many-0070.txtobject-tests/batch/many-0071.txtobject-tests/batch/many-0072.txtobject-tests/batch/many-0073.txtobject-tests/batch/many-0074.txtobject-tests/batch/many-0075.txtobject-tests/batch/many-0076.txtobject-tests/batch/many-0077.txtobject-tests/batch/many-0078.txtobject-tests/batch/many-0079.txtobject-tests/batch/many-0080.txtobject-tests/batch/many-0081.txtobject-tests/batch/many-0082.txtobject-tests/batch/many-0083.txtobject-tests/batch/many-0084.txtobject-tests/batch/many-0085.txtobject-tests/batch/many-0086.txtobject-tests/batch/many-0087.txtobject-tests/batch/many-0088.txtobject-tests/batch/many-0089.txtobject-tests/batch/many-0090.txtobject-tests/batch/many-0091.txtobject-tests/batch/many-0092.txtobject-tests/batch/many-0093.txtobject-tests/batch/many-0094.txtobject-tests/batch/many-0095.txtobject-tests/batch/many-0096.txtobject-tests/batch/many-0097.txtobject-tests/batch/many-0098.txtobject-tests/batch/many-0099.txtobject-tests/batch/many-0100.txtobject-tests/batch/many-0101.txtobject-tests/batch/many-0102.txtobject-tests/batch/many-0103.txtobject-tests/batch/many-0104.txtobject-tests/batch/many-0105.txtobject-tests/batch/many-0106.txtobject-tests/batch/many-0107.txtobject-tests/batch/many-0108.txtobject-tests/batch/many-0109.txtobject-tests/batch/many-0110.txtobject-tests/batch/many-0111.txtobject-tests/batch/many-0112.txtobject-tests/batch/many-0113.txtobject-tests/batch/many-0114.txtobject-tests/batch/many-0115.txtobject-tests/batch/many-0116.txtobject-tests/batch/many-0117.txtobject-tests/batch/many-0118.txtobject-tests/batch/many-0119.txtobject-tests/batch/many-0120.txtobject-tests/batch/many-0121.txtobject-tests/batch/many-0122.txtobject-tests/batch/many-0123.txtobject-tests/batch/many-0124.txtobject-tests/batch/many-0125.txtobject-tests/batch/many-0126.txtobject-tests/batch/many-0127.txtobject-tests/batch/many-0128.txtobject-tests/batch/many-0129.txtobject-tests/batch/many-0130.txtobject-tests/batch/many-0131.txtobject-tests/batch/many-0132.txtobject-tests/batch/many-0133.txtobject-tests/batch/many-0134.txtobject-tests/batch/many-0135.txtobject-tests/batch/many-0136.txtobject-tests/batch/many-0137.txtobject-tests/batch/many-0138.txtobject-tests/batch/many-0139.txtobject-tests/batch/many-0140.txtobject-tests/batch/many-0141.txtobject-tests/batch/many-0142.txtobject-tests/batch/many-0143.txtobject-tests/batch/many-0144.txtobject-tests/batch/many-0145.txtobject-tests/batch/many-0146.txtobject-tests/batch/many-0147.txtobject-tests/batch/many-0148.txtobject-tests/batch/many-0149.txtobject-tests/batch/many-0150.txtobject-tests/batch/many-0151.txtobject-tests/batch/many-0152.txtobject-tests/batch/many-0153.txtobject-tests/batch/many-0154.txtobject-tests/batch/many-0155.txtobject-tests/batch/many-0156.txtobject-tests/batch/many-0157.txtobject-tests/batch/many-0158.txtobject-tests/batch/many-0159.txtobject-tests/batch/many-0160.txtobject-tests/batch/many-0161.txtobject-tests/batch/many-0162.txtobject-tests/batch/many-0163.txtobject-tests/batch/many-0164.txtobject-tests/batch/many-0165.txtobject-tests/batch/many-0166.txtobject-tests/batch/many-0167.txtobject-tests/batch/many-0168.txtobject-tests/batch/many-0169.txtobject-tests/batch/many-0170.txtobject-tests/batch/many-0171.txtobject-tests/batch/many-0172.txtobject-tests/batch/many-0173.txtobject-tests/batch/many-0174.txtobject-tests/batch/many-0175.txtobject-tests/batch/many-0176.txtobject-tests/batch/many-0177.txtobject-tests/batch/many-0178.txtobject-tests/batch/many-0179.txtobject-tests/batch/many-0180.txtobject-tests/batch/many-0181.txtobject-tests/batch/many-0182.txtobject-tests/batch/many-0183.txtobject-tests/batch/many-0184.txtobject-tests/batch/many-0185.txtobject-tests/batch/many-0186.txtobject-tests/batch/many-0187.txtobject-tests/batch/many-0188.txtobject-tests/batch/many-0189.txtobject-tests/batch/many-0190.txtobject-tests/batch/many-0191.txtobject-tests/batch/many-0192.txtobject-tests/batch/many-0193.txtobject-tests/batch/many-0194.txtobject-tests/batch/many-0195.txtobject-tests/batch/many-0196.txtobject-tests/batch/many-0197.txtobject-tests/batch/many-0198.txtobject-tests/batch/many-0199.txtobject-tests/batch/many-0200.txtobject-tests/batch/many-0201.txtobject-tests/batch/many-0202.txtobject-tests/batch/many-0203.txtobject-tests/batch/many-0204.txtobject-tests/batch/many-0205.txtobject-tests/batch/many-0206.txtobject-tests/batch/many-0207.txtobject-tests/batch/many-0208.txtobject-tests/batch/many-0209.txtobject-tests/batch/many-0210.txtobject-tests/batch/many-0211.txtobject-tests/batch/many-0212.txtobject-tests/batch/many-0213.txtobject-tests/batch/many-0214.txtobject-tests/batch/many-0215.txtobject-tests/batch/many-0216.txtobject-tests/batch/many-0217.txtobject-tests/batch/many-0218.txtobject-tests/batch/many-0219.txtobject-tests/batch/many-0220.txtobject-tests/batch/many-0221.txtobject-tests/batch/many-0222.txtobject-tests/batch/many-0223.txtobject-tests/batch/many-0224.txtobject-tests/batch/many-0225.txtobject-tests/batch/many-0226.txtobject-tests/batch/many-0227.txtobject-tests/batch/many-0228.txtobject-tests/batch/many-0229.txtobject-tests/batch/many-0230.txtobject-tests/batch/many-0231.txtobject-tests/batch/many-0232.txtobject-tests/batch/many-0233.txtobject-tests/batch/many-0234.txtobject-tests/batch/many-0235.txtobject-tests/batch/many-0236.txtobject-tests/batch/many-0237.txtobject-tests/batch/many-0238.txtobject-tests/batch/many-0239.txtobject-tests/batch/many-0240.txtobject-tests/batch/many-0241.txtobject-tests/batch/many-0242.txtobject-tests/batch/many-0243.txtobject-tests/batch/many-0244.txtobject-tests/batch/many-0245.txtobject-tests/batch/many-0246.txtobject-tests/batch/many-0247.txtobject-tests/batch/many-0248.txtobject-tests/batch/many-0249.txtobject-tests/batch/many-0250.txtobject-tests/batch/many-0251.txtobject-tests/batch/many-0252.txtobject-tests/batch/many-0253.txtobject-tests/batch/many-0254.txtobject-tests/batch/many-0255.txtobject-tests/batch/many-0256.txtobject-tests/batch/many-0257.txtobject-tests/batch/many-0258.txtobject-tests/batch/many-0259.txtobject-tests/batch/many-0260.txtobject-tests/batch/many-0261.txtobject-tests/batch/many-0262.txtobject-tests/batch/many-0263.txtobject-tests/batch/many-0264.txtobject-tests/batch/many-0265.txtobject-tests/batch/many-0266.txtobject-tests/batch/many-0267.txtobject-tests/batch/many-0268.txtobject-tests/batch/many-0269.txtobject-tests/batch/many-0270.txtobject-tests/batch/many-0271.txtobject-tests/batch/many-0272.txtobject-tests/batch/many-0273.txtobject-tests/batch/many-0274.txtobject-tests/batch/many-0275.txtobject-tests/batch/many-0276.txtobject-tests/batch/many-0277.txtobject-tests/batch/many-0278.txtobject-tests/batch/many-0279.txtobject-tests/batch/many-0280.txtobject-tests/batch/many-0281.txtobject-tests/batch/many-0282.txtobject-tests/batch/many-0283.txtobject-tests/batch/many-0284.txtobject-tests/batch/many-0285.txtobject-tests/batch/many-0286.txtobject-tests/batch/many-0287.txtobject-tests/batch/many-0288.txtobject-tests/batch/many-0289.txtobject-tests/batch/many-0290.txtobject-tests/batch/many-0291.txtobject-tests/batch/many-0292.txtobject-tests/batch/many-0293.txtobject-tests/batch/many-0294.txtobject-tests/batch/many-0295.txtobject-tests/batch/many-0296.txtobject-tests/batch/many-0297.txtobject-tests/batch/many-0298.txtobject-tests/batch/many-0299.txtobject-tests/batch/many-0300.txtobject-tests/batch/many-0301.txtobject-tests/batch/many-0302.txtobject-tests/batch/many-0303.txtobject-tests/batch/many-0304.txtobject-tests/batch/many-0305.txtobject-tests/batch/many-0306.txtobject-tests/batch/many-0307.txtobject-tests/batch/many-0308.txtobject-tests/batch/many-0309.txtobject-tests/batch/many-0310.txtobject-tests/batch/many-0311.txtobject-tests/batch/many-0312.txtobject-tests/batch/many-0313.txtobject-tests/batch/many-0314.txtobject-tests/batch/many-0315.txtobject-tests/batch/many-0316.txtobject-tests/batch/many-0317.txtobject-tests/batch/many-0318.txtobject-tests/batch/many-0319.txtobject-tests/batch/many-0320.txtobject-tests/batch/many-0321.txtobject-tests/batch/many-0322.txtobject-tests/batch/many-0323.txtobject-tests/batch/many-0324.txtobject-tests/batch/many-0325.txtobject-tests/batch/many-0326.txtobject-tests/batch/many-0327.txtobject-tests/batch/many-0328.txtobject-tests/batch/many-0329.txtobject-tests/batch/many-0330.txtobject-tests/batch/many-0331.txtobject-tests/batch/many-0332.txtobject-tests/batch/many-0333.txtobject-tests/batch/many-0334.txtobject-tests/batch/many-0335.txtobject-tests/batch/many-0336.txtobject-tests/batch/many-0337.txtobject-tests/batch/many-0338.txtobject-tests/batch/many-0339.txtobject-tests/batch/many-0340.txtobject-tests/batch/many-0341.txtobject-tests/batch/many-0342.txtobject-tests/batch/many-0343.txtobject-tests/batch/many-0344.txtobject-tests/batch/many-0345.txtobject-tests/batch/many-0346.txtobject-tests/batch/many-0347.txtobject-tests/batch/many-0348.txtobject-tests/batch/many-0349.txtobject-tests/batch/many-0350.txtobject-tests/batch/many-0351.txtobject-tests/batch/many-0352.txtobject-tests/batch/many-0353.txtobject-tests/batch/many-0354.txtobject-tests/batch/many-0355.txtobject-tests/batch/many-0356.txtobject-tests/batch/many-0357.txtobject-tests/batch/many-0358.txtobject-tests/batch/many-0359.txtobject-tests/batch/many-0360.txtobject-tests/batch/many-0361.txtobject-tests/batch/many-0362.txtobject-tests/batch/many-0363.txtobject-tests/batch/many-0364.txtobject-tests/batch/many-0365.txtobject-tests/batch/many-0366.txtobject-tests/batch/many-0367.txtobject-tests/batch/many-0368.txtobject-tests/batch/many-0369.txtobject-tests/batch/many-0370.txtobject-tests/batch/many-0371.txtobject-tests/batch/many-0372.txtobject-tests/batch/many-0373.txtobject-tests/batch/many-0374.txtobject-tests/batch/many-0375.txtobject-tests/batch/many-0376.txtobject-tests/batch/many-0377.txtobject-tests/batch/many-0378.txtobject-tests/batch/many-0379.txtobject-tests/batch/many-0380.txtobject-tests/batch/many-0381.txtobject-tests/batch/many-0382.txtobject-tests/batch/many-0383.txtobject-tests/batch/many-0384.txtobject-tests/batch/many-0385.txtobject-tests/batch/many-0386.txtobject-tests/batch/many-0387.txtobject-tests/batch/many-0388.txtobject-tests/batch/many-0389.txtobject-tests/batch/many-0390.txtobject-tests/batch/many-0391.txtobject-tests/batch/many-0392.txtobject-tests/batch/many-0393.txtobject-tests/batch/many-0394.txtobject-tests/batch/many-0395.txtobject-tests/batch/many-0396.txtobject-tests/batch/many-0397.txtobject-tests/batch/many-0398.txtobject-tests/batch/many-0399.txtobject-tests/batch/many-0400.txtobject-tests/batch/many-0401.txtobject-tests/batch/many-0402.txtobject-tests/batch/many-0403.txtobject-tests/batch/many-0404.txtobject-tests/batch/many-0405.txtobject-tests/batch/many-0406.txtobject-tests/batch/many-0407.txtobject-tests/batch/many-0408.txtobject-tests/batch/many-0409.txtobject-tests/batch/many-0410.txtobject-tests/batch/many-0411.txtobject-tests/batch/many-0412.txtobject-tests/batch/many-0413.txtobject-tests/batch/many-0414.txtobject-tests/batch/many-0415.txtobject-tests/batch/many-0416.txtobject-tests/batch/many-0417.txtobject-tests/batch/many-0418.txtobject-tests/batch/many-0419.txtobject-tests/batch/many-0420.txtobject-tests/batch/many-0421.txtobject-tests/batch/many-0422.txtobject-tests/batch/many-0423.txtobject-tests/batch/many-0424.txtobject-tests/batch/many-0425.txtobject-tests/batch/many-0426.txtobject-tests/batch/many-0427.txtobject-tests/batch/many-0428.txtobject-tests/batch/many-0429.txtobject-tests/batch/many-0430.txtobject-tests/batch/many-0431.txtobject-tests/batch/many-0432.txtobject-tests/batch/many-0433.txtobject-tests/batch/many-0434.txtobject-tests/batch/many-0435.txtobject-tests/batch/many-0436.txtobject-tests/batch/many-0437.txtobject-tests/batch/many-0438.txtobject-tests/batch/many-0439.txtobject-tests/batch/many-0440.txtobject-tests/batch/many-0441.txtobject-tests/batch/many-0442.txtobject-tests/batch/many-0443.txtobject-tests/batch/many-0444.txtobject-tests/batch/many-0445.txtobject-tests/batch/many-0446.txtobject-tests/batch/many-0447.txtobject-tests/batch/many-0448.txtobject-tests/batch/many-0449.txtobject-tests/batch/many-0450.txtobject-tests/batch/many-0451.txtobject-tests/batch/many-0452.txtobject-tests/batch/many-0453.txtobject-tests/batch/many-0454.txtobject-tests/batch/many-0455.txtobject-tests/batch/many-0456.txtobject-tests/batch/many-0457.txtobject-tests/batch/many-0458.txtobject-tests/batch/many-0459.txtobject-tests/batch/many-0460.txtobject-tests/batch/many-0461.txtobject-tests/batch/many-0462.txtobject-tests/batch/many-0463.txtobject-tests/batch/many-0464.txtobject-tests/batch/many-0465.txtobject-tests/batch/many-0466.txtobject-tests/batch/many-0467.txtobject-tests/batch/many-0468.txtobject-tests/batch/many-0469.txtobject-tests/batch/many-0470.txtobject-tests/batch/many-0471.txtobject-tests/batch/many-0472.txtobject-tests/batch/many-0473.txtobject-tests/batch/many-0474.txtobject-tests/batch/many-0475.txtobject-tests/batch/many-0476.txtobject-tests/batch/many-0477.txtobject-tests/batch/many-0478.txtobject-tests/batch/many-0479.txtobject-tests/batch/many-0480.txtobject-tests/batch/many-0481.txtobject-tests/batch/many-0482.txtobject-tests/batch/many-0483.txtobject-tests/batch/many-0484.txtobject-tests/batch/many-0485.txtobject-tests/batch/many-0486.txtobject-tests/batch/many-0487.txtobject-tests/batch/many-0488.txtobject-tests/batch/many-0489.txtobject-tests/batch/many-0490.txtobject-tests/batch/many-0491.txtobject-tests/batch/many-0492.txtobject-tests/batch/many-0493.txtobject-tests/batch/many-0494.txtobject-tests/batch/many-0495.txtobject-tests/batch/many-0496.txtobject-tests/batch/many-0497.txtobject-tests/batch/many-0498.txtobject-tests/batch/many-0499.txtobject-tests/batch/many-0500.txtobject-tests/batch/many-0501.txtobject-tests/batch/many-0502.txtobject-tests/batch/many-0503.txtobject-tests/batch/many-0504.txtobject-tests/batch/many-0505.txtobject-tests/batch/many-0506.txtobject-tests/batch/many-0507.txtobject-tests/batch/many-0508.txtobject-tests/batch/many-0509.txtobject-tests/batch/many-0510.txtobject-tests/batch/many-0511.txtobject-tests/batch/many-0512.txtobject-tests/batch/many-0513.txtobject-tests/batch/many-0514.txtobject-tests/batch/many-0515.txtobject-tests/batch/many-0516.txtobject-tests/batch/many-0517.txtobject-tests/batch/many-0518.txtobject-tests/batch/many-0519.txtobject-tests/batch/many-0520.txtobject-tests/batch/many-0521.txtobject-tests/batch/many-0522.txtobject-tests/batch/many-0523.txtobject-tests/batch/many-0524.txtobject-tests/batch/many-0525.txtobject-tests/batch/many-0526.txtobject-tests/batch/many-0527.txtobject-tests/batch/many-0528.txtobject-tests/batch/many-0529.txtobject-tests/batch/many-0530.txtobject-tests/batch/many-0531.txtobject-tests/batch/many-0532.txtobject-tests/batch/many-0533.txtobject-tests/batch/many-0534.txtobject-tests/batch/many-0535.txtobject-tests/batch/many-0536.txtobject-tests/batch/many-0537.txtobject-tests/batch/many-0538.txtobject-tests/batch/many-0539.txtobject-tests/batch/many-0540.txtobject-tests/batch/many-0541.txtobject-tests/batch/many-0542.txtobject-tests/batch/many-0543.txtobject-tests/batch/many-0544.txtobject-tests/batch/many-0545.txtobject-tests/batch/many-0546.txtobject-tests/batch/many-0547.txtobject-tests/batch/many-0548.txtobject-tests/batch/many-0549.txtobject-tests/batch/many-0550.txtobject-tests/batch/many-0551.txtobject-tests/batch/many-0552.txtobject-tests/batch/many-0553.txtobject-tests/batch/many-0554.txtobject-tests/batch/many-0555.txtobject-tests/batch/many-0556.txtobject-tests/batch/many-0557.txtobject-tests/batch/many-0558.txtobject-tests/batch/many-0559.txtobject-tests/batch/many-0560.txtobject-tests/batch/many-0561.txtobject-tests/batch/many-0562.txtobject-tests/batch/many-0563.txtobject-tests/batch/many-0564.txtobject-tests/batch/many-0565.txtobject-tests/batch/many-0566.txtobject-tests/batch/many-0567.txtobject-tests/batch/many-0568.txtobject-tests/batch/many-0569.txtobject-tests/batch/many-0570.txtobject-tests/batch/many-0571.txtobject-tests/batch/many-0572.txtobject-tests/batch/many-0573.txtobject-tests/batch/many-0574.txtobject-tests/batch/many-0575.txtobject-tests/batch/many-0576.txtobject-tests/batch/many-0577.txtobject-tests/batch/many-0578.txtobject-tests/batch/many-0579.txtobject-tests/batch/many-0580.txtobject-tests/batch/many-0581.txtobject-tests/batch/many-0582.txtobject-tests/batch/many-0583.txtobject-tests/batch/many-0584.txtobject-tests/batch/many-0585.txtobject-tests/batch/many-0586.txtobject-tests/batch/many-0587.txtobject-tests/batch/many-0588.txtobject-tests/batch/many-0589.txtobject-tests/batch/many-0590.txtobject-tests/batch/many-0591.txtobject-tests/batch/many-0592.txtobject-tests/batch/many-0593.txtobject-tests/batch/many-0594.txtobject-tests/batch/many-0595.txtobject-tests/batch/many-0596.txtobject-tests/batch/many-0597.txtobject-tests/batch/many-0598.txtobject-tests/batch/many-0599.txtobject-tests/batch/many-0600.txtobject-tests/batch/many-0601.txtobject-tests/batch/many-0602.txtobject-tests/batch/many-0603.txtobject-tests/batch/many-0604.txtobject-tests/batch/many-0605.txtobject-tests/batch/many-0606.txtobject-tests/batch/many-0607.txtobject-tests/batch/many-0608.txtobject-tests/batch/many-0609.txtobject-tests/batch/many-0610.txtobject-tests/batch/many-0611.txtobject-tests/batch/many-0612.txtobject-tests/batch/many-0613.txtobject-tests/batch/many-0614.txtobject-tests/batch/many-0615.txtobject-tests/batch/many-0616.txtobject-tests/batch/many-0617.txtobject-tests/batch/many-0618.txtobject-tests/batch/many-0619.txtobject-tests/batch/many-0620.txtobject-tests/batch/many-0621.txtobject-tests/batch/many-0622.txtobject-tests/batch/many-0623.txtobject-tests/batch/many-0624.txtobject-tests/batch/many-0625.txtobject-tests/batch/many-0626.txtobject-tests/batch/many-0627.txtobject-tests/batch/many-0628.txtobject-tests/batch/many-0629.txtobject-tests/batch/many-0630.txtobject-tests/batch/many-0631.txtobject-tests/batch/many-0632.txtobject-tests/batch/many-0633.txtobject-tests/batch/many-0634.txtobject-tests/batch/many-0635.txtobject-tests/batch/many-0636.txtobject-tests/batch/many-0637.txtobject-tests/batch/many-0638.txtobject-tests/batch/many-0639.txtobject-tests/batch/many-0640.txtobject-tests/batch/many-0641.txtobject-tests/batch/many-0642.txtobject-tests/batch/many-0643.txtobject-tests/batch/many-0644.txtobject-tests/batch/many-0645.txtobject-tests/batch/many-0646.txtobject-tests/batch/many-0647.txtobject-tests/batch/many-0648.txtobject-tests/batch/many-0649.txtobject-tests/batch/many-0650.txtobject-tests/batch/many-0651.txtobject-tests/batch/many-0652.txtobject-tests/batch/many-0653.txtobject-tests/batch/many-0654.txtobject-tests/batch/many-0655.txtobject-tests/batch/many-0656.txtobject-tests/batch/many-0657.txtobject-tests/batch/many-0658.txtobject-tests/batch/many-0659.txtobject-tests/batch/many-0660.txtobject-tests/batch/many-0661.txtobject-tests/batch/many-0662.txtobject-tests/batch/many-0663.txtobject-tests/batch/many-0664.txtobject-tests/batch/many-0665.txtobject-tests/batch/many-0666.txtobject-tests/batch/many-0667.txtobject-tests/batch/many-0668.txtobject-tests/batch/many-0669.txtobject-tests/batch/many-0670.txtobject-tests/batch/many-0671.txtobject-tests/batch/many-0672.txtobject-tests/batch/many-0673.txtobject-tests/batch/many-0674.txtobject-tests/batch/many-0675.txtobject-tests/batch/many-0676.txtobject-tests/batch/many-0677.txtobject-tests/batch/many-0678.txtobject-tests/batch/many-0679.txtobject-tests/batch/many-0680.txtobject-tests/batch/many-0681.txtobject-tests/batch/many-0682.txtobject-tests/batch/many-0683.txtobject-tests/batch/many-0684.txtobject-tests/batch/many-0685.txtobject-tests/batch/many-0686.txtobject-tests/batch/many-0687.txtobject-tests/batch/many-0688.txtobject-tests/batch/many-0689.txtobject-tests/batch/many-0690.txtobject-tests/batch/many-0691.txtobject-tests/batch/many-0692.txtobject-tests/batch/many-0693.txtobject-tests/batch/many-0694.txtobject-tests/batch/many-0695.txtobject-tests/batch/many-0696.txtobject-tests/batch/many-0697.txtobject-tests/batch/many-0698.txtobject-tests/batch/many-0699.txtobject-tests/batch/many-0700.txtobject-tests/batch/many-0701.txtobject-tests/batch/many-0702.txtobject-tests/batch/many-0703.txtobject-tests/batch/many-0704.txtobject-tests/batch/many-0705.txtobject-tests/batch/many-0706.txtobject-tests/batch/many-0707.txtobject-tests/batch/many-0708.txtobject-tests/batch/many-0709.txtobject-tests/batch/many-0710.txtobject-tests/batch/many-0711.txtobject-tests/batch/many-0712.txtobject-tests/batch/many-0713.txtobject-tests/batch/many-0714.txtobject-tests/batch/many-0715.txtobject-tests/batch/many-0716.txtobject-tests/batch/many-0717.txtobject-tests/batch/many-0718.txtobject-tests/batch/many-0719.txtobject-tests/batch/many-0720.txtobject-tests/batch/many-0721.txtobject-tests/batch/many-0722.txtobject-tests/batch/many-0723.txtobject-tests/batch/many-0724.txtobject-tests/batch/many-0725.txtobject-tests/batch/many-0726.txtobject-tests/batch/many-0727.txtobject-tests/batch/many-0728.txtobject-tests/batch/many-0729.txtobject-tests/batch/many-0730.txtobject-tests/batch/many-0731.txtobject-tests/batch/many-0732.txtobject-tests/batch/many-0733.txtobject-tests/batch/many-0734.txtobject-tests/batch/many-0735.txtobject-tests/batch/many-0736.txtobject-tests/batch/many-0737.txtobject-tests/batch/many-0738.txtobject-tests/batch/many-0739.txtobject-tests/batch/many-0740.txtobject-tests/batch/many-0741.txtobject-tests/batch/many-0742.txtobject-tests/batch/many-0743.txtobject-tests/batch/many-0744.txtobject-tests/batch/many-0745.txtobject-tests/batch/many-0746.txtobject-tests/batch/many-0747.txtobject-tests/batch/many-0748.txtobject-tests/batch/many-0749.txtobject-tests/batch/many-0750.txtobject-tests/batch/many-0751.txtobject-tests/batch/many-0752.txtobject-tests/batch/many-0753.txtobject-tests/batch/many-0754.txtobject-tests/batch/many-0755.txtobject-tests/batch/many-0756.txtobject-tests/batch/many-0757.txtobject-tests/batch/many-0758.txtobject-tests/batch/many-0759.txtobject-tests/batch/many-0760.txtobject-tests/batch/many-0761.txtobject-tests/batch/many-0762.txtobject-tests/batch/many-0763.txtobject-tests/batch/many-0764.txtobject-tests/batch/many-0765.txtobject-tests/batch/many-0766.txtobject-tests/batch/many-0767.txtobject-tests/batch/many-0768.txtobject-tests/batch/many-0769.txtobject-tests/batch/many-0770.txtobject-tests/batch/many-0771.txtobject-tests/batch/many-0772.txtobject-tests/batch/many-0773.txtobject-tests/batch/many-0774.txtobject-tests/batch/many-0775.txtobject-tests/batch/many-0776.txtobject-tests/batch/many-0777.txtobject-tests/batch/many-0778.txtobject-tests/batch/many-0779.txtobject-tests/batch/many-0780.txtobject-tests/batch/many-0781.txtobject-tests/batch/many-0782.txtobject-tests/batch/many-0783.txtobject-tests/batch/many-0784.txtobject-tests/batch/many-0785.txtobject-tests/batch/many-0786.txtobject-tests/batch/many-0787.txtobject-tests/batch/many-0788.txtobject-tests/batch/many-0789.txtobject-tests/batch/many-0790.txtobject-tests/batch/many-0791.txtobject-tests/batch/many-0792.txtobject-tests/batch/many-0793.txtobject-tests/batch/many-0794.txtobject-tests/batch/many-0795.txtobject-tests/batch/many-0796.txtobject-tests/batch/many-0797.txtobject-tests/batch/many-0798.txtobject-tests/batch/many-0799.txtobject-tests/batch/many-0800.txtobject-tests/batch/many-0801.txtobject-tests/batch/many-0802.txtobject-tests/batch/many-0803.txtobject-tests/batch/many-0804.txtobject-tests/batch/many-0805.txtobject-tests/batch/many-0806.txtobject-tests/batch/many-0807.txtobject-tests/batch/many-0808.txtobject-tests/batch/many-0809.txtobject-tests/batch/many-0810.txtobject-tests/batch/many-0811.txtobject-tests/batch/many-0812.txtobject-tests/batch/many-0813.txtobject-tests/batch/many-0814.txtobject-tests/batch/many-0815.txtobject-tests/batch/many-0816.txtobject-tests/batch/many-0817.txtobject-tests/batch/many-0818.txtobject-tests/batch/many-0819.txtobject-tests/batch/many-0820.txtobject-tests/batch/many-0821.txtobject-tests/batch/many-0822.txtobject-tests/batch/many-0823.txtobject-tests/batch/many-0824.txtobject-tests/batch/many-0825.txtobject-tests/batch/many-0826.txtobject-tests/batch/many-0827.txtobject-tests/batch/many-0828.txtobject-tests/batch/many-0829.txtobject-tests/batch/many-0830.txtobject-tests/batch/many-0831.txtobject-tests/batch/many-0832.txtobject-tests/batch/many-0833.txtobject-tests/batch/many-0834.txtobject-tests/batch/many-0835.txtobject-tests/batch/many-0836.txtobject-tests/batch/many-0837.txtobject-tests/batch/many-0838.txtobject-tests/batch/many-0839.txtobject-tests/batch/many-0840.txtobject-tests/batch/many-0841.txtobject-tests/batch/many-0842.txtobject-tests/batch/many-0843.txtobject-tests/batch/many-0844.txtobject-tests/batch/many-0845.txtobject-tests/batch/many-0846.txtobject-tests/batch/many-0847.txtobject-tests/batch/many-0848.txtobject-tests/batch/many-0849.txtobject-tests/batch/many-0850.txtobject-tests/batch/many-0851.txtobject-tests/batch/many-0852.txtobject-tests/batch/many-0853.txtobject-tests/batch/many-0854.txtobject-tests/batch/many-0855.txtobject-tests/batch/many-0856.txtobject-tests/batch/many-0857.txtobject-tests/batch/many-0858.txtobject-tests/batch/many-0859.txtobject-tests/batch/many-0860.txtobject-tests/batch/many-0861.txtobject-tests/batch/many-0862.txtobject-tests/batch/many-0863.txtobject-tests/batch/many-0864.txtobject-tests/batch/many-0865.txtobject-tests/batch/many-0866.txtobject-tests/batch/many-0867.txtobject-tests/batch/many-0868.txtobject-tests/batch/many-0869.txtobject-tests/batch/many-0870.txtobject-tests/batch/many-0871.txtobject-tests/batch/many-0872.txtobject-tests/batch/many-0873.txtobject-tests/batch/many-0874.txtobject-tests/batch/many-0875.txtobject-tests/batch/many-0876.txtobject-tests/batch/many-0877.txtobject-tests/batch/many-0878.txtobject-tests/batch/many-0879.txtobject-tests/batch/many-0880.txtobject-tests/batch/many-0881.txtobject-tests/batch/many-0882.txtobject-tests/batch/many-0883.txtobject-tests/batch/many-0884.txtobject-tests/batch/many-0885.txtobject-tests/batch/many-0886.txtobject-tests/batch/many-0887.txtobject-tests/batch/many-0888.txtobject-tests/batch/many-0889.txtobject-tests/batch/many-0890.txtobject-tests/batch/many-0891.txtobject-tests/batch/many-0892.txtobject-tests/batch/many-0893.txtobject-tests/batch/many-0894.txtobject-tests/batch/many-0895.txtobject-tests/batch/many-0896.txtobject-tests/batch/many-0897.txtobject-tests/batch/many-0898.txtobject-tests/batch/many-0899.txtobject-tests/batch/many-0900.txtobject-tests/batch/many-0901.txtobject-tests/batch/many-0902.txtobject-tests/batch/many-0903.txtobject-tests/batch/many-0904.txtobject-tests/batch/many-0905.txtobject-tests/batch/many-0906.txtobject-tests/batch/many-0907.txtobject-tests/batch/many-0908.txtobject-tests/batch/many-0909.txtobject-tests/batch/many-0910.txtobject-tests/batch/many-0911.txtobject-tests/batch/many-0912.txtobject-tests/batch/many-0913.txtobject-tests/batch/many-0914.txtobject-tests/batch/many-0915.txtobject-tests/batch/many-0916.txtobject-tests/batch/many-0917.txtobject-tests/batch/many-0918.txtobject-tests/batch/many-0919.txtobject-tests/batch/many-0920.txtobject-tests/batch/many-0921.txtobject-tests/batch/many-0922.txtobject-tests/batch/many-0923.txtobject-tests/batch/many-0924.txtobject-tests/batch/many-0925.txtobject-tests/batch/many-0926.txtobject-tests/batch/many-0927.txtobject-tests/batch/many-0928.txtobject-tests/batch/many-0929.txtobject-tests/batch/many-0930.txtobject-tests/batch/many-0931.txtobject-tests/batch/many-0932.txtobject-tests/batch/many-0933.txtobject-tests/batch/many-0934.txtobject-tests/batch/many-0935.txtobject-tests/batch/many-0936.txtobject-tests/batch/many-0937.txtobject-tests/batch/many-0938.txtobject-tests/batch/many-0939.txtobject-tests/batch/many-0940.txtobject-tests/batch/many-0941.txtobject-tests/batch/many-0942.txtobject-tests/batch/many-0943.txtobject-tests/batch/many-0944.txtobject-tests/batch/many-0945.txtobject-tests/batch/many-0946.txtobject-tests/batch/many-0947.txtobject-tests/batch/many-0948.txtobject-tests/batch/many-0949.txtobject-tests/batch/many-0950.txtobject-tests/batch/many-0951.txtobject-tests/batch/many-0952.txtobject-tests/batch/many-0953.txtobject-tests/batch/many-0954.txtobject-tests/batch/many-0955.txtobject-tests/batch/many-0956.txtobject-tests/batch/many-0957.txtobject-tests/batch/many-0958.txtobject-tests/batch/many-0959.txtobject-tests/batch/many-0960.txtobject-tests/batch/many-0961.txtobject-tests/batch/many-0962.txtobject-tests/batch/many-0963.txtobject-tests/batch/many-0964.txtobject-tests/batch/many-0965.txtobject-tests/batch/many-0966.txtobject-tests/batch/many-0967.txtobject-tests/batch/many-0968.txtobject-tests/batch/many-0969.txtobject-tests/batch/many-0970.txtobject-tests/batch/many-0971.txtobject-tests/batch/many-0972.txtobject-tests/batch/many-0973.txtobject-tests/batch/many-0974.txtobject-tests/batch/many-0975.txtobject-tests/batch/many-0976.txtobject-tests/batch/many-0977.txtobject-tests/batch/many-0978.txtobject-tests/batch/many-0979.txtobject-tests/batch/many-0980.txtobject-tests/batch/many-0981.txtobject-tests/batch/many-0982.txtobject-tests/batch/many-0983.txtobject-tests/batch/many-0984.txtobject-tests/batch/many-0985.txtobject-tests/batch/many-0986.txtobject-tests/batch/many-0987.txtobject-tests/batch/many-0988.txtobject-tests/batch/many-0989.txtobject-tests/batch/many-0990.txtobject-tests/batch/many-0991.txtobject-tests/batch/many-0992.txtobject-tests/batch/many-0993.txtobject-tests/batch/many-0994.txtobject-tests/batch/many-0995.txtobject-tests/batch/many-0996.txtobject-tests/batch/many-0997.txtobject-tests/batch/many-0998.txtobject-tests/batch/many-0999.txt" + } + }, + { + "at": "/query/delete", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/x-amz-checksum-crc64nvme", + "optional": false, + "rule": { + "is": "matches", + "pattern": "[A-Za-z0-9+/]{11}=" + } + }, + { + "at": "/headers/host", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-session-token" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + } + }, + { + "at": "", + "optional": false, + "rule": { + "is": "body_checksum", + "header": "x-amz-checksum-crc64nvme", + "algorithm": "crc64nvme" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + } + }, + "body": { + "encoding": "utf8", + "data": "\nobject-tests/batch/many-0000.txtobject-tests/batch/many-0001.txtobject-tests/batch/many-0002.txtobject-tests/batch/many-0003.txtobject-tests/batch/many-0004.txtobject-tests/batch/many-0005.txtobject-tests/batch/many-0006.txtobject-tests/batch/many-0007.txtobject-tests/batch/many-0008.txtobject-tests/batch/many-0009.txtobject-tests/batch/many-0010.txtobject-tests/batch/many-0011.txtobject-tests/batch/many-0012.txtobject-tests/batch/many-0013.txtobject-tests/batch/many-0014.txtobject-tests/batch/many-0015.txtobject-tests/batch/many-0016.txtobject-tests/batch/many-0017.txtobject-tests/batch/many-0018.txtobject-tests/batch/many-0019.txtobject-tests/batch/many-0020.txtobject-tests/batch/many-0021.txtobject-tests/batch/many-0022.txtobject-tests/batch/many-0023.txtobject-tests/batch/many-0024.txtobject-tests/batch/many-0025.txtobject-tests/batch/many-0026.txtobject-tests/batch/many-0027.txtobject-tests/batch/many-0028.txtobject-tests/batch/many-0029.txtobject-tests/batch/many-0030.txtobject-tests/batch/many-0031.txtobject-tests/batch/many-0032.txtobject-tests/batch/many-0033.txtobject-tests/batch/many-0034.txtobject-tests/batch/many-0035.txtobject-tests/batch/many-0036.txtobject-tests/batch/many-0037.txtobject-tests/batch/many-0038.txtobject-tests/batch/many-0039.txtobject-tests/batch/many-0040.txtobject-tests/batch/many-0041.txtobject-tests/batch/many-0042.txtobject-tests/batch/many-0043.txtobject-tests/batch/many-0044.txtobject-tests/batch/many-0045.txtobject-tests/batch/many-0046.txtobject-tests/batch/many-0047.txtobject-tests/batch/many-0048.txtobject-tests/batch/many-0049.txtobject-tests/batch/many-0050.txtobject-tests/batch/many-0051.txtobject-tests/batch/many-0052.txtobject-tests/batch/many-0053.txtobject-tests/batch/many-0054.txtobject-tests/batch/many-0055.txtobject-tests/batch/many-0056.txtobject-tests/batch/many-0057.txtobject-tests/batch/many-0058.txtobject-tests/batch/many-0059.txtobject-tests/batch/many-0060.txtobject-tests/batch/many-0061.txtobject-tests/batch/many-0062.txtobject-tests/batch/many-0063.txtobject-tests/batch/many-0064.txtobject-tests/batch/many-0065.txtobject-tests/batch/many-0066.txtobject-tests/batch/many-0067.txtobject-tests/batch/many-0068.txtobject-tests/batch/many-0069.txtobject-tests/batch/many-0070.txtobject-tests/batch/many-0071.txtobject-tests/batch/many-0072.txtobject-tests/batch/many-0073.txtobject-tests/batch/many-0074.txtobject-tests/batch/many-0075.txtobject-tests/batch/many-0076.txtobject-tests/batch/many-0077.txtobject-tests/batch/many-0078.txtobject-tests/batch/many-0079.txtobject-tests/batch/many-0080.txtobject-tests/batch/many-0081.txtobject-tests/batch/many-0082.txtobject-tests/batch/many-0083.txtobject-tests/batch/many-0084.txtobject-tests/batch/many-0085.txtobject-tests/batch/many-0086.txtobject-tests/batch/many-0087.txtobject-tests/batch/many-0088.txtobject-tests/batch/many-0089.txtobject-tests/batch/many-0090.txtobject-tests/batch/many-0091.txtobject-tests/batch/many-0092.txtobject-tests/batch/many-0093.txtobject-tests/batch/many-0094.txtobject-tests/batch/many-0095.txtobject-tests/batch/many-0096.txtobject-tests/batch/many-0097.txtobject-tests/batch/many-0098.txtobject-tests/batch/many-0099.txtobject-tests/batch/many-0100.txtobject-tests/batch/many-0101.txtobject-tests/batch/many-0102.txtobject-tests/batch/many-0103.txtobject-tests/batch/many-0104.txtobject-tests/batch/many-0105.txtobject-tests/batch/many-0106.txtobject-tests/batch/many-0107.txtobject-tests/batch/many-0108.txtobject-tests/batch/many-0109.txtobject-tests/batch/many-0110.txtobject-tests/batch/many-0111.txtobject-tests/batch/many-0112.txtobject-tests/batch/many-0113.txtobject-tests/batch/many-0114.txtobject-tests/batch/many-0115.txtobject-tests/batch/many-0116.txtobject-tests/batch/many-0117.txtobject-tests/batch/many-0118.txtobject-tests/batch/many-0119.txtobject-tests/batch/many-0120.txtobject-tests/batch/many-0121.txtobject-tests/batch/many-0122.txtobject-tests/batch/many-0123.txtobject-tests/batch/many-0124.txtobject-tests/batch/many-0125.txtobject-tests/batch/many-0126.txtobject-tests/batch/many-0127.txtobject-tests/batch/many-0128.txtobject-tests/batch/many-0129.txtobject-tests/batch/many-0130.txtobject-tests/batch/many-0131.txtobject-tests/batch/many-0132.txtobject-tests/batch/many-0133.txtobject-tests/batch/many-0134.txtobject-tests/batch/many-0135.txtobject-tests/batch/many-0136.txtobject-tests/batch/many-0137.txtobject-tests/batch/many-0138.txtobject-tests/batch/many-0139.txtobject-tests/batch/many-0140.txtobject-tests/batch/many-0141.txtobject-tests/batch/many-0142.txtobject-tests/batch/many-0143.txtobject-tests/batch/many-0144.txtobject-tests/batch/many-0145.txtobject-tests/batch/many-0146.txtobject-tests/batch/many-0147.txtobject-tests/batch/many-0148.txtobject-tests/batch/many-0149.txtobject-tests/batch/many-0150.txtobject-tests/batch/many-0151.txtobject-tests/batch/many-0152.txtobject-tests/batch/many-0153.txtobject-tests/batch/many-0154.txtobject-tests/batch/many-0155.txtobject-tests/batch/many-0156.txtobject-tests/batch/many-0157.txtobject-tests/batch/many-0158.txtobject-tests/batch/many-0159.txtobject-tests/batch/many-0160.txtobject-tests/batch/many-0161.txtobject-tests/batch/many-0162.txtobject-tests/batch/many-0163.txtobject-tests/batch/many-0164.txtobject-tests/batch/many-0165.txtobject-tests/batch/many-0166.txtobject-tests/batch/many-0167.txtobject-tests/batch/many-0168.txtobject-tests/batch/many-0169.txtobject-tests/batch/many-0170.txtobject-tests/batch/many-0171.txtobject-tests/batch/many-0172.txtobject-tests/batch/many-0173.txtobject-tests/batch/many-0174.txtobject-tests/batch/many-0175.txtobject-tests/batch/many-0176.txtobject-tests/batch/many-0177.txtobject-tests/batch/many-0178.txtobject-tests/batch/many-0179.txtobject-tests/batch/many-0180.txtobject-tests/batch/many-0181.txtobject-tests/batch/many-0182.txtobject-tests/batch/many-0183.txtobject-tests/batch/many-0184.txtobject-tests/batch/many-0185.txtobject-tests/batch/many-0186.txtobject-tests/batch/many-0187.txtobject-tests/batch/many-0188.txtobject-tests/batch/many-0189.txtobject-tests/batch/many-0190.txtobject-tests/batch/many-0191.txtobject-tests/batch/many-0192.txtobject-tests/batch/many-0193.txtobject-tests/batch/many-0194.txtobject-tests/batch/many-0195.txtobject-tests/batch/many-0196.txtobject-tests/batch/many-0197.txtobject-tests/batch/many-0198.txtobject-tests/batch/many-0199.txtobject-tests/batch/many-0200.txtobject-tests/batch/many-0201.txtobject-tests/batch/many-0202.txtobject-tests/batch/many-0203.txtobject-tests/batch/many-0204.txtobject-tests/batch/many-0205.txtobject-tests/batch/many-0206.txtobject-tests/batch/many-0207.txtobject-tests/batch/many-0208.txtobject-tests/batch/many-0209.txtobject-tests/batch/many-0210.txtobject-tests/batch/many-0211.txtobject-tests/batch/many-0212.txtobject-tests/batch/many-0213.txtobject-tests/batch/many-0214.txtobject-tests/batch/many-0215.txtobject-tests/batch/many-0216.txtobject-tests/batch/many-0217.txtobject-tests/batch/many-0218.txtobject-tests/batch/many-0219.txtobject-tests/batch/many-0220.txtobject-tests/batch/many-0221.txtobject-tests/batch/many-0222.txtobject-tests/batch/many-0223.txtobject-tests/batch/many-0224.txtobject-tests/batch/many-0225.txtobject-tests/batch/many-0226.txtobject-tests/batch/many-0227.txtobject-tests/batch/many-0228.txtobject-tests/batch/many-0229.txtobject-tests/batch/many-0230.txtobject-tests/batch/many-0231.txtobject-tests/batch/many-0232.txtobject-tests/batch/many-0233.txtobject-tests/batch/many-0234.txtobject-tests/batch/many-0235.txtobject-tests/batch/many-0236.txtobject-tests/batch/many-0237.txtobject-tests/batch/many-0238.txtobject-tests/batch/many-0239.txtobject-tests/batch/many-0240.txtobject-tests/batch/many-0241.txtobject-tests/batch/many-0242.txtobject-tests/batch/many-0243.txtobject-tests/batch/many-0244.txtobject-tests/batch/many-0245.txtobject-tests/batch/many-0246.txtobject-tests/batch/many-0247.txtobject-tests/batch/many-0248.txtobject-tests/batch/many-0249.txtobject-tests/batch/many-0250.txtobject-tests/batch/many-0251.txtobject-tests/batch/many-0252.txtobject-tests/batch/many-0253.txtobject-tests/batch/many-0254.txtobject-tests/batch/many-0255.txtobject-tests/batch/many-0256.txtobject-tests/batch/many-0257.txtobject-tests/batch/many-0258.txtobject-tests/batch/many-0259.txtobject-tests/batch/many-0260.txtobject-tests/batch/many-0261.txtobject-tests/batch/many-0262.txtobject-tests/batch/many-0263.txtobject-tests/batch/many-0264.txtobject-tests/batch/many-0265.txtobject-tests/batch/many-0266.txtobject-tests/batch/many-0267.txtobject-tests/batch/many-0268.txtobject-tests/batch/many-0269.txtobject-tests/batch/many-0270.txtobject-tests/batch/many-0271.txtobject-tests/batch/many-0272.txtobject-tests/batch/many-0273.txtobject-tests/batch/many-0274.txtobject-tests/batch/many-0275.txtobject-tests/batch/many-0276.txtobject-tests/batch/many-0277.txtobject-tests/batch/many-0278.txtobject-tests/batch/many-0279.txtobject-tests/batch/many-0280.txtobject-tests/batch/many-0281.txtobject-tests/batch/many-0282.txtobject-tests/batch/many-0283.txtobject-tests/batch/many-0284.txtobject-tests/batch/many-0285.txtobject-tests/batch/many-0286.txtobject-tests/batch/many-0287.txtobject-tests/batch/many-0288.txtobject-tests/batch/many-0289.txtobject-tests/batch/many-0290.txtobject-tests/batch/many-0291.txtobject-tests/batch/many-0292.txtobject-tests/batch/many-0293.txtobject-tests/batch/many-0294.txtobject-tests/batch/many-0295.txtobject-tests/batch/many-0296.txtobject-tests/batch/many-0297.txtobject-tests/batch/many-0298.txtobject-tests/batch/many-0299.txtobject-tests/batch/many-0300.txtobject-tests/batch/many-0301.txtobject-tests/batch/many-0302.txtobject-tests/batch/many-0303.txtobject-tests/batch/many-0304.txtobject-tests/batch/many-0305.txtobject-tests/batch/many-0306.txtobject-tests/batch/many-0307.txtobject-tests/batch/many-0308.txtobject-tests/batch/many-0309.txtobject-tests/batch/many-0310.txtobject-tests/batch/many-0311.txtobject-tests/batch/many-0312.txtobject-tests/batch/many-0313.txtobject-tests/batch/many-0314.txtobject-tests/batch/many-0315.txtobject-tests/batch/many-0316.txtobject-tests/batch/many-0317.txtobject-tests/batch/many-0318.txtobject-tests/batch/many-0319.txtobject-tests/batch/many-0320.txtobject-tests/batch/many-0321.txtobject-tests/batch/many-0322.txtobject-tests/batch/many-0323.txtobject-tests/batch/many-0324.txtobject-tests/batch/many-0325.txtobject-tests/batch/many-0326.txtobject-tests/batch/many-0327.txtobject-tests/batch/many-0328.txtobject-tests/batch/many-0329.txtobject-tests/batch/many-0330.txtobject-tests/batch/many-0331.txtobject-tests/batch/many-0332.txtobject-tests/batch/many-0333.txtobject-tests/batch/many-0334.txtobject-tests/batch/many-0335.txtobject-tests/batch/many-0336.txtobject-tests/batch/many-0337.txtobject-tests/batch/many-0338.txtobject-tests/batch/many-0339.txtobject-tests/batch/many-0340.txtobject-tests/batch/many-0341.txtobject-tests/batch/many-0342.txtobject-tests/batch/many-0343.txtobject-tests/batch/many-0344.txtobject-tests/batch/many-0345.txtobject-tests/batch/many-0346.txtobject-tests/batch/many-0347.txtobject-tests/batch/many-0348.txtobject-tests/batch/many-0349.txtobject-tests/batch/many-0350.txtobject-tests/batch/many-0351.txtobject-tests/batch/many-0352.txtobject-tests/batch/many-0353.txtobject-tests/batch/many-0354.txtobject-tests/batch/many-0355.txtobject-tests/batch/many-0356.txtobject-tests/batch/many-0357.txtobject-tests/batch/many-0358.txtobject-tests/batch/many-0359.txtobject-tests/batch/many-0360.txtobject-tests/batch/many-0361.txtobject-tests/batch/many-0362.txtobject-tests/batch/many-0363.txtobject-tests/batch/many-0364.txtobject-tests/batch/many-0365.txtobject-tests/batch/many-0366.txtobject-tests/batch/many-0367.txtobject-tests/batch/many-0368.txtobject-tests/batch/many-0369.txtobject-tests/batch/many-0370.txtobject-tests/batch/many-0371.txtobject-tests/batch/many-0372.txtobject-tests/batch/many-0373.txtobject-tests/batch/many-0374.txtobject-tests/batch/many-0375.txtobject-tests/batch/many-0376.txtobject-tests/batch/many-0377.txtobject-tests/batch/many-0378.txtobject-tests/batch/many-0379.txtobject-tests/batch/many-0380.txtobject-tests/batch/many-0381.txtobject-tests/batch/many-0382.txtobject-tests/batch/many-0383.txtobject-tests/batch/many-0384.txtobject-tests/batch/many-0385.txtobject-tests/batch/many-0386.txtobject-tests/batch/many-0387.txtobject-tests/batch/many-0388.txtobject-tests/batch/many-0389.txtobject-tests/batch/many-0390.txtobject-tests/batch/many-0391.txtobject-tests/batch/many-0392.txtobject-tests/batch/many-0393.txtobject-tests/batch/many-0394.txtobject-tests/batch/many-0395.txtobject-tests/batch/many-0396.txtobject-tests/batch/many-0397.txtobject-tests/batch/many-0398.txtobject-tests/batch/many-0399.txtobject-tests/batch/many-0400.txtobject-tests/batch/many-0401.txtobject-tests/batch/many-0402.txtobject-tests/batch/many-0403.txtobject-tests/batch/many-0404.txtobject-tests/batch/many-0405.txtobject-tests/batch/many-0406.txtobject-tests/batch/many-0407.txtobject-tests/batch/many-0408.txtobject-tests/batch/many-0409.txtobject-tests/batch/many-0410.txtobject-tests/batch/many-0411.txtobject-tests/batch/many-0412.txtobject-tests/batch/many-0413.txtobject-tests/batch/many-0414.txtobject-tests/batch/many-0415.txtobject-tests/batch/many-0416.txtobject-tests/batch/many-0417.txtobject-tests/batch/many-0418.txtobject-tests/batch/many-0419.txtobject-tests/batch/many-0420.txtobject-tests/batch/many-0421.txtobject-tests/batch/many-0422.txtobject-tests/batch/many-0423.txtobject-tests/batch/many-0424.txtobject-tests/batch/many-0425.txtobject-tests/batch/many-0426.txtobject-tests/batch/many-0427.txtobject-tests/batch/many-0428.txtobject-tests/batch/many-0429.txtobject-tests/batch/many-0430.txtobject-tests/batch/many-0431.txtobject-tests/batch/many-0432.txtobject-tests/batch/many-0433.txtobject-tests/batch/many-0434.txtobject-tests/batch/many-0435.txtobject-tests/batch/many-0436.txtobject-tests/batch/many-0437.txtobject-tests/batch/many-0438.txtobject-tests/batch/many-0439.txtobject-tests/batch/many-0440.txtobject-tests/batch/many-0441.txtobject-tests/batch/many-0442.txtobject-tests/batch/many-0443.txtobject-tests/batch/many-0444.txtobject-tests/batch/many-0445.txtobject-tests/batch/many-0446.txtobject-tests/batch/many-0447.txtobject-tests/batch/many-0448.txtobject-tests/batch/many-0449.txtobject-tests/batch/many-0450.txtobject-tests/batch/many-0451.txtobject-tests/batch/many-0452.txtobject-tests/batch/many-0453.txtobject-tests/batch/many-0454.txtobject-tests/batch/many-0455.txtobject-tests/batch/many-0456.txtobject-tests/batch/many-0457.txtobject-tests/batch/many-0458.txtobject-tests/batch/many-0459.txtobject-tests/batch/many-0460.txtobject-tests/batch/many-0461.txtobject-tests/batch/many-0462.txtobject-tests/batch/many-0463.txtobject-tests/batch/many-0464.txtobject-tests/batch/many-0465.txtobject-tests/batch/many-0466.txtobject-tests/batch/many-0467.txtobject-tests/batch/many-0468.txtobject-tests/batch/many-0469.txtobject-tests/batch/many-0470.txtobject-tests/batch/many-0471.txtobject-tests/batch/many-0472.txtobject-tests/batch/many-0473.txtobject-tests/batch/many-0474.txtobject-tests/batch/many-0475.txtobject-tests/batch/many-0476.txtobject-tests/batch/many-0477.txtobject-tests/batch/many-0478.txtobject-tests/batch/many-0479.txtobject-tests/batch/many-0480.txtobject-tests/batch/many-0481.txtobject-tests/batch/many-0482.txtobject-tests/batch/many-0483.txtobject-tests/batch/many-0484.txtobject-tests/batch/many-0485.txtobject-tests/batch/many-0486.txtobject-tests/batch/many-0487.txtobject-tests/batch/many-0488.txtobject-tests/batch/many-0489.txtobject-tests/batch/many-0490.txtobject-tests/batch/many-0491.txtobject-tests/batch/many-0492.txtobject-tests/batch/many-0493.txtobject-tests/batch/many-0494.txtobject-tests/batch/many-0495.txtobject-tests/batch/many-0496.txtobject-tests/batch/many-0497.txtobject-tests/batch/many-0498.txtobject-tests/batch/many-0499.txtobject-tests/batch/many-0500.txtobject-tests/batch/many-0501.txtobject-tests/batch/many-0502.txtobject-tests/batch/many-0503.txtobject-tests/batch/many-0504.txtobject-tests/batch/many-0505.txtobject-tests/batch/many-0506.txtobject-tests/batch/many-0507.txtobject-tests/batch/many-0508.txtobject-tests/batch/many-0509.txtobject-tests/batch/many-0510.txtobject-tests/batch/many-0511.txtobject-tests/batch/many-0512.txtobject-tests/batch/many-0513.txtobject-tests/batch/many-0514.txtobject-tests/batch/many-0515.txtobject-tests/batch/many-0516.txtobject-tests/batch/many-0517.txtobject-tests/batch/many-0518.txtobject-tests/batch/many-0519.txtobject-tests/batch/many-0520.txtobject-tests/batch/many-0521.txtobject-tests/batch/many-0522.txtobject-tests/batch/many-0523.txtobject-tests/batch/many-0524.txtobject-tests/batch/many-0525.txtobject-tests/batch/many-0526.txtobject-tests/batch/many-0527.txtobject-tests/batch/many-0528.txtobject-tests/batch/many-0529.txtobject-tests/batch/many-0530.txtobject-tests/batch/many-0531.txtobject-tests/batch/many-0532.txtobject-tests/batch/many-0533.txtobject-tests/batch/many-0534.txtobject-tests/batch/many-0535.txtobject-tests/batch/many-0536.txtobject-tests/batch/many-0537.txtobject-tests/batch/many-0538.txtobject-tests/batch/many-0539.txtobject-tests/batch/many-0540.txtobject-tests/batch/many-0541.txtobject-tests/batch/many-0542.txtobject-tests/batch/many-0543.txtobject-tests/batch/many-0544.txtobject-tests/batch/many-0545.txtobject-tests/batch/many-0546.txtobject-tests/batch/many-0547.txtobject-tests/batch/many-0548.txtobject-tests/batch/many-0549.txtobject-tests/batch/many-0550.txtobject-tests/batch/many-0551.txtobject-tests/batch/many-0552.txtobject-tests/batch/many-0553.txtobject-tests/batch/many-0554.txtobject-tests/batch/many-0555.txtobject-tests/batch/many-0556.txtobject-tests/batch/many-0557.txtobject-tests/batch/many-0558.txtobject-tests/batch/many-0559.txtobject-tests/batch/many-0560.txtobject-tests/batch/many-0561.txtobject-tests/batch/many-0562.txtobject-tests/batch/many-0563.txtobject-tests/batch/many-0564.txtobject-tests/batch/many-0565.txtobject-tests/batch/many-0566.txtobject-tests/batch/many-0567.txtobject-tests/batch/many-0568.txtobject-tests/batch/many-0569.txtobject-tests/batch/many-0570.txtobject-tests/batch/many-0571.txtobject-tests/batch/many-0572.txtobject-tests/batch/many-0573.txtobject-tests/batch/many-0574.txtobject-tests/batch/many-0575.txtobject-tests/batch/many-0576.txtobject-tests/batch/many-0577.txtobject-tests/batch/many-0578.txtobject-tests/batch/many-0579.txtobject-tests/batch/many-0580.txtobject-tests/batch/many-0581.txtobject-tests/batch/many-0582.txtobject-tests/batch/many-0583.txtobject-tests/batch/many-0584.txtobject-tests/batch/many-0585.txtobject-tests/batch/many-0586.txtobject-tests/batch/many-0587.txtobject-tests/batch/many-0588.txtobject-tests/batch/many-0589.txtobject-tests/batch/many-0590.txtobject-tests/batch/many-0591.txtobject-tests/batch/many-0592.txtobject-tests/batch/many-0593.txtobject-tests/batch/many-0594.txtobject-tests/batch/many-0595.txtobject-tests/batch/many-0596.txtobject-tests/batch/many-0597.txtobject-tests/batch/many-0598.txtobject-tests/batch/many-0599.txtobject-tests/batch/many-0600.txtobject-tests/batch/many-0601.txtobject-tests/batch/many-0602.txtobject-tests/batch/many-0603.txtobject-tests/batch/many-0604.txtobject-tests/batch/many-0605.txtobject-tests/batch/many-0606.txtobject-tests/batch/many-0607.txtobject-tests/batch/many-0608.txtobject-tests/batch/many-0609.txtobject-tests/batch/many-0610.txtobject-tests/batch/many-0611.txtobject-tests/batch/many-0612.txtobject-tests/batch/many-0613.txtobject-tests/batch/many-0614.txtobject-tests/batch/many-0615.txtobject-tests/batch/many-0616.txtobject-tests/batch/many-0617.txtobject-tests/batch/many-0618.txtobject-tests/batch/many-0619.txtobject-tests/batch/many-0620.txtobject-tests/batch/many-0621.txtobject-tests/batch/many-0622.txtobject-tests/batch/many-0623.txtobject-tests/batch/many-0624.txtobject-tests/batch/many-0625.txtobject-tests/batch/many-0626.txtobject-tests/batch/many-0627.txtobject-tests/batch/many-0628.txtobject-tests/batch/many-0629.txtobject-tests/batch/many-0630.txtobject-tests/batch/many-0631.txtobject-tests/batch/many-0632.txtobject-tests/batch/many-0633.txtobject-tests/batch/many-0634.txtobject-tests/batch/many-0635.txtobject-tests/batch/many-0636.txtobject-tests/batch/many-0637.txtobject-tests/batch/many-0638.txtobject-tests/batch/many-0639.txtobject-tests/batch/many-0640.txtobject-tests/batch/many-0641.txtobject-tests/batch/many-0642.txtobject-tests/batch/many-0643.txtobject-tests/batch/many-0644.txtobject-tests/batch/many-0645.txtobject-tests/batch/many-0646.txtobject-tests/batch/many-0647.txtobject-tests/batch/many-0648.txtobject-tests/batch/many-0649.txtobject-tests/batch/many-0650.txtobject-tests/batch/many-0651.txtobject-tests/batch/many-0652.txtobject-tests/batch/many-0653.txtobject-tests/batch/many-0654.txtobject-tests/batch/many-0655.txtobject-tests/batch/many-0656.txtobject-tests/batch/many-0657.txtobject-tests/batch/many-0658.txtobject-tests/batch/many-0659.txtobject-tests/batch/many-0660.txtobject-tests/batch/many-0661.txtobject-tests/batch/many-0662.txtobject-tests/batch/many-0663.txtobject-tests/batch/many-0664.txtobject-tests/batch/many-0665.txtobject-tests/batch/many-0666.txtobject-tests/batch/many-0667.txtobject-tests/batch/many-0668.txtobject-tests/batch/many-0669.txtobject-tests/batch/many-0670.txtobject-tests/batch/many-0671.txtobject-tests/batch/many-0672.txtobject-tests/batch/many-0673.txtobject-tests/batch/many-0674.txtobject-tests/batch/many-0675.txtobject-tests/batch/many-0676.txtobject-tests/batch/many-0677.txtobject-tests/batch/many-0678.txtobject-tests/batch/many-0679.txtobject-tests/batch/many-0680.txtobject-tests/batch/many-0681.txtobject-tests/batch/many-0682.txtobject-tests/batch/many-0683.txtobject-tests/batch/many-0684.txtobject-tests/batch/many-0685.txtobject-tests/batch/many-0686.txtobject-tests/batch/many-0687.txtobject-tests/batch/many-0688.txtobject-tests/batch/many-0689.txtobject-tests/batch/many-0690.txtobject-tests/batch/many-0691.txtobject-tests/batch/many-0692.txtobject-tests/batch/many-0693.txtobject-tests/batch/many-0694.txtobject-tests/batch/many-0695.txtobject-tests/batch/many-0696.txtobject-tests/batch/many-0697.txtobject-tests/batch/many-0698.txtobject-tests/batch/many-0699.txtobject-tests/batch/many-0700.txtobject-tests/batch/many-0701.txtobject-tests/batch/many-0702.txtobject-tests/batch/many-0703.txtobject-tests/batch/many-0704.txtobject-tests/batch/many-0705.txtobject-tests/batch/many-0706.txtobject-tests/batch/many-0707.txtobject-tests/batch/many-0708.txtobject-tests/batch/many-0709.txtobject-tests/batch/many-0710.txtobject-tests/batch/many-0711.txtobject-tests/batch/many-0712.txtobject-tests/batch/many-0713.txtobject-tests/batch/many-0714.txtobject-tests/batch/many-0715.txtobject-tests/batch/many-0716.txtobject-tests/batch/many-0717.txtobject-tests/batch/many-0718.txtobject-tests/batch/many-0719.txtobject-tests/batch/many-0720.txtobject-tests/batch/many-0721.txtobject-tests/batch/many-0722.txtobject-tests/batch/many-0723.txtobject-tests/batch/many-0724.txtobject-tests/batch/many-0725.txtobject-tests/batch/many-0726.txtobject-tests/batch/many-0727.txtobject-tests/batch/many-0728.txtobject-tests/batch/many-0729.txtobject-tests/batch/many-0730.txtobject-tests/batch/many-0731.txtobject-tests/batch/many-0732.txtobject-tests/batch/many-0733.txtobject-tests/batch/many-0734.txtobject-tests/batch/many-0735.txtobject-tests/batch/many-0736.txtobject-tests/batch/many-0737.txtobject-tests/batch/many-0738.txtobject-tests/batch/many-0739.txtobject-tests/batch/many-0740.txtobject-tests/batch/many-0741.txtobject-tests/batch/many-0742.txtobject-tests/batch/many-0743.txtobject-tests/batch/many-0744.txtobject-tests/batch/many-0745.txtobject-tests/batch/many-0746.txtobject-tests/batch/many-0747.txtobject-tests/batch/many-0748.txtobject-tests/batch/many-0749.txtobject-tests/batch/many-0750.txtobject-tests/batch/many-0751.txtobject-tests/batch/many-0752.txtobject-tests/batch/many-0753.txtobject-tests/batch/many-0754.txtobject-tests/batch/many-0755.txtobject-tests/batch/many-0756.txtobject-tests/batch/many-0757.txtobject-tests/batch/many-0758.txtobject-tests/batch/many-0759.txtobject-tests/batch/many-0760.txtobject-tests/batch/many-0761.txtobject-tests/batch/many-0762.txtobject-tests/batch/many-0763.txtobject-tests/batch/many-0764.txtobject-tests/batch/many-0765.txtobject-tests/batch/many-0766.txtobject-tests/batch/many-0767.txtobject-tests/batch/many-0768.txtobject-tests/batch/many-0769.txtobject-tests/batch/many-0770.txtobject-tests/batch/many-0771.txtobject-tests/batch/many-0772.txtobject-tests/batch/many-0773.txtobject-tests/batch/many-0774.txtobject-tests/batch/many-0775.txtobject-tests/batch/many-0776.txtobject-tests/batch/many-0777.txtobject-tests/batch/many-0778.txtobject-tests/batch/many-0779.txtobject-tests/batch/many-0780.txtobject-tests/batch/many-0781.txtobject-tests/batch/many-0782.txtobject-tests/batch/many-0783.txtobject-tests/batch/many-0784.txtobject-tests/batch/many-0785.txtobject-tests/batch/many-0786.txtobject-tests/batch/many-0787.txtobject-tests/batch/many-0788.txtobject-tests/batch/many-0789.txtobject-tests/batch/many-0790.txtobject-tests/batch/many-0791.txtobject-tests/batch/many-0792.txtobject-tests/batch/many-0793.txtobject-tests/batch/many-0794.txtobject-tests/batch/many-0795.txtobject-tests/batch/many-0796.txtobject-tests/batch/many-0797.txtobject-tests/batch/many-0798.txtobject-tests/batch/many-0799.txtobject-tests/batch/many-0800.txtobject-tests/batch/many-0801.txtobject-tests/batch/many-0802.txtobject-tests/batch/many-0803.txtobject-tests/batch/many-0804.txtobject-tests/batch/many-0805.txtobject-tests/batch/many-0806.txtobject-tests/batch/many-0807.txtobject-tests/batch/many-0808.txtobject-tests/batch/many-0809.txtobject-tests/batch/many-0810.txtobject-tests/batch/many-0811.txtobject-tests/batch/many-0812.txtobject-tests/batch/many-0813.txtobject-tests/batch/many-0814.txtobject-tests/batch/many-0815.txtobject-tests/batch/many-0816.txtobject-tests/batch/many-0817.txtobject-tests/batch/many-0818.txtobject-tests/batch/many-0819.txtobject-tests/batch/many-0820.txtobject-tests/batch/many-0821.txtobject-tests/batch/many-0822.txtobject-tests/batch/many-0823.txtobject-tests/batch/many-0824.txtobject-tests/batch/many-0825.txtobject-tests/batch/many-0826.txtobject-tests/batch/many-0827.txtobject-tests/batch/many-0828.txtobject-tests/batch/many-0829.txtobject-tests/batch/many-0830.txtobject-tests/batch/many-0831.txtobject-tests/batch/many-0832.txtobject-tests/batch/many-0833.txtobject-tests/batch/many-0834.txtobject-tests/batch/many-0835.txtobject-tests/batch/many-0836.txtobject-tests/batch/many-0837.txtobject-tests/batch/many-0838.txtobject-tests/batch/many-0839.txtobject-tests/batch/many-0840.txtobject-tests/batch/many-0841.txtobject-tests/batch/many-0842.txtobject-tests/batch/many-0843.txtobject-tests/batch/many-0844.txtobject-tests/batch/many-0845.txtobject-tests/batch/many-0846.txtobject-tests/batch/many-0847.txtobject-tests/batch/many-0848.txtobject-tests/batch/many-0849.txtobject-tests/batch/many-0850.txtobject-tests/batch/many-0851.txtobject-tests/batch/many-0852.txtobject-tests/batch/many-0853.txtobject-tests/batch/many-0854.txtobject-tests/batch/many-0855.txtobject-tests/batch/many-0856.txtobject-tests/batch/many-0857.txtobject-tests/batch/many-0858.txtobject-tests/batch/many-0859.txtobject-tests/batch/many-0860.txtobject-tests/batch/many-0861.txtobject-tests/batch/many-0862.txtobject-tests/batch/many-0863.txtobject-tests/batch/many-0864.txtobject-tests/batch/many-0865.txtobject-tests/batch/many-0866.txtobject-tests/batch/many-0867.txtobject-tests/batch/many-0868.txtobject-tests/batch/many-0869.txtobject-tests/batch/many-0870.txtobject-tests/batch/many-0871.txtobject-tests/batch/many-0872.txtobject-tests/batch/many-0873.txtobject-tests/batch/many-0874.txtobject-tests/batch/many-0875.txtobject-tests/batch/many-0876.txtobject-tests/batch/many-0877.txtobject-tests/batch/many-0878.txtobject-tests/batch/many-0879.txtobject-tests/batch/many-0880.txtobject-tests/batch/many-0881.txtobject-tests/batch/many-0882.txtobject-tests/batch/many-0883.txtobject-tests/batch/many-0884.txtobject-tests/batch/many-0885.txtobject-tests/batch/many-0886.txtobject-tests/batch/many-0887.txtobject-tests/batch/many-0888.txtobject-tests/batch/many-0889.txtobject-tests/batch/many-0890.txtobject-tests/batch/many-0891.txtobject-tests/batch/many-0892.txtobject-tests/batch/many-0893.txtobject-tests/batch/many-0894.txtobject-tests/batch/many-0895.txtobject-tests/batch/many-0896.txtobject-tests/batch/many-0897.txtobject-tests/batch/many-0898.txtobject-tests/batch/many-0899.txtobject-tests/batch/many-0900.txtobject-tests/batch/many-0901.txtobject-tests/batch/many-0902.txtobject-tests/batch/many-0903.txtobject-tests/batch/many-0904.txtobject-tests/batch/many-0905.txtobject-tests/batch/many-0906.txtobject-tests/batch/many-0907.txtobject-tests/batch/many-0908.txtobject-tests/batch/many-0909.txtobject-tests/batch/many-0910.txtobject-tests/batch/many-0911.txtobject-tests/batch/many-0912.txtobject-tests/batch/many-0913.txtobject-tests/batch/many-0914.txtobject-tests/batch/many-0915.txtobject-tests/batch/many-0916.txtobject-tests/batch/many-0917.txtobject-tests/batch/many-0918.txtobject-tests/batch/many-0919.txtobject-tests/batch/many-0920.txtobject-tests/batch/many-0921.txtobject-tests/batch/many-0922.txtobject-tests/batch/many-0923.txtobject-tests/batch/many-0924.txtobject-tests/batch/many-0925.txtobject-tests/batch/many-0926.txtobject-tests/batch/many-0927.txtobject-tests/batch/many-0928.txtobject-tests/batch/many-0929.txtobject-tests/batch/many-0930.txtobject-tests/batch/many-0931.txtobject-tests/batch/many-0932.txtobject-tests/batch/many-0933.txtobject-tests/batch/many-0934.txtobject-tests/batch/many-0935.txtobject-tests/batch/many-0936.txtobject-tests/batch/many-0937.txtobject-tests/batch/many-0938.txtobject-tests/batch/many-0939.txtobject-tests/batch/many-0940.txtobject-tests/batch/many-0941.txtobject-tests/batch/many-0942.txtobject-tests/batch/many-0943.txtobject-tests/batch/many-0944.txtobject-tests/batch/many-0945.txtobject-tests/batch/many-0946.txtobject-tests/batch/many-0947.txtobject-tests/batch/many-0948.txtobject-tests/batch/many-0949.txtobject-tests/batch/many-0950.txtobject-tests/batch/many-0951.txtobject-tests/batch/many-0952.txtobject-tests/batch/many-0953.txtobject-tests/batch/many-0954.txtobject-tests/batch/many-0955.txtobject-tests/batch/many-0956.txtobject-tests/batch/many-0957.txtobject-tests/batch/many-0958.txtobject-tests/batch/many-0959.txtobject-tests/batch/many-0960.txtobject-tests/batch/many-0961.txtobject-tests/batch/many-0962.txtobject-tests/batch/many-0963.txtobject-tests/batch/many-0964.txtobject-tests/batch/many-0965.txtobject-tests/batch/many-0966.txtobject-tests/batch/many-0967.txtobject-tests/batch/many-0968.txtobject-tests/batch/many-0969.txtobject-tests/batch/many-0970.txtobject-tests/batch/many-0971.txtobject-tests/batch/many-0972.txtobject-tests/batch/many-0973.txtobject-tests/batch/many-0974.txtobject-tests/batch/many-0975.txtobject-tests/batch/many-0976.txtobject-tests/batch/many-0977.txtobject-tests/batch/many-0978.txtobject-tests/batch/many-0979.txtobject-tests/batch/many-0980.txtobject-tests/batch/many-0981.txtobject-tests/batch/many-0982.txtobject-tests/batch/many-0983.txtobject-tests/batch/many-0984.txtobject-tests/batch/many-0985.txtobject-tests/batch/many-0986.txtobject-tests/batch/many-0987.txtobject-tests/batch/many-0988.txtobject-tests/batch/many-0989.txtobject-tests/batch/many-0990.txtobject-tests/batch/many-0991.txtobject-tests/batch/many-0992.txtobject-tests/batch/many-0993.txtobject-tests/batch/many-0994.txtobject-tests/batch/many-0995.txtobject-tests/batch/many-0996.txtobject-tests/batch/many-0997.txtobject-tests/batch/many-0998.txtobject-tests/batch/many-0999.txt" + }, + "framing": "chunked" + } + } + ] + } + ], "allow_headers": [ "content-type" ], @@ -115846,18 +155091,2067 @@ "response": { "status": 200, "headers": { - "date": { - "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + "content-type": "application/xml" }, "body": { "encoding": "utf8", - "data": "EntityTooSmallFixture error" + "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" }, - "framing": "chunked" + "body_time": { + "text": "SESSION_EXPIRATION", + "offset_seconds": 300 + } } - }, + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/deleted", + "optional": false, + "rule": { + "is": "equal", + "value": [ + "object-tests/batch/many-0000.txt", + "object-tests/batch/many-0001.txt", + "object-tests/batch/many-0002.txt", + "object-tests/batch/many-0003.txt", + "object-tests/batch/many-0004.txt", + "object-tests/batch/many-0005.txt", + "object-tests/batch/many-0006.txt", + "object-tests/batch/many-0007.txt", + "object-tests/batch/many-0008.txt", + "object-tests/batch/many-0009.txt", + "object-tests/batch/many-0010.txt", + "object-tests/batch/many-0011.txt", + "object-tests/batch/many-0012.txt", + "object-tests/batch/many-0013.txt", + "object-tests/batch/many-0014.txt", + "object-tests/batch/many-0015.txt", + "object-tests/batch/many-0016.txt", + "object-tests/batch/many-0017.txt", + "object-tests/batch/many-0018.txt", + "object-tests/batch/many-0019.txt", + "object-tests/batch/many-0020.txt", + "object-tests/batch/many-0021.txt", + "object-tests/batch/many-0022.txt", + "object-tests/batch/many-0023.txt", + "object-tests/batch/many-0024.txt", + "object-tests/batch/many-0025.txt", + "object-tests/batch/many-0026.txt", + "object-tests/batch/many-0027.txt", + "object-tests/batch/many-0028.txt", + "object-tests/batch/many-0029.txt", + "object-tests/batch/many-0030.txt", + "object-tests/batch/many-0031.txt", + "object-tests/batch/many-0032.txt", + "object-tests/batch/many-0033.txt", + "object-tests/batch/many-0034.txt", + "object-tests/batch/many-0035.txt", + "object-tests/batch/many-0036.txt", + "object-tests/batch/many-0037.txt", + "object-tests/batch/many-0038.txt", + "object-tests/batch/many-0039.txt", + "object-tests/batch/many-0040.txt", + "object-tests/batch/many-0041.txt", + "object-tests/batch/many-0042.txt", + "object-tests/batch/many-0043.txt", + "object-tests/batch/many-0044.txt", + "object-tests/batch/many-0045.txt", + "object-tests/batch/many-0046.txt", + "object-tests/batch/many-0047.txt", + "object-tests/batch/many-0048.txt", + "object-tests/batch/many-0049.txt", + "object-tests/batch/many-0050.txt", + "object-tests/batch/many-0051.txt", + "object-tests/batch/many-0052.txt", + "object-tests/batch/many-0053.txt", + "object-tests/batch/many-0054.txt", + "object-tests/batch/many-0055.txt", + "object-tests/batch/many-0056.txt", + "object-tests/batch/many-0057.txt", + "object-tests/batch/many-0058.txt", + "object-tests/batch/many-0059.txt", + "object-tests/batch/many-0060.txt", + "object-tests/batch/many-0061.txt", + "object-tests/batch/many-0062.txt", + "object-tests/batch/many-0063.txt", + "object-tests/batch/many-0064.txt", + "object-tests/batch/many-0065.txt", + "object-tests/batch/many-0066.txt", + "object-tests/batch/many-0067.txt", + "object-tests/batch/many-0068.txt", + "object-tests/batch/many-0069.txt", + "object-tests/batch/many-0070.txt", + "object-tests/batch/many-0071.txt", + "object-tests/batch/many-0072.txt", + "object-tests/batch/many-0073.txt", + "object-tests/batch/many-0074.txt", + "object-tests/batch/many-0075.txt", + "object-tests/batch/many-0076.txt", + "object-tests/batch/many-0077.txt", + "object-tests/batch/many-0078.txt", + "object-tests/batch/many-0079.txt", + "object-tests/batch/many-0080.txt", + "object-tests/batch/many-0081.txt", + "object-tests/batch/many-0082.txt", + "object-tests/batch/many-0083.txt", + "object-tests/batch/many-0084.txt", + "object-tests/batch/many-0085.txt", + "object-tests/batch/many-0086.txt", + "object-tests/batch/many-0087.txt", + "object-tests/batch/many-0088.txt", + "object-tests/batch/many-0089.txt", + "object-tests/batch/many-0090.txt", + "object-tests/batch/many-0091.txt", + "object-tests/batch/many-0092.txt", + "object-tests/batch/many-0093.txt", + "object-tests/batch/many-0094.txt", + "object-tests/batch/many-0095.txt", + "object-tests/batch/many-0096.txt", + "object-tests/batch/many-0097.txt", + "object-tests/batch/many-0098.txt", + "object-tests/batch/many-0099.txt", + "object-tests/batch/many-0100.txt", + "object-tests/batch/many-0101.txt", + "object-tests/batch/many-0102.txt", + "object-tests/batch/many-0103.txt", + "object-tests/batch/many-0104.txt", + "object-tests/batch/many-0105.txt", + "object-tests/batch/many-0106.txt", + "object-tests/batch/many-0107.txt", + "object-tests/batch/many-0108.txt", + "object-tests/batch/many-0109.txt", + "object-tests/batch/many-0110.txt", + "object-tests/batch/many-0111.txt", + "object-tests/batch/many-0112.txt", + "object-tests/batch/many-0113.txt", + "object-tests/batch/many-0114.txt", + "object-tests/batch/many-0115.txt", + "object-tests/batch/many-0116.txt", + "object-tests/batch/many-0117.txt", + "object-tests/batch/many-0118.txt", + "object-tests/batch/many-0119.txt", + "object-tests/batch/many-0120.txt", + "object-tests/batch/many-0121.txt", + "object-tests/batch/many-0122.txt", + "object-tests/batch/many-0123.txt", + "object-tests/batch/many-0124.txt", + "object-tests/batch/many-0125.txt", + "object-tests/batch/many-0126.txt", + "object-tests/batch/many-0127.txt", + "object-tests/batch/many-0128.txt", + "object-tests/batch/many-0129.txt", + "object-tests/batch/many-0130.txt", + "object-tests/batch/many-0131.txt", + "object-tests/batch/many-0132.txt", + "object-tests/batch/many-0133.txt", + "object-tests/batch/many-0134.txt", + "object-tests/batch/many-0135.txt", + "object-tests/batch/many-0136.txt", + "object-tests/batch/many-0137.txt", + "object-tests/batch/many-0138.txt", + "object-tests/batch/many-0139.txt", + "object-tests/batch/many-0140.txt", + "object-tests/batch/many-0141.txt", + "object-tests/batch/many-0142.txt", + "object-tests/batch/many-0143.txt", + "object-tests/batch/many-0144.txt", + "object-tests/batch/many-0145.txt", + "object-tests/batch/many-0146.txt", + "object-tests/batch/many-0147.txt", + "object-tests/batch/many-0148.txt", + "object-tests/batch/many-0149.txt", + "object-tests/batch/many-0150.txt", + "object-tests/batch/many-0151.txt", + "object-tests/batch/many-0152.txt", + "object-tests/batch/many-0153.txt", + "object-tests/batch/many-0154.txt", + "object-tests/batch/many-0155.txt", + "object-tests/batch/many-0156.txt", + "object-tests/batch/many-0157.txt", + "object-tests/batch/many-0158.txt", + "object-tests/batch/many-0159.txt", + "object-tests/batch/many-0160.txt", + "object-tests/batch/many-0161.txt", + "object-tests/batch/many-0162.txt", + "object-tests/batch/many-0163.txt", + "object-tests/batch/many-0164.txt", + "object-tests/batch/many-0165.txt", + "object-tests/batch/many-0166.txt", + "object-tests/batch/many-0167.txt", + "object-tests/batch/many-0168.txt", + "object-tests/batch/many-0169.txt", + "object-tests/batch/many-0170.txt", + "object-tests/batch/many-0171.txt", + "object-tests/batch/many-0172.txt", + "object-tests/batch/many-0173.txt", + "object-tests/batch/many-0174.txt", + "object-tests/batch/many-0175.txt", + "object-tests/batch/many-0176.txt", + "object-tests/batch/many-0177.txt", + "object-tests/batch/many-0178.txt", + "object-tests/batch/many-0179.txt", + "object-tests/batch/many-0180.txt", + "object-tests/batch/many-0181.txt", + "object-tests/batch/many-0182.txt", + "object-tests/batch/many-0183.txt", + "object-tests/batch/many-0184.txt", + "object-tests/batch/many-0185.txt", + "object-tests/batch/many-0186.txt", + "object-tests/batch/many-0187.txt", + "object-tests/batch/many-0188.txt", + "object-tests/batch/many-0189.txt", + "object-tests/batch/many-0190.txt", + "object-tests/batch/many-0191.txt", + "object-tests/batch/many-0192.txt", + "object-tests/batch/many-0193.txt", + "object-tests/batch/many-0194.txt", + "object-tests/batch/many-0195.txt", + "object-tests/batch/many-0196.txt", + "object-tests/batch/many-0197.txt", + "object-tests/batch/many-0198.txt", + "object-tests/batch/many-0199.txt", + "object-tests/batch/many-0200.txt", + "object-tests/batch/many-0201.txt", + "object-tests/batch/many-0202.txt", + "object-tests/batch/many-0203.txt", + "object-tests/batch/many-0204.txt", + "object-tests/batch/many-0205.txt", + "object-tests/batch/many-0206.txt", + "object-tests/batch/many-0207.txt", + "object-tests/batch/many-0208.txt", + "object-tests/batch/many-0209.txt", + "object-tests/batch/many-0210.txt", + "object-tests/batch/many-0211.txt", + "object-tests/batch/many-0212.txt", + "object-tests/batch/many-0213.txt", + "object-tests/batch/many-0214.txt", + "object-tests/batch/many-0215.txt", + "object-tests/batch/many-0216.txt", + "object-tests/batch/many-0217.txt", + "object-tests/batch/many-0218.txt", + "object-tests/batch/many-0219.txt", + "object-tests/batch/many-0220.txt", + "object-tests/batch/many-0221.txt", + "object-tests/batch/many-0222.txt", + "object-tests/batch/many-0223.txt", + "object-tests/batch/many-0224.txt", + "object-tests/batch/many-0225.txt", + "object-tests/batch/many-0226.txt", + "object-tests/batch/many-0227.txt", + "object-tests/batch/many-0228.txt", + "object-tests/batch/many-0229.txt", + "object-tests/batch/many-0230.txt", + "object-tests/batch/many-0231.txt", + "object-tests/batch/many-0232.txt", + "object-tests/batch/many-0233.txt", + "object-tests/batch/many-0234.txt", + "object-tests/batch/many-0235.txt", + "object-tests/batch/many-0236.txt", + "object-tests/batch/many-0237.txt", + "object-tests/batch/many-0238.txt", + "object-tests/batch/many-0239.txt", + "object-tests/batch/many-0240.txt", + "object-tests/batch/many-0241.txt", + "object-tests/batch/many-0242.txt", + "object-tests/batch/many-0243.txt", + "object-tests/batch/many-0244.txt", + "object-tests/batch/many-0245.txt", + "object-tests/batch/many-0246.txt", + "object-tests/batch/many-0247.txt", + "object-tests/batch/many-0248.txt", + "object-tests/batch/many-0249.txt", + "object-tests/batch/many-0250.txt", + "object-tests/batch/many-0251.txt", + "object-tests/batch/many-0252.txt", + "object-tests/batch/many-0253.txt", + "object-tests/batch/many-0254.txt", + "object-tests/batch/many-0255.txt", + "object-tests/batch/many-0256.txt", + "object-tests/batch/many-0257.txt", + "object-tests/batch/many-0258.txt", + "object-tests/batch/many-0259.txt", + "object-tests/batch/many-0260.txt", + "object-tests/batch/many-0261.txt", + "object-tests/batch/many-0262.txt", + "object-tests/batch/many-0263.txt", + "object-tests/batch/many-0264.txt", + "object-tests/batch/many-0265.txt", + "object-tests/batch/many-0266.txt", + "object-tests/batch/many-0267.txt", + "object-tests/batch/many-0268.txt", + "object-tests/batch/many-0269.txt", + "object-tests/batch/many-0270.txt", + "object-tests/batch/many-0271.txt", + "object-tests/batch/many-0272.txt", + "object-tests/batch/many-0273.txt", + "object-tests/batch/many-0274.txt", + "object-tests/batch/many-0275.txt", + "object-tests/batch/many-0276.txt", + "object-tests/batch/many-0277.txt", + "object-tests/batch/many-0278.txt", + "object-tests/batch/many-0279.txt", + "object-tests/batch/many-0280.txt", + "object-tests/batch/many-0281.txt", + "object-tests/batch/many-0282.txt", + "object-tests/batch/many-0283.txt", + "object-tests/batch/many-0284.txt", + "object-tests/batch/many-0285.txt", + "object-tests/batch/many-0286.txt", + "object-tests/batch/many-0287.txt", + "object-tests/batch/many-0288.txt", + "object-tests/batch/many-0289.txt", + "object-tests/batch/many-0290.txt", + "object-tests/batch/many-0291.txt", + "object-tests/batch/many-0292.txt", + "object-tests/batch/many-0293.txt", + "object-tests/batch/many-0294.txt", + "object-tests/batch/many-0295.txt", + "object-tests/batch/many-0296.txt", + "object-tests/batch/many-0297.txt", + "object-tests/batch/many-0298.txt", + "object-tests/batch/many-0299.txt", + "object-tests/batch/many-0300.txt", + "object-tests/batch/many-0301.txt", + "object-tests/batch/many-0302.txt", + "object-tests/batch/many-0303.txt", + "object-tests/batch/many-0304.txt", + "object-tests/batch/many-0305.txt", + "object-tests/batch/many-0306.txt", + "object-tests/batch/many-0307.txt", + "object-tests/batch/many-0308.txt", + "object-tests/batch/many-0309.txt", + "object-tests/batch/many-0310.txt", + "object-tests/batch/many-0311.txt", + "object-tests/batch/many-0312.txt", + "object-tests/batch/many-0313.txt", + "object-tests/batch/many-0314.txt", + "object-tests/batch/many-0315.txt", + "object-tests/batch/many-0316.txt", + "object-tests/batch/many-0317.txt", + "object-tests/batch/many-0318.txt", + "object-tests/batch/many-0319.txt", + "object-tests/batch/many-0320.txt", + "object-tests/batch/many-0321.txt", + "object-tests/batch/many-0322.txt", + "object-tests/batch/many-0323.txt", + "object-tests/batch/many-0324.txt", + "object-tests/batch/many-0325.txt", + "object-tests/batch/many-0326.txt", + "object-tests/batch/many-0327.txt", + "object-tests/batch/many-0328.txt", + "object-tests/batch/many-0329.txt", + "object-tests/batch/many-0330.txt", + "object-tests/batch/many-0331.txt", + "object-tests/batch/many-0332.txt", + "object-tests/batch/many-0333.txt", + "object-tests/batch/many-0334.txt", + "object-tests/batch/many-0335.txt", + "object-tests/batch/many-0336.txt", + "object-tests/batch/many-0337.txt", + "object-tests/batch/many-0338.txt", + "object-tests/batch/many-0339.txt", + "object-tests/batch/many-0340.txt", + "object-tests/batch/many-0341.txt", + "object-tests/batch/many-0342.txt", + "object-tests/batch/many-0343.txt", + "object-tests/batch/many-0344.txt", + "object-tests/batch/many-0345.txt", + "object-tests/batch/many-0346.txt", + "object-tests/batch/many-0347.txt", + "object-tests/batch/many-0348.txt", + "object-tests/batch/many-0349.txt", + "object-tests/batch/many-0350.txt", + "object-tests/batch/many-0351.txt", + "object-tests/batch/many-0352.txt", + "object-tests/batch/many-0353.txt", + "object-tests/batch/many-0354.txt", + "object-tests/batch/many-0355.txt", + "object-tests/batch/many-0356.txt", + "object-tests/batch/many-0357.txt", + "object-tests/batch/many-0358.txt", + "object-tests/batch/many-0359.txt", + "object-tests/batch/many-0360.txt", + "object-tests/batch/many-0361.txt", + "object-tests/batch/many-0362.txt", + "object-tests/batch/many-0363.txt", + "object-tests/batch/many-0364.txt", + "object-tests/batch/many-0365.txt", + "object-tests/batch/many-0366.txt", + "object-tests/batch/many-0367.txt", + "object-tests/batch/many-0368.txt", + "object-tests/batch/many-0369.txt", + "object-tests/batch/many-0370.txt", + "object-tests/batch/many-0371.txt", + "object-tests/batch/many-0372.txt", + "object-tests/batch/many-0373.txt", + "object-tests/batch/many-0374.txt", + "object-tests/batch/many-0375.txt", + "object-tests/batch/many-0376.txt", + "object-tests/batch/many-0377.txt", + "object-tests/batch/many-0378.txt", + "object-tests/batch/many-0379.txt", + "object-tests/batch/many-0380.txt", + "object-tests/batch/many-0381.txt", + "object-tests/batch/many-0382.txt", + "object-tests/batch/many-0383.txt", + "object-tests/batch/many-0384.txt", + "object-tests/batch/many-0385.txt", + "object-tests/batch/many-0386.txt", + "object-tests/batch/many-0387.txt", + "object-tests/batch/many-0388.txt", + "object-tests/batch/many-0389.txt", + "object-tests/batch/many-0390.txt", + "object-tests/batch/many-0391.txt", + "object-tests/batch/many-0392.txt", + "object-tests/batch/many-0393.txt", + "object-tests/batch/many-0394.txt", + "object-tests/batch/many-0395.txt", + "object-tests/batch/many-0396.txt", + "object-tests/batch/many-0397.txt", + "object-tests/batch/many-0398.txt", + "object-tests/batch/many-0399.txt", + "object-tests/batch/many-0400.txt", + "object-tests/batch/many-0401.txt", + "object-tests/batch/many-0402.txt", + "object-tests/batch/many-0403.txt", + "object-tests/batch/many-0404.txt", + "object-tests/batch/many-0405.txt", + "object-tests/batch/many-0406.txt", + "object-tests/batch/many-0407.txt", + "object-tests/batch/many-0408.txt", + "object-tests/batch/many-0409.txt", + "object-tests/batch/many-0410.txt", + "object-tests/batch/many-0411.txt", + "object-tests/batch/many-0412.txt", + "object-tests/batch/many-0413.txt", + "object-tests/batch/many-0414.txt", + "object-tests/batch/many-0415.txt", + "object-tests/batch/many-0416.txt", + "object-tests/batch/many-0417.txt", + "object-tests/batch/many-0418.txt", + "object-tests/batch/many-0419.txt", + "object-tests/batch/many-0420.txt", + "object-tests/batch/many-0421.txt", + "object-tests/batch/many-0422.txt", + "object-tests/batch/many-0423.txt", + "object-tests/batch/many-0424.txt", + "object-tests/batch/many-0425.txt", + "object-tests/batch/many-0426.txt", + "object-tests/batch/many-0427.txt", + "object-tests/batch/many-0428.txt", + "object-tests/batch/many-0429.txt", + "object-tests/batch/many-0430.txt", + "object-tests/batch/many-0431.txt", + "object-tests/batch/many-0432.txt", + "object-tests/batch/many-0433.txt", + "object-tests/batch/many-0434.txt", + "object-tests/batch/many-0435.txt", + "object-tests/batch/many-0436.txt", + "object-tests/batch/many-0437.txt", + "object-tests/batch/many-0438.txt", + "object-tests/batch/many-0439.txt", + "object-tests/batch/many-0440.txt", + "object-tests/batch/many-0441.txt", + "object-tests/batch/many-0442.txt", + "object-tests/batch/many-0443.txt", + "object-tests/batch/many-0444.txt", + "object-tests/batch/many-0445.txt", + "object-tests/batch/many-0446.txt", + "object-tests/batch/many-0447.txt", + "object-tests/batch/many-0448.txt", + "object-tests/batch/many-0449.txt", + "object-tests/batch/many-0450.txt", + "object-tests/batch/many-0451.txt", + "object-tests/batch/many-0452.txt", + "object-tests/batch/many-0453.txt", + "object-tests/batch/many-0454.txt", + "object-tests/batch/many-0455.txt", + "object-tests/batch/many-0456.txt", + "object-tests/batch/many-0457.txt", + "object-tests/batch/many-0458.txt", + "object-tests/batch/many-0459.txt", + "object-tests/batch/many-0460.txt", + "object-tests/batch/many-0461.txt", + "object-tests/batch/many-0462.txt", + "object-tests/batch/many-0463.txt", + "object-tests/batch/many-0464.txt", + "object-tests/batch/many-0465.txt", + "object-tests/batch/many-0466.txt", + "object-tests/batch/many-0467.txt", + "object-tests/batch/many-0468.txt", + "object-tests/batch/many-0469.txt", + "object-tests/batch/many-0470.txt", + "object-tests/batch/many-0471.txt", + "object-tests/batch/many-0472.txt", + "object-tests/batch/many-0473.txt", + "object-tests/batch/many-0474.txt", + "object-tests/batch/many-0475.txt", + "object-tests/batch/many-0476.txt", + "object-tests/batch/many-0477.txt", + "object-tests/batch/many-0478.txt", + "object-tests/batch/many-0479.txt", + "object-tests/batch/many-0480.txt", + "object-tests/batch/many-0481.txt", + "object-tests/batch/many-0482.txt", + "object-tests/batch/many-0483.txt", + "object-tests/batch/many-0484.txt", + "object-tests/batch/many-0485.txt", + "object-tests/batch/many-0486.txt", + "object-tests/batch/many-0487.txt", + "object-tests/batch/many-0488.txt", + "object-tests/batch/many-0489.txt", + "object-tests/batch/many-0490.txt", + "object-tests/batch/many-0491.txt", + "object-tests/batch/many-0492.txt", + "object-tests/batch/many-0493.txt", + "object-tests/batch/many-0494.txt", + "object-tests/batch/many-0495.txt", + "object-tests/batch/many-0496.txt", + "object-tests/batch/many-0497.txt", + "object-tests/batch/many-0498.txt", + "object-tests/batch/many-0499.txt", + "object-tests/batch/many-0500.txt", + "object-tests/batch/many-0501.txt", + "object-tests/batch/many-0502.txt", + "object-tests/batch/many-0503.txt", + "object-tests/batch/many-0504.txt", + "object-tests/batch/many-0505.txt", + "object-tests/batch/many-0506.txt", + "object-tests/batch/many-0507.txt", + "object-tests/batch/many-0508.txt", + "object-tests/batch/many-0509.txt", + "object-tests/batch/many-0510.txt", + "object-tests/batch/many-0511.txt", + "object-tests/batch/many-0512.txt", + "object-tests/batch/many-0513.txt", + "object-tests/batch/many-0514.txt", + "object-tests/batch/many-0515.txt", + "object-tests/batch/many-0516.txt", + "object-tests/batch/many-0517.txt", + "object-tests/batch/many-0518.txt", + "object-tests/batch/many-0519.txt", + "object-tests/batch/many-0520.txt", + "object-tests/batch/many-0521.txt", + "object-tests/batch/many-0522.txt", + "object-tests/batch/many-0523.txt", + "object-tests/batch/many-0524.txt", + "object-tests/batch/many-0525.txt", + "object-tests/batch/many-0526.txt", + "object-tests/batch/many-0527.txt", + "object-tests/batch/many-0528.txt", + "object-tests/batch/many-0529.txt", + "object-tests/batch/many-0530.txt", + "object-tests/batch/many-0531.txt", + "object-tests/batch/many-0532.txt", + "object-tests/batch/many-0533.txt", + "object-tests/batch/many-0534.txt", + "object-tests/batch/many-0535.txt", + "object-tests/batch/many-0536.txt", + "object-tests/batch/many-0537.txt", + "object-tests/batch/many-0538.txt", + "object-tests/batch/many-0539.txt", + "object-tests/batch/many-0540.txt", + "object-tests/batch/many-0541.txt", + "object-tests/batch/many-0542.txt", + "object-tests/batch/many-0543.txt", + "object-tests/batch/many-0544.txt", + "object-tests/batch/many-0545.txt", + "object-tests/batch/many-0546.txt", + "object-tests/batch/many-0547.txt", + "object-tests/batch/many-0548.txt", + "object-tests/batch/many-0549.txt", + "object-tests/batch/many-0550.txt", + "object-tests/batch/many-0551.txt", + "object-tests/batch/many-0552.txt", + "object-tests/batch/many-0553.txt", + "object-tests/batch/many-0554.txt", + "object-tests/batch/many-0555.txt", + "object-tests/batch/many-0556.txt", + "object-tests/batch/many-0557.txt", + "object-tests/batch/many-0558.txt", + "object-tests/batch/many-0559.txt", + "object-tests/batch/many-0560.txt", + "object-tests/batch/many-0561.txt", + "object-tests/batch/many-0562.txt", + "object-tests/batch/many-0563.txt", + "object-tests/batch/many-0564.txt", + "object-tests/batch/many-0565.txt", + "object-tests/batch/many-0566.txt", + "object-tests/batch/many-0567.txt", + "object-tests/batch/many-0568.txt", + "object-tests/batch/many-0569.txt", + "object-tests/batch/many-0570.txt", + "object-tests/batch/many-0571.txt", + "object-tests/batch/many-0572.txt", + "object-tests/batch/many-0573.txt", + "object-tests/batch/many-0574.txt", + "object-tests/batch/many-0575.txt", + "object-tests/batch/many-0576.txt", + "object-tests/batch/many-0577.txt", + "object-tests/batch/many-0578.txt", + "object-tests/batch/many-0579.txt", + "object-tests/batch/many-0580.txt", + "object-tests/batch/many-0581.txt", + "object-tests/batch/many-0582.txt", + "object-tests/batch/many-0583.txt", + "object-tests/batch/many-0584.txt", + "object-tests/batch/many-0585.txt", + "object-tests/batch/many-0586.txt", + "object-tests/batch/many-0587.txt", + "object-tests/batch/many-0588.txt", + "object-tests/batch/many-0589.txt", + "object-tests/batch/many-0590.txt", + "object-tests/batch/many-0591.txt", + "object-tests/batch/many-0592.txt", + "object-tests/batch/many-0593.txt", + "object-tests/batch/many-0594.txt", + "object-tests/batch/many-0595.txt", + "object-tests/batch/many-0596.txt", + "object-tests/batch/many-0597.txt", + "object-tests/batch/many-0598.txt", + "object-tests/batch/many-0599.txt", + "object-tests/batch/many-0600.txt", + "object-tests/batch/many-0601.txt", + "object-tests/batch/many-0602.txt", + "object-tests/batch/many-0603.txt", + "object-tests/batch/many-0604.txt", + "object-tests/batch/many-0605.txt", + "object-tests/batch/many-0606.txt", + "object-tests/batch/many-0607.txt", + "object-tests/batch/many-0608.txt", + "object-tests/batch/many-0609.txt", + "object-tests/batch/many-0610.txt", + "object-tests/batch/many-0611.txt", + "object-tests/batch/many-0612.txt", + "object-tests/batch/many-0613.txt", + "object-tests/batch/many-0614.txt", + "object-tests/batch/many-0615.txt", + "object-tests/batch/many-0616.txt", + "object-tests/batch/many-0617.txt", + "object-tests/batch/many-0618.txt", + "object-tests/batch/many-0619.txt", + "object-tests/batch/many-0620.txt", + "object-tests/batch/many-0621.txt", + "object-tests/batch/many-0622.txt", + "object-tests/batch/many-0623.txt", + "object-tests/batch/many-0624.txt", + "object-tests/batch/many-0625.txt", + "object-tests/batch/many-0626.txt", + "object-tests/batch/many-0627.txt", + "object-tests/batch/many-0628.txt", + "object-tests/batch/many-0629.txt", + "object-tests/batch/many-0630.txt", + "object-tests/batch/many-0631.txt", + "object-tests/batch/many-0632.txt", + "object-tests/batch/many-0633.txt", + "object-tests/batch/many-0634.txt", + "object-tests/batch/many-0635.txt", + "object-tests/batch/many-0636.txt", + "object-tests/batch/many-0637.txt", + "object-tests/batch/many-0638.txt", + "object-tests/batch/many-0639.txt", + "object-tests/batch/many-0640.txt", + "object-tests/batch/many-0641.txt", + "object-tests/batch/many-0642.txt", + "object-tests/batch/many-0643.txt", + "object-tests/batch/many-0644.txt", + "object-tests/batch/many-0645.txt", + "object-tests/batch/many-0646.txt", + "object-tests/batch/many-0647.txt", + "object-tests/batch/many-0648.txt", + "object-tests/batch/many-0649.txt", + "object-tests/batch/many-0650.txt", + "object-tests/batch/many-0651.txt", + "object-tests/batch/many-0652.txt", + "object-tests/batch/many-0653.txt", + "object-tests/batch/many-0654.txt", + "object-tests/batch/many-0655.txt", + "object-tests/batch/many-0656.txt", + "object-tests/batch/many-0657.txt", + "object-tests/batch/many-0658.txt", + "object-tests/batch/many-0659.txt", + "object-tests/batch/many-0660.txt", + "object-tests/batch/many-0661.txt", + "object-tests/batch/many-0662.txt", + "object-tests/batch/many-0663.txt", + "object-tests/batch/many-0664.txt", + "object-tests/batch/many-0665.txt", + "object-tests/batch/many-0666.txt", + "object-tests/batch/many-0667.txt", + "object-tests/batch/many-0668.txt", + "object-tests/batch/many-0669.txt", + "object-tests/batch/many-0670.txt", + "object-tests/batch/many-0671.txt", + "object-tests/batch/many-0672.txt", + "object-tests/batch/many-0673.txt", + "object-tests/batch/many-0674.txt", + "object-tests/batch/many-0675.txt", + "object-tests/batch/many-0676.txt", + "object-tests/batch/many-0677.txt", + "object-tests/batch/many-0678.txt", + "object-tests/batch/many-0679.txt", + "object-tests/batch/many-0680.txt", + "object-tests/batch/many-0681.txt", + "object-tests/batch/many-0682.txt", + "object-tests/batch/many-0683.txt", + "object-tests/batch/many-0684.txt", + "object-tests/batch/many-0685.txt", + "object-tests/batch/many-0686.txt", + "object-tests/batch/many-0687.txt", + "object-tests/batch/many-0688.txt", + "object-tests/batch/many-0689.txt", + "object-tests/batch/many-0690.txt", + "object-tests/batch/many-0691.txt", + "object-tests/batch/many-0692.txt", + "object-tests/batch/many-0693.txt", + "object-tests/batch/many-0694.txt", + "object-tests/batch/many-0695.txt", + "object-tests/batch/many-0696.txt", + "object-tests/batch/many-0697.txt", + "object-tests/batch/many-0698.txt", + "object-tests/batch/many-0699.txt", + "object-tests/batch/many-0700.txt", + "object-tests/batch/many-0701.txt", + "object-tests/batch/many-0702.txt", + "object-tests/batch/many-0703.txt", + "object-tests/batch/many-0704.txt", + "object-tests/batch/many-0705.txt", + "object-tests/batch/many-0706.txt", + "object-tests/batch/many-0707.txt", + "object-tests/batch/many-0708.txt", + "object-tests/batch/many-0709.txt", + "object-tests/batch/many-0710.txt", + "object-tests/batch/many-0711.txt", + "object-tests/batch/many-0712.txt", + "object-tests/batch/many-0713.txt", + "object-tests/batch/many-0714.txt", + "object-tests/batch/many-0715.txt", + "object-tests/batch/many-0716.txt", + "object-tests/batch/many-0717.txt", + "object-tests/batch/many-0718.txt", + "object-tests/batch/many-0719.txt", + "object-tests/batch/many-0720.txt", + "object-tests/batch/many-0721.txt", + "object-tests/batch/many-0722.txt", + "object-tests/batch/many-0723.txt", + "object-tests/batch/many-0724.txt", + "object-tests/batch/many-0725.txt", + "object-tests/batch/many-0726.txt", + "object-tests/batch/many-0727.txt", + "object-tests/batch/many-0728.txt", + "object-tests/batch/many-0729.txt", + "object-tests/batch/many-0730.txt", + "object-tests/batch/many-0731.txt", + "object-tests/batch/many-0732.txt", + "object-tests/batch/many-0733.txt", + "object-tests/batch/many-0734.txt", + "object-tests/batch/many-0735.txt", + "object-tests/batch/many-0736.txt", + "object-tests/batch/many-0737.txt", + "object-tests/batch/many-0738.txt", + "object-tests/batch/many-0739.txt", + "object-tests/batch/many-0740.txt", + "object-tests/batch/many-0741.txt", + "object-tests/batch/many-0742.txt", + "object-tests/batch/many-0743.txt", + "object-tests/batch/many-0744.txt", + "object-tests/batch/many-0745.txt", + "object-tests/batch/many-0746.txt", + "object-tests/batch/many-0747.txt", + "object-tests/batch/many-0748.txt", + "object-tests/batch/many-0749.txt", + "object-tests/batch/many-0750.txt", + "object-tests/batch/many-0751.txt", + "object-tests/batch/many-0752.txt", + "object-tests/batch/many-0753.txt", + "object-tests/batch/many-0754.txt", + "object-tests/batch/many-0755.txt", + "object-tests/batch/many-0756.txt", + "object-tests/batch/many-0757.txt", + "object-tests/batch/many-0758.txt", + "object-tests/batch/many-0759.txt", + "object-tests/batch/many-0760.txt", + "object-tests/batch/many-0761.txt", + "object-tests/batch/many-0762.txt", + "object-tests/batch/many-0763.txt", + "object-tests/batch/many-0764.txt", + "object-tests/batch/many-0765.txt", + "object-tests/batch/many-0766.txt", + "object-tests/batch/many-0767.txt", + "object-tests/batch/many-0768.txt", + "object-tests/batch/many-0769.txt", + "object-tests/batch/many-0770.txt", + "object-tests/batch/many-0771.txt", + "object-tests/batch/many-0772.txt", + "object-tests/batch/many-0773.txt", + "object-tests/batch/many-0774.txt", + "object-tests/batch/many-0775.txt", + "object-tests/batch/many-0776.txt", + "object-tests/batch/many-0777.txt", + "object-tests/batch/many-0778.txt", + "object-tests/batch/many-0779.txt", + "object-tests/batch/many-0780.txt", + "object-tests/batch/many-0781.txt", + "object-tests/batch/many-0782.txt", + "object-tests/batch/many-0783.txt", + "object-tests/batch/many-0784.txt", + "object-tests/batch/many-0785.txt", + "object-tests/batch/many-0786.txt", + "object-tests/batch/many-0787.txt", + "object-tests/batch/many-0788.txt", + "object-tests/batch/many-0789.txt", + "object-tests/batch/many-0790.txt", + "object-tests/batch/many-0791.txt", + "object-tests/batch/many-0792.txt", + "object-tests/batch/many-0793.txt", + "object-tests/batch/many-0794.txt", + "object-tests/batch/many-0795.txt", + "object-tests/batch/many-0796.txt", + "object-tests/batch/many-0797.txt", + "object-tests/batch/many-0798.txt", + "object-tests/batch/many-0799.txt", + "object-tests/batch/many-0800.txt", + "object-tests/batch/many-0801.txt", + "object-tests/batch/many-0802.txt", + "object-tests/batch/many-0803.txt", + "object-tests/batch/many-0804.txt", + "object-tests/batch/many-0805.txt", + "object-tests/batch/many-0806.txt", + "object-tests/batch/many-0807.txt", + "object-tests/batch/many-0808.txt", + "object-tests/batch/many-0809.txt", + "object-tests/batch/many-0810.txt", + "object-tests/batch/many-0811.txt", + "object-tests/batch/many-0812.txt", + "object-tests/batch/many-0813.txt", + "object-tests/batch/many-0814.txt", + "object-tests/batch/many-0815.txt", + "object-tests/batch/many-0816.txt", + "object-tests/batch/many-0817.txt", + "object-tests/batch/many-0818.txt", + "object-tests/batch/many-0819.txt", + "object-tests/batch/many-0820.txt", + "object-tests/batch/many-0821.txt", + "object-tests/batch/many-0822.txt", + "object-tests/batch/many-0823.txt", + "object-tests/batch/many-0824.txt", + "object-tests/batch/many-0825.txt", + "object-tests/batch/many-0826.txt", + "object-tests/batch/many-0827.txt", + "object-tests/batch/many-0828.txt", + "object-tests/batch/many-0829.txt", + "object-tests/batch/many-0830.txt", + "object-tests/batch/many-0831.txt", + "object-tests/batch/many-0832.txt", + "object-tests/batch/many-0833.txt", + "object-tests/batch/many-0834.txt", + "object-tests/batch/many-0835.txt", + "object-tests/batch/many-0836.txt", + "object-tests/batch/many-0837.txt", + "object-tests/batch/many-0838.txt", + "object-tests/batch/many-0839.txt", + "object-tests/batch/many-0840.txt", + "object-tests/batch/many-0841.txt", + "object-tests/batch/many-0842.txt", + "object-tests/batch/many-0843.txt", + "object-tests/batch/many-0844.txt", + "object-tests/batch/many-0845.txt", + "object-tests/batch/many-0846.txt", + "object-tests/batch/many-0847.txt", + "object-tests/batch/many-0848.txt", + "object-tests/batch/many-0849.txt", + "object-tests/batch/many-0850.txt", + "object-tests/batch/many-0851.txt", + "object-tests/batch/many-0852.txt", + "object-tests/batch/many-0853.txt", + "object-tests/batch/many-0854.txt", + "object-tests/batch/many-0855.txt", + "object-tests/batch/many-0856.txt", + "object-tests/batch/many-0857.txt", + "object-tests/batch/many-0858.txt", + "object-tests/batch/many-0859.txt", + "object-tests/batch/many-0860.txt", + "object-tests/batch/many-0861.txt", + "object-tests/batch/many-0862.txt", + "object-tests/batch/many-0863.txt", + "object-tests/batch/many-0864.txt", + "object-tests/batch/many-0865.txt", + "object-tests/batch/many-0866.txt", + "object-tests/batch/many-0867.txt", + "object-tests/batch/many-0868.txt", + "object-tests/batch/many-0869.txt", + "object-tests/batch/many-0870.txt", + "object-tests/batch/many-0871.txt", + "object-tests/batch/many-0872.txt", + "object-tests/batch/many-0873.txt", + "object-tests/batch/many-0874.txt", + "object-tests/batch/many-0875.txt", + "object-tests/batch/many-0876.txt", + "object-tests/batch/many-0877.txt", + "object-tests/batch/many-0878.txt", + "object-tests/batch/many-0879.txt", + "object-tests/batch/many-0880.txt", + "object-tests/batch/many-0881.txt", + "object-tests/batch/many-0882.txt", + "object-tests/batch/many-0883.txt", + "object-tests/batch/many-0884.txt", + "object-tests/batch/many-0885.txt", + "object-tests/batch/many-0886.txt", + "object-tests/batch/many-0887.txt", + "object-tests/batch/many-0888.txt", + "object-tests/batch/many-0889.txt", + "object-tests/batch/many-0890.txt", + "object-tests/batch/many-0891.txt", + "object-tests/batch/many-0892.txt", + "object-tests/batch/many-0893.txt", + "object-tests/batch/many-0894.txt", + "object-tests/batch/many-0895.txt", + "object-tests/batch/many-0896.txt", + "object-tests/batch/many-0897.txt", + "object-tests/batch/many-0898.txt", + "object-tests/batch/many-0899.txt", + "object-tests/batch/many-0900.txt", + "object-tests/batch/many-0901.txt", + "object-tests/batch/many-0902.txt", + "object-tests/batch/many-0903.txt", + "object-tests/batch/many-0904.txt", + "object-tests/batch/many-0905.txt", + "object-tests/batch/many-0906.txt", + "object-tests/batch/many-0907.txt", + "object-tests/batch/many-0908.txt", + "object-tests/batch/many-0909.txt", + "object-tests/batch/many-0910.txt", + "object-tests/batch/many-0911.txt", + "object-tests/batch/many-0912.txt", + "object-tests/batch/many-0913.txt", + "object-tests/batch/many-0914.txt", + "object-tests/batch/many-0915.txt", + "object-tests/batch/many-0916.txt", + "object-tests/batch/many-0917.txt", + "object-tests/batch/many-0918.txt", + "object-tests/batch/many-0919.txt", + "object-tests/batch/many-0920.txt", + "object-tests/batch/many-0921.txt", + "object-tests/batch/many-0922.txt", + "object-tests/batch/many-0923.txt", + "object-tests/batch/many-0924.txt", + "object-tests/batch/many-0925.txt", + "object-tests/batch/many-0926.txt", + "object-tests/batch/many-0927.txt", + "object-tests/batch/many-0928.txt", + "object-tests/batch/many-0929.txt", + "object-tests/batch/many-0930.txt", + "object-tests/batch/many-0931.txt", + "object-tests/batch/many-0932.txt", + "object-tests/batch/many-0933.txt", + "object-tests/batch/many-0934.txt", + "object-tests/batch/many-0935.txt", + "object-tests/batch/many-0936.txt", + "object-tests/batch/many-0937.txt", + "object-tests/batch/many-0938.txt", + "object-tests/batch/many-0939.txt", + "object-tests/batch/many-0940.txt", + "object-tests/batch/many-0941.txt", + "object-tests/batch/many-0942.txt", + "object-tests/batch/many-0943.txt", + "object-tests/batch/many-0944.txt", + "object-tests/batch/many-0945.txt", + "object-tests/batch/many-0946.txt", + "object-tests/batch/many-0947.txt", + "object-tests/batch/many-0948.txt", + "object-tests/batch/many-0949.txt", + "object-tests/batch/many-0950.txt", + "object-tests/batch/many-0951.txt", + "object-tests/batch/many-0952.txt", + "object-tests/batch/many-0953.txt", + "object-tests/batch/many-0954.txt", + "object-tests/batch/many-0955.txt", + "object-tests/batch/many-0956.txt", + "object-tests/batch/many-0957.txt", + "object-tests/batch/many-0958.txt", + "object-tests/batch/many-0959.txt", + "object-tests/batch/many-0960.txt", + "object-tests/batch/many-0961.txt", + "object-tests/batch/many-0962.txt", + "object-tests/batch/many-0963.txt", + "object-tests/batch/many-0964.txt", + "object-tests/batch/many-0965.txt", + "object-tests/batch/many-0966.txt", + "object-tests/batch/many-0967.txt", + "object-tests/batch/many-0968.txt", + "object-tests/batch/many-0969.txt", + "object-tests/batch/many-0970.txt", + "object-tests/batch/many-0971.txt", + "object-tests/batch/many-0972.txt", + "object-tests/batch/many-0973.txt", + "object-tests/batch/many-0974.txt", + "object-tests/batch/many-0975.txt", + "object-tests/batch/many-0976.txt", + "object-tests/batch/many-0977.txt", + "object-tests/batch/many-0978.txt", + "object-tests/batch/many-0979.txt", + "object-tests/batch/many-0980.txt", + "object-tests/batch/many-0981.txt", + "object-tests/batch/many-0982.txt", + "object-tests/batch/many-0983.txt", + "object-tests/batch/many-0984.txt", + "object-tests/batch/many-0985.txt", + "object-tests/batch/many-0986.txt", + "object-tests/batch/many-0987.txt", + "object-tests/batch/many-0988.txt", + "object-tests/batch/many-0989.txt", + "object-tests/batch/many-0990.txt", + "object-tests/batch/many-0991.txt", + "object-tests/batch/many-0992.txt", + "object-tests/batch/many-0993.txt", + "object-tests/batch/many-0994.txt", + "object-tests/batch/many-0995.txt", + "object-tests/batch/many-0996.txt", + "object-tests/batch/many-0997.txt", + "object-tests/batch/many-0998.txt", + "object-tests/batch/many-0999.txt" + ] + } + }, + { + "at": "/value/errors", + "optional": false, + "rule": { + "is": "equal", + "value": [] + } + } + ], + "refusal": null + }, + { + "id": "operations/s3-express/delete-many-1001", + "profile": "s3-express", + "lane": "core", + "purpose": "Report a DeleteObjects request of 1,001 keys, one more than S3 takes, as an error. A client may refuse it before sending", + "sources": [ + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjects.html" + ], + "call": { + "keys": [ + "object-tests/batch/many-0000.txt", + "object-tests/batch/many-0001.txt", + "object-tests/batch/many-0002.txt", + "object-tests/batch/many-0003.txt", + "object-tests/batch/many-0004.txt", + "object-tests/batch/many-0005.txt", + "object-tests/batch/many-0006.txt", + "object-tests/batch/many-0007.txt", + "object-tests/batch/many-0008.txt", + "object-tests/batch/many-0009.txt", + "object-tests/batch/many-0010.txt", + "object-tests/batch/many-0011.txt", + "object-tests/batch/many-0012.txt", + "object-tests/batch/many-0013.txt", + "object-tests/batch/many-0014.txt", + "object-tests/batch/many-0015.txt", + "object-tests/batch/many-0016.txt", + "object-tests/batch/many-0017.txt", + "object-tests/batch/many-0018.txt", + "object-tests/batch/many-0019.txt", + "object-tests/batch/many-0020.txt", + "object-tests/batch/many-0021.txt", + "object-tests/batch/many-0022.txt", + "object-tests/batch/many-0023.txt", + "object-tests/batch/many-0024.txt", + "object-tests/batch/many-0025.txt", + "object-tests/batch/many-0026.txt", + "object-tests/batch/many-0027.txt", + "object-tests/batch/many-0028.txt", + "object-tests/batch/many-0029.txt", + "object-tests/batch/many-0030.txt", + "object-tests/batch/many-0031.txt", + "object-tests/batch/many-0032.txt", + "object-tests/batch/many-0033.txt", + "object-tests/batch/many-0034.txt", + "object-tests/batch/many-0035.txt", + "object-tests/batch/many-0036.txt", + "object-tests/batch/many-0037.txt", + "object-tests/batch/many-0038.txt", + "object-tests/batch/many-0039.txt", + "object-tests/batch/many-0040.txt", + "object-tests/batch/many-0041.txt", + "object-tests/batch/many-0042.txt", + "object-tests/batch/many-0043.txt", + "object-tests/batch/many-0044.txt", + "object-tests/batch/many-0045.txt", + "object-tests/batch/many-0046.txt", + "object-tests/batch/many-0047.txt", + "object-tests/batch/many-0048.txt", + "object-tests/batch/many-0049.txt", + "object-tests/batch/many-0050.txt", + "object-tests/batch/many-0051.txt", + "object-tests/batch/many-0052.txt", + "object-tests/batch/many-0053.txt", + "object-tests/batch/many-0054.txt", + "object-tests/batch/many-0055.txt", + "object-tests/batch/many-0056.txt", + "object-tests/batch/many-0057.txt", + "object-tests/batch/many-0058.txt", + "object-tests/batch/many-0059.txt", + "object-tests/batch/many-0060.txt", + "object-tests/batch/many-0061.txt", + "object-tests/batch/many-0062.txt", + "object-tests/batch/many-0063.txt", + "object-tests/batch/many-0064.txt", + "object-tests/batch/many-0065.txt", + "object-tests/batch/many-0066.txt", + "object-tests/batch/many-0067.txt", + "object-tests/batch/many-0068.txt", + "object-tests/batch/many-0069.txt", + "object-tests/batch/many-0070.txt", + "object-tests/batch/many-0071.txt", + "object-tests/batch/many-0072.txt", + "object-tests/batch/many-0073.txt", + "object-tests/batch/many-0074.txt", + "object-tests/batch/many-0075.txt", + "object-tests/batch/many-0076.txt", + "object-tests/batch/many-0077.txt", + "object-tests/batch/many-0078.txt", + "object-tests/batch/many-0079.txt", + "object-tests/batch/many-0080.txt", + "object-tests/batch/many-0081.txt", + "object-tests/batch/many-0082.txt", + "object-tests/batch/many-0083.txt", + "object-tests/batch/many-0084.txt", + "object-tests/batch/many-0085.txt", + "object-tests/batch/many-0086.txt", + "object-tests/batch/many-0087.txt", + "object-tests/batch/many-0088.txt", + "object-tests/batch/many-0089.txt", + "object-tests/batch/many-0090.txt", + "object-tests/batch/many-0091.txt", + "object-tests/batch/many-0092.txt", + "object-tests/batch/many-0093.txt", + "object-tests/batch/many-0094.txt", + "object-tests/batch/many-0095.txt", + "object-tests/batch/many-0096.txt", + "object-tests/batch/many-0097.txt", + "object-tests/batch/many-0098.txt", + "object-tests/batch/many-0099.txt", + "object-tests/batch/many-0100.txt", + "object-tests/batch/many-0101.txt", + "object-tests/batch/many-0102.txt", + "object-tests/batch/many-0103.txt", + "object-tests/batch/many-0104.txt", + "object-tests/batch/many-0105.txt", + "object-tests/batch/many-0106.txt", + "object-tests/batch/many-0107.txt", + "object-tests/batch/many-0108.txt", + "object-tests/batch/many-0109.txt", + "object-tests/batch/many-0110.txt", + "object-tests/batch/many-0111.txt", + "object-tests/batch/many-0112.txt", + "object-tests/batch/many-0113.txt", + "object-tests/batch/many-0114.txt", + "object-tests/batch/many-0115.txt", + "object-tests/batch/many-0116.txt", + "object-tests/batch/many-0117.txt", + "object-tests/batch/many-0118.txt", + "object-tests/batch/many-0119.txt", + "object-tests/batch/many-0120.txt", + "object-tests/batch/many-0121.txt", + "object-tests/batch/many-0122.txt", + "object-tests/batch/many-0123.txt", + "object-tests/batch/many-0124.txt", + "object-tests/batch/many-0125.txt", + "object-tests/batch/many-0126.txt", + "object-tests/batch/many-0127.txt", + "object-tests/batch/many-0128.txt", + "object-tests/batch/many-0129.txt", + "object-tests/batch/many-0130.txt", + "object-tests/batch/many-0131.txt", + "object-tests/batch/many-0132.txt", + "object-tests/batch/many-0133.txt", + "object-tests/batch/many-0134.txt", + "object-tests/batch/many-0135.txt", + "object-tests/batch/many-0136.txt", + "object-tests/batch/many-0137.txt", + "object-tests/batch/many-0138.txt", + "object-tests/batch/many-0139.txt", + "object-tests/batch/many-0140.txt", + "object-tests/batch/many-0141.txt", + "object-tests/batch/many-0142.txt", + "object-tests/batch/many-0143.txt", + "object-tests/batch/many-0144.txt", + "object-tests/batch/many-0145.txt", + "object-tests/batch/many-0146.txt", + "object-tests/batch/many-0147.txt", + "object-tests/batch/many-0148.txt", + "object-tests/batch/many-0149.txt", + "object-tests/batch/many-0150.txt", + "object-tests/batch/many-0151.txt", + "object-tests/batch/many-0152.txt", + "object-tests/batch/many-0153.txt", + "object-tests/batch/many-0154.txt", + "object-tests/batch/many-0155.txt", + "object-tests/batch/many-0156.txt", + "object-tests/batch/many-0157.txt", + "object-tests/batch/many-0158.txt", + "object-tests/batch/many-0159.txt", + "object-tests/batch/many-0160.txt", + "object-tests/batch/many-0161.txt", + "object-tests/batch/many-0162.txt", + "object-tests/batch/many-0163.txt", + "object-tests/batch/many-0164.txt", + "object-tests/batch/many-0165.txt", + "object-tests/batch/many-0166.txt", + "object-tests/batch/many-0167.txt", + "object-tests/batch/many-0168.txt", + "object-tests/batch/many-0169.txt", + "object-tests/batch/many-0170.txt", + "object-tests/batch/many-0171.txt", + "object-tests/batch/many-0172.txt", + "object-tests/batch/many-0173.txt", + "object-tests/batch/many-0174.txt", + "object-tests/batch/many-0175.txt", + "object-tests/batch/many-0176.txt", + "object-tests/batch/many-0177.txt", + "object-tests/batch/many-0178.txt", + "object-tests/batch/many-0179.txt", + "object-tests/batch/many-0180.txt", + "object-tests/batch/many-0181.txt", + "object-tests/batch/many-0182.txt", + "object-tests/batch/many-0183.txt", + "object-tests/batch/many-0184.txt", + "object-tests/batch/many-0185.txt", + "object-tests/batch/many-0186.txt", + "object-tests/batch/many-0187.txt", + "object-tests/batch/many-0188.txt", + "object-tests/batch/many-0189.txt", + "object-tests/batch/many-0190.txt", + "object-tests/batch/many-0191.txt", + "object-tests/batch/many-0192.txt", + "object-tests/batch/many-0193.txt", + "object-tests/batch/many-0194.txt", + "object-tests/batch/many-0195.txt", + "object-tests/batch/many-0196.txt", + "object-tests/batch/many-0197.txt", + "object-tests/batch/many-0198.txt", + "object-tests/batch/many-0199.txt", + "object-tests/batch/many-0200.txt", + "object-tests/batch/many-0201.txt", + "object-tests/batch/many-0202.txt", + "object-tests/batch/many-0203.txt", + "object-tests/batch/many-0204.txt", + "object-tests/batch/many-0205.txt", + "object-tests/batch/many-0206.txt", + "object-tests/batch/many-0207.txt", + "object-tests/batch/many-0208.txt", + "object-tests/batch/many-0209.txt", + "object-tests/batch/many-0210.txt", + "object-tests/batch/many-0211.txt", + "object-tests/batch/many-0212.txt", + "object-tests/batch/many-0213.txt", + "object-tests/batch/many-0214.txt", + "object-tests/batch/many-0215.txt", + "object-tests/batch/many-0216.txt", + "object-tests/batch/many-0217.txt", + "object-tests/batch/many-0218.txt", + "object-tests/batch/many-0219.txt", + "object-tests/batch/many-0220.txt", + "object-tests/batch/many-0221.txt", + "object-tests/batch/many-0222.txt", + "object-tests/batch/many-0223.txt", + "object-tests/batch/many-0224.txt", + "object-tests/batch/many-0225.txt", + "object-tests/batch/many-0226.txt", + "object-tests/batch/many-0227.txt", + "object-tests/batch/many-0228.txt", + "object-tests/batch/many-0229.txt", + "object-tests/batch/many-0230.txt", + "object-tests/batch/many-0231.txt", + "object-tests/batch/many-0232.txt", + "object-tests/batch/many-0233.txt", + "object-tests/batch/many-0234.txt", + "object-tests/batch/many-0235.txt", + "object-tests/batch/many-0236.txt", + "object-tests/batch/many-0237.txt", + "object-tests/batch/many-0238.txt", + "object-tests/batch/many-0239.txt", + "object-tests/batch/many-0240.txt", + "object-tests/batch/many-0241.txt", + "object-tests/batch/many-0242.txt", + "object-tests/batch/many-0243.txt", + "object-tests/batch/many-0244.txt", + "object-tests/batch/many-0245.txt", + "object-tests/batch/many-0246.txt", + "object-tests/batch/many-0247.txt", + "object-tests/batch/many-0248.txt", + "object-tests/batch/many-0249.txt", + "object-tests/batch/many-0250.txt", + "object-tests/batch/many-0251.txt", + "object-tests/batch/many-0252.txt", + "object-tests/batch/many-0253.txt", + "object-tests/batch/many-0254.txt", + "object-tests/batch/many-0255.txt", + "object-tests/batch/many-0256.txt", + "object-tests/batch/many-0257.txt", + "object-tests/batch/many-0258.txt", + "object-tests/batch/many-0259.txt", + "object-tests/batch/many-0260.txt", + "object-tests/batch/many-0261.txt", + "object-tests/batch/many-0262.txt", + "object-tests/batch/many-0263.txt", + "object-tests/batch/many-0264.txt", + "object-tests/batch/many-0265.txt", + "object-tests/batch/many-0266.txt", + "object-tests/batch/many-0267.txt", + "object-tests/batch/many-0268.txt", + "object-tests/batch/many-0269.txt", + "object-tests/batch/many-0270.txt", + "object-tests/batch/many-0271.txt", + "object-tests/batch/many-0272.txt", + "object-tests/batch/many-0273.txt", + "object-tests/batch/many-0274.txt", + "object-tests/batch/many-0275.txt", + "object-tests/batch/many-0276.txt", + "object-tests/batch/many-0277.txt", + "object-tests/batch/many-0278.txt", + "object-tests/batch/many-0279.txt", + "object-tests/batch/many-0280.txt", + "object-tests/batch/many-0281.txt", + "object-tests/batch/many-0282.txt", + "object-tests/batch/many-0283.txt", + "object-tests/batch/many-0284.txt", + "object-tests/batch/many-0285.txt", + "object-tests/batch/many-0286.txt", + "object-tests/batch/many-0287.txt", + "object-tests/batch/many-0288.txt", + "object-tests/batch/many-0289.txt", + "object-tests/batch/many-0290.txt", + "object-tests/batch/many-0291.txt", + "object-tests/batch/many-0292.txt", + "object-tests/batch/many-0293.txt", + "object-tests/batch/many-0294.txt", + "object-tests/batch/many-0295.txt", + "object-tests/batch/many-0296.txt", + "object-tests/batch/many-0297.txt", + "object-tests/batch/many-0298.txt", + "object-tests/batch/many-0299.txt", + "object-tests/batch/many-0300.txt", + "object-tests/batch/many-0301.txt", + "object-tests/batch/many-0302.txt", + "object-tests/batch/many-0303.txt", + "object-tests/batch/many-0304.txt", + "object-tests/batch/many-0305.txt", + "object-tests/batch/many-0306.txt", + "object-tests/batch/many-0307.txt", + "object-tests/batch/many-0308.txt", + "object-tests/batch/many-0309.txt", + "object-tests/batch/many-0310.txt", + "object-tests/batch/many-0311.txt", + "object-tests/batch/many-0312.txt", + "object-tests/batch/many-0313.txt", + "object-tests/batch/many-0314.txt", + "object-tests/batch/many-0315.txt", + "object-tests/batch/many-0316.txt", + "object-tests/batch/many-0317.txt", + "object-tests/batch/many-0318.txt", + "object-tests/batch/many-0319.txt", + "object-tests/batch/many-0320.txt", + "object-tests/batch/many-0321.txt", + "object-tests/batch/many-0322.txt", + "object-tests/batch/many-0323.txt", + "object-tests/batch/many-0324.txt", + "object-tests/batch/many-0325.txt", + "object-tests/batch/many-0326.txt", + "object-tests/batch/many-0327.txt", + "object-tests/batch/many-0328.txt", + "object-tests/batch/many-0329.txt", + "object-tests/batch/many-0330.txt", + "object-tests/batch/many-0331.txt", + "object-tests/batch/many-0332.txt", + "object-tests/batch/many-0333.txt", + "object-tests/batch/many-0334.txt", + "object-tests/batch/many-0335.txt", + "object-tests/batch/many-0336.txt", + "object-tests/batch/many-0337.txt", + "object-tests/batch/many-0338.txt", + "object-tests/batch/many-0339.txt", + "object-tests/batch/many-0340.txt", + "object-tests/batch/many-0341.txt", + "object-tests/batch/many-0342.txt", + "object-tests/batch/many-0343.txt", + "object-tests/batch/many-0344.txt", + "object-tests/batch/many-0345.txt", + "object-tests/batch/many-0346.txt", + "object-tests/batch/many-0347.txt", + "object-tests/batch/many-0348.txt", + "object-tests/batch/many-0349.txt", + "object-tests/batch/many-0350.txt", + "object-tests/batch/many-0351.txt", + "object-tests/batch/many-0352.txt", + "object-tests/batch/many-0353.txt", + "object-tests/batch/many-0354.txt", + "object-tests/batch/many-0355.txt", + "object-tests/batch/many-0356.txt", + "object-tests/batch/many-0357.txt", + "object-tests/batch/many-0358.txt", + "object-tests/batch/many-0359.txt", + "object-tests/batch/many-0360.txt", + "object-tests/batch/many-0361.txt", + "object-tests/batch/many-0362.txt", + "object-tests/batch/many-0363.txt", + "object-tests/batch/many-0364.txt", + "object-tests/batch/many-0365.txt", + "object-tests/batch/many-0366.txt", + "object-tests/batch/many-0367.txt", + "object-tests/batch/many-0368.txt", + "object-tests/batch/many-0369.txt", + "object-tests/batch/many-0370.txt", + "object-tests/batch/many-0371.txt", + "object-tests/batch/many-0372.txt", + "object-tests/batch/many-0373.txt", + "object-tests/batch/many-0374.txt", + "object-tests/batch/many-0375.txt", + "object-tests/batch/many-0376.txt", + "object-tests/batch/many-0377.txt", + "object-tests/batch/many-0378.txt", + "object-tests/batch/many-0379.txt", + "object-tests/batch/many-0380.txt", + "object-tests/batch/many-0381.txt", + "object-tests/batch/many-0382.txt", + "object-tests/batch/many-0383.txt", + "object-tests/batch/many-0384.txt", + "object-tests/batch/many-0385.txt", + "object-tests/batch/many-0386.txt", + "object-tests/batch/many-0387.txt", + "object-tests/batch/many-0388.txt", + "object-tests/batch/many-0389.txt", + "object-tests/batch/many-0390.txt", + "object-tests/batch/many-0391.txt", + "object-tests/batch/many-0392.txt", + "object-tests/batch/many-0393.txt", + "object-tests/batch/many-0394.txt", + "object-tests/batch/many-0395.txt", + "object-tests/batch/many-0396.txt", + "object-tests/batch/many-0397.txt", + "object-tests/batch/many-0398.txt", + "object-tests/batch/many-0399.txt", + "object-tests/batch/many-0400.txt", + "object-tests/batch/many-0401.txt", + "object-tests/batch/many-0402.txt", + "object-tests/batch/many-0403.txt", + "object-tests/batch/many-0404.txt", + "object-tests/batch/many-0405.txt", + "object-tests/batch/many-0406.txt", + "object-tests/batch/many-0407.txt", + "object-tests/batch/many-0408.txt", + "object-tests/batch/many-0409.txt", + "object-tests/batch/many-0410.txt", + "object-tests/batch/many-0411.txt", + "object-tests/batch/many-0412.txt", + "object-tests/batch/many-0413.txt", + "object-tests/batch/many-0414.txt", + "object-tests/batch/many-0415.txt", + "object-tests/batch/many-0416.txt", + "object-tests/batch/many-0417.txt", + "object-tests/batch/many-0418.txt", + "object-tests/batch/many-0419.txt", + "object-tests/batch/many-0420.txt", + "object-tests/batch/many-0421.txt", + "object-tests/batch/many-0422.txt", + "object-tests/batch/many-0423.txt", + "object-tests/batch/many-0424.txt", + "object-tests/batch/many-0425.txt", + "object-tests/batch/many-0426.txt", + "object-tests/batch/many-0427.txt", + "object-tests/batch/many-0428.txt", + "object-tests/batch/many-0429.txt", + "object-tests/batch/many-0430.txt", + "object-tests/batch/many-0431.txt", + "object-tests/batch/many-0432.txt", + "object-tests/batch/many-0433.txt", + "object-tests/batch/many-0434.txt", + "object-tests/batch/many-0435.txt", + "object-tests/batch/many-0436.txt", + "object-tests/batch/many-0437.txt", + "object-tests/batch/many-0438.txt", + "object-tests/batch/many-0439.txt", + "object-tests/batch/many-0440.txt", + "object-tests/batch/many-0441.txt", + "object-tests/batch/many-0442.txt", + "object-tests/batch/many-0443.txt", + "object-tests/batch/many-0444.txt", + "object-tests/batch/many-0445.txt", + "object-tests/batch/many-0446.txt", + "object-tests/batch/many-0447.txt", + "object-tests/batch/many-0448.txt", + "object-tests/batch/many-0449.txt", + "object-tests/batch/many-0450.txt", + "object-tests/batch/many-0451.txt", + "object-tests/batch/many-0452.txt", + "object-tests/batch/many-0453.txt", + "object-tests/batch/many-0454.txt", + "object-tests/batch/many-0455.txt", + "object-tests/batch/many-0456.txt", + "object-tests/batch/many-0457.txt", + "object-tests/batch/many-0458.txt", + "object-tests/batch/many-0459.txt", + "object-tests/batch/many-0460.txt", + "object-tests/batch/many-0461.txt", + "object-tests/batch/many-0462.txt", + "object-tests/batch/many-0463.txt", + "object-tests/batch/many-0464.txt", + "object-tests/batch/many-0465.txt", + "object-tests/batch/many-0466.txt", + "object-tests/batch/many-0467.txt", + "object-tests/batch/many-0468.txt", + "object-tests/batch/many-0469.txt", + "object-tests/batch/many-0470.txt", + "object-tests/batch/many-0471.txt", + "object-tests/batch/many-0472.txt", + "object-tests/batch/many-0473.txt", + "object-tests/batch/many-0474.txt", + "object-tests/batch/many-0475.txt", + "object-tests/batch/many-0476.txt", + "object-tests/batch/many-0477.txt", + "object-tests/batch/many-0478.txt", + "object-tests/batch/many-0479.txt", + "object-tests/batch/many-0480.txt", + "object-tests/batch/many-0481.txt", + "object-tests/batch/many-0482.txt", + "object-tests/batch/many-0483.txt", + "object-tests/batch/many-0484.txt", + "object-tests/batch/many-0485.txt", + "object-tests/batch/many-0486.txt", + "object-tests/batch/many-0487.txt", + "object-tests/batch/many-0488.txt", + "object-tests/batch/many-0489.txt", + "object-tests/batch/many-0490.txt", + "object-tests/batch/many-0491.txt", + "object-tests/batch/many-0492.txt", + "object-tests/batch/many-0493.txt", + "object-tests/batch/many-0494.txt", + "object-tests/batch/many-0495.txt", + "object-tests/batch/many-0496.txt", + "object-tests/batch/many-0497.txt", + "object-tests/batch/many-0498.txt", + "object-tests/batch/many-0499.txt", + "object-tests/batch/many-0500.txt", + "object-tests/batch/many-0501.txt", + "object-tests/batch/many-0502.txt", + "object-tests/batch/many-0503.txt", + "object-tests/batch/many-0504.txt", + "object-tests/batch/many-0505.txt", + "object-tests/batch/many-0506.txt", + "object-tests/batch/many-0507.txt", + "object-tests/batch/many-0508.txt", + "object-tests/batch/many-0509.txt", + "object-tests/batch/many-0510.txt", + "object-tests/batch/many-0511.txt", + "object-tests/batch/many-0512.txt", + "object-tests/batch/many-0513.txt", + "object-tests/batch/many-0514.txt", + "object-tests/batch/many-0515.txt", + "object-tests/batch/many-0516.txt", + "object-tests/batch/many-0517.txt", + "object-tests/batch/many-0518.txt", + "object-tests/batch/many-0519.txt", + "object-tests/batch/many-0520.txt", + "object-tests/batch/many-0521.txt", + "object-tests/batch/many-0522.txt", + "object-tests/batch/many-0523.txt", + "object-tests/batch/many-0524.txt", + "object-tests/batch/many-0525.txt", + "object-tests/batch/many-0526.txt", + "object-tests/batch/many-0527.txt", + "object-tests/batch/many-0528.txt", + "object-tests/batch/many-0529.txt", + "object-tests/batch/many-0530.txt", + "object-tests/batch/many-0531.txt", + "object-tests/batch/many-0532.txt", + "object-tests/batch/many-0533.txt", + "object-tests/batch/many-0534.txt", + "object-tests/batch/many-0535.txt", + "object-tests/batch/many-0536.txt", + "object-tests/batch/many-0537.txt", + "object-tests/batch/many-0538.txt", + "object-tests/batch/many-0539.txt", + "object-tests/batch/many-0540.txt", + "object-tests/batch/many-0541.txt", + "object-tests/batch/many-0542.txt", + "object-tests/batch/many-0543.txt", + "object-tests/batch/many-0544.txt", + "object-tests/batch/many-0545.txt", + "object-tests/batch/many-0546.txt", + "object-tests/batch/many-0547.txt", + "object-tests/batch/many-0548.txt", + "object-tests/batch/many-0549.txt", + "object-tests/batch/many-0550.txt", + "object-tests/batch/many-0551.txt", + "object-tests/batch/many-0552.txt", + "object-tests/batch/many-0553.txt", + "object-tests/batch/many-0554.txt", + "object-tests/batch/many-0555.txt", + "object-tests/batch/many-0556.txt", + "object-tests/batch/many-0557.txt", + "object-tests/batch/many-0558.txt", + "object-tests/batch/many-0559.txt", + "object-tests/batch/many-0560.txt", + "object-tests/batch/many-0561.txt", + "object-tests/batch/many-0562.txt", + "object-tests/batch/many-0563.txt", + "object-tests/batch/many-0564.txt", + "object-tests/batch/many-0565.txt", + "object-tests/batch/many-0566.txt", + "object-tests/batch/many-0567.txt", + "object-tests/batch/many-0568.txt", + "object-tests/batch/many-0569.txt", + "object-tests/batch/many-0570.txt", + "object-tests/batch/many-0571.txt", + "object-tests/batch/many-0572.txt", + "object-tests/batch/many-0573.txt", + "object-tests/batch/many-0574.txt", + "object-tests/batch/many-0575.txt", + "object-tests/batch/many-0576.txt", + "object-tests/batch/many-0577.txt", + "object-tests/batch/many-0578.txt", + "object-tests/batch/many-0579.txt", + "object-tests/batch/many-0580.txt", + "object-tests/batch/many-0581.txt", + "object-tests/batch/many-0582.txt", + "object-tests/batch/many-0583.txt", + "object-tests/batch/many-0584.txt", + "object-tests/batch/many-0585.txt", + "object-tests/batch/many-0586.txt", + "object-tests/batch/many-0587.txt", + "object-tests/batch/many-0588.txt", + "object-tests/batch/many-0589.txt", + "object-tests/batch/many-0590.txt", + "object-tests/batch/many-0591.txt", + "object-tests/batch/many-0592.txt", + "object-tests/batch/many-0593.txt", + "object-tests/batch/many-0594.txt", + "object-tests/batch/many-0595.txt", + "object-tests/batch/many-0596.txt", + "object-tests/batch/many-0597.txt", + "object-tests/batch/many-0598.txt", + "object-tests/batch/many-0599.txt", + "object-tests/batch/many-0600.txt", + "object-tests/batch/many-0601.txt", + "object-tests/batch/many-0602.txt", + "object-tests/batch/many-0603.txt", + "object-tests/batch/many-0604.txt", + "object-tests/batch/many-0605.txt", + "object-tests/batch/many-0606.txt", + "object-tests/batch/many-0607.txt", + "object-tests/batch/many-0608.txt", + "object-tests/batch/many-0609.txt", + "object-tests/batch/many-0610.txt", + "object-tests/batch/many-0611.txt", + "object-tests/batch/many-0612.txt", + "object-tests/batch/many-0613.txt", + "object-tests/batch/many-0614.txt", + "object-tests/batch/many-0615.txt", + "object-tests/batch/many-0616.txt", + "object-tests/batch/many-0617.txt", + "object-tests/batch/many-0618.txt", + "object-tests/batch/many-0619.txt", + "object-tests/batch/many-0620.txt", + "object-tests/batch/many-0621.txt", + "object-tests/batch/many-0622.txt", + "object-tests/batch/many-0623.txt", + "object-tests/batch/many-0624.txt", + "object-tests/batch/many-0625.txt", + "object-tests/batch/many-0626.txt", + "object-tests/batch/many-0627.txt", + "object-tests/batch/many-0628.txt", + "object-tests/batch/many-0629.txt", + "object-tests/batch/many-0630.txt", + "object-tests/batch/many-0631.txt", + "object-tests/batch/many-0632.txt", + "object-tests/batch/many-0633.txt", + "object-tests/batch/many-0634.txt", + "object-tests/batch/many-0635.txt", + "object-tests/batch/many-0636.txt", + "object-tests/batch/many-0637.txt", + "object-tests/batch/many-0638.txt", + "object-tests/batch/many-0639.txt", + "object-tests/batch/many-0640.txt", + "object-tests/batch/many-0641.txt", + "object-tests/batch/many-0642.txt", + "object-tests/batch/many-0643.txt", + "object-tests/batch/many-0644.txt", + "object-tests/batch/many-0645.txt", + "object-tests/batch/many-0646.txt", + "object-tests/batch/many-0647.txt", + "object-tests/batch/many-0648.txt", + "object-tests/batch/many-0649.txt", + "object-tests/batch/many-0650.txt", + "object-tests/batch/many-0651.txt", + "object-tests/batch/many-0652.txt", + "object-tests/batch/many-0653.txt", + "object-tests/batch/many-0654.txt", + "object-tests/batch/many-0655.txt", + "object-tests/batch/many-0656.txt", + "object-tests/batch/many-0657.txt", + "object-tests/batch/many-0658.txt", + "object-tests/batch/many-0659.txt", + "object-tests/batch/many-0660.txt", + "object-tests/batch/many-0661.txt", + "object-tests/batch/many-0662.txt", + "object-tests/batch/many-0663.txt", + "object-tests/batch/many-0664.txt", + "object-tests/batch/many-0665.txt", + "object-tests/batch/many-0666.txt", + "object-tests/batch/many-0667.txt", + "object-tests/batch/many-0668.txt", + "object-tests/batch/many-0669.txt", + "object-tests/batch/many-0670.txt", + "object-tests/batch/many-0671.txt", + "object-tests/batch/many-0672.txt", + "object-tests/batch/many-0673.txt", + "object-tests/batch/many-0674.txt", + "object-tests/batch/many-0675.txt", + "object-tests/batch/many-0676.txt", + "object-tests/batch/many-0677.txt", + "object-tests/batch/many-0678.txt", + "object-tests/batch/many-0679.txt", + "object-tests/batch/many-0680.txt", + "object-tests/batch/many-0681.txt", + "object-tests/batch/many-0682.txt", + "object-tests/batch/many-0683.txt", + "object-tests/batch/many-0684.txt", + "object-tests/batch/many-0685.txt", + "object-tests/batch/many-0686.txt", + "object-tests/batch/many-0687.txt", + "object-tests/batch/many-0688.txt", + "object-tests/batch/many-0689.txt", + "object-tests/batch/many-0690.txt", + "object-tests/batch/many-0691.txt", + "object-tests/batch/many-0692.txt", + "object-tests/batch/many-0693.txt", + "object-tests/batch/many-0694.txt", + "object-tests/batch/many-0695.txt", + "object-tests/batch/many-0696.txt", + "object-tests/batch/many-0697.txt", + "object-tests/batch/many-0698.txt", + "object-tests/batch/many-0699.txt", + "object-tests/batch/many-0700.txt", + "object-tests/batch/many-0701.txt", + "object-tests/batch/many-0702.txt", + "object-tests/batch/many-0703.txt", + "object-tests/batch/many-0704.txt", + "object-tests/batch/many-0705.txt", + "object-tests/batch/many-0706.txt", + "object-tests/batch/many-0707.txt", + "object-tests/batch/many-0708.txt", + "object-tests/batch/many-0709.txt", + "object-tests/batch/many-0710.txt", + "object-tests/batch/many-0711.txt", + "object-tests/batch/many-0712.txt", + "object-tests/batch/many-0713.txt", + "object-tests/batch/many-0714.txt", + "object-tests/batch/many-0715.txt", + "object-tests/batch/many-0716.txt", + "object-tests/batch/many-0717.txt", + "object-tests/batch/many-0718.txt", + "object-tests/batch/many-0719.txt", + "object-tests/batch/many-0720.txt", + "object-tests/batch/many-0721.txt", + "object-tests/batch/many-0722.txt", + "object-tests/batch/many-0723.txt", + "object-tests/batch/many-0724.txt", + "object-tests/batch/many-0725.txt", + "object-tests/batch/many-0726.txt", + "object-tests/batch/many-0727.txt", + "object-tests/batch/many-0728.txt", + "object-tests/batch/many-0729.txt", + "object-tests/batch/many-0730.txt", + "object-tests/batch/many-0731.txt", + "object-tests/batch/many-0732.txt", + "object-tests/batch/many-0733.txt", + "object-tests/batch/many-0734.txt", + "object-tests/batch/many-0735.txt", + "object-tests/batch/many-0736.txt", + "object-tests/batch/many-0737.txt", + "object-tests/batch/many-0738.txt", + "object-tests/batch/many-0739.txt", + "object-tests/batch/many-0740.txt", + "object-tests/batch/many-0741.txt", + "object-tests/batch/many-0742.txt", + "object-tests/batch/many-0743.txt", + "object-tests/batch/many-0744.txt", + "object-tests/batch/many-0745.txt", + "object-tests/batch/many-0746.txt", + "object-tests/batch/many-0747.txt", + "object-tests/batch/many-0748.txt", + "object-tests/batch/many-0749.txt", + "object-tests/batch/many-0750.txt", + "object-tests/batch/many-0751.txt", + "object-tests/batch/many-0752.txt", + "object-tests/batch/many-0753.txt", + "object-tests/batch/many-0754.txt", + "object-tests/batch/many-0755.txt", + "object-tests/batch/many-0756.txt", + "object-tests/batch/many-0757.txt", + "object-tests/batch/many-0758.txt", + "object-tests/batch/many-0759.txt", + "object-tests/batch/many-0760.txt", + "object-tests/batch/many-0761.txt", + "object-tests/batch/many-0762.txt", + "object-tests/batch/many-0763.txt", + "object-tests/batch/many-0764.txt", + "object-tests/batch/many-0765.txt", + "object-tests/batch/many-0766.txt", + "object-tests/batch/many-0767.txt", + "object-tests/batch/many-0768.txt", + "object-tests/batch/many-0769.txt", + "object-tests/batch/many-0770.txt", + "object-tests/batch/many-0771.txt", + "object-tests/batch/many-0772.txt", + "object-tests/batch/many-0773.txt", + "object-tests/batch/many-0774.txt", + "object-tests/batch/many-0775.txt", + "object-tests/batch/many-0776.txt", + "object-tests/batch/many-0777.txt", + "object-tests/batch/many-0778.txt", + "object-tests/batch/many-0779.txt", + "object-tests/batch/many-0780.txt", + "object-tests/batch/many-0781.txt", + "object-tests/batch/many-0782.txt", + "object-tests/batch/many-0783.txt", + "object-tests/batch/many-0784.txt", + "object-tests/batch/many-0785.txt", + "object-tests/batch/many-0786.txt", + "object-tests/batch/many-0787.txt", + "object-tests/batch/many-0788.txt", + "object-tests/batch/many-0789.txt", + "object-tests/batch/many-0790.txt", + "object-tests/batch/many-0791.txt", + "object-tests/batch/many-0792.txt", + "object-tests/batch/many-0793.txt", + "object-tests/batch/many-0794.txt", + "object-tests/batch/many-0795.txt", + "object-tests/batch/many-0796.txt", + "object-tests/batch/many-0797.txt", + "object-tests/batch/many-0798.txt", + "object-tests/batch/many-0799.txt", + "object-tests/batch/many-0800.txt", + "object-tests/batch/many-0801.txt", + "object-tests/batch/many-0802.txt", + "object-tests/batch/many-0803.txt", + "object-tests/batch/many-0804.txt", + "object-tests/batch/many-0805.txt", + "object-tests/batch/many-0806.txt", + "object-tests/batch/many-0807.txt", + "object-tests/batch/many-0808.txt", + "object-tests/batch/many-0809.txt", + "object-tests/batch/many-0810.txt", + "object-tests/batch/many-0811.txt", + "object-tests/batch/many-0812.txt", + "object-tests/batch/many-0813.txt", + "object-tests/batch/many-0814.txt", + "object-tests/batch/many-0815.txt", + "object-tests/batch/many-0816.txt", + "object-tests/batch/many-0817.txt", + "object-tests/batch/many-0818.txt", + "object-tests/batch/many-0819.txt", + "object-tests/batch/many-0820.txt", + "object-tests/batch/many-0821.txt", + "object-tests/batch/many-0822.txt", + "object-tests/batch/many-0823.txt", + "object-tests/batch/many-0824.txt", + "object-tests/batch/many-0825.txt", + "object-tests/batch/many-0826.txt", + "object-tests/batch/many-0827.txt", + "object-tests/batch/many-0828.txt", + "object-tests/batch/many-0829.txt", + "object-tests/batch/many-0830.txt", + "object-tests/batch/many-0831.txt", + "object-tests/batch/many-0832.txt", + "object-tests/batch/many-0833.txt", + "object-tests/batch/many-0834.txt", + "object-tests/batch/many-0835.txt", + "object-tests/batch/many-0836.txt", + "object-tests/batch/many-0837.txt", + "object-tests/batch/many-0838.txt", + "object-tests/batch/many-0839.txt", + "object-tests/batch/many-0840.txt", + "object-tests/batch/many-0841.txt", + "object-tests/batch/many-0842.txt", + "object-tests/batch/many-0843.txt", + "object-tests/batch/many-0844.txt", + "object-tests/batch/many-0845.txt", + "object-tests/batch/many-0846.txt", + "object-tests/batch/many-0847.txt", + "object-tests/batch/many-0848.txt", + "object-tests/batch/many-0849.txt", + "object-tests/batch/many-0850.txt", + "object-tests/batch/many-0851.txt", + "object-tests/batch/many-0852.txt", + "object-tests/batch/many-0853.txt", + "object-tests/batch/many-0854.txt", + "object-tests/batch/many-0855.txt", + "object-tests/batch/many-0856.txt", + "object-tests/batch/many-0857.txt", + "object-tests/batch/many-0858.txt", + "object-tests/batch/many-0859.txt", + "object-tests/batch/many-0860.txt", + "object-tests/batch/many-0861.txt", + "object-tests/batch/many-0862.txt", + "object-tests/batch/many-0863.txt", + "object-tests/batch/many-0864.txt", + "object-tests/batch/many-0865.txt", + "object-tests/batch/many-0866.txt", + "object-tests/batch/many-0867.txt", + "object-tests/batch/many-0868.txt", + "object-tests/batch/many-0869.txt", + "object-tests/batch/many-0870.txt", + "object-tests/batch/many-0871.txt", + "object-tests/batch/many-0872.txt", + "object-tests/batch/many-0873.txt", + "object-tests/batch/many-0874.txt", + "object-tests/batch/many-0875.txt", + "object-tests/batch/many-0876.txt", + "object-tests/batch/many-0877.txt", + "object-tests/batch/many-0878.txt", + "object-tests/batch/many-0879.txt", + "object-tests/batch/many-0880.txt", + "object-tests/batch/many-0881.txt", + "object-tests/batch/many-0882.txt", + "object-tests/batch/many-0883.txt", + "object-tests/batch/many-0884.txt", + "object-tests/batch/many-0885.txt", + "object-tests/batch/many-0886.txt", + "object-tests/batch/many-0887.txt", + "object-tests/batch/many-0888.txt", + "object-tests/batch/many-0889.txt", + "object-tests/batch/many-0890.txt", + "object-tests/batch/many-0891.txt", + "object-tests/batch/many-0892.txt", + "object-tests/batch/many-0893.txt", + "object-tests/batch/many-0894.txt", + "object-tests/batch/many-0895.txt", + "object-tests/batch/many-0896.txt", + "object-tests/batch/many-0897.txt", + "object-tests/batch/many-0898.txt", + "object-tests/batch/many-0899.txt", + "object-tests/batch/many-0900.txt", + "object-tests/batch/many-0901.txt", + "object-tests/batch/many-0902.txt", + "object-tests/batch/many-0903.txt", + "object-tests/batch/many-0904.txt", + "object-tests/batch/many-0905.txt", + "object-tests/batch/many-0906.txt", + "object-tests/batch/many-0907.txt", + "object-tests/batch/many-0908.txt", + "object-tests/batch/many-0909.txt", + "object-tests/batch/many-0910.txt", + "object-tests/batch/many-0911.txt", + "object-tests/batch/many-0912.txt", + "object-tests/batch/many-0913.txt", + "object-tests/batch/many-0914.txt", + "object-tests/batch/many-0915.txt", + "object-tests/batch/many-0916.txt", + "object-tests/batch/many-0917.txt", + "object-tests/batch/many-0918.txt", + "object-tests/batch/many-0919.txt", + "object-tests/batch/many-0920.txt", + "object-tests/batch/many-0921.txt", + "object-tests/batch/many-0922.txt", + "object-tests/batch/many-0923.txt", + "object-tests/batch/many-0924.txt", + "object-tests/batch/many-0925.txt", + "object-tests/batch/many-0926.txt", + "object-tests/batch/many-0927.txt", + "object-tests/batch/many-0928.txt", + "object-tests/batch/many-0929.txt", + "object-tests/batch/many-0930.txt", + "object-tests/batch/many-0931.txt", + "object-tests/batch/many-0932.txt", + "object-tests/batch/many-0933.txt", + "object-tests/batch/many-0934.txt", + "object-tests/batch/many-0935.txt", + "object-tests/batch/many-0936.txt", + "object-tests/batch/many-0937.txt", + "object-tests/batch/many-0938.txt", + "object-tests/batch/many-0939.txt", + "object-tests/batch/many-0940.txt", + "object-tests/batch/many-0941.txt", + "object-tests/batch/many-0942.txt", + "object-tests/batch/many-0943.txt", + "object-tests/batch/many-0944.txt", + "object-tests/batch/many-0945.txt", + "object-tests/batch/many-0946.txt", + "object-tests/batch/many-0947.txt", + "object-tests/batch/many-0948.txt", + "object-tests/batch/many-0949.txt", + "object-tests/batch/many-0950.txt", + "object-tests/batch/many-0951.txt", + "object-tests/batch/many-0952.txt", + "object-tests/batch/many-0953.txt", + "object-tests/batch/many-0954.txt", + "object-tests/batch/many-0955.txt", + "object-tests/batch/many-0956.txt", + "object-tests/batch/many-0957.txt", + "object-tests/batch/many-0958.txt", + "object-tests/batch/many-0959.txt", + "object-tests/batch/many-0960.txt", + "object-tests/batch/many-0961.txt", + "object-tests/batch/many-0962.txt", + "object-tests/batch/many-0963.txt", + "object-tests/batch/many-0964.txt", + "object-tests/batch/many-0965.txt", + "object-tests/batch/many-0966.txt", + "object-tests/batch/many-0967.txt", + "object-tests/batch/many-0968.txt", + "object-tests/batch/many-0969.txt", + "object-tests/batch/many-0970.txt", + "object-tests/batch/many-0971.txt", + "object-tests/batch/many-0972.txt", + "object-tests/batch/many-0973.txt", + "object-tests/batch/many-0974.txt", + "object-tests/batch/many-0975.txt", + "object-tests/batch/many-0976.txt", + "object-tests/batch/many-0977.txt", + "object-tests/batch/many-0978.txt", + "object-tests/batch/many-0979.txt", + "object-tests/batch/many-0980.txt", + "object-tests/batch/many-0981.txt", + "object-tests/batch/many-0982.txt", + "object-tests/batch/many-0983.txt", + "object-tests/batch/many-0984.txt", + "object-tests/batch/many-0985.txt", + "object-tests/batch/many-0986.txt", + "object-tests/batch/many-0987.txt", + "object-tests/batch/many-0988.txt", + "object-tests/batch/many-0989.txt", + "object-tests/batch/many-0990.txt", + "object-tests/batch/many-0991.txt", + "object-tests/batch/many-0992.txt", + "object-tests/batch/many-0993.txt", + "object-tests/batch/many-0994.txt", + "object-tests/batch/many-0995.txt", + "object-tests/batch/many-0996.txt", + "object-tests/batch/many-0997.txt", + "object-tests/batch/many-0998.txt", + "object-tests/batch/many-0999.txt", + "object-tests/batch/many-1000.txt" + ], + "op": "delete_many" + }, + "exchanges": [ + { + "alternatives": [ { "request": [ { @@ -115865,7 +157159,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "GET" } }, { @@ -115873,23 +157167,15 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/multipart/small.bin" - } - }, - { - "at": "/body_text", - "optional": false, - "rule": { - "is": "xml", - "value": "\"fixture-132cb4a5de9d\"1\"fixture-2cab82eb728e\"2" + "value": "/" } }, { - "at": "/query/uploadId", + "at": "/query/session", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/09837ae2020c=" + "value": "" } }, { @@ -115901,22 +157187,122 @@ } }, { - "at": "/headers/x-amz-s3session-token", + "at": "/headers/authorization", "optional": false, "rule": { - "is": "equal", - "value": "fixture-session-token" + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } }, { - "at": "/headers/authorization", + "at": "/headers/x-amz-s3session-token", "optional": false, "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + "is": "absent" } } ], + "then": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "POST" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/" + } + }, + { + "at": "/body_text", + "optional": false, + "rule": { + "is": "xml", + "value": "object-tests/batch/many-0000.txtobject-tests/batch/many-0001.txtobject-tests/batch/many-0002.txtobject-tests/batch/many-0003.txtobject-tests/batch/many-0004.txtobject-tests/batch/many-0005.txtobject-tests/batch/many-0006.txtobject-tests/batch/many-0007.txtobject-tests/batch/many-0008.txtobject-tests/batch/many-0009.txtobject-tests/batch/many-0010.txtobject-tests/batch/many-0011.txtobject-tests/batch/many-0012.txtobject-tests/batch/many-0013.txtobject-tests/batch/many-0014.txtobject-tests/batch/many-0015.txtobject-tests/batch/many-0016.txtobject-tests/batch/many-0017.txtobject-tests/batch/many-0018.txtobject-tests/batch/many-0019.txtobject-tests/batch/many-0020.txtobject-tests/batch/many-0021.txtobject-tests/batch/many-0022.txtobject-tests/batch/many-0023.txtobject-tests/batch/many-0024.txtobject-tests/batch/many-0025.txtobject-tests/batch/many-0026.txtobject-tests/batch/many-0027.txtobject-tests/batch/many-0028.txtobject-tests/batch/many-0029.txtobject-tests/batch/many-0030.txtobject-tests/batch/many-0031.txtobject-tests/batch/many-0032.txtobject-tests/batch/many-0033.txtobject-tests/batch/many-0034.txtobject-tests/batch/many-0035.txtobject-tests/batch/many-0036.txtobject-tests/batch/many-0037.txtobject-tests/batch/many-0038.txtobject-tests/batch/many-0039.txtobject-tests/batch/many-0040.txtobject-tests/batch/many-0041.txtobject-tests/batch/many-0042.txtobject-tests/batch/many-0043.txtobject-tests/batch/many-0044.txtobject-tests/batch/many-0045.txtobject-tests/batch/many-0046.txtobject-tests/batch/many-0047.txtobject-tests/batch/many-0048.txtobject-tests/batch/many-0049.txtobject-tests/batch/many-0050.txtobject-tests/batch/many-0051.txtobject-tests/batch/many-0052.txtobject-tests/batch/many-0053.txtobject-tests/batch/many-0054.txtobject-tests/batch/many-0055.txtobject-tests/batch/many-0056.txtobject-tests/batch/many-0057.txtobject-tests/batch/many-0058.txtobject-tests/batch/many-0059.txtobject-tests/batch/many-0060.txtobject-tests/batch/many-0061.txtobject-tests/batch/many-0062.txtobject-tests/batch/many-0063.txtobject-tests/batch/many-0064.txtobject-tests/batch/many-0065.txtobject-tests/batch/many-0066.txtobject-tests/batch/many-0067.txtobject-tests/batch/many-0068.txtobject-tests/batch/many-0069.txtobject-tests/batch/many-0070.txtobject-tests/batch/many-0071.txtobject-tests/batch/many-0072.txtobject-tests/batch/many-0073.txtobject-tests/batch/many-0074.txtobject-tests/batch/many-0075.txtobject-tests/batch/many-0076.txtobject-tests/batch/many-0077.txtobject-tests/batch/many-0078.txtobject-tests/batch/many-0079.txtobject-tests/batch/many-0080.txtobject-tests/batch/many-0081.txtobject-tests/batch/many-0082.txtobject-tests/batch/many-0083.txtobject-tests/batch/many-0084.txtobject-tests/batch/many-0085.txtobject-tests/batch/many-0086.txtobject-tests/batch/many-0087.txtobject-tests/batch/many-0088.txtobject-tests/batch/many-0089.txtobject-tests/batch/many-0090.txtobject-tests/batch/many-0091.txtobject-tests/batch/many-0092.txtobject-tests/batch/many-0093.txtobject-tests/batch/many-0094.txtobject-tests/batch/many-0095.txtobject-tests/batch/many-0096.txtobject-tests/batch/many-0097.txtobject-tests/batch/many-0098.txtobject-tests/batch/many-0099.txtobject-tests/batch/many-0100.txtobject-tests/batch/many-0101.txtobject-tests/batch/many-0102.txtobject-tests/batch/many-0103.txtobject-tests/batch/many-0104.txtobject-tests/batch/many-0105.txtobject-tests/batch/many-0106.txtobject-tests/batch/many-0107.txtobject-tests/batch/many-0108.txtobject-tests/batch/many-0109.txtobject-tests/batch/many-0110.txtobject-tests/batch/many-0111.txtobject-tests/batch/many-0112.txtobject-tests/batch/many-0113.txtobject-tests/batch/many-0114.txtobject-tests/batch/many-0115.txtobject-tests/batch/many-0116.txtobject-tests/batch/many-0117.txtobject-tests/batch/many-0118.txtobject-tests/batch/many-0119.txtobject-tests/batch/many-0120.txtobject-tests/batch/many-0121.txtobject-tests/batch/many-0122.txtobject-tests/batch/many-0123.txtobject-tests/batch/many-0124.txtobject-tests/batch/many-0125.txtobject-tests/batch/many-0126.txtobject-tests/batch/many-0127.txtobject-tests/batch/many-0128.txtobject-tests/batch/many-0129.txtobject-tests/batch/many-0130.txtobject-tests/batch/many-0131.txtobject-tests/batch/many-0132.txtobject-tests/batch/many-0133.txtobject-tests/batch/many-0134.txtobject-tests/batch/many-0135.txtobject-tests/batch/many-0136.txtobject-tests/batch/many-0137.txtobject-tests/batch/many-0138.txtobject-tests/batch/many-0139.txtobject-tests/batch/many-0140.txtobject-tests/batch/many-0141.txtobject-tests/batch/many-0142.txtobject-tests/batch/many-0143.txtobject-tests/batch/many-0144.txtobject-tests/batch/many-0145.txtobject-tests/batch/many-0146.txtobject-tests/batch/many-0147.txtobject-tests/batch/many-0148.txtobject-tests/batch/many-0149.txtobject-tests/batch/many-0150.txtobject-tests/batch/many-0151.txtobject-tests/batch/many-0152.txtobject-tests/batch/many-0153.txtobject-tests/batch/many-0154.txtobject-tests/batch/many-0155.txtobject-tests/batch/many-0156.txtobject-tests/batch/many-0157.txtobject-tests/batch/many-0158.txtobject-tests/batch/many-0159.txtobject-tests/batch/many-0160.txtobject-tests/batch/many-0161.txtobject-tests/batch/many-0162.txtobject-tests/batch/many-0163.txtobject-tests/batch/many-0164.txtobject-tests/batch/many-0165.txtobject-tests/batch/many-0166.txtobject-tests/batch/many-0167.txtobject-tests/batch/many-0168.txtobject-tests/batch/many-0169.txtobject-tests/batch/many-0170.txtobject-tests/batch/many-0171.txtobject-tests/batch/many-0172.txtobject-tests/batch/many-0173.txtobject-tests/batch/many-0174.txtobject-tests/batch/many-0175.txtobject-tests/batch/many-0176.txtobject-tests/batch/many-0177.txtobject-tests/batch/many-0178.txtobject-tests/batch/many-0179.txtobject-tests/batch/many-0180.txtobject-tests/batch/many-0181.txtobject-tests/batch/many-0182.txtobject-tests/batch/many-0183.txtobject-tests/batch/many-0184.txtobject-tests/batch/many-0185.txtobject-tests/batch/many-0186.txtobject-tests/batch/many-0187.txtobject-tests/batch/many-0188.txtobject-tests/batch/many-0189.txtobject-tests/batch/many-0190.txtobject-tests/batch/many-0191.txtobject-tests/batch/many-0192.txtobject-tests/batch/many-0193.txtobject-tests/batch/many-0194.txtobject-tests/batch/many-0195.txtobject-tests/batch/many-0196.txtobject-tests/batch/many-0197.txtobject-tests/batch/many-0198.txtobject-tests/batch/many-0199.txtobject-tests/batch/many-0200.txtobject-tests/batch/many-0201.txtobject-tests/batch/many-0202.txtobject-tests/batch/many-0203.txtobject-tests/batch/many-0204.txtobject-tests/batch/many-0205.txtobject-tests/batch/many-0206.txtobject-tests/batch/many-0207.txtobject-tests/batch/many-0208.txtobject-tests/batch/many-0209.txtobject-tests/batch/many-0210.txtobject-tests/batch/many-0211.txtobject-tests/batch/many-0212.txtobject-tests/batch/many-0213.txtobject-tests/batch/many-0214.txtobject-tests/batch/many-0215.txtobject-tests/batch/many-0216.txtobject-tests/batch/many-0217.txtobject-tests/batch/many-0218.txtobject-tests/batch/many-0219.txtobject-tests/batch/many-0220.txtobject-tests/batch/many-0221.txtobject-tests/batch/many-0222.txtobject-tests/batch/many-0223.txtobject-tests/batch/many-0224.txtobject-tests/batch/many-0225.txtobject-tests/batch/many-0226.txtobject-tests/batch/many-0227.txtobject-tests/batch/many-0228.txtobject-tests/batch/many-0229.txtobject-tests/batch/many-0230.txtobject-tests/batch/many-0231.txtobject-tests/batch/many-0232.txtobject-tests/batch/many-0233.txtobject-tests/batch/many-0234.txtobject-tests/batch/many-0235.txtobject-tests/batch/many-0236.txtobject-tests/batch/many-0237.txtobject-tests/batch/many-0238.txtobject-tests/batch/many-0239.txtobject-tests/batch/many-0240.txtobject-tests/batch/many-0241.txtobject-tests/batch/many-0242.txtobject-tests/batch/many-0243.txtobject-tests/batch/many-0244.txtobject-tests/batch/many-0245.txtobject-tests/batch/many-0246.txtobject-tests/batch/many-0247.txtobject-tests/batch/many-0248.txtobject-tests/batch/many-0249.txtobject-tests/batch/many-0250.txtobject-tests/batch/many-0251.txtobject-tests/batch/many-0252.txtobject-tests/batch/many-0253.txtobject-tests/batch/many-0254.txtobject-tests/batch/many-0255.txtobject-tests/batch/many-0256.txtobject-tests/batch/many-0257.txtobject-tests/batch/many-0258.txtobject-tests/batch/many-0259.txtobject-tests/batch/many-0260.txtobject-tests/batch/many-0261.txtobject-tests/batch/many-0262.txtobject-tests/batch/many-0263.txtobject-tests/batch/many-0264.txtobject-tests/batch/many-0265.txtobject-tests/batch/many-0266.txtobject-tests/batch/many-0267.txtobject-tests/batch/many-0268.txtobject-tests/batch/many-0269.txtobject-tests/batch/many-0270.txtobject-tests/batch/many-0271.txtobject-tests/batch/many-0272.txtobject-tests/batch/many-0273.txtobject-tests/batch/many-0274.txtobject-tests/batch/many-0275.txtobject-tests/batch/many-0276.txtobject-tests/batch/many-0277.txtobject-tests/batch/many-0278.txtobject-tests/batch/many-0279.txtobject-tests/batch/many-0280.txtobject-tests/batch/many-0281.txtobject-tests/batch/many-0282.txtobject-tests/batch/many-0283.txtobject-tests/batch/many-0284.txtobject-tests/batch/many-0285.txtobject-tests/batch/many-0286.txtobject-tests/batch/many-0287.txtobject-tests/batch/many-0288.txtobject-tests/batch/many-0289.txtobject-tests/batch/many-0290.txtobject-tests/batch/many-0291.txtobject-tests/batch/many-0292.txtobject-tests/batch/many-0293.txtobject-tests/batch/many-0294.txtobject-tests/batch/many-0295.txtobject-tests/batch/many-0296.txtobject-tests/batch/many-0297.txtobject-tests/batch/many-0298.txtobject-tests/batch/many-0299.txtobject-tests/batch/many-0300.txtobject-tests/batch/many-0301.txtobject-tests/batch/many-0302.txtobject-tests/batch/many-0303.txtobject-tests/batch/many-0304.txtobject-tests/batch/many-0305.txtobject-tests/batch/many-0306.txtobject-tests/batch/many-0307.txtobject-tests/batch/many-0308.txtobject-tests/batch/many-0309.txtobject-tests/batch/many-0310.txtobject-tests/batch/many-0311.txtobject-tests/batch/many-0312.txtobject-tests/batch/many-0313.txtobject-tests/batch/many-0314.txtobject-tests/batch/many-0315.txtobject-tests/batch/many-0316.txtobject-tests/batch/many-0317.txtobject-tests/batch/many-0318.txtobject-tests/batch/many-0319.txtobject-tests/batch/many-0320.txtobject-tests/batch/many-0321.txtobject-tests/batch/many-0322.txtobject-tests/batch/many-0323.txtobject-tests/batch/many-0324.txtobject-tests/batch/many-0325.txtobject-tests/batch/many-0326.txtobject-tests/batch/many-0327.txtobject-tests/batch/many-0328.txtobject-tests/batch/many-0329.txtobject-tests/batch/many-0330.txtobject-tests/batch/many-0331.txtobject-tests/batch/many-0332.txtobject-tests/batch/many-0333.txtobject-tests/batch/many-0334.txtobject-tests/batch/many-0335.txtobject-tests/batch/many-0336.txtobject-tests/batch/many-0337.txtobject-tests/batch/many-0338.txtobject-tests/batch/many-0339.txtobject-tests/batch/many-0340.txtobject-tests/batch/many-0341.txtobject-tests/batch/many-0342.txtobject-tests/batch/many-0343.txtobject-tests/batch/many-0344.txtobject-tests/batch/many-0345.txtobject-tests/batch/many-0346.txtobject-tests/batch/many-0347.txtobject-tests/batch/many-0348.txtobject-tests/batch/many-0349.txtobject-tests/batch/many-0350.txtobject-tests/batch/many-0351.txtobject-tests/batch/many-0352.txtobject-tests/batch/many-0353.txtobject-tests/batch/many-0354.txtobject-tests/batch/many-0355.txtobject-tests/batch/many-0356.txtobject-tests/batch/many-0357.txtobject-tests/batch/many-0358.txtobject-tests/batch/many-0359.txtobject-tests/batch/many-0360.txtobject-tests/batch/many-0361.txtobject-tests/batch/many-0362.txtobject-tests/batch/many-0363.txtobject-tests/batch/many-0364.txtobject-tests/batch/many-0365.txtobject-tests/batch/many-0366.txtobject-tests/batch/many-0367.txtobject-tests/batch/many-0368.txtobject-tests/batch/many-0369.txtobject-tests/batch/many-0370.txtobject-tests/batch/many-0371.txtobject-tests/batch/many-0372.txtobject-tests/batch/many-0373.txtobject-tests/batch/many-0374.txtobject-tests/batch/many-0375.txtobject-tests/batch/many-0376.txtobject-tests/batch/many-0377.txtobject-tests/batch/many-0378.txtobject-tests/batch/many-0379.txtobject-tests/batch/many-0380.txtobject-tests/batch/many-0381.txtobject-tests/batch/many-0382.txtobject-tests/batch/many-0383.txtobject-tests/batch/many-0384.txtobject-tests/batch/many-0385.txtobject-tests/batch/many-0386.txtobject-tests/batch/many-0387.txtobject-tests/batch/many-0388.txtobject-tests/batch/many-0389.txtobject-tests/batch/many-0390.txtobject-tests/batch/many-0391.txtobject-tests/batch/many-0392.txtobject-tests/batch/many-0393.txtobject-tests/batch/many-0394.txtobject-tests/batch/many-0395.txtobject-tests/batch/many-0396.txtobject-tests/batch/many-0397.txtobject-tests/batch/many-0398.txtobject-tests/batch/many-0399.txtobject-tests/batch/many-0400.txtobject-tests/batch/many-0401.txtobject-tests/batch/many-0402.txtobject-tests/batch/many-0403.txtobject-tests/batch/many-0404.txtobject-tests/batch/many-0405.txtobject-tests/batch/many-0406.txtobject-tests/batch/many-0407.txtobject-tests/batch/many-0408.txtobject-tests/batch/many-0409.txtobject-tests/batch/many-0410.txtobject-tests/batch/many-0411.txtobject-tests/batch/many-0412.txtobject-tests/batch/many-0413.txtobject-tests/batch/many-0414.txtobject-tests/batch/many-0415.txtobject-tests/batch/many-0416.txtobject-tests/batch/many-0417.txtobject-tests/batch/many-0418.txtobject-tests/batch/many-0419.txtobject-tests/batch/many-0420.txtobject-tests/batch/many-0421.txtobject-tests/batch/many-0422.txtobject-tests/batch/many-0423.txtobject-tests/batch/many-0424.txtobject-tests/batch/many-0425.txtobject-tests/batch/many-0426.txtobject-tests/batch/many-0427.txtobject-tests/batch/many-0428.txtobject-tests/batch/many-0429.txtobject-tests/batch/many-0430.txtobject-tests/batch/many-0431.txtobject-tests/batch/many-0432.txtobject-tests/batch/many-0433.txtobject-tests/batch/many-0434.txtobject-tests/batch/many-0435.txtobject-tests/batch/many-0436.txtobject-tests/batch/many-0437.txtobject-tests/batch/many-0438.txtobject-tests/batch/many-0439.txtobject-tests/batch/many-0440.txtobject-tests/batch/many-0441.txtobject-tests/batch/many-0442.txtobject-tests/batch/many-0443.txtobject-tests/batch/many-0444.txtobject-tests/batch/many-0445.txtobject-tests/batch/many-0446.txtobject-tests/batch/many-0447.txtobject-tests/batch/many-0448.txtobject-tests/batch/many-0449.txtobject-tests/batch/many-0450.txtobject-tests/batch/many-0451.txtobject-tests/batch/many-0452.txtobject-tests/batch/many-0453.txtobject-tests/batch/many-0454.txtobject-tests/batch/many-0455.txtobject-tests/batch/many-0456.txtobject-tests/batch/many-0457.txtobject-tests/batch/many-0458.txtobject-tests/batch/many-0459.txtobject-tests/batch/many-0460.txtobject-tests/batch/many-0461.txtobject-tests/batch/many-0462.txtobject-tests/batch/many-0463.txtobject-tests/batch/many-0464.txtobject-tests/batch/many-0465.txtobject-tests/batch/many-0466.txtobject-tests/batch/many-0467.txtobject-tests/batch/many-0468.txtobject-tests/batch/many-0469.txtobject-tests/batch/many-0470.txtobject-tests/batch/many-0471.txtobject-tests/batch/many-0472.txtobject-tests/batch/many-0473.txtobject-tests/batch/many-0474.txtobject-tests/batch/many-0475.txtobject-tests/batch/many-0476.txtobject-tests/batch/many-0477.txtobject-tests/batch/many-0478.txtobject-tests/batch/many-0479.txtobject-tests/batch/many-0480.txtobject-tests/batch/many-0481.txtobject-tests/batch/many-0482.txtobject-tests/batch/many-0483.txtobject-tests/batch/many-0484.txtobject-tests/batch/many-0485.txtobject-tests/batch/many-0486.txtobject-tests/batch/many-0487.txtobject-tests/batch/many-0488.txtobject-tests/batch/many-0489.txtobject-tests/batch/many-0490.txtobject-tests/batch/many-0491.txtobject-tests/batch/many-0492.txtobject-tests/batch/many-0493.txtobject-tests/batch/many-0494.txtobject-tests/batch/many-0495.txtobject-tests/batch/many-0496.txtobject-tests/batch/many-0497.txtobject-tests/batch/many-0498.txtobject-tests/batch/many-0499.txtobject-tests/batch/many-0500.txtobject-tests/batch/many-0501.txtobject-tests/batch/many-0502.txtobject-tests/batch/many-0503.txtobject-tests/batch/many-0504.txtobject-tests/batch/many-0505.txtobject-tests/batch/many-0506.txtobject-tests/batch/many-0507.txtobject-tests/batch/many-0508.txtobject-tests/batch/many-0509.txtobject-tests/batch/many-0510.txtobject-tests/batch/many-0511.txtobject-tests/batch/many-0512.txtobject-tests/batch/many-0513.txtobject-tests/batch/many-0514.txtobject-tests/batch/many-0515.txtobject-tests/batch/many-0516.txtobject-tests/batch/many-0517.txtobject-tests/batch/many-0518.txtobject-tests/batch/many-0519.txtobject-tests/batch/many-0520.txtobject-tests/batch/many-0521.txtobject-tests/batch/many-0522.txtobject-tests/batch/many-0523.txtobject-tests/batch/many-0524.txtobject-tests/batch/many-0525.txtobject-tests/batch/many-0526.txtobject-tests/batch/many-0527.txtobject-tests/batch/many-0528.txtobject-tests/batch/many-0529.txtobject-tests/batch/many-0530.txtobject-tests/batch/many-0531.txtobject-tests/batch/many-0532.txtobject-tests/batch/many-0533.txtobject-tests/batch/many-0534.txtobject-tests/batch/many-0535.txtobject-tests/batch/many-0536.txtobject-tests/batch/many-0537.txtobject-tests/batch/many-0538.txtobject-tests/batch/many-0539.txtobject-tests/batch/many-0540.txtobject-tests/batch/many-0541.txtobject-tests/batch/many-0542.txtobject-tests/batch/many-0543.txtobject-tests/batch/many-0544.txtobject-tests/batch/many-0545.txtobject-tests/batch/many-0546.txtobject-tests/batch/many-0547.txtobject-tests/batch/many-0548.txtobject-tests/batch/many-0549.txtobject-tests/batch/many-0550.txtobject-tests/batch/many-0551.txtobject-tests/batch/many-0552.txtobject-tests/batch/many-0553.txtobject-tests/batch/many-0554.txtobject-tests/batch/many-0555.txtobject-tests/batch/many-0556.txtobject-tests/batch/many-0557.txtobject-tests/batch/many-0558.txtobject-tests/batch/many-0559.txtobject-tests/batch/many-0560.txtobject-tests/batch/many-0561.txtobject-tests/batch/many-0562.txtobject-tests/batch/many-0563.txtobject-tests/batch/many-0564.txtobject-tests/batch/many-0565.txtobject-tests/batch/many-0566.txtobject-tests/batch/many-0567.txtobject-tests/batch/many-0568.txtobject-tests/batch/many-0569.txtobject-tests/batch/many-0570.txtobject-tests/batch/many-0571.txtobject-tests/batch/many-0572.txtobject-tests/batch/many-0573.txtobject-tests/batch/many-0574.txtobject-tests/batch/many-0575.txtobject-tests/batch/many-0576.txtobject-tests/batch/many-0577.txtobject-tests/batch/many-0578.txtobject-tests/batch/many-0579.txtobject-tests/batch/many-0580.txtobject-tests/batch/many-0581.txtobject-tests/batch/many-0582.txtobject-tests/batch/many-0583.txtobject-tests/batch/many-0584.txtobject-tests/batch/many-0585.txtobject-tests/batch/many-0586.txtobject-tests/batch/many-0587.txtobject-tests/batch/many-0588.txtobject-tests/batch/many-0589.txtobject-tests/batch/many-0590.txtobject-tests/batch/many-0591.txtobject-tests/batch/many-0592.txtobject-tests/batch/many-0593.txtobject-tests/batch/many-0594.txtobject-tests/batch/many-0595.txtobject-tests/batch/many-0596.txtobject-tests/batch/many-0597.txtobject-tests/batch/many-0598.txtobject-tests/batch/many-0599.txtobject-tests/batch/many-0600.txtobject-tests/batch/many-0601.txtobject-tests/batch/many-0602.txtobject-tests/batch/many-0603.txtobject-tests/batch/many-0604.txtobject-tests/batch/many-0605.txtobject-tests/batch/many-0606.txtobject-tests/batch/many-0607.txtobject-tests/batch/many-0608.txtobject-tests/batch/many-0609.txtobject-tests/batch/many-0610.txtobject-tests/batch/many-0611.txtobject-tests/batch/many-0612.txtobject-tests/batch/many-0613.txtobject-tests/batch/many-0614.txtobject-tests/batch/many-0615.txtobject-tests/batch/many-0616.txtobject-tests/batch/many-0617.txtobject-tests/batch/many-0618.txtobject-tests/batch/many-0619.txtobject-tests/batch/many-0620.txtobject-tests/batch/many-0621.txtobject-tests/batch/many-0622.txtobject-tests/batch/many-0623.txtobject-tests/batch/many-0624.txtobject-tests/batch/many-0625.txtobject-tests/batch/many-0626.txtobject-tests/batch/many-0627.txtobject-tests/batch/many-0628.txtobject-tests/batch/many-0629.txtobject-tests/batch/many-0630.txtobject-tests/batch/many-0631.txtobject-tests/batch/many-0632.txtobject-tests/batch/many-0633.txtobject-tests/batch/many-0634.txtobject-tests/batch/many-0635.txtobject-tests/batch/many-0636.txtobject-tests/batch/many-0637.txtobject-tests/batch/many-0638.txtobject-tests/batch/many-0639.txtobject-tests/batch/many-0640.txtobject-tests/batch/many-0641.txtobject-tests/batch/many-0642.txtobject-tests/batch/many-0643.txtobject-tests/batch/many-0644.txtobject-tests/batch/many-0645.txtobject-tests/batch/many-0646.txtobject-tests/batch/many-0647.txtobject-tests/batch/many-0648.txtobject-tests/batch/many-0649.txtobject-tests/batch/many-0650.txtobject-tests/batch/many-0651.txtobject-tests/batch/many-0652.txtobject-tests/batch/many-0653.txtobject-tests/batch/many-0654.txtobject-tests/batch/many-0655.txtobject-tests/batch/many-0656.txtobject-tests/batch/many-0657.txtobject-tests/batch/many-0658.txtobject-tests/batch/many-0659.txtobject-tests/batch/many-0660.txtobject-tests/batch/many-0661.txtobject-tests/batch/many-0662.txtobject-tests/batch/many-0663.txtobject-tests/batch/many-0664.txtobject-tests/batch/many-0665.txtobject-tests/batch/many-0666.txtobject-tests/batch/many-0667.txtobject-tests/batch/many-0668.txtobject-tests/batch/many-0669.txtobject-tests/batch/many-0670.txtobject-tests/batch/many-0671.txtobject-tests/batch/many-0672.txtobject-tests/batch/many-0673.txtobject-tests/batch/many-0674.txtobject-tests/batch/many-0675.txtobject-tests/batch/many-0676.txtobject-tests/batch/many-0677.txtobject-tests/batch/many-0678.txtobject-tests/batch/many-0679.txtobject-tests/batch/many-0680.txtobject-tests/batch/many-0681.txtobject-tests/batch/many-0682.txtobject-tests/batch/many-0683.txtobject-tests/batch/many-0684.txtobject-tests/batch/many-0685.txtobject-tests/batch/many-0686.txtobject-tests/batch/many-0687.txtobject-tests/batch/many-0688.txtobject-tests/batch/many-0689.txtobject-tests/batch/many-0690.txtobject-tests/batch/many-0691.txtobject-tests/batch/many-0692.txtobject-tests/batch/many-0693.txtobject-tests/batch/many-0694.txtobject-tests/batch/many-0695.txtobject-tests/batch/many-0696.txtobject-tests/batch/many-0697.txtobject-tests/batch/many-0698.txtobject-tests/batch/many-0699.txtobject-tests/batch/many-0700.txtobject-tests/batch/many-0701.txtobject-tests/batch/many-0702.txtobject-tests/batch/many-0703.txtobject-tests/batch/many-0704.txtobject-tests/batch/many-0705.txtobject-tests/batch/many-0706.txtobject-tests/batch/many-0707.txtobject-tests/batch/many-0708.txtobject-tests/batch/many-0709.txtobject-tests/batch/many-0710.txtobject-tests/batch/many-0711.txtobject-tests/batch/many-0712.txtobject-tests/batch/many-0713.txtobject-tests/batch/many-0714.txtobject-tests/batch/many-0715.txtobject-tests/batch/many-0716.txtobject-tests/batch/many-0717.txtobject-tests/batch/many-0718.txtobject-tests/batch/many-0719.txtobject-tests/batch/many-0720.txtobject-tests/batch/many-0721.txtobject-tests/batch/many-0722.txtobject-tests/batch/many-0723.txtobject-tests/batch/many-0724.txtobject-tests/batch/many-0725.txtobject-tests/batch/many-0726.txtobject-tests/batch/many-0727.txtobject-tests/batch/many-0728.txtobject-tests/batch/many-0729.txtobject-tests/batch/many-0730.txtobject-tests/batch/many-0731.txtobject-tests/batch/many-0732.txtobject-tests/batch/many-0733.txtobject-tests/batch/many-0734.txtobject-tests/batch/many-0735.txtobject-tests/batch/many-0736.txtobject-tests/batch/many-0737.txtobject-tests/batch/many-0738.txtobject-tests/batch/many-0739.txtobject-tests/batch/many-0740.txtobject-tests/batch/many-0741.txtobject-tests/batch/many-0742.txtobject-tests/batch/many-0743.txtobject-tests/batch/many-0744.txtobject-tests/batch/many-0745.txtobject-tests/batch/many-0746.txtobject-tests/batch/many-0747.txtobject-tests/batch/many-0748.txtobject-tests/batch/many-0749.txtobject-tests/batch/many-0750.txtobject-tests/batch/many-0751.txtobject-tests/batch/many-0752.txtobject-tests/batch/many-0753.txtobject-tests/batch/many-0754.txtobject-tests/batch/many-0755.txtobject-tests/batch/many-0756.txtobject-tests/batch/many-0757.txtobject-tests/batch/many-0758.txtobject-tests/batch/many-0759.txtobject-tests/batch/many-0760.txtobject-tests/batch/many-0761.txtobject-tests/batch/many-0762.txtobject-tests/batch/many-0763.txtobject-tests/batch/many-0764.txtobject-tests/batch/many-0765.txtobject-tests/batch/many-0766.txtobject-tests/batch/many-0767.txtobject-tests/batch/many-0768.txtobject-tests/batch/many-0769.txtobject-tests/batch/many-0770.txtobject-tests/batch/many-0771.txtobject-tests/batch/many-0772.txtobject-tests/batch/many-0773.txtobject-tests/batch/many-0774.txtobject-tests/batch/many-0775.txtobject-tests/batch/many-0776.txtobject-tests/batch/many-0777.txtobject-tests/batch/many-0778.txtobject-tests/batch/many-0779.txtobject-tests/batch/many-0780.txtobject-tests/batch/many-0781.txtobject-tests/batch/many-0782.txtobject-tests/batch/many-0783.txtobject-tests/batch/many-0784.txtobject-tests/batch/many-0785.txtobject-tests/batch/many-0786.txtobject-tests/batch/many-0787.txtobject-tests/batch/many-0788.txtobject-tests/batch/many-0789.txtobject-tests/batch/many-0790.txtobject-tests/batch/many-0791.txtobject-tests/batch/many-0792.txtobject-tests/batch/many-0793.txtobject-tests/batch/many-0794.txtobject-tests/batch/many-0795.txtobject-tests/batch/many-0796.txtobject-tests/batch/many-0797.txtobject-tests/batch/many-0798.txtobject-tests/batch/many-0799.txtobject-tests/batch/many-0800.txtobject-tests/batch/many-0801.txtobject-tests/batch/many-0802.txtobject-tests/batch/many-0803.txtobject-tests/batch/many-0804.txtobject-tests/batch/many-0805.txtobject-tests/batch/many-0806.txtobject-tests/batch/many-0807.txtobject-tests/batch/many-0808.txtobject-tests/batch/many-0809.txtobject-tests/batch/many-0810.txtobject-tests/batch/many-0811.txtobject-tests/batch/many-0812.txtobject-tests/batch/many-0813.txtobject-tests/batch/many-0814.txtobject-tests/batch/many-0815.txtobject-tests/batch/many-0816.txtobject-tests/batch/many-0817.txtobject-tests/batch/many-0818.txtobject-tests/batch/many-0819.txtobject-tests/batch/many-0820.txtobject-tests/batch/many-0821.txtobject-tests/batch/many-0822.txtobject-tests/batch/many-0823.txtobject-tests/batch/many-0824.txtobject-tests/batch/many-0825.txtobject-tests/batch/many-0826.txtobject-tests/batch/many-0827.txtobject-tests/batch/many-0828.txtobject-tests/batch/many-0829.txtobject-tests/batch/many-0830.txtobject-tests/batch/many-0831.txtobject-tests/batch/many-0832.txtobject-tests/batch/many-0833.txtobject-tests/batch/many-0834.txtobject-tests/batch/many-0835.txtobject-tests/batch/many-0836.txtobject-tests/batch/many-0837.txtobject-tests/batch/many-0838.txtobject-tests/batch/many-0839.txtobject-tests/batch/many-0840.txtobject-tests/batch/many-0841.txtobject-tests/batch/many-0842.txtobject-tests/batch/many-0843.txtobject-tests/batch/many-0844.txtobject-tests/batch/many-0845.txtobject-tests/batch/many-0846.txtobject-tests/batch/many-0847.txtobject-tests/batch/many-0848.txtobject-tests/batch/many-0849.txtobject-tests/batch/many-0850.txtobject-tests/batch/many-0851.txtobject-tests/batch/many-0852.txtobject-tests/batch/many-0853.txtobject-tests/batch/many-0854.txtobject-tests/batch/many-0855.txtobject-tests/batch/many-0856.txtobject-tests/batch/many-0857.txtobject-tests/batch/many-0858.txtobject-tests/batch/many-0859.txtobject-tests/batch/many-0860.txtobject-tests/batch/many-0861.txtobject-tests/batch/many-0862.txtobject-tests/batch/many-0863.txtobject-tests/batch/many-0864.txtobject-tests/batch/many-0865.txtobject-tests/batch/many-0866.txtobject-tests/batch/many-0867.txtobject-tests/batch/many-0868.txtobject-tests/batch/many-0869.txtobject-tests/batch/many-0870.txtobject-tests/batch/many-0871.txtobject-tests/batch/many-0872.txtobject-tests/batch/many-0873.txtobject-tests/batch/many-0874.txtobject-tests/batch/many-0875.txtobject-tests/batch/many-0876.txtobject-tests/batch/many-0877.txtobject-tests/batch/many-0878.txtobject-tests/batch/many-0879.txtobject-tests/batch/many-0880.txtobject-tests/batch/many-0881.txtobject-tests/batch/many-0882.txtobject-tests/batch/many-0883.txtobject-tests/batch/many-0884.txtobject-tests/batch/many-0885.txtobject-tests/batch/many-0886.txtobject-tests/batch/many-0887.txtobject-tests/batch/many-0888.txtobject-tests/batch/many-0889.txtobject-tests/batch/many-0890.txtobject-tests/batch/many-0891.txtobject-tests/batch/many-0892.txtobject-tests/batch/many-0893.txtobject-tests/batch/many-0894.txtobject-tests/batch/many-0895.txtobject-tests/batch/many-0896.txtobject-tests/batch/many-0897.txtobject-tests/batch/many-0898.txtobject-tests/batch/many-0899.txtobject-tests/batch/many-0900.txtobject-tests/batch/many-0901.txtobject-tests/batch/many-0902.txtobject-tests/batch/many-0903.txtobject-tests/batch/many-0904.txtobject-tests/batch/many-0905.txtobject-tests/batch/many-0906.txtobject-tests/batch/many-0907.txtobject-tests/batch/many-0908.txtobject-tests/batch/many-0909.txtobject-tests/batch/many-0910.txtobject-tests/batch/many-0911.txtobject-tests/batch/many-0912.txtobject-tests/batch/many-0913.txtobject-tests/batch/many-0914.txtobject-tests/batch/many-0915.txtobject-tests/batch/many-0916.txtobject-tests/batch/many-0917.txtobject-tests/batch/many-0918.txtobject-tests/batch/many-0919.txtobject-tests/batch/many-0920.txtobject-tests/batch/many-0921.txtobject-tests/batch/many-0922.txtobject-tests/batch/many-0923.txtobject-tests/batch/many-0924.txtobject-tests/batch/many-0925.txtobject-tests/batch/many-0926.txtobject-tests/batch/many-0927.txtobject-tests/batch/many-0928.txtobject-tests/batch/many-0929.txtobject-tests/batch/many-0930.txtobject-tests/batch/many-0931.txtobject-tests/batch/many-0932.txtobject-tests/batch/many-0933.txtobject-tests/batch/many-0934.txtobject-tests/batch/many-0935.txtobject-tests/batch/many-0936.txtobject-tests/batch/many-0937.txtobject-tests/batch/many-0938.txtobject-tests/batch/many-0939.txtobject-tests/batch/many-0940.txtobject-tests/batch/many-0941.txtobject-tests/batch/many-0942.txtobject-tests/batch/many-0943.txtobject-tests/batch/many-0944.txtobject-tests/batch/many-0945.txtobject-tests/batch/many-0946.txtobject-tests/batch/many-0947.txtobject-tests/batch/many-0948.txtobject-tests/batch/many-0949.txtobject-tests/batch/many-0950.txtobject-tests/batch/many-0951.txtobject-tests/batch/many-0952.txtobject-tests/batch/many-0953.txtobject-tests/batch/many-0954.txtobject-tests/batch/many-0955.txtobject-tests/batch/many-0956.txtobject-tests/batch/many-0957.txtobject-tests/batch/many-0958.txtobject-tests/batch/many-0959.txtobject-tests/batch/many-0960.txtobject-tests/batch/many-0961.txtobject-tests/batch/many-0962.txtobject-tests/batch/many-0963.txtobject-tests/batch/many-0964.txtobject-tests/batch/many-0965.txtobject-tests/batch/many-0966.txtobject-tests/batch/many-0967.txtobject-tests/batch/many-0968.txtobject-tests/batch/many-0969.txtobject-tests/batch/many-0970.txtobject-tests/batch/many-0971.txtobject-tests/batch/many-0972.txtobject-tests/batch/many-0973.txtobject-tests/batch/many-0974.txtobject-tests/batch/many-0975.txtobject-tests/batch/many-0976.txtobject-tests/batch/many-0977.txtobject-tests/batch/many-0978.txtobject-tests/batch/many-0979.txtobject-tests/batch/many-0980.txtobject-tests/batch/many-0981.txtobject-tests/batch/many-0982.txtobject-tests/batch/many-0983.txtobject-tests/batch/many-0984.txtobject-tests/batch/many-0985.txtobject-tests/batch/many-0986.txtobject-tests/batch/many-0987.txtobject-tests/batch/many-0988.txtobject-tests/batch/many-0989.txtobject-tests/batch/many-0990.txtobject-tests/batch/many-0991.txtobject-tests/batch/many-0992.txtobject-tests/batch/many-0993.txtobject-tests/batch/many-0994.txtobject-tests/batch/many-0995.txtobject-tests/batch/many-0996.txtobject-tests/batch/many-0997.txtobject-tests/batch/many-0998.txtobject-tests/batch/many-0999.txtobject-tests/batch/many-1000.txt" + } + }, + { + "at": "/query/delete", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/x-amz-checksum-crc64nvme", + "optional": false, + "rule": { + "is": "matches", + "pattern": "[A-Za-z0-9+/]{11}=" + } + }, + { + "at": "/headers/host", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-session-token" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + } + }, + { + "at": "", + "optional": false, + "rule": { + "is": "body_checksum", + "header": "x-amz-checksum-crc64nvme", + "algorithm": "crc64nvme" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 400, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + } + }, + "body": { + "encoding": "utf8", + "data": "\nMalformedXMLFixture error" + }, + "framing": "chunked" + } + } + ] + } + ], "allow_headers": [ "content-type" ], @@ -115924,16 +157310,16 @@ "response": { "status": 200, "headers": { - "date": { - "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + "content-type": "application/xml" }, "body": { "encoding": "utf8", - "data": "EntityTooSmallFixture error" + "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" }, - "framing": "chunked" + "body_time": { + "text": "SESSION_EXPIRATION", + "offset_seconds": 300 + } } } ] @@ -115953,7 +157339,7 @@ "optional": false, "rule": { "is": "equal", - "value": 200 + "value": 400 } }, { @@ -115961,31 +157347,65 @@ "optional": false, "rule": { "is": "equal", - "value": "EntityTooSmall" + "value": "MalformedXML" } } ], - "refusal": null + "refusal": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "refused" + } + }, + { + "at": "/kind", + "optional": false, + "rule": { + "is": "matches", + "pattern": ".+" + } + }, + { + "at": "/parameter", + "optional": false, + "rule": { + "is": "equal", + "value": "keys" + } + }, + { + "at": "/status", + "optional": true, + "rule": { + "is": "equal", + "value": 400 + } + }, + { + "at": "/code", + "optional": true, + "rule": { + "is": "equal", + "value": "MalformedXML" + } + } + ] }, { - "id": "operations/s3-express/commit-precondition-failed", + "id": "operations/s3-express/delete-slow-down", "profile": "s3-express", "lane": "core", - "purpose": "commit precondition failed", + "purpose": "Report a 503 SlowDown answer as an error, after at most 5 retries", "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + "https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html" ], + "origin": "transient", "call": { - "if_match": "\"fixture-db71b2c0257c\"", - "key": "object-tests/multipart/guarded.bin", - "op": "s3.complete_multipart", - "parts": [ - { - "etag": "\"fixture-201c9ed6f636\"", - "number": 1 - } - ], - "upload_id": "fixture-upload+/c7be505aec65=" + "key": "object-tests/remove/present.txt", + "op": "delete" }, "exchanges": [ { @@ -115997,7 +157417,80 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/" + } + }, + { + "at": "/query/session", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/host", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "absent" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml" + }, + "body": { + "encoding": "utf8", + "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" + }, + "body_time": { + "text": "SESSION_EXPIRATION", + "offset_seconds": 300 + } + } + } + ] + }, + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "DELETE" } }, { @@ -116005,11 +157498,11 @@ "optional": false, "rule": { "is": "equal", - "value": "/" + "value": "/object-tests/remove/present.txt" } }, { - "at": "/query/session", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", @@ -116025,18 +157518,19 @@ } }, { - "at": "/headers/authorization", + "at": "/headers/x-amz-s3session-token", "optional": false, "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + "is": "equal", + "value": "fixture-session-token" } }, { - "at": "/headers/x-amz-s3session-token", + "at": "/headers/authorization", "optional": false, "rule": { - "is": "absent" + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } } ], @@ -116045,18 +157539,18 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 503, "headers": { - "content-type": "application/xml" + "content-type": "application/xml", + "date": { + "from": "now" + } }, "body": { "encoding": "utf8", - "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" + "data": "\nSlowDownPlease reduce your request rate.fixture" }, - "body_time": { - "text": "SESSION_EXPIRATION", - "offset_seconds": 300 - } + "framing": "chunked" } } ] @@ -116070,7 +157564,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "DELETE" } }, { @@ -116078,31 +157572,15 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/multipart/guarded.bin" - } - }, - { - "at": "/body_text", - "optional": false, - "rule": { - "is": "xml", - "value": "1\"fixture-201c9ed6f636\"" - } - }, - { - "at": "/headers/if-match", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-db71b2c0257c\"" + "value": "/object-tests/remove/present.txt" } }, { - "at": "/query/uploadId", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/c7be505aec65=" + "value": "" } }, { @@ -116135,20 +157613,25 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 503, "headers": { + "content-type": "application/xml", "date": { "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { "encoding": "utf8", - "data": "PreconditionFailedFixture error" + "data": "\nSlowDownPlease reduce your request rate.fixture" }, "framing": "chunked" } - }, + } + ], + "optional": true + }, + { + "alternatives": [ { "request": [ { @@ -116156,7 +157639,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "DELETE" } }, { @@ -116164,31 +157647,15 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/multipart/guarded.bin" - } - }, - { - "at": "/body_text", - "optional": false, - "rule": { - "is": "xml", - "value": "\"fixture-201c9ed6f636\"1" - } - }, - { - "at": "/headers/if-match", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-db71b2c0257c\"" + "value": "/object-tests/remove/present.txt" } }, { - "at": "/query/uploadId", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/c7be505aec65=" + "value": "" } }, { @@ -116221,71 +157688,23 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 503, "headers": { + "content-type": "application/xml", "date": { "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { "encoding": "utf8", - "data": "PreconditionFailedFixture error" + "data": "\nSlowDownPlease reduce your request rate.fixture" }, "framing": "chunked" } } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 200 - } + ], + "optional": true }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "equal", - "value": "PreconditionFailed" - } - } - ], - "refusal": null - }, - { - "id": "operations/s3-express/commit-single-small-part", - "profile": "s3-express", - "lane": "core", - "purpose": "commit single small part", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "key": "object-tests/multipart/single.bin", - "op": "s3.complete_multipart", - "parts": [ - { - "etag": "\"fixture-db1e44387ca0\"", - "number": 1 - } - ], - "upload_id": "fixture-upload+/b39780854a14=" - }, - "exchanges": [ { "alternatives": [ { @@ -116295,7 +157714,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "DELETE" } }, { @@ -116303,11 +157722,11 @@ "optional": false, "rule": { "is": "equal", - "value": "/" + "value": "/object-tests/remove/present.txt" } }, { - "at": "/query/session", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", @@ -116323,18 +157742,19 @@ } }, { - "at": "/headers/authorization", + "at": "/headers/x-amz-s3session-token", "optional": false, "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + "is": "equal", + "value": "fixture-session-token" } }, { - "at": "/headers/x-amz-s3session-token", + "at": "/headers/authorization", "optional": false, "rule": { - "is": "absent" + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } } ], @@ -116343,21 +157763,22 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 503, "headers": { - "content-type": "application/xml" + "content-type": "application/xml", + "date": { + "from": "now" + } }, "body": { "encoding": "utf8", - "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" + "data": "\nSlowDownPlease reduce your request rate.fixture" }, - "body_time": { - "text": "SESSION_EXPIRATION", - "offset_seconds": 300 - } + "framing": "chunked" } } - ] + ], + "optional": true }, { "alternatives": [ @@ -116368,7 +157789,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "DELETE" } }, { @@ -116376,23 +157797,15 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/multipart/single.bin" - } - }, - { - "at": "/body_text", - "optional": false, - "rule": { - "is": "xml", - "value": "1\"fixture-db1e44387ca0\"" + "value": "/object-tests/remove/present.txt" } }, { - "at": "/query/uploadId", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/b39780854a14=" + "value": "" } }, { @@ -116425,20 +157838,25 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 503, "headers": { + "content-type": "application/xml", "date": { "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { "encoding": "utf8", - "data": "https://fixture.invalid/fixture/object-tests/multipart/single.binfixtureobject-tests/multipart/single.bin\"fixture-0841fa5d9c5c\"rzsmsrcRLcM=FULL_OBJECT" + "data": "\nSlowDownPlease reduce your request rate.fixture" }, "framing": "chunked" } - }, + } + ], + "optional": true + }, + { + "alternatives": [ { "request": [ { @@ -116446,7 +157864,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "DELETE" } }, { @@ -116454,23 +157872,15 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/multipart/single.bin" - } - }, - { - "at": "/body_text", - "optional": false, - "rule": { - "is": "xml", - "value": "\"fixture-db1e44387ca0\"1" + "value": "/object-tests/remove/present.txt" } }, { - "at": "/query/uploadId", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/b39780854a14=" + "value": "" } }, { @@ -116503,21 +157913,22 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 503, "headers": { + "content-type": "application/xml", "date": { "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { "encoding": "utf8", - "data": "https://fixture.invalid/fixture/object-tests/multipart/single.binfixtureobject-tests/multipart/single.bin\"fixture-0841fa5d9c5c\"rzsmsrcRLcM=FULL_OBJECT" + "data": "\nSlowDownPlease reduce your request rate.fixture" }, "framing": "chunked" } } - ] + ], + "optional": true } ], "expect": [ @@ -116526,50 +157937,40 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "error" } }, { - "at": "/value/etag", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-0841fa5d9c5c\"" + "value": 503 } }, { - "at": "/value/version", - "optional": true, + "at": "/code", + "optional": false, "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "is": "equal", + "value": "SlowDown" } } ], "refusal": null }, { - "id": "operations/s3-express/commit-object-size-mismatch", + "id": "operations/s3-express/delete-if-match-current", "profile": "s3-express", "lane": "core", - "purpose": "Report S3's refusal of a completion whose parts do not add up to the object size stated in x-amz-mp-object-size", + "purpose": "delete if match current", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/multipart/commit-object-size-mismatch.bin", - "object_size": 4, - "op": "s3.complete_multipart", - "parts": [ - { - "etag": "\"fixture-db1e44387ca0\"", - "number": 1 - } - ], - "upload_id": "fixture-upload+/b39780854a14=" + "if_match": "\"fixture-137dbea0e0a1\"", + "key": "object-tests/remove/conditional.txt", + "op": "delete" }, "exchanges": [ { @@ -116654,7 +158055,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "DELETE" } }, { @@ -116662,109 +158063,23 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/multipart/commit-object-size-mismatch.bin" - } - }, - { - "at": "/body_text", - "optional": false, - "rule": { - "is": "xml", - "value": "1\"fixture-db1e44387ca0\"" - } - }, - { - "at": "/query/uploadId", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-upload+/b39780854a14=" - } - }, - { - "at": "/headers/host", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" - } - }, - { - "at": "/headers/x-amz-s3session-token", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-session-token" - } - }, - { - "at": "/headers/authorization", - "optional": false, - "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" - } - }, - { - "at": "/headers/x-amz-mp-object-size", - "optional": false, - "rule": { - "is": "equal", - "value": "4" - } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - } - }, - "body": { - "encoding": "utf8", - "data": "\nInvalidRequestThe provided x-amz-mp-object-size header value 4 does not match what was computed: 3fixturefixture" - }, - "framing": "chunked" - } - }, - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "POST" + "value": "/object-tests/remove/conditional.txt" } }, { - "at": "/path", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "/object-tests/multipart/commit-object-size-mismatch.bin" - } - }, - { - "at": "/body_text", - "optional": false, - "rule": { - "is": "xml", - "value": "\"fixture-db1e44387ca0\"1" + "value": "" } }, { - "at": "/query/uploadId", + "at": "/headers/if-match", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/b39780854a14=" + "value": "\"fixture-137dbea0e0a1\"" } }, { @@ -116790,14 +158105,6 @@ "is": "matches", "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } - }, - { - "at": "/headers/x-amz-mp-object-size", - "optional": false, - "rule": { - "is": "equal", - "value": "4" - } } ], "allow_headers": [ @@ -116805,18 +158112,17 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 204, "headers": { - "content-type": "application/xml", "date": { "from": "now" - } + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nInvalidRequestThe provided x-amz-mp-object-size header value 4 does not match what was computed: 3fixturefixture" - }, - "framing": "chunked" + "encoding": "base64", + "data": "" + } } } ] @@ -116828,47 +158134,23 @@ "optional": false, "rule": { "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 200 - } - }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "equal", - "value": "InvalidRequest" + "value": "ok" } } ], "refusal": null }, { - "id": "operations/s3-express/commit-object-size", + "id": "operations/s3-express/delete-missing", "profile": "s3-express", "lane": "core", - "purpose": "Send the object size the caller expects in x-amz-mp-object-size; a completion whose parts add up to it succeeds", + "purpose": "delete missing", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/multipart/commit-object-size.bin", - "object_size": 3, - "op": "s3.complete_multipart", - "parts": [ - { - "etag": "\"fixture-db1e44387ca0\"", - "number": 1 - } - ], - "upload_id": "fixture-upload+/b39780854a14=" + "key": "object-tests/remove/absent.txt", + "op": "delete" }, "exchanges": [ { @@ -116953,7 +158235,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "DELETE" } }, { @@ -116961,23 +158243,15 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/multipart/commit-object-size.bin" - } - }, - { - "at": "/body_text", - "optional": false, - "rule": { - "is": "xml", - "value": "1\"fixture-db1e44387ca0\"" + "value": "/object-tests/remove/absent.txt" } }, { - "at": "/query/uploadId", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/b39780854a14=" + "value": "" } }, { @@ -117003,14 +158277,6 @@ "is": "matches", "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } - }, - { - "at": "/headers/x-amz-mp-object-size", - "optional": false, - "rule": { - "is": "equal", - "value": "3" - } } ], "allow_headers": [ @@ -117018,7 +158284,7 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 204, "headers": { "date": { "from": "now" @@ -117026,96 +158292,9 @@ "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "https://fixture.invalid/fixture/object-tests/multipart/commit-object-size.binfixtureobject-tests/multipart/commit-object-size.bin\"fixture-0841fa5d9c5c\"rzsmsrcRLcM=FULL_OBJECT" - }, - "framing": "chunked" - } - }, - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "POST" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/object-tests/multipart/commit-object-size.bin" - } - }, - { - "at": "/body_text", - "optional": false, - "rule": { - "is": "xml", - "value": "\"fixture-db1e44387ca0\"1" - } - }, - { - "at": "/query/uploadId", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-upload+/b39780854a14=" - } - }, - { - "at": "/headers/host", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" - } - }, - { - "at": "/headers/x-amz-s3session-token", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-session-token" - } - }, - { - "at": "/headers/authorization", - "optional": false, - "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" - } - }, - { - "at": "/headers/x-amz-mp-object-size", - "optional": false, - "rule": { - "is": "equal", - "value": "3" - } + "encoding": "base64", + "data": "" } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "date": { - "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" - }, - "body": { - "encoding": "utf8", - "data": "https://fixture.invalid/fixture/object-tests/multipart/commit-object-size.binfixtureobject-tests/multipart/commit-object-size.bin\"fixture-0841fa5d9c5c\"rzsmsrcRLcM=FULL_OBJECT" - }, - "framing": "chunked" } } ] @@ -117129,47 +158308,22 @@ "is": "equal", "value": "ok" } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-0841fa5d9c5c\"" - } - }, - { - "at": "/value/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } } ], "refusal": null }, { - "id": "operations/s3-express/commit-one-empty-part", + "id": "operations/s3-express/delete-precondition-failed", "profile": "s3-express", "lane": "core", - "purpose": "Complete an upload of one empty part, which writes an empty object; a client that refuses a completion of no parts writes an empty object this way", + "purpose": "delete precondition failed", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/multipart/empty.bin", - "op": "s3.complete_multipart", - "parts": [ - { - "etag": "\"fixture-db1e44387ca0\"", - "number": 1 - } - ], - "upload_id": "fixture-upload+/b39780854a14=" + "if_match": "\"fixture-db71b2c0257c\"", + "key": "object-tests/remove/conditional.txt", + "op": "delete" }, "exchanges": [ { @@ -117254,7 +158408,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "DELETE" } }, { @@ -117262,101 +158416,23 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/multipart/empty.bin" - } - }, - { - "at": "/body_text", - "optional": false, - "rule": { - "is": "xml", - "value": "1\"fixture-db1e44387ca0\"" - } - }, - { - "at": "/query/uploadId", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-upload+/b39780854a14=" - } - }, - { - "at": "/headers/host", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" - } - }, - { - "at": "/headers/x-amz-s3session-token", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-session-token" - } - }, - { - "at": "/headers/authorization", - "optional": false, - "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" - } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "date": { - "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" - }, - "body": { - "encoding": "utf8", - "data": "https://fixture.invalid/fixture/object-tests/multipart/empty.binfixtureobject-tests/multipart/empty.bin\"fixture-0841fa5d9c5c\"rzsmsrcRLcM=FULL_OBJECT" - }, - "framing": "chunked" - } - }, - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "POST" + "value": "/object-tests/remove/conditional.txt" } }, { - "at": "/path", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "/object-tests/multipart/empty.bin" - } - }, - { - "at": "/body_text", - "optional": false, - "rule": { - "is": "xml", - "value": "\"fixture-db1e44387ca0\"1" + "value": "" } }, { - "at": "/query/uploadId", + "at": "/headers/if-match", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/b39780854a14=" + "value": "\"fixture-db71b2c0257c\"" } }, { @@ -117389,16 +158465,16 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 412, "headers": { + "content-type": "application/xml", "date": { "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { "encoding": "utf8", - "data": "https://fixture.invalid/fixture/object-tests/multipart/empty.binfixtureobject-tests/multipart/empty.bin\"fixture-0841fa5d9c5c\"rzsmsrcRLcM=FULL_OBJECT" + "data": "\nPreconditionFailedFixture error" }, "framing": "chunked" } @@ -117412,49 +158488,39 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "error" } }, { - "at": "/value/etag", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-0841fa5d9c5c\"" + "value": 412 } }, { - "at": "/value/version", - "optional": true, + "at": "/code", + "optional": false, "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "is": "equal", + "value": "PreconditionFailed" } } ], "refusal": null }, { - "id": "operations/s3-express/commit-subset", + "id": "operations/s3-express/get-before-commit", "profile": "s3-express", "lane": "core", - "purpose": "commit subset", + "purpose": "get before commit", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/multipart/replaced.bin", - "op": "s3.complete_multipart", - "parts": [ - { - "etag": "\"fixture-09ac5e35935f\"", - "number": 1 - } - ], - "upload_id": "fixture-upload+/3cc68ed16e61=" + "key": "object-tests/multipart/object.bin", + "op": "get" }, "exchanges": [ { @@ -117539,7 +158605,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "GET" } }, { @@ -117547,23 +158613,15 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/multipart/replaced.bin" - } - }, - { - "at": "/body_text", - "optional": false, - "rule": { - "is": "xml", - "value": "1\"fixture-09ac5e35935f\"" + "value": "/object-tests/multipart/object.bin" } }, { - "at": "/query/uploadId", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/3cc68ed16e61=" + "value": "" } }, { @@ -117596,16 +158654,16 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 404, "headers": { + "content-type": "application/xml", "date": { "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { "encoding": "utf8", - "data": "https://fixture.invalid/fixture/object-tests/multipart/replaced.binfixtureobject-tests/multipart/replaced.bin\"fixture-eef5a071f9f6\"DZyVHeSVZ7c=FULL_OBJECT" + "data": "\nNoSuchKeyFixture error" }, "framing": "chunked" } @@ -117617,7 +158675,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "GET" } }, { @@ -117625,23 +158683,23 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/multipart/replaced.bin" + "value": "/object-tests/multipart/object.bin" } }, { - "at": "/body_text", + "at": "/body_base64", "optional": false, "rule": { - "is": "xml", - "value": "\"fixture-09ac5e35935f\"1" + "is": "equal", + "value": "" } }, { - "at": "/query/uploadId", + "at": "/headers/range", "optional": false, "rule": { - "is": "equal", - "value": "fixture-upload+/3cc68ed16e61=" + "is": "matches", + "pattern": "bytes=0-[1-9][0-9]{2,}" } }, { @@ -117674,16 +158732,16 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 404, "headers": { + "content-type": "application/xml", "date": { "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { "encoding": "utf8", - "data": "https://fixture.invalid/fixture/object-tests/multipart/replaced.binfixtureobject-tests/multipart/replaced.bin\"fixture-eef5a071f9f6\"DZyVHeSVZ7c=FULL_OBJECT" + "data": "\nNoSuchKeyFixture error" }, "framing": "chunked" } @@ -117697,53 +158755,42 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "error" } }, { - "at": "/value/etag", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-eef5a071f9f6\"" + "value": 404 } }, { - "at": "/value/version", - "optional": true, + "at": "/code", + "optional": false, "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "is": "equal", + "value": "NoSuchKey" } } ], "refusal": null }, { - "id": "operations/s3-express/commit-unstaged-part", + "id": "operations/s3-express/get-committed-tail", "profile": "s3-express", "lane": "core", - "purpose": "commit unstaged part", + "purpose": "get committed tail", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { "key": "object-tests/multipart/object.bin", - "op": "s3.complete_multipart", - "parts": [ - { - "etag": "\"fixture-9aff617fcdf8\"", - "number": 1 - }, - { - "etag": "\"fixture-db71b2c0257c\"", - "number": 3 - } - ], - "upload_id": "fixture-upload+/c60fb1e2e00d=" + "op": "get", + "range": { + "suffix": 10 + } }, "exchanges": [ { @@ -117828,7 +158875,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "GET" } }, { @@ -117840,19 +158887,19 @@ } }, { - "at": "/body_text", + "at": "/body_base64", "optional": false, "rule": { - "is": "xml", - "value": "1\"fixture-9aff617fcdf8\"3\"fixture-db71b2c0257c\"" + "is": "equal", + "value": "" } }, { - "at": "/query/uploadId", + "at": "/headers/range", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/c60fb1e2e00d=" + "value": "bytes=-10" } }, { @@ -117885,30 +158932,24 @@ ], "allow_query": [], "response": { - "status": 400, + "status": 206, "headers": { - "content-type": "application/xml", + "content-range": "bytes 5242876-5242885/5242886", + "content-type": "binary/octet-stream", "date": { "from": "now" - } + }, + "etag": "\"fixture-ec4f3b9bcac2\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nInvalidPartOrderFixture error" - }, - "framing": "chunked" + "encoding": "base64", + "data": "Y2RlZnNlY29uZA==" + } } }, { "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "POST" - } - }, { "at": "/path", "optional": false, @@ -117918,19 +158959,19 @@ } }, { - "at": "/body_text", + "at": "/body_base64", "optional": false, "rule": { - "is": "xml", - "value": "\"fixture-9aff617fcdf8\"1\"fixture-db71b2c0257c\"3" + "is": "equal", + "value": "" } }, { - "at": "/query/uploadId", + "at": "/method", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/c60fb1e2e00d=" + "value": "HEAD" } }, { @@ -117956,6 +158997,108 @@ "is": "matches", "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } + }, + { + "at": "/headers/range", + "optional": false, + "rule": { + "is": "equal", + "value": "bytes=-10" + } + } + ], + "then": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/object-tests/multipart/object.bin" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/range", + "optional": false, + "rule": { + "is": "equal", + "value": "bytes=5242876-5242885" + } + }, + { + "at": "/headers/if-match", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-ec4f3b9bcac2\"" + } + }, + { + "at": "/headers/host", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-session-token" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 206, + "headers": { + "content-range": "bytes 5242876-5242885/5242886", + "content-type": "binary/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-ec4f3b9bcac2\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "base64", + "data": "Y2RlZnNlY29uZA==" + } + } + } + ] } ], "allow_headers": [ @@ -117963,18 +159106,20 @@ ], "allow_query": [], "response": { - "status": 400, + "status": 206, "headers": { - "content-type": "application/xml", + "content-length": "10", + "content-range": "bytes 5242876-5242885/5242886", + "content-type": "binary/octet-stream", "date": { "from": "now" - } + }, + "etag": "\"fixture-ec4f3b9bcac2\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nInvalidPartOrderFixture error" - }, - "framing": "chunked" + "encoding": "empty" + } } } ] @@ -117986,50 +159131,66 @@ "optional": false, "rule": { "is": "equal", - "value": "error" + "value": "ok" } }, { - "at": "/status", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": 400 + "value": "\"fixture-ec4f3b9bcac2\"" } }, { - "at": "/code", + "at": "/value/size", "optional": false, "rule": { "is": "equal", - "value": "InvalidPartOrder" + "value": 10 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "binary/octet-stream" + } + }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "Y2RlZnNlY29uZA==" } } ], "refusal": null }, { - "id": "operations/s3-express/commit-wrong-etag", + "id": "operations/s3-express/get-empty", "profile": "s3-express", "lane": "core", - "purpose": "commit wrong etag", + "purpose": "get empty", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/multipart/object.bin", - "op": "s3.complete_multipart", - "parts": [ - { - "etag": "\"fixture-db71b2c0257c\"", - "number": 1 - }, - { - "etag": "\"fixture-ec2738a0b15a\"", - "number": 2 - } - ], - "upload_id": "fixture-upload+/c60fb1e2e00d=" + "key": "object-tests/write/empty.bin", + "op": "get" }, "exchanges": [ { @@ -118114,7 +159275,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "GET" } }, { @@ -118122,23 +159283,15 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/multipart/object.bin" - } - }, - { - "at": "/body_text", - "optional": false, - "rule": { - "is": "xml", - "value": "1\"fixture-db71b2c0257c\"2\"fixture-ec2738a0b15a\"" + "value": "/object-tests/write/empty.bin" } }, { - "at": "/query/uploadId", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/c60fb1e2e00d=" + "value": "" } }, { @@ -118173,16 +159326,17 @@ "response": { "status": 200, "headers": { + "content-type": "binary/octet-stream", "date": { "from": "now" }, + "etag": "\"fixture-de1997e62b9b\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "InvalidPartFixture error" - }, - "framing": "chunked" + "encoding": "base64", + "data": "" + } } }, { @@ -118192,7 +159346,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "GET" } }, { @@ -118200,23 +159354,23 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/multipart/object.bin" + "value": "/object-tests/write/empty.bin" } }, { - "at": "/body_text", + "at": "/body_base64", "optional": false, "rule": { - "is": "xml", - "value": "\"fixture-db71b2c0257c\"1\"fixture-ec2738a0b15a\"2" + "is": "equal", + "value": "" } }, { - "at": "/query/uploadId", + "at": "/headers/range", "optional": false, "rule": { - "is": "equal", - "value": "fixture-upload+/c60fb1e2e00d=" + "is": "matches", + "pattern": "bytes=0-[1-9][0-9]{2,}" } }, { @@ -118244,21 +159398,109 @@ } } ], + "then": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/object-tests/write/empty.bin" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/host", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-session-token" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + } + }, + { + "at": "/query/partNumber", + "optional": false, + "rule": { + "is": "equal", + "value": "1" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "binary/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-de1997e62b9b\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "base64", + "data": "" + } + } + } + ] + } + ], "allow_headers": [ "content-type" ], "allow_query": [], "response": { - "status": 200, + "status": 416, "headers": { + "content-range": "bytes */0", + "content-type": "application/xml", "date": { "from": "now" }, + "etag": "\"fixture-de1997e62b9b\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "utf8", - "data": "InvalidPartFixture error" + "data": "\nInvalidRangeEmpty object0" }, "framing": "chunked" } @@ -118272,50 +159514,70 @@ "optional": false, "rule": { "is": "equal", - "value": "error" + "value": "ok" } }, { - "at": "/status", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": 200 + "value": "\"fixture-de1997e62b9b\"" } }, { - "at": "/code", + "at": "/value/size", "optional": false, "rule": { "is": "equal", - "value": "InvalidPart" + "value": 0 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "binary/octet-stream" + } + }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" } } ], "refusal": null }, { - "id": "operations/s3-express/commit", + "id": "operations/s3-express/get-range-of-empty-object", "profile": "s3-express", "lane": "core", - "purpose": "commit", + "purpose": "Report a range read of an empty object as 416 InvalidRange: no range of it can be satisfied, not even its first byte", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/multipart/object.bin", - "op": "s3.complete_multipart", - "parts": [ - { - "etag": "\"fixture-9aff617fcdf8\"", - "number": 1 - }, - { - "etag": "\"fixture-ec2738a0b15a\"", - "number": 2 - } - ], - "upload_id": "fixture-upload+/c60fb1e2e00d=" + "key": "object-tests/write/empty.bin", + "op": "get", + "range": { + "end": 1, + "start": 0 + } }, "exchanges": [ { @@ -118400,7 +159662,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "GET" } }, { @@ -118408,23 +159670,15 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/multipart/object.bin" - } - }, - { - "at": "/body_text", - "optional": false, - "rule": { - "is": "xml", - "value": "1\"fixture-9aff617fcdf8\"2\"fixture-ec2738a0b15a\"" + "value": "/object-tests/write/empty.bin" } }, { - "at": "/query/uploadId", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/c60fb1e2e00d=" + "value": "" } }, { @@ -118450,83 +159704,13 @@ "is": "matches", "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "date": { - "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, - "body": { - "encoding": "utf8", - "data": "https://fixture.invalid/fixture/object-tests/multipart/object.binfixtureobject-tests/multipart/object.bin\"fixture-ec4f3b9bcac2\"E0gM19kR9Fk=FULL_OBJECT" - }, - "framing": "chunked" - } - }, - { - "request": [ { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "POST" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/object-tests/multipart/object.bin" - } - }, - { - "at": "/body_text", - "optional": false, - "rule": { - "is": "xml", - "value": "\"fixture-9aff617fcdf8\"1\"fixture-ec2738a0b15a\"2" - } - }, - { - "at": "/query/uploadId", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-upload+/c60fb1e2e00d=" - } - }, - { - "at": "/headers/host", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" - } - }, - { - "at": "/headers/x-amz-s3session-token", + "at": "/headers/range", "optional": false, "rule": { "is": "equal", - "value": "fixture-session-token" - } - }, - { - "at": "/headers/authorization", - "optional": false, - "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + "value": "bytes=0-0" } } ], @@ -118535,16 +159719,17 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 416, "headers": { + "content-range": "bytes */0", + "content-type": "application/xml", "date": { "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { "encoding": "utf8", - "data": "https://fixture.invalid/fixture/object-tests/multipart/object.binfixtureobject-tests/multipart/object.bin\"fixture-ec4f3b9bcac2\"E0gM19kR9Fk=FULL_OBJECT" + "data": "\nInvalidRangeFixture error" }, "framing": "chunked" } @@ -118558,53 +159743,40 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "error" } }, { - "at": "/value/etag", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-ec4f3b9bcac2\"" + "value": 416 } }, { - "at": "/value/version", - "optional": true, + "at": "/code", + "optional": false, "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "is": "equal", + "value": "InvalidRange" } } ], "refusal": null }, { - "id": "operations/s3-express/commit-key-question", + "id": "operations/s3-express/get-if-match-current", "profile": "s3-express", "lane": "core", - "purpose": "commit, with the key \"question?mark.txt\"", + "purpose": "get if match current", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/keys/question?mark.txt", - "op": "s3.complete_multipart", - "parts": [ - { - "etag": "\"fixture-9aff617fcdf8\"", - "number": 1 - }, - { - "etag": "\"fixture-ec2738a0b15a\"", - "number": 2 - } - ], - "upload_id": "fixture-upload+/c60fb1e2e00d=" + "if_match": "\"fixture-672b31e65569\"", + "key": "object-tests/read/object.txt", + "op": "get" }, "exchanges": [ { @@ -118689,7 +159861,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "GET" } }, { @@ -118697,23 +159869,23 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/keys/question?mark.txt" + "value": "/object-tests/read/object.txt" } }, { - "at": "/body_text", + "at": "/body_base64", "optional": false, "rule": { - "is": "xml", - "value": "1\"fixture-9aff617fcdf8\"2\"fixture-ec2738a0b15a\"" + "is": "equal", + "value": "" } }, { - "at": "/query/uploadId", + "at": "/headers/if-match", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/c60fb1e2e00d=" + "value": "\"fixture-672b31e65569\"" } }, { @@ -118748,16 +159920,17 @@ "response": { "status": 200, "headers": { + "content-type": "binary/octet-stream", "date": { "from": "now" }, + "etag": "\"fixture-672b31e65569\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "https://fixture.invalid/fixture/object-tests/keys/question?mark.txtfixtureobject-tests/keys/question?mark.txt\"fixture-ec4f3b9bcac2\"E0gM19kR9Fk=FULL_OBJECT" - }, - "framing": "chunked" + "encoding": "base64", + "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + } } }, { @@ -118767,7 +159940,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "GET" } }, { @@ -118775,23 +159948,31 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/keys/question?mark.txt" + "value": "/object-tests/read/object.txt" } }, { - "at": "/body_text", + "at": "/body_base64", "optional": false, "rule": { - "is": "xml", - "value": "\"fixture-9aff617fcdf8\"1\"fixture-ec2738a0b15a\"2" + "is": "equal", + "value": "" } }, { - "at": "/query/uploadId", + "at": "/headers/if-match", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/c60fb1e2e00d=" + "value": "\"fixture-672b31e65569\"" + } + }, + { + "at": "/headers/range", + "optional": false, + "rule": { + "is": "matches", + "pattern": "bytes=0-[1-9][0-9]{2,}" } }, { @@ -118824,18 +160005,20 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 206, "headers": { + "content-range": "bytes 0-29/30", + "content-type": "binary/octet-stream", "date": { "from": "now" }, + "etag": "\"fixture-672b31e65569\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "https://fixture.invalid/fixture/object-tests/keys/question?mark.txtfixtureobject-tests/keys/question?mark.txt\"fixture-ec4f3b9bcac2\"E0gM19kR9Fk=FULL_OBJECT" - }, - "framing": "chunked" + "encoding": "base64", + "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + } } } ] @@ -118855,7 +160038,23 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-ec4f3b9bcac2\"" + "value": "\"fixture-672b31e65569\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 30 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "binary/octet-stream" } }, { @@ -118868,32 +160067,30 @@ "" ] } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + } } ], "refusal": null }, { - "id": "operations/s3-express/commit-key-hash", + "id": "operations/s3-express/get-if-none-match-other", "profile": "s3-express", "lane": "core", - "purpose": "commit, with the key \"hash#tag.txt\"", + "purpose": "get if none match other", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/keys/hash#tag.txt", - "op": "s3.complete_multipart", - "parts": [ - { - "etag": "\"fixture-9aff617fcdf8\"", - "number": 1 - }, - { - "etag": "\"fixture-ec2738a0b15a\"", - "number": 2 - } - ], - "upload_id": "fixture-upload+/c60fb1e2e00d=" + "if_none_match": "\"fixture-db71b2c0257c\"", + "key": "object-tests/read/object.txt", + "op": "get" }, "exchanges": [ { @@ -118978,7 +160175,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "GET" } }, { @@ -118986,23 +160183,23 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/keys/hash#tag.txt" + "value": "/object-tests/read/object.txt" } }, { - "at": "/body_text", + "at": "/body_base64", "optional": false, "rule": { - "is": "xml", - "value": "1\"fixture-9aff617fcdf8\"2\"fixture-ec2738a0b15a\"" + "is": "equal", + "value": "" } }, { - "at": "/query/uploadId", + "at": "/headers/if-none-match", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/c60fb1e2e00d=" + "value": "\"fixture-db71b2c0257c\"" } }, { @@ -119037,16 +160234,17 @@ "response": { "status": 200, "headers": { + "content-type": "binary/octet-stream", "date": { "from": "now" }, + "etag": "\"fixture-672b31e65569\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "https://fixture.invalid/fixture/object-tests/keys/hash#tag.txtfixtureobject-tests/keys/hash#tag.txt\"fixture-ec4f3b9bcac2\"E0gM19kR9Fk=FULL_OBJECT" - }, - "framing": "chunked" + "encoding": "base64", + "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + } } }, { @@ -119056,7 +160254,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "GET" } }, { @@ -119064,23 +160262,31 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/keys/hash#tag.txt" + "value": "/object-tests/read/object.txt" } }, { - "at": "/body_text", + "at": "/body_base64", "optional": false, "rule": { - "is": "xml", - "value": "\"fixture-9aff617fcdf8\"1\"fixture-ec2738a0b15a\"2" + "is": "equal", + "value": "" } }, { - "at": "/query/uploadId", + "at": "/headers/if-none-match", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/c60fb1e2e00d=" + "value": "\"fixture-db71b2c0257c\"" + } + }, + { + "at": "/headers/range", + "optional": false, + "rule": { + "is": "matches", + "pattern": "bytes=0-[1-9][0-9]{2,}" } }, { @@ -119113,18 +160319,20 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 206, "headers": { + "content-range": "bytes 0-29/30", + "content-type": "binary/octet-stream", "date": { "from": "now" }, + "etag": "\"fixture-672b31e65569\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "https://fixture.invalid/fixture/object-tests/keys/hash#tag.txtfixtureobject-tests/keys/hash#tag.txt\"fixture-ec4f3b9bcac2\"E0gM19kR9Fk=FULL_OBJECT" - }, - "framing": "chunked" + "encoding": "base64", + "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + } } } ] @@ -119144,7 +160352,23 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-ec4f3b9bcac2\"" + "value": "\"fixture-672b31e65569\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 30 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "binary/octet-stream" } }, { @@ -119157,32 +160381,29 @@ "" ] } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + } } ], "refusal": null }, { - "id": "operations/s3-express/commit-key-percent", + "id": "operations/s3-express/get-key-with-hash", "profile": "s3-express", "lane": "core", - "purpose": "commit, with the key \"percent%20.txt\"", + "purpose": "get key with hash", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/keys/percent%20.txt", - "op": "s3.complete_multipart", - "parts": [ - { - "etag": "\"fixture-9aff617fcdf8\"", - "number": 1 - }, - { - "etag": "\"fixture-ec2738a0b15a\"", - "number": 2 - } - ], - "upload_id": "fixture-upload+/c60fb1e2e00d=" + "key": "object-tests/names/hash#tag.txt", + "op": "get" }, "exchanges": [ { @@ -119267,7 +160488,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "GET" } }, { @@ -119275,23 +160496,15 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/keys/percent%20.txt" - } - }, - { - "at": "/body_text", - "optional": false, - "rule": { - "is": "xml", - "value": "1\"fixture-9aff617fcdf8\"2\"fixture-ec2738a0b15a\"" + "value": "/object-tests/names/hash#tag.txt" } }, { - "at": "/query/uploadId", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/c60fb1e2e00d=" + "value": "" } }, { @@ -119326,16 +160539,17 @@ "response": { "status": 200, "headers": { + "content-type": "binary/octet-stream", "date": { "from": "now" }, + "etag": "\"fixture-84af5210cfd9\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "https://fixture.invalid/fixture/object-tests/keys/percent%20.txtfixtureobject-tests/keys/percent%20.txt\"fixture-ec4f3b9bcac2\"E0gM19kR9Fk=FULL_OBJECT" - }, - "framing": "chunked" + "encoding": "base64", + "data": "MQ==" + } } }, { @@ -119345,7 +160559,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "GET" } }, { @@ -119353,23 +160567,23 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/keys/percent%20.txt" + "value": "/object-tests/names/hash#tag.txt" } }, { - "at": "/body_text", + "at": "/body_base64", "optional": false, "rule": { - "is": "xml", - "value": "\"fixture-9aff617fcdf8\"1\"fixture-ec2738a0b15a\"2" + "is": "equal", + "value": "" } }, { - "at": "/query/uploadId", + "at": "/headers/range", "optional": false, "rule": { - "is": "equal", - "value": "fixture-upload+/c60fb1e2e00d=" + "is": "matches", + "pattern": "bytes=0-[1-9][0-9]{2,}" } }, { @@ -119402,18 +160616,20 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 206, "headers": { + "content-range": "bytes 0-0/1", + "content-type": "binary/octet-stream", "date": { "from": "now" }, + "etag": "\"fixture-84af5210cfd9\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "https://fixture.invalid/fixture/object-tests/keys/percent%20.txtfixtureobject-tests/keys/percent%20.txt\"fixture-ec4f3b9bcac2\"E0gM19kR9Fk=FULL_OBJECT" - }, - "framing": "chunked" + "encoding": "base64", + "data": "MQ==" + } } } ] @@ -119433,7 +160649,23 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-ec4f3b9bcac2\"" + "value": "\"fixture-84af5210cfd9\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "binary/octet-stream" } }, { @@ -119446,32 +160678,29 @@ "" ] } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MQ==" + } } ], "refusal": null }, { - "id": "operations/s3-express/commit-key-plus", + "id": "operations/s3-express/get-key-with-percent", "profile": "s3-express", "lane": "core", - "purpose": "commit, with the key \"plus+plus.txt\"", + "purpose": "get key with percent", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/keys/plus+plus.txt", - "op": "s3.complete_multipart", - "parts": [ - { - "etag": "\"fixture-9aff617fcdf8\"", - "number": 1 - }, - { - "etag": "\"fixture-ec2738a0b15a\"", - "number": 2 - } - ], - "upload_id": "fixture-upload+/c60fb1e2e00d=" + "key": "object-tests/names/percent%20.txt", + "op": "get" }, "exchanges": [ { @@ -119556,7 +160785,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "GET" } }, { @@ -119564,23 +160793,15 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/keys/plus+plus.txt" - } - }, - { - "at": "/body_text", - "optional": false, - "rule": { - "is": "xml", - "value": "1\"fixture-9aff617fcdf8\"2\"fixture-ec2738a0b15a\"" + "value": "/object-tests/names/percent%20.txt" } }, { - "at": "/query/uploadId", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/c60fb1e2e00d=" + "value": "" } }, { @@ -119615,16 +160836,17 @@ "response": { "status": 200, "headers": { + "content-type": "binary/octet-stream", "date": { "from": "now" }, + "etag": "\"fixture-a16607f00956\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "https://fixture.invalid/fixture/object-tests/keys/plus+plus.txtfixtureobject-tests/keys/plus+plus.txt\"fixture-ec4f3b9bcac2\"E0gM19kR9Fk=FULL_OBJECT" - }, - "framing": "chunked" + "encoding": "base64", + "data": "MQ==" + } } }, { @@ -119634,7 +160856,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "GET" } }, { @@ -119642,23 +160864,23 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/keys/plus+plus.txt" + "value": "/object-tests/names/percent%20.txt" } }, { - "at": "/body_text", + "at": "/body_base64", "optional": false, "rule": { - "is": "xml", - "value": "\"fixture-9aff617fcdf8\"1\"fixture-ec2738a0b15a\"2" + "is": "equal", + "value": "" } }, { - "at": "/query/uploadId", + "at": "/headers/range", "optional": false, "rule": { - "is": "equal", - "value": "fixture-upload+/c60fb1e2e00d=" + "is": "matches", + "pattern": "bytes=0-[1-9][0-9]{2,}" } }, { @@ -119691,18 +160913,20 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 206, "headers": { + "content-range": "bytes 0-0/1", + "content-type": "binary/octet-stream", "date": { "from": "now" }, + "etag": "\"fixture-a16607f00956\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "https://fixture.invalid/fixture/object-tests/keys/plus+plus.txtfixtureobject-tests/keys/plus+plus.txt\"fixture-ec4f3b9bcac2\"E0gM19kR9Fk=FULL_OBJECT" - }, - "framing": "chunked" + "encoding": "base64", + "data": "MQ==" + } } } ] @@ -119722,7 +160946,23 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-ec4f3b9bcac2\"" + "value": "\"fixture-a16607f00956\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "binary/octet-stream" } }, { @@ -119735,32 +160975,29 @@ "" ] } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MQ==" + } } ], "refusal": null }, { - "id": "operations/s3-express/commit-key-space", + "id": "operations/s3-express/get-key-with-plus", "profile": "s3-express", "lane": "core", - "purpose": "commit, with the key \"space name.txt\"", + "purpose": "get key with plus", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/keys/space name.txt", - "op": "s3.complete_multipart", - "parts": [ - { - "etag": "\"fixture-9aff617fcdf8\"", - "number": 1 - }, - { - "etag": "\"fixture-ec2738a0b15a\"", - "number": 2 - } - ], - "upload_id": "fixture-upload+/c60fb1e2e00d=" + "key": "object-tests/names/plus+plus.txt", + "op": "get" }, "exchanges": [ { @@ -119845,7 +161082,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "GET" } }, { @@ -119853,23 +161090,15 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/keys/space name.txt" - } - }, - { - "at": "/body_text", - "optional": false, - "rule": { - "is": "xml", - "value": "1\"fixture-9aff617fcdf8\"2\"fixture-ec2738a0b15a\"" + "value": "/object-tests/names/plus+plus.txt" } }, { - "at": "/query/uploadId", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/c60fb1e2e00d=" + "value": "" } }, { @@ -119904,16 +161133,17 @@ "response": { "status": 200, "headers": { + "content-type": "binary/octet-stream", "date": { "from": "now" }, + "etag": "\"fixture-1b1e630ad692\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "https://fixture.invalid/fixture/object-tests/keys/space name.txtfixtureobject-tests/keys/space name.txt\"fixture-ec4f3b9bcac2\"E0gM19kR9Fk=FULL_OBJECT" - }, - "framing": "chunked" + "encoding": "base64", + "data": "MQ==" + } } }, { @@ -119923,7 +161153,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "GET" } }, { @@ -119931,23 +161161,23 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/keys/space name.txt" + "value": "/object-tests/names/plus+plus.txt" } }, { - "at": "/body_text", + "at": "/body_base64", "optional": false, "rule": { - "is": "xml", - "value": "\"fixture-9aff617fcdf8\"1\"fixture-ec2738a0b15a\"2" + "is": "equal", + "value": "" } }, { - "at": "/query/uploadId", + "at": "/headers/range", "optional": false, "rule": { - "is": "equal", - "value": "fixture-upload+/c60fb1e2e00d=" + "is": "matches", + "pattern": "bytes=0-[1-9][0-9]{2,}" } }, { @@ -119980,18 +161210,20 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 206, "headers": { + "content-range": "bytes 0-0/1", + "content-type": "binary/octet-stream", "date": { "from": "now" }, + "etag": "\"fixture-1b1e630ad692\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "https://fixture.invalid/fixture/object-tests/keys/space name.txtfixtureobject-tests/keys/space name.txt\"fixture-ec4f3b9bcac2\"E0gM19kR9Fk=FULL_OBJECT" - }, - "framing": "chunked" + "encoding": "base64", + "data": "MQ==" + } } } ] @@ -120011,7 +161243,23 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-ec4f3b9bcac2\"" + "value": "\"fixture-1b1e630ad692\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "binary/octet-stream" } }, { @@ -120024,32 +161272,29 @@ "" ] } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MQ==" + } } ], "refusal": null }, { - "id": "operations/s3-express/commit-key-non-ascii", + "id": "operations/s3-express/get-key-with-space", "profile": "s3-express", "lane": "core", - "purpose": "commit, with the key \"café/雪.txt\"", + "purpose": "get key with space", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/keys/café/雪.txt", - "op": "s3.complete_multipart", - "parts": [ - { - "etag": "\"fixture-9aff617fcdf8\"", - "number": 1 - }, - { - "etag": "\"fixture-ec2738a0b15a\"", - "number": 2 - } - ], - "upload_id": "fixture-upload+/c60fb1e2e00d=" + "key": "object-tests/names/space name.txt", + "op": "get" }, "exchanges": [ { @@ -120134,7 +161379,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "GET" } }, { @@ -120142,23 +161387,15 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/keys/café/雪.txt" - } - }, - { - "at": "/body_text", - "optional": false, - "rule": { - "is": "xml", - "value": "1\"fixture-9aff617fcdf8\"2\"fixture-ec2738a0b15a\"" + "value": "/object-tests/names/space name.txt" } }, { - "at": "/query/uploadId", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/c60fb1e2e00d=" + "value": "" } }, { @@ -120193,16 +161430,17 @@ "response": { "status": 200, "headers": { + "content-type": "binary/octet-stream", "date": { "from": "now" }, + "etag": "\"fixture-d614f09fca44\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "https://fixture.invalid/fixture/object-tests/keys/café/雪.txtfixtureobject-tests/keys/café/雪.txt\"fixture-ec4f3b9bcac2\"E0gM19kR9Fk=FULL_OBJECT" - }, - "framing": "chunked" + "encoding": "base64", + "data": "MQ==" + } } }, { @@ -120212,7 +161450,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "GET" } }, { @@ -120220,23 +161458,23 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/keys/café/雪.txt" + "value": "/object-tests/names/space name.txt" } }, { - "at": "/body_text", + "at": "/body_base64", "optional": false, "rule": { - "is": "xml", - "value": "\"fixture-9aff617fcdf8\"1\"fixture-ec2738a0b15a\"2" + "is": "equal", + "value": "" } }, { - "at": "/query/uploadId", + "at": "/headers/range", "optional": false, "rule": { - "is": "equal", - "value": "fixture-upload+/c60fb1e2e00d=" + "is": "matches", + "pattern": "bytes=0-[1-9][0-9]{2,}" } }, { @@ -120269,18 +161507,20 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 206, "headers": { + "content-range": "bytes 0-0/1", + "content-type": "binary/octet-stream", "date": { "from": "now" }, + "etag": "\"fixture-d614f09fca44\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "https://fixture.invalid/fixture/object-tests/keys/café/雪.txtfixtureobject-tests/keys/café/雪.txt\"fixture-ec4f3b9bcac2\"E0gM19kR9Fk=FULL_OBJECT" - }, - "framing": "chunked" + "encoding": "base64", + "data": "MQ==" + } } } ] @@ -120300,7 +161540,23 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-ec4f3b9bcac2\"" + "value": "\"fixture-d614f09fca44\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "binary/octet-stream" } }, { @@ -120313,32 +161569,29 @@ "" ] } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MQ==" + } } ], "refusal": null }, { - "id": "operations/s3-express/commit-key-double-slash", + "id": "operations/s3-express/get-key-with-question", "profile": "s3-express", "lane": "core", - "purpose": "commit, with the key \"double//slash.txt\"", + "purpose": "get key question", "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html" ], "call": { - "key": "object-tests/keys/double//slash.txt", - "op": "s3.complete_multipart", - "parts": [ - { - "etag": "\"fixture-9aff617fcdf8\"", - "number": 1 - }, - { - "etag": "\"fixture-ec2738a0b15a\"", - "number": 2 - } - ], - "upload_id": "fixture-upload+/c60fb1e2e00d=" + "key": "a?b", + "op": "get" }, "exchanges": [ { @@ -120423,7 +161676,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "GET" } }, { @@ -120431,23 +161684,27 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/keys/double//slash.txt" + "value": "/a?b" } }, { - "at": "/body_text", + "at": "/body_base64", "optional": false, "rule": { - "is": "xml", - "value": "1\"fixture-9aff617fcdf8\"2\"fixture-ec2738a0b15a\"" + "is": "equal", + "value": "" } }, { - "at": "/query/uploadId", - "optional": false, + "at": "/headers/content-type", + "optional": true, "rule": { - "is": "equal", - "value": "fixture-upload+/c60fb1e2e00d=" + "is": "one_of", + "values": [ + "application/xml", + "application/octet-stream", + "binary/octet-stream" + ] } }, { @@ -120475,23 +161732,23 @@ } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { "status": 200, "headers": { + "content-type": "application/octet-stream", "date": { "from": "now" }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-amz-request-id": "fixture-request-id" }, "body": { - "encoding": "utf8", - "data": "https://fixture.invalid/fixture/object-tests/keys/double//slash.txtfixtureobject-tests/keys/double//slash.txt\"fixture-ec4f3b9bcac2\"E0gM19kR9Fk=FULL_OBJECT" - }, - "framing": "chunked" + "encoding": "base64", + "data": "aGVsbG8=" + } } }, { @@ -120501,7 +161758,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "GET" } }, { @@ -120509,23 +161766,35 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/keys/double//slash.txt" + "value": "/a?b" } }, { - "at": "/body_text", + "at": "/body_base64", "optional": false, "rule": { - "is": "xml", - "value": "\"fixture-9aff617fcdf8\"1\"fixture-ec2738a0b15a\"2" + "is": "equal", + "value": "" } }, { - "at": "/query/uploadId", + "at": "/headers/content-type", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + "application/xml", + "application/octet-stream", + "binary/octet-stream" + ] + } + }, + { + "at": "/headers/range", "optional": false, "rule": { - "is": "equal", - "value": "fixture-upload+/c60fb1e2e00d=" + "is": "matches", + "pattern": "bytes=0-[1-9][0-9]{2,}" } }, { @@ -120553,23 +161822,24 @@ } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 200, + "status": 206, "headers": { + "content-range": "bytes 0-4/5", + "content-type": "application/octet-stream", "date": { "from": "now" }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-amz-request-id": "fixture-request-id" }, "body": { - "encoding": "utf8", - "data": "https://fixture.invalid/fixture/object-tests/keys/double//slash.txtfixtureobject-tests/keys/double//slash.txt\"fixture-ec4f3b9bcac2\"E0gM19kR9Fk=FULL_OBJECT" - }, - "framing": "chunked" + "encoding": "base64", + "data": "aGVsbG8=" + } } } ] @@ -120585,49 +161855,27 @@ } }, { - "at": "/value/etag", + "at": "/value/body_base64", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-ec4f3b9bcac2\"" - } - }, - { - "at": "/value/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "value": "aGVsbG8=" } } ], "refusal": null }, { - "id": "operations/s3-express/commit-key-trailing-slash", + "id": "operations/s3-express/get-key-with-non-ascii", "profile": "s3-express", "lane": "core", - "purpose": "commit, with the key \"trailing-slash/\"", + "purpose": "get key unicode", "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html" ], "call": { - "key": "object-tests/keys/trailing-slash/", - "op": "s3.complete_multipart", - "parts": [ - { - "etag": "\"fixture-9aff617fcdf8\"", - "number": 1 - }, - { - "etag": "\"fixture-ec2738a0b15a\"", - "number": 2 - } - ], - "upload_id": "fixture-upload+/c60fb1e2e00d=" + "key": "café/雪", + "op": "get" }, "exchanges": [ { @@ -120712,7 +161960,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "GET" } }, { @@ -120720,23 +161968,27 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/keys/trailing-slash/" + "value": "/café/雪" } }, { - "at": "/body_text", + "at": "/body_base64", "optional": false, "rule": { - "is": "xml", - "value": "1\"fixture-9aff617fcdf8\"2\"fixture-ec2738a0b15a\"" + "is": "equal", + "value": "" } }, { - "at": "/query/uploadId", - "optional": false, + "at": "/headers/content-type", + "optional": true, "rule": { - "is": "equal", - "value": "fixture-upload+/c60fb1e2e00d=" + "is": "one_of", + "values": [ + "application/xml", + "application/octet-stream", + "binary/octet-stream" + ] } }, { @@ -120764,23 +162016,23 @@ } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { "status": 200, "headers": { + "content-type": "application/octet-stream", "date": { "from": "now" }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-amz-request-id": "fixture-request-id" }, "body": { - "encoding": "utf8", - "data": "https://fixture.invalid/fixture/object-tests/keys/trailing-slash/fixtureobject-tests/keys/trailing-slash/\"fixture-ec4f3b9bcac2\"E0gM19kR9Fk=FULL_OBJECT" - }, - "framing": "chunked" + "encoding": "base64", + "data": "aGVsbG8=" + } } }, { @@ -120790,7 +162042,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "GET" } }, { @@ -120798,23 +162050,35 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/keys/trailing-slash/" + "value": "/café/雪" } }, { - "at": "/body_text", + "at": "/body_base64", "optional": false, "rule": { - "is": "xml", - "value": "\"fixture-9aff617fcdf8\"1\"fixture-ec2738a0b15a\"2" + "is": "equal", + "value": "" } }, { - "at": "/query/uploadId", + "at": "/headers/content-type", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + "application/xml", + "application/octet-stream", + "binary/octet-stream" + ] + } + }, + { + "at": "/headers/range", "optional": false, "rule": { - "is": "equal", - "value": "fixture-upload+/c60fb1e2e00d=" + "is": "matches", + "pattern": "bytes=0-[1-9][0-9]{2,}" } }, { @@ -120842,23 +162106,24 @@ } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 200, + "status": 206, "headers": { + "content-range": "bytes 0-4/5", + "content-type": "application/octet-stream", "date": { "from": "now" }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-amz-request-id": "fixture-request-id" }, "body": { - "encoding": "utf8", - "data": "https://fixture.invalid/fixture/object-tests/keys/trailing-slash/fixtureobject-tests/keys/trailing-slash/\"fixture-ec4f3b9bcac2\"E0gM19kR9Fk=FULL_OBJECT" - }, - "framing": "chunked" + "encoding": "base64", + "data": "aGVsbG8=" + } } } ] @@ -120874,52 +162139,27 @@ } }, { - "at": "/value/etag", + "at": "/value/body_base64", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-ec4f3b9bcac2\"" - } - }, - { - "at": "/value/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "value": "aGVsbG8=" } } ], "refusal": null }, { - "id": "operations/s3-express/commit-200-internal-error", + "id": "operations/s3-express/get-key-with-separators", "profile": "s3-express", "lane": "core", - "purpose": "Report a completion answered 200 with an InternalError in the body as an error, never as a success. A client may retry up to 5 times first, and need not retry", + "purpose": "get key separators", "sources": [ - "https://repost.aws/knowledge-center/s3-resolve-200-internalerror", - "https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html", - "https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html" + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html" ], - "origin": "transient", "call": { - "key": "object-tests/multipart/object.bin", - "op": "s3.complete_multipart", - "parts": [ - { - "etag": "\"fixture-9aff617fcdf8\"", - "number": 1 - }, - { - "etag": "\"fixture-ec2738a0b15a\"", - "number": 2 - } - ], - "upload_id": "fixture-upload+/c60fb1e2e00d=" + "key": "a//b/", + "op": "get" }, "exchanges": [ { @@ -121004,85 +162244,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/object-tests/multipart/object.bin" - } - }, - { - "at": "/body_text", - "optional": false, - "rule": { - "is": "xml", - "value": "1\"fixture-9aff617fcdf8\"2\"fixture-ec2738a0b15a\"" - } - }, - { - "at": "/query/uploadId", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-upload+/c60fb1e2e00d=" - } - }, - { - "at": "/headers/host", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" - } - }, - { - "at": "/headers/x-amz-s3session-token", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-session-token" - } - }, - { - "at": "/headers/authorization", - "optional": false, - "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" - } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - } - }, - "body": { - "encoding": "utf8", - "data": "\nInternalErrorWe encountered an internal error. Please try again.fixturefixture" - }, - "framing": "chunked" - } - }, - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "POST" + "value": "GET" } }, { @@ -121090,23 +162252,27 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/multipart/object.bin" + "value": "/a//b/" } }, { - "at": "/body_text", + "at": "/body_base64", "optional": false, "rule": { - "is": "xml", - "value": "\"fixture-9aff617fcdf8\"1\"fixture-ec2738a0b15a\"2" + "is": "equal", + "value": "" } }, { - "at": "/query/uploadId", - "optional": false, + "at": "/headers/content-type", + "optional": true, "rule": { - "is": "equal", - "value": "fixture-upload+/c60fb1e2e00d=" + "is": "one_of", + "values": [ + "application/xml", + "application/octet-stream", + "binary/octet-stream" + ] } }, { @@ -121134,29 +162300,25 @@ } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { "status": 200, "headers": { - "content-type": "application/xml", + "content-type": "application/octet-stream", "date": { "from": "now" - } + }, + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-amz-request-id": "fixture-request-id" }, "body": { - "encoding": "utf8", - "data": "\nInternalErrorWe encountered an internal error. Please try again.fixturefixture" - }, - "framing": "chunked" + "encoding": "base64", + "data": "aGVsbG8=" + } } - } - ] - }, - { - "alternatives": [ + }, { "request": [ { @@ -121164,7 +162326,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "GET" } }, { @@ -121172,23 +162334,35 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/multipart/object.bin" + "value": "/a//b/" } }, { - "at": "/body_text", + "at": "/body_base64", "optional": false, "rule": { - "is": "xml", - "value": "1\"fixture-9aff617fcdf8\"2\"fixture-ec2738a0b15a\"" + "is": "equal", + "value": "" } }, { - "at": "/query/uploadId", + "at": "/headers/content-type", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + "application/xml", + "application/octet-stream", + "binary/octet-stream" + ] + } + }, + { + "at": "/headers/range", "optional": false, "rule": { - "is": "equal", - "value": "fixture-upload+/c60fb1e2e00d=" + "is": "matches", + "pattern": "bytes=0-[1-9][0-9]{2,}" } }, { @@ -121216,25 +162390,64 @@ } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 200, + "status": 206, "headers": { - "content-type": "application/xml", + "content-range": "bytes 0-4/5", + "content-type": "application/octet-stream", "date": { "from": "now" - } + }, + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-amz-request-id": "fixture-request-id" }, "body": { - "encoding": "utf8", - "data": "\nInternalErrorWe encountered an internal error. Please try again.fixturefixture" - }, - "framing": "chunked" + "encoding": "base64", + "data": "aGVsbG8=" + } } - }, + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "aGVsbG8=" + } + } + ], + "refusal": null + }, + { + "id": "operations/s3-express/get-metadata-empty-value", + "profile": "s3-express", + "lane": "core", + "purpose": "get metadata empty value", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "key": "object-tests/metadata/empty-value.txt", + "op": "get" + }, + "exchanges": [ + { + "alternatives": [ { "request": [ { @@ -121242,7 +162455,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "GET" } }, { @@ -121250,23 +162463,15 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/multipart/object.bin" - } - }, - { - "at": "/body_text", - "optional": false, - "rule": { - "is": "xml", - "value": "\"fixture-9aff617fcdf8\"1\"fixture-ec2738a0b15a\"2" + "value": "/" } }, { - "at": "/query/uploadId", + "at": "/query/session", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/c60fb1e2e00d=" + "value": "" } }, { @@ -121278,19 +162483,18 @@ } }, { - "at": "/headers/x-amz-s3session-token", + "at": "/headers/authorization", "optional": false, "rule": { - "is": "equal", - "value": "fixture-session-token" + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } }, { - "at": "/headers/authorization", + "at": "/headers/x-amz-s3session-token", "optional": false, "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + "is": "absent" } } ], @@ -121301,20 +162505,19 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - } + "content-type": "application/xml" }, "body": { "encoding": "utf8", - "data": "\nInternalErrorWe encountered an internal error. Please try again.fixturefixture" + "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" }, - "framing": "chunked" + "body_time": { + "text": "SESSION_EXPIRATION", + "offset_seconds": 300 + } } } - ], - "optional": true + ] }, { "alternatives": [ @@ -121325,7 +162528,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "GET" } }, { @@ -121333,23 +162536,15 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/multipart/object.bin" - } - }, - { - "at": "/body_text", - "optional": false, - "rule": { - "is": "xml", - "value": "1\"fixture-9aff617fcdf8\"2\"fixture-ec2738a0b15a\"" + "value": "/object-tests/metadata/empty-value.txt" } }, { - "at": "/query/uploadId", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/c60fb1e2e00d=" + "value": "" } }, { @@ -121384,16 +162579,18 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", + "content-type": "binary/octet-stream", "date": { "from": "now" - } + }, + "etag": "\"fixture-e6096f6fd1ec\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-amz-meta-empty": "" }, "body": { - "encoding": "utf8", - "data": "\nInternalErrorWe encountered an internal error. Please try again.fixturefixture" - }, - "framing": "chunked" + "encoding": "base64", + "data": "MQ==" + } } }, { @@ -121403,7 +162600,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "GET" } }, { @@ -121411,23 +162608,23 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/multipart/object.bin" + "value": "/object-tests/metadata/empty-value.txt" } }, { - "at": "/body_text", + "at": "/body_base64", "optional": false, "rule": { - "is": "xml", - "value": "\"fixture-9aff617fcdf8\"1\"fixture-ec2738a0b15a\"2" + "is": "equal", + "value": "" } }, { - "at": "/query/uploadId", + "at": "/headers/range", "optional": false, "rule": { - "is": "equal", - "value": "fixture-upload+/c60fb1e2e00d=" + "is": "matches", + "pattern": "bytes=0-[1-9][0-9]{2,}" } }, { @@ -121460,23 +162657,102 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 206, "headers": { - "content-type": "application/xml", + "content-range": "bytes 0-0/1", + "content-type": "binary/octet-stream", "date": { "from": "now" - } + }, + "etag": "\"fixture-e6096f6fd1ec\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-amz-meta-empty": "" }, "body": { - "encoding": "utf8", - "data": "\nInternalErrorWe encountered an internal error. Please try again.fixturefixture" - }, - "framing": "chunked" + "encoding": "base64", + "data": "MQ==" + } } } - ], - "optional": true + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-e6096f6fd1ec\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "binary/octet-stream" + } + }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/metadata/empty", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MQ==" + } + } + ], + "refusal": null + }, + { + "id": "operations/s3-express/get-metadata-hyphen-name", + "profile": "s3-express", + "lane": "core", + "purpose": "get metadata hyphen name", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "key": "object-tests/metadata/hyphen-name.txt", + "op": "get" + }, + "exchanges": [ { "alternatives": [ { @@ -121486,7 +162762,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "GET" } }, { @@ -121494,23 +162770,15 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/multipart/object.bin" - } - }, - { - "at": "/body_text", - "optional": false, - "rule": { - "is": "xml", - "value": "1\"fixture-9aff617fcdf8\"2\"fixture-ec2738a0b15a\"" + "value": "/" } }, { - "at": "/query/uploadId", + "at": "/query/session", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/c60fb1e2e00d=" + "value": "" } }, { @@ -121522,19 +162790,18 @@ } }, { - "at": "/headers/x-amz-s3session-token", + "at": "/headers/authorization", "optional": false, "rule": { - "is": "equal", - "value": "fixture-session-token" + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } }, { - "at": "/headers/authorization", + "at": "/headers/x-amz-s3session-token", "optional": false, "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + "is": "absent" } } ], @@ -121545,18 +162812,22 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - } + "content-type": "application/xml" }, "body": { "encoding": "utf8", - "data": "\nInternalErrorWe encountered an internal error. Please try again.fixturefixture" + "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" }, - "framing": "chunked" + "body_time": { + "text": "SESSION_EXPIRATION", + "offset_seconds": 300 + } } - }, + } + ] + }, + { + "alternatives": [ { "request": [ { @@ -121564,7 +162835,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "GET" } }, { @@ -121572,23 +162843,15 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/multipart/object.bin" - } - }, - { - "at": "/body_text", - "optional": false, - "rule": { - "is": "xml", - "value": "\"fixture-9aff617fcdf8\"1\"fixture-ec2738a0b15a\"2" + "value": "/object-tests/metadata/hyphen-name.txt" } }, { - "at": "/query/uploadId", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/c60fb1e2e00d=" + "value": "" } }, { @@ -121623,23 +162886,20 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", + "content-type": "binary/octet-stream", "date": { "from": "now" - } + }, + "etag": "\"fixture-adae183ea4af\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-amz-meta-not-valid": "1" }, "body": { - "encoding": "utf8", - "data": "\nInternalErrorWe encountered an internal error. Please try again.fixturefixture" - }, - "framing": "chunked" + "encoding": "base64", + "data": "MQ==" + } } - } - ], - "optional": true - }, - { - "alternatives": [ + }, { "request": [ { @@ -121647,7 +162907,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "GET" } }, { @@ -121655,23 +162915,23 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/multipart/object.bin" + "value": "/object-tests/metadata/hyphen-name.txt" } }, { - "at": "/body_text", + "at": "/body_base64", "optional": false, "rule": { - "is": "xml", - "value": "1\"fixture-9aff617fcdf8\"2\"fixture-ec2738a0b15a\"" + "is": "equal", + "value": "" } }, { - "at": "/query/uploadId", + "at": "/headers/range", "optional": false, "rule": { - "is": "equal", - "value": "fixture-upload+/c60fb1e2e00d=" + "is": "matches", + "pattern": "bytes=0-[1-9][0-9]{2,}" } }, { @@ -121704,20 +162964,104 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 206, "headers": { - "content-type": "application/xml", + "content-range": "bytes 0-0/1", + "content-type": "binary/octet-stream", "date": { "from": "now" - } + }, + "etag": "\"fixture-adae183ea4af\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-amz-meta-not-valid": "1" }, "body": { - "encoding": "utf8", - "data": "\nInternalErrorWe encountered an internal error. Please try again.fixturefixture" - }, - "framing": "chunked" + "encoding": "base64", + "data": "MQ==" + } } - }, + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-adae183ea4af\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "binary/octet-stream" + } + }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/metadata/not-valid", + "optional": false, + "rule": { + "is": "equal", + "value": "1" + } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MQ==" + } + } + ], + "refusal": null + }, + { + "id": "operations/s3-express/get-metadata-punctuation-name", + "profile": "s3-express", + "lane": "core", + "purpose": "Report a metadata name that holds any character of an HTTP token.", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "key": "object-tests/metadata/punctuation-name.txt", + "op": "get" + }, + "exchanges": [ + { + "alternatives": [ { "request": [ { @@ -121725,7 +163069,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "GET" } }, { @@ -121733,23 +163077,15 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/multipart/object.bin" - } - }, - { - "at": "/body_text", - "optional": false, - "rule": { - "is": "xml", - "value": "\"fixture-9aff617fcdf8\"1\"fixture-ec2738a0b15a\"2" + "value": "/" } }, { - "at": "/query/uploadId", + "at": "/query/session", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/c60fb1e2e00d=" + "value": "" } }, { @@ -121761,19 +163097,18 @@ } }, { - "at": "/headers/x-amz-s3session-token", + "at": "/headers/authorization", "optional": false, "rule": { - "is": "equal", - "value": "fixture-session-token" + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } }, { - "at": "/headers/authorization", + "at": "/headers/x-amz-s3session-token", "optional": false, "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + "is": "absent" } } ], @@ -121784,20 +163119,19 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - } + "content-type": "application/xml" }, "body": { "encoding": "utf8", - "data": "\nInternalErrorWe encountered an internal error. Please try again.fixturefixture" + "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" }, - "framing": "chunked" + "body_time": { + "text": "SESSION_EXPIRATION", + "offset_seconds": 300 + } } } - ], - "optional": true + ] }, { "alternatives": [ @@ -121808,7 +163142,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "GET" } }, { @@ -121816,23 +163150,15 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/multipart/object.bin" - } - }, - { - "at": "/body_text", - "optional": false, - "rule": { - "is": "xml", - "value": "1\"fixture-9aff617fcdf8\"2\"fixture-ec2738a0b15a\"" + "value": "/object-tests/metadata/punctuation-name.txt" } }, { - "at": "/query/uploadId", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/c60fb1e2e00d=" + "value": "" } }, { @@ -121867,16 +163193,18 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", + "content-type": "binary/octet-stream", "date": { "from": "now" - } + }, + "etag": "\"fixture-adae183ea4af\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-amz-meta-1a!#$%&'*+.^_`|~b": "1" }, "body": { - "encoding": "utf8", - "data": "\nInternalErrorWe encountered an internal error. Please try again.fixturefixture" - }, - "framing": "chunked" + "encoding": "base64", + "data": "MQ==" + } } }, { @@ -121886,7 +163214,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "GET" } }, { @@ -121894,23 +163222,23 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/multipart/object.bin" + "value": "/object-tests/metadata/punctuation-name.txt" } }, { - "at": "/body_text", + "at": "/body_base64", "optional": false, "rule": { - "is": "xml", - "value": "\"fixture-9aff617fcdf8\"1\"fixture-ec2738a0b15a\"2" + "is": "equal", + "value": "" } }, { - "at": "/query/uploadId", + "at": "/headers/range", "optional": false, "rule": { - "is": "equal", - "value": "fixture-upload+/c60fb1e2e00d=" + "is": "matches", + "pattern": "bytes=0-[1-9][0-9]{2,}" } }, { @@ -121943,22 +163271,24 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 206, "headers": { - "content-type": "application/xml", + "content-range": "bytes 0-0/1", + "content-type": "binary/octet-stream", "date": { "from": "now" - } + }, + "etag": "\"fixture-adae183ea4af\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-amz-meta-1a!#$%&'*+.^_`|~b": "1" }, "body": { - "encoding": "utf8", - "data": "\nInternalErrorWe encountered an internal error. Please try again.fixturefixture" - }, - "framing": "chunked" + "encoding": "base64", + "data": "MQ==" + } } } - ], - "optional": true + ] } ], "expect": [ @@ -121967,39 +163297,76 @@ "optional": false, "rule": { "is": "equal", - "value": "error" + "value": "ok" } }, { - "at": "/code", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": "InternalError" + "value": "\"fixture-adae183ea4af\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "binary/octet-stream" + } + }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MQ==" + } + }, + { + "at": "/value/metadata", + "optional": false, + "rule": { + "is": "equal", + "value": { + "1a!#$%&'*+.^_`|~b": "1" + } } } ], "refusal": null }, { - "id": "operations/s3-express/complete-multipart-200-error", + "id": "operations/s3-express/get-metadata-non-ascii-value", "profile": "s3-express", "lane": "core", - "purpose": "complete multipart 200 error", + "purpose": "A directory bucket returns an RFC 2047 encoded word as it was stored. A client that encodes on a write decodes it to é; one that keeps metadata to ASCII returns it as stored.", "sources": [ - "https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], - "origin": "transient", "call": { - "key": "object", - "op": "s3.complete_multipart", - "parts": [ - { - "etag": "\"part\"", - "number": 1 - } - ], - "upload_id": "upload+/=" + "key": "object-tests/metadata/non-ascii.txt", + "op": "get" }, "exchanges": [ { @@ -122084,7 +163451,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "GET" } }, { @@ -122092,23 +163459,15 @@ "optional": false, "rule": { "is": "equal", - "value": "/object" + "value": "/object-tests/metadata/non-ascii.txt" } }, { - "at": "/query/uploadId", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "upload+/=" - } - }, - { - "at": "/body_text", - "optional": false, - "rule": { - "is": "xml", - "value": "1\"part\"" + "value": "" } }, { @@ -122143,19 +163502,18 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", + "content-type": "binary/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-etag\"", + "etag": "\"fixture-adae183ea4af\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-amz-request-id": "fixture-request-id" + "x-amz-meta-value": "=?UTF-8?Q?caf=C3=A9?=" }, "body": { "encoding": "base64", - "data": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPEVycm9yPjxDb2RlPkludmFsaWRQYXJ0PC9Db2RlPjxNZXNzYWdlPmZpeHR1cmUgZXJyb3I8L01lc3NhZ2U+PC9FcnJvcj4=" - }, - "framing": "chunked" + "data": "MQ==" + } } }, { @@ -122165,7 +163523,7 @@ "optional": false, "rule": { "is": "equal", - "value": "POST" + "value": "GET" } }, { @@ -122173,23 +163531,23 @@ "optional": false, "rule": { "is": "equal", - "value": "/object" + "value": "/object-tests/metadata/non-ascii.txt" } }, { - "at": "/query/uploadId", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "upload+/=" + "value": "" } }, { - "at": "/body_text", + "at": "/headers/range", "optional": false, "rule": { - "is": "xml", - "value": "\"part\"1" + "is": "matches", + "pattern": "bytes=0-[1-9][0-9]{2,}" } }, { @@ -122222,21 +163580,21 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 206, "headers": { - "content-type": "application/xml", + "content-range": "bytes 0-0/1", + "content-type": "binary/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-etag\"", + "etag": "\"fixture-adae183ea4af\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-amz-request-id": "fixture-request-id" + "x-amz-meta-value": "=?UTF-8?Q?caf=C3=A9?=" }, "body": { "encoding": "base64", - "data": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPEVycm9yPjxDb2RlPkludmFsaWRQYXJ0PC9Db2RlPjxNZXNzYWdlPmZpeHR1cmUgZXJyb3I8L01lc3NhZ2U+PC9FcnJvcj4=" - }, - "framing": "chunked" + "data": "MQ==" + } } } ] @@ -122248,31 +163606,81 @@ "optional": false, "rule": { "is": "equal", - "value": "error" + "value": "ok" } }, { - "at": "/code", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": "InvalidPart" + "value": "\"fixture-adae183ea4af\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "binary/octet-stream" + } + }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MQ==" + } + }, + { + "at": "/value/metadata", + "optional": false, + "rule": { + "is": "one_of", + "values": [ + { + "value": "café" + }, + { + "value": "=?UTF-8?Q?caf=C3=A9?=" + } + ] } } ], "refusal": null }, { - "id": "operations/s3-express/delete-accepted", + "id": "operations/s3-express/get-metadata-outside-latin-1", "profile": "s3-express", "lane": "core", - "purpose": "delete accepted", + "purpose": "A directory bucket returns a base64 RFC 2047 encoded word as it was stored. A client that encodes on a write decodes it to 雪; one that keeps metadata to ASCII returns it as stored.", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/remove/present.txt", - "op": "delete" + "key": "object-tests/metadata/outside-latin-1.txt", + "op": "get" }, "exchanges": [ { @@ -122357,7 +163765,7 @@ "optional": false, "rule": { "is": "equal", - "value": "DELETE" + "value": "GET" } }, { @@ -122365,7 +163773,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/remove/present.txt" + "value": "/object-tests/metadata/outside-latin-1.txt" } }, { @@ -122406,16 +163814,100 @@ ], "allow_query": [], "response": { - "status": 204, + "status": 200, "headers": { + "content-type": "binary/octet-stream", "date": { "from": "now" }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + "etag": "\"fixture-adae183ea4af\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-amz-meta-value": "=?UTF-8?B?6Zuq?=" }, "body": { "encoding": "base64", - "data": "" + "data": "MQ==" + } + } + }, + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/object-tests/metadata/outside-latin-1.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/range", + "optional": false, + "rule": { + "is": "matches", + "pattern": "bytes=0-[1-9][0-9]{2,}" + } + }, + { + "at": "/headers/host", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-session-token" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 206, + "headers": { + "content-range": "bytes 0-0/1", + "content-type": "binary/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-adae183ea4af\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-amz-meta-value": "=?UTF-8?B?6Zuq?=" + }, + "body": { + "encoding": "base64", + "data": "MQ==" } } } @@ -122430,21 +163922,79 @@ "is": "equal", "value": "ok" } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-adae183ea4af\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "binary/octet-stream" + } + }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MQ==" + } + }, + { + "at": "/value/metadata", + "optional": false, + "rule": { + "is": "one_of", + "values": [ + { + "value": "雪" + }, + { + "value": "=?UTF-8?B?6Zuq?=" + } + ] + } } ], "refusal": null }, { - "id": "operations/s3-express/delete-accepted-key-question", + "id": "operations/s3-express/get-metadata-split-encoded-words", "profile": "s3-express", "lane": "core", - "purpose": "delete accepted, with the key \"question?mark.txt\"", + "purpose": "Decode a long metadata value that a directory bucket returns as one encoded word", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/keys/question?mark.txt", - "op": "delete" + "key": "object-tests/metadata/split-encoded-words.txt", + "op": "get" }, "exchanges": [ { @@ -122464,11 +164014,84 @@ "optional": false, "rule": { "is": "equal", - "value": "/" + "value": "/" + } + }, + { + "at": "/query/session", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/host", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "absent" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml" + }, + "body": { + "encoding": "utf8", + "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" + }, + "body_time": { + "text": "SESSION_EXPIRATION", + "offset_seconds": 300 + } + } + } + ] + }, + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/object-tests/metadata/split-encoded-words.txt" } }, { - "at": "/query/session", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", @@ -122484,18 +164107,19 @@ } }, { - "at": "/headers/authorization", + "at": "/headers/x-amz-s3session-token", "optional": false, "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + "is": "equal", + "value": "fixture-session-token" } }, { - "at": "/headers/x-amz-s3session-token", + "at": "/headers/authorization", "optional": false, "rule": { - "is": "absent" + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } } ], @@ -122506,22 +164130,20 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml" + "content-type": "binary/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-6c30b210f0a8\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-amz-meta-value": "=?UTF-8?B?6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq?=" }, "body": { - "encoding": "utf8", - "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" - }, - "body_time": { - "text": "SESSION_EXPIRATION", - "offset_seconds": 300 + "encoding": "base64", + "data": "MQ==" } } - } - ] - }, - { - "alternatives": [ + }, { "request": [ { @@ -122529,7 +164151,7 @@ "optional": false, "rule": { "is": "equal", - "value": "DELETE" + "value": "GET" } }, { @@ -122537,7 +164159,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/keys/question?mark.txt" + "value": "/object-tests/metadata/split-encoded-words.txt" } }, { @@ -122548,6 +164170,14 @@ "value": "" } }, + { + "at": "/headers/range", + "optional": false, + "rule": { + "is": "matches", + "pattern": "bytes=0-[1-9][0-9]{2,}" + } + }, { "at": "/headers/host", "optional": false, @@ -122578,16 +164208,20 @@ ], "allow_query": [], "response": { - "status": 204, + "status": 206, "headers": { + "content-range": "bytes 0-0/1", + "content-type": "binary/octet-stream", "date": { "from": "now" }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + "etag": "\"fixture-6c30b210f0a8\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-amz-meta-value": "=?UTF-8?B?6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq?=" }, "body": { "encoding": "base64", - "data": "" + "data": "MQ==" } } } @@ -122602,21 +164236,74 @@ "is": "equal", "value": "ok" } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-6c30b210f0a8\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "binary/octet-stream" + } + }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MQ==" + } + }, + { + "at": "/value/metadata", + "optional": false, + "rule": { + "is": "equal", + "value": { + "value": "雪雪雪雪雪雪雪雪雪雪雪雪雪雪雪雪雪雪雪雪雪雪雪雪雪雪雪雪雪雪" + } + } } ], "refusal": null }, { - "id": "operations/s3-express/delete-accepted-key-hash", + "id": "operations/s3-express/get-metadata-malformed-encoded-word", "profile": "s3-express", "lane": "core", - "purpose": "delete accepted, with the key \"hash#tag.txt\"", + "purpose": "Leave a value that only looks like an RFC 2047 encoded word as it is: =ZZ is no hexadecimal byte.", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/keys/hash#tag.txt", - "op": "delete" + "key": "object-tests/metadata/malformed-encoded-word.txt", + "op": "get" }, "exchanges": [ { @@ -122701,7 +164388,7 @@ "optional": false, "rule": { "is": "equal", - "value": "DELETE" + "value": "GET" } }, { @@ -122709,7 +164396,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/keys/hash#tag.txt" + "value": "/object-tests/metadata/malformed-encoded-word.txt" } }, { @@ -122750,49 +164437,22 @@ ], "allow_query": [], "response": { - "status": 204, + "status": 200, "headers": { + "content-type": "binary/octet-stream", "date": { "from": "now" }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + "etag": "\"fixture-adae183ea4af\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-amz-meta-value": "=?UTF-8?Q?caf=ZZ?=" }, "body": { "encoding": "base64", - "data": "" + "data": "MQ==" } } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - } - ], - "refusal": null - }, - { - "id": "operations/s3-express/delete-accepted-key-percent", - "profile": "s3-express", - "lane": "core", - "purpose": "delete accepted, with the key \"percent%20.txt\"", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "key": "object-tests/keys/percent%20.txt", - "op": "delete" - }, - "exchanges": [ - { - "alternatives": [ + }, { "request": [ { @@ -122808,11 +164468,11 @@ "optional": false, "rule": { "is": "equal", - "value": "/" + "value": "/object-tests/metadata/malformed-encoded-word.txt" } }, { - "at": "/query/session", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", @@ -122820,76 +164480,11 @@ } }, { - "at": "/headers/host", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" - } - }, - { - "at": "/headers/authorization", + "at": "/headers/range", "optional": false, "rule": { "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" - } - }, - { - "at": "/headers/x-amz-s3session-token", - "optional": false, - "rule": { - "is": "absent" - } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-type": "application/xml" - }, - "body": { - "encoding": "utf8", - "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" - }, - "body_time": { - "text": "SESSION_EXPIRATION", - "offset_seconds": 300 - } - } - } - ] - }, - { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "DELETE" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/object-tests/keys/percent%20.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" + "pattern": "bytes=0-[1-9][0-9]{2,}" } }, { @@ -122922,16 +164517,20 @@ ], "allow_query": [], "response": { - "status": 204, + "status": 206, "headers": { + "content-range": "bytes 0-0/1", + "content-type": "binary/octet-stream", "date": { "from": "now" }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + "etag": "\"fixture-adae183ea4af\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-amz-meta-value": "=?UTF-8?Q?caf=ZZ?=" }, "body": { "encoding": "base64", - "data": "" + "data": "MQ==" } } } @@ -122946,21 +164545,74 @@ "is": "equal", "value": "ok" } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-adae183ea4af\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "binary/octet-stream" + } + }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MQ==" + } + }, + { + "at": "/value/metadata", + "optional": false, + "rule": { + "is": "equal", + "value": { + "value": "=?UTF-8?Q?caf=ZZ?=" + } + } } ], "refusal": null }, { - "id": "operations/s3-express/delete-accepted-key-plus", + "id": "operations/s3-express/get-metadata-replaced", "profile": "s3-express", "lane": "core", - "purpose": "delete accepted, with the key \"plus+plus.txt\"", + "purpose": "get metadata replaced", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/keys/plus+plus.txt", - "op": "delete" + "key": "object-tests/metadata/replaced.txt", + "op": "get" }, "exchanges": [ { @@ -123045,7 +164697,7 @@ "optional": false, "rule": { "is": "equal", - "value": "DELETE" + "value": "GET" } }, { @@ -123053,7 +164705,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/keys/plus+plus.txt" + "value": "/object-tests/metadata/replaced.txt" } }, { @@ -123094,49 +164746,21 @@ ], "allow_query": [], "response": { - "status": 204, + "status": 200, "headers": { + "content-type": "binary/octet-stream", "date": { "from": "now" }, + "etag": "\"fixture-8ff37996a1a3\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "base64", - "data": "" + "data": "Mg==" } } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - } - ], - "refusal": null - }, - { - "id": "operations/s3-express/delete-accepted-key-space", - "profile": "s3-express", - "lane": "core", - "purpose": "delete accepted, with the key \"space name.txt\"", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "key": "object-tests/keys/space name.txt", - "op": "delete" - }, - "exchanges": [ - { - "alternatives": [ + }, { "request": [ { @@ -123152,11 +164776,11 @@ "optional": false, "rule": { "is": "equal", - "value": "/" + "value": "/object-tests/metadata/replaced.txt" } }, { - "at": "/query/session", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", @@ -123164,76 +164788,11 @@ } }, { - "at": "/headers/host", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" - } - }, - { - "at": "/headers/authorization", + "at": "/headers/range", "optional": false, "rule": { "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" - } - }, - { - "at": "/headers/x-amz-s3session-token", - "optional": false, - "rule": { - "is": "absent" - } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-type": "application/xml" - }, - "body": { - "encoding": "utf8", - "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" - }, - "body_time": { - "text": "SESSION_EXPIRATION", - "offset_seconds": 300 - } - } - } - ] - }, - { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "DELETE" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/object-tests/keys/space name.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" + "pattern": "bytes=0-[1-9][0-9]{2,}" } }, { @@ -123266,16 +164825,19 @@ ], "allow_query": [], "response": { - "status": 204, + "status": 206, "headers": { + "content-range": "bytes 0-0/1", + "content-type": "binary/octet-stream", "date": { "from": "now" }, + "etag": "\"fixture-8ff37996a1a3\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "base64", - "data": "" + "data": "Mg==" } } } @@ -123290,21 +164852,64 @@ "is": "equal", "value": "ok" } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-8ff37996a1a3\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "binary/octet-stream" + } + }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "Mg==" + } } ], "refusal": null }, { - "id": "operations/s3-express/delete-accepted-key-non-ascii", + "id": "operations/s3-express/get-metadata", "profile": "s3-express", "lane": "core", - "purpose": "delete accepted, with the key \"café/雪.txt\"", + "purpose": "get metadata", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/keys/café/雪.txt", - "op": "delete" + "key": "object-tests/metadata/object.txt", + "op": "get" }, "exchanges": [ { @@ -123389,7 +164994,7 @@ "optional": false, "rule": { "is": "equal", - "value": "DELETE" + "value": "GET" } }, { @@ -123397,7 +165002,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/keys/café/雪.txt" + "value": "/object-tests/metadata/object.txt" } }, { @@ -123438,49 +165043,23 @@ ], "allow_query": [], "response": { - "status": 204, + "status": 200, "headers": { + "content-type": "binary/octet-stream", "date": { "from": "now" }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + "etag": "\"fixture-ee657e36119d\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-amz-meta-name": "value", + "x-amz-meta-second": "2" }, "body": { "encoding": "base64", - "data": "" + "data": "MQ==" } } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - } - ], - "refusal": null - }, - { - "id": "operations/s3-express/delete-accepted-key-double-slash", - "profile": "s3-express", - "lane": "core", - "purpose": "delete accepted, with the key \"double//slash.txt\"", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "key": "object-tests/keys/double//slash.txt", - "op": "delete" - }, - "exchanges": [ - { - "alternatives": [ + }, { "request": [ { @@ -123496,11 +165075,11 @@ "optional": false, "rule": { "is": "equal", - "value": "/" + "value": "/object-tests/metadata/object.txt" } }, { - "at": "/query/session", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", @@ -123508,76 +165087,11 @@ } }, { - "at": "/headers/host", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" - } - }, - { - "at": "/headers/authorization", + "at": "/headers/range", "optional": false, "rule": { "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" - } - }, - { - "at": "/headers/x-amz-s3session-token", - "optional": false, - "rule": { - "is": "absent" - } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-type": "application/xml" - }, - "body": { - "encoding": "utf8", - "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" - }, - "body_time": { - "text": "SESSION_EXPIRATION", - "offset_seconds": 300 - } - } - } - ] - }, - { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "DELETE" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/object-tests/keys/double//slash.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" + "pattern": "bytes=0-[1-9][0-9]{2,}" } }, { @@ -123610,16 +165124,21 @@ ], "allow_query": [], "response": { - "status": 204, + "status": 206, "headers": { + "content-range": "bytes 0-0/1", + "content-type": "binary/octet-stream", "date": { "from": "now" }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + "etag": "\"fixture-ee657e36119d\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-amz-meta-name": "value", + "x-amz-meta-second": "2" }, "body": { "encoding": "base64", - "data": "" + "data": "MQ==" } } } @@ -123634,21 +165153,80 @@ "is": "equal", "value": "ok" } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-ee657e36119d\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "binary/octet-stream" + } + }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/metadata/name", + "optional": false, + "rule": { + "is": "equal", + "value": "value" + } + }, + { + "at": "/value/metadata/second", + "optional": false, + "rule": { + "is": "equal", + "value": "2" + } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MQ==" + } } ], "refusal": null }, { - "id": "operations/s3-express/delete-accepted-key-trailing-slash", + "id": "operations/s3-express/get-metadata-ignores-unknown-headers", "profile": "s3-express", "lane": "core", - "purpose": "delete accepted, with the key \"trailing-slash/\"", + "purpose": "Surface user metadata; unknown headers must not become metadata.", "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html" ], "call": { - "key": "object-tests/keys/trailing-slash/", - "op": "delete" + "key": "object", + "op": "get" }, "exchanges": [ { @@ -123733,7 +165311,7 @@ "optional": false, "rule": { "is": "equal", - "value": "DELETE" + "value": "GET" } }, { @@ -123741,7 +165319,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/keys/trailing-slash/" + "value": "/object" } }, { @@ -123752,6 +165330,18 @@ "value": "" } }, + { + "at": "/headers/content-type", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + "application/xml", + "application/octet-stream", + "binary/octet-stream" + ] + } + }, { "at": "/headers/host", "optional": false, @@ -123777,58 +165367,27 @@ } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 204, + "status": 200, "headers": { + "content-type": "application/octet-stream", "date": { "from": "now" }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-amz-meta-author": "Ada", + "x-amz-request-id": "fixture-request-id", + "x-unrelated": "not metadata" }, "body": { "encoding": "base64", - "data": "" + "data": "aGVsbG8=" } } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - } - ], - "refusal": null - }, - { - "id": "operations/s3-express/delete-many", - "profile": "s3-express", - "lane": "core", - "purpose": "Delete several objects in one request and report each result", - "sources": [ - "https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjects.html" - ], - "call": { - "keys": [ - "object-tests/batch/a.txt", - "object-tests/batch/b.txt", - "object-tests/batch/absent.txt" - ], - "op": "delete_many" - }, - "exchanges": [ - { - "alternatives": [ + }, { "request": [ { @@ -123844,17 +165403,37 @@ "optional": false, "rule": { "is": "equal", - "value": "/" + "value": "/object" } }, { - "at": "/query/session", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", "value": "" } }, + { + "at": "/headers/content-type", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + "application/xml", + "application/octet-stream", + "binary/octet-stream" + ] + } + }, + { + "at": "/headers/range", + "optional": false, + "rule": { + "is": "matches", + "pattern": "bytes=0-[1-9][0-9]{2,}" + } + }, { "at": "/headers/host", "optional": false, @@ -123864,129 +165443,41 @@ } }, { - "at": "/headers/authorization", + "at": "/headers/x-amz-s3session-token", "optional": false, "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + "is": "equal", + "value": "fixture-session-token" } }, { - "at": "/headers/x-amz-s3session-token", + "at": "/headers/authorization", "optional": false, "rule": { - "is": "absent" + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } } ], - "then": [ - { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "POST" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/" - } - }, - { - "at": "/body_text", - "optional": false, - "rule": { - "is": "xml", - "value": "object-tests/batch/a.txtobject-tests/batch/b.txtobject-tests/batch/absent.txt" - } - }, - { - "at": "/query/delete", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/headers/x-amz-checksum-crc64nvme", - "optional": false, - "rule": { - "is": "matches", - "pattern": "[A-Za-z0-9+/]{11}=" - } - }, - { - "at": "/headers/host", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" - } - }, - { - "at": "/headers/x-amz-s3session-token", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-session-token" - } - }, - { - "at": "/headers/authorization", - "optional": false, - "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" - } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - } - }, - "body": { - "encoding": "utf8", - "data": "\nobject-tests/batch/a.txtobject-tests/batch/b.txtobject-tests/batch/absent.txt" - }, - "framing": "chunked" - } - } - ] - } - ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 200, + "status": 206, "headers": { - "content-type": "application/xml" + "content-range": "bytes 0-4/5", + "content-type": "application/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-amz-meta-author": "Ada", + "x-amz-request-id": "fixture-request-id", + "x-unrelated": "not metadata" }, "body": { - "encoding": "utf8", - "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" - }, - "body_time": { - "text": "SESSION_EXPIRATION", - "offset_seconds": 300 + "encoding": "base64", + "data": "aGVsbG8=" } } } @@ -124003,40 +165494,37 @@ } }, { - "at": "/value/deleted", + "at": "/value/body_base64", "optional": false, "rule": { "is": "equal", - "value": [ - "object-tests/batch/a.txt", - "object-tests/batch/b.txt", - "object-tests/batch/absent.txt" - ] + "value": "aGVsbG8=" } }, { - "at": "/value/errors", + "at": "/value/metadata", "optional": false, "rule": { "is": "equal", - "value": [] + "value": { + "author": "Ada" + } } } ], "refusal": null }, { - "id": "operations/s3-express/delete-slow-down", + "id": "operations/s3-express/get-missing", "profile": "s3-express", "lane": "core", - "purpose": "Report a 503 SlowDown answer as an error, after at most 5 retries", + "purpose": "get missing. A client reports it as not_found: the object is absent", "sources": [ - "https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], - "origin": "transient", "call": { - "key": "object-tests/remove/present.txt", - "op": "delete" + "key": "object-tests/read/absent.txt", + "op": "get" }, "exchanges": [ { @@ -124121,81 +165609,7 @@ "optional": false, "rule": { "is": "equal", - "value": "DELETE" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/object-tests/remove/present.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/headers/host", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" - } - }, - { - "at": "/headers/x-amz-s3session-token", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-session-token" - } - }, - { - "at": "/headers/authorization", - "optional": false, - "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" - } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 503, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - } - }, - "body": { - "encoding": "utf8", - "data": "\nSlowDownPlease reduce your request rate.fixture" - }, - "framing": "chunked" - } - } - ] - }, - { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "DELETE" + "value": "GET" } }, { @@ -124203,7 +165617,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/remove/present.txt" + "value": "/object-tests/read/absent.txt" } }, { @@ -124244,7 +165658,7 @@ ], "allow_query": [], "response": { - "status": 503, + "status": 404, "headers": { "content-type": "application/xml", "date": { @@ -124253,16 +165667,11 @@ }, "body": { "encoding": "utf8", - "data": "\nSlowDownPlease reduce your request rate.fixture" + "data": "\nNoSuchKeyFixture error" }, "framing": "chunked" } - } - ], - "optional": true - }, - { - "alternatives": [ + }, { "request": [ { @@ -124270,7 +165679,7 @@ "optional": false, "rule": { "is": "equal", - "value": "DELETE" + "value": "GET" } }, { @@ -124278,7 +165687,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/remove/present.txt" + "value": "/object-tests/read/absent.txt" } }, { @@ -124289,6 +165698,14 @@ "value": "" } }, + { + "at": "/headers/range", + "optional": false, + "rule": { + "is": "matches", + "pattern": "bytes=0-[1-9][0-9]{2,}" + } + }, { "at": "/headers/host", "optional": false, @@ -124319,7 +165736,7 @@ ], "allow_query": [], "response": { - "status": 503, + "status": 404, "headers": { "content-type": "application/xml", "date": { @@ -124328,14 +165745,64 @@ }, "body": { "encoding": "utf8", - "data": "\nSlowDownPlease reduce your request rate.fixture" + "data": "\nNoSuchKeyFixture error" }, "framing": "chunked" } } - ], - "optional": true + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 404 + } }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "NoSuchKey" + } + }, + { + "at": "/kind", + "optional": false, + "rule": { + "is": "equal", + "value": "not_found" + } + } + ], + "refusal": null + }, + { + "id": "operations/s3-express/get-not-modified", + "profile": "s3-express", + "lane": "core", + "purpose": "get not modified", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "if_none_match": "\"fixture-672b31e65569\"", + "key": "object-tests/read/object.txt", + "op": "get" + }, + "exchanges": [ { "alternatives": [ { @@ -124345,7 +165812,7 @@ "optional": false, "rule": { "is": "equal", - "value": "DELETE" + "value": "GET" } }, { @@ -124353,11 +165820,11 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/remove/present.txt" + "value": "/" } }, { - "at": "/body_base64", + "at": "/query/session", "optional": false, "rule": { "is": "equal", @@ -124373,19 +165840,18 @@ } }, { - "at": "/headers/x-amz-s3session-token", + "at": "/headers/authorization", "optional": false, "rule": { - "is": "equal", - "value": "fixture-session-token" + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } }, { - "at": "/headers/authorization", + "at": "/headers/x-amz-s3session-token", "optional": false, "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + "is": "absent" } } ], @@ -124394,22 +165860,21 @@ ], "allow_query": [], "response": { - "status": 503, + "status": 200, "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - } + "content-type": "application/xml" }, "body": { "encoding": "utf8", - "data": "\nSlowDownPlease reduce your request rate.fixture" + "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" }, - "framing": "chunked" + "body_time": { + "text": "SESSION_EXPIRATION", + "offset_seconds": 300 + } } } - ], - "optional": true + ] }, { "alternatives": [ @@ -124420,7 +165885,7 @@ "optional": false, "rule": { "is": "equal", - "value": "DELETE" + "value": "GET" } }, { @@ -124428,7 +165893,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/remove/present.txt" + "value": "/object-tests/read/object.txt" } }, { @@ -124439,6 +165904,14 @@ "value": "" } }, + { + "at": "/headers/if-none-match", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-672b31e65569\"" + } + }, { "at": "/headers/host", "optional": false, @@ -124469,25 +165942,19 @@ ], "allow_query": [], "response": { - "status": 503, + "status": 304, "headers": { - "content-type": "application/xml", "date": { "from": "now" - } + }, + "etag": "\"fixture-672b31e65569\"" }, "body": { - "encoding": "utf8", - "data": "\nSlowDownPlease reduce your request rate.fixture" - }, - "framing": "chunked" + "encoding": "base64", + "data": "" + } } - } - ], - "optional": true - }, - { - "alternatives": [ + }, { "request": [ { @@ -124495,7 +165962,7 @@ "optional": false, "rule": { "is": "equal", - "value": "DELETE" + "value": "GET" } }, { @@ -124503,7 +165970,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/remove/present.txt" + "value": "/object-tests/read/object.txt" } }, { @@ -124514,6 +165981,22 @@ "value": "" } }, + { + "at": "/headers/if-none-match", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-672b31e65569\"" + } + }, + { + "at": "/headers/range", + "optional": false, + "rule": { + "is": "matches", + "pattern": "bytes=0-[1-9][0-9]{2,}" + } + }, { "at": "/headers/host", "optional": false, @@ -124544,22 +166027,20 @@ ], "allow_query": [], "response": { - "status": 503, + "status": 304, "headers": { - "content-type": "application/xml", "date": { "from": "now" - } + }, + "etag": "\"fixture-672b31e65569\"" }, "body": { - "encoding": "utf8", - "data": "\nSlowDownPlease reduce your request rate.fixture" - }, - "framing": "chunked" + "encoding": "base64", + "data": "" + } } } - ], - "optional": true + ] } ], "expect": [ @@ -124576,32 +166057,24 @@ "optional": false, "rule": { "is": "equal", - "value": 503 - } - }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "equal", - "value": "SlowDown" + "value": 304 } } ], "refusal": null }, { - "id": "operations/s3-express/delete-if-match-current", + "id": "operations/s3-express/get-precondition-failed", "profile": "s3-express", "lane": "core", - "purpose": "delete if match current", + "purpose": "get precondition failed", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "if_match": "\"fixture-137dbea0e0a1\"", - "key": "object-tests/remove/conditional.txt", - "op": "delete" + "if_match": "\"fixture-db71b2c0257c\"", + "key": "object-tests/read/object.txt", + "op": "get" }, "exchanges": [ { @@ -124686,7 +166159,7 @@ "optional": false, "rule": { "is": "equal", - "value": "DELETE" + "value": "GET" } }, { @@ -124694,7 +166167,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/remove/conditional.txt" + "value": "/object-tests/read/object.txt" } }, { @@ -124710,7 +166183,7 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-137dbea0e0a1\"" + "value": "\"fixture-db71b2c0257c\"" } }, { @@ -124743,17 +166216,104 @@ ], "allow_query": [], "response": { - "status": 204, + "status": 412, "headers": { + "content-type": "application/xml", "date": { "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { - "encoding": "base64", - "data": "" + "encoding": "utf8", + "data": "\nPreconditionFailedFixture error" + }, + "framing": "chunked" + } + }, + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/object-tests/read/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/if-match", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-db71b2c0257c\"" + } + }, + { + "at": "/headers/range", + "optional": false, + "rule": { + "is": "matches", + "pattern": "bytes=0-[1-9][0-9]{2,}" + } + }, + { + "at": "/headers/host", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-session-token" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + } } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 412, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + } + }, + "body": { + "encoding": "utf8", + "data": "\nPreconditionFailedFixture error" + }, + "framing": "chunked" } } ] @@ -124765,23 +166325,43 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 412 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "PreconditionFailed" } } ], "refusal": null }, { - "id": "operations/s3-express/delete-missing", + "id": "operations/s3-express/get-range-inverted", "profile": "s3-express", "lane": "core", - "purpose": "delete missing", + "purpose": "get range inverted", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/remove/absent.txt", - "op": "delete" + "key": "object-tests/read/object.txt", + "op": "get", + "range": { + "end": 2, + "start": 6 + } }, "exchanges": [ { @@ -124866,7 +166446,7 @@ "optional": false, "rule": { "is": "equal", - "value": "DELETE" + "value": "GET" } }, { @@ -124874,7 +166454,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/remove/absent.txt" + "value": "/object-tests/read/object.txt" } }, { @@ -124885,6 +166465,14 @@ "value": "" } }, + { + "at": "/headers/range", + "optional": false, + "rule": { + "is": "equal", + "value": "bytes=6-1" + } + }, { "at": "/headers/host", "optional": false, @@ -124915,16 +166503,18 @@ ], "allow_query": [], "response": { - "status": 204, + "status": 200, "headers": { + "content-type": "binary/octet-stream", "date": { "from": "now" }, + "etag": "\"fixture-672b31e65569\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "base64", - "data": "" + "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" } } } @@ -124939,22 +166529,94 @@ "is": "equal", "value": "ok" } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-672b31e65569\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 30 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "binary/octet-stream" + } + }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + } } ], - "refusal": null + "refusal": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "refused" + } + }, + { + "at": "/kind", + "optional": false, + "rule": { + "is": "matches", + "pattern": ".+" + } + }, + { + "at": "/parameter", + "optional": false, + "rule": { + "is": "equal", + "value": "range" + } + } + ], + "decline_permitted": true }, { - "id": "operations/s3-express/delete-precondition-failed", + "id": "operations/s3-express/get-range-empty", "profile": "s3-express", "lane": "core", - "purpose": "delete precondition failed", + "purpose": "Read a range of no bytes, whose start equals its end. HTTP has no form for it: bytes=5-4 is inverted, and the service ignores it and sends the whole object. A client may refuse it instead", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "if_match": "\"fixture-db71b2c0257c\"", - "key": "object-tests/remove/conditional.txt", - "op": "delete" + "key": "object-tests/read/object.txt", + "op": "get", + "range": { + "end": 5, + "start": 5 + } }, "exchanges": [ { @@ -125039,7 +166701,7 @@ "optional": false, "rule": { "is": "equal", - "value": "DELETE" + "value": "GET" } }, { @@ -125047,7 +166709,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/remove/conditional.txt" + "value": "/object-tests/read/object.txt" } }, { @@ -125059,11 +166721,11 @@ } }, { - "at": "/headers/if-match", + "at": "/headers/range", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-db71b2c0257c\"" + "value": "bytes=5-4" } }, { @@ -125096,18 +166758,19 @@ ], "allow_query": [], "response": { - "status": 412, + "status": 200, "headers": { - "content-type": "application/xml", + "content-type": "binary/octet-stream", "date": { "from": "now" - } + }, + "etag": "\"fixture-672b31e65569\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nPreconditionFailedFixture error" - }, - "framing": "chunked" + "encoding": "base64", + "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + } } } ] @@ -125119,39 +166782,95 @@ "optional": false, "rule": { "is": "equal", - "value": "error" + "value": "ok" } }, { - "at": "/status", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": 412 + "value": "\"fixture-672b31e65569\"" } }, { - "at": "/code", + "at": "/value/size", "optional": false, "rule": { "is": "equal", - "value": "PreconditionFailed" + "value": 30 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "binary/octet-stream" + } + }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" } } ], - "refusal": null + "refusal": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "refused" + } + }, + { + "at": "/kind", + "optional": false, + "rule": { + "is": "matches", + "pattern": ".+" + } + }, + { + "at": "/parameter", + "optional": false, + "rule": { + "is": "equal", + "value": "range" + } + } + ], + "decline_permitted": true }, { - "id": "operations/s3-express/get-before-commit", + "id": "operations/s3-express/get-range-not-satisfiable", "profile": "s3-express", "lane": "core", - "purpose": "get before commit", + "purpose": "get range not satisfiable", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/multipart/object.bin", - "op": "get" + "key": "object-tests/read/object.txt", + "op": "get", + "range": { + "start": 40 + } }, "exchanges": [ { @@ -125244,7 +166963,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/multipart/object.bin" + "value": "/object-tests/read/object.txt" } }, { @@ -125255,6 +166974,14 @@ "value": "" } }, + { + "at": "/headers/range", + "optional": false, + "rule": { + "is": "equal", + "value": "bytes=40-" + } + }, { "at": "/headers/host", "optional": false, @@ -125285,7 +167012,7 @@ ], "allow_query": [], "response": { - "status": 404, + "status": 416, "headers": { "content-type": "application/xml", "date": { @@ -125294,7 +167021,7 @@ }, "body": { "encoding": "utf8", - "data": "\nNoSuchKeyFixture error" + "data": "\nInvalidRangeFixture error" }, "framing": "chunked" } @@ -125314,7 +167041,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/multipart/object.bin" + "value": "/object-tests/read/object.txt" } }, { @@ -125330,7 +167057,7 @@ "optional": false, "rule": { "is": "matches", - "pattern": "bytes=0-[1-9][0-9]{2,}" + "pattern": "bytes=40-[1-9][0-9]{2,}" } }, { @@ -125363,7 +167090,7 @@ ], "allow_query": [], "response": { - "status": 404, + "status": 416, "headers": { "content-type": "application/xml", "date": { @@ -125372,7 +167099,7 @@ }, "body": { "encoding": "utf8", - "data": "\nNoSuchKeyFixture error" + "data": "\nInvalidRangeFixture error" }, "framing": "chunked" } @@ -125394,7 +167121,7 @@ "optional": false, "rule": { "is": "equal", - "value": 404 + "value": 416 } }, { @@ -125402,25 +167129,26 @@ "optional": false, "rule": { "is": "equal", - "value": "NoSuchKey" + "value": "InvalidRange" } } ], "refusal": null }, { - "id": "operations/s3-express/get-committed-tail", + "id": "operations/s3-express/get-range-past-the-end", "profile": "s3-express", "lane": "core", - "purpose": "get committed tail", + "purpose": "Read a range that ends past the object, which the service clips to the object's end. Report the window it served from Content-Range, bytes 28-29/30, so that the caller sees the range was clipped", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/multipart/object.bin", + "key": "object-tests/read/object.txt", "op": "get", "range": { - "suffix": 10 + "end": 64, + "start": 28 } }, "exchanges": [ @@ -125514,7 +167242,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/multipart/object.bin" + "value": "/object-tests/read/object.txt" } }, { @@ -125530,7 +167258,7 @@ "optional": false, "rule": { "is": "equal", - "value": "bytes=-10" + "value": "bytes=28-63" } }, { @@ -125565,191 +167293,17 @@ "response": { "status": 206, "headers": { - "content-range": "bytes 5242876-5242885/5242886", + "content-range": "bytes 28-29/30", "content-type": "binary/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-ec4f3b9bcac2\"", + "etag": "\"fixture-672b31e65569\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "base64", - "data": "Y2RlZnNlY29uZA==" - } - } - }, - { - "request": [ - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/object-tests/multipart/object.bin" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "HEAD" - } - }, - { - "at": "/headers/host", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" - } - }, - { - "at": "/headers/x-amz-s3session-token", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-session-token" - } - }, - { - "at": "/headers/authorization", - "optional": false, - "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" - } - }, - { - "at": "/headers/range", - "optional": false, - "rule": { - "is": "equal", - "value": "bytes=-10" - } - } - ], - "then": [ - { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/object-tests/multipart/object.bin" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/headers/range", - "optional": false, - "rule": { - "is": "equal", - "value": "bytes=5242876-5242885" - } - }, - { - "at": "/headers/if-match", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-ec4f3b9bcac2\"" - } - }, - { - "at": "/headers/host", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" - } - }, - { - "at": "/headers/x-amz-s3session-token", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-session-token" - } - }, - { - "at": "/headers/authorization", - "optional": false, - "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" - } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 206, - "headers": { - "content-range": "bytes 5242876-5242885/5242886", - "content-type": "binary/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-ec4f3b9bcac2\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" - }, - "body": { - "encoding": "base64", - "data": "Y2RlZnNlY29uZA==" - } - } - } - ] - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 206, - "headers": { - "content-length": "10", - "content-range": "bytes 5242876-5242885/5242886", - "content-type": "binary/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-ec4f3b9bcac2\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" - }, - "body": { - "encoding": "empty" + "data": "Y3Q=" } } } @@ -125770,7 +167324,7 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-ec4f3b9bcac2\"" + "value": "\"fixture-672b31e65569\"" } }, { @@ -125778,7 +167332,7 @@ "optional": false, "rule": { "is": "equal", - "value": 10 + "value": 2 } }, { @@ -125805,23 +167359,35 @@ "optional": false, "rule": { "is": "equal", - "value": "Y2RlZnNlY29uZA==" + "value": "Y3Q=" + } + }, + { + "at": "/value/content_range", + "optional": false, + "rule": { + "is": "equal", + "value": "bytes 28-29/30" } } ], "refusal": null }, { - "id": "operations/s3-express/get-empty", + "id": "operations/s3-express/get-range-single-byte", "profile": "s3-express", "lane": "core", - "purpose": "get empty", + "purpose": "get range single byte", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/write/empty.bin", - "op": "get" + "key": "object-tests/read/object.txt", + "op": "get", + "range": { + "end": 1, + "start": 0 + } }, "exchanges": [ { @@ -125914,78 +167480,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/write/empty.bin" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/headers/host", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" - } - }, - { - "at": "/headers/x-amz-s3session-token", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-session-token" - } - }, - { - "at": "/headers/authorization", - "optional": false, - "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" - } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-type": "binary/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-de1997e62b9b\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" - }, - "body": { - "encoding": "base64", - "data": "" - } - } - }, - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/object-tests/write/empty.bin" + "value": "/object-tests/read/object.txt" } }, { @@ -126000,8 +167495,8 @@ "at": "/headers/range", "optional": false, "rule": { - "is": "matches", - "pattern": "bytes=0-[1-9][0-9]{2,}" + "is": "equal", + "value": "bytes=0-0" } }, { @@ -126029,111 +167524,25 @@ } } ], - "then": [ - { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/object-tests/write/empty.bin" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/headers/host", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" - } - }, - { - "at": "/headers/x-amz-s3session-token", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-session-token" - } - }, - { - "at": "/headers/authorization", - "optional": false, - "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" - } - }, - { - "at": "/query/partNumber", - "optional": false, - "rule": { - "is": "equal", - "value": "1" - } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-type": "binary/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-de1997e62b9b\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" - }, - "body": { - "encoding": "base64", - "data": "" - } - } - } - ] - } - ], "allow_headers": [ "content-type" ], "allow_query": [], "response": { - "status": 416, + "status": 206, "headers": { - "content-range": "bytes */0", - "content-type": "application/xml", + "content-range": "bytes 0-0/30", + "content-type": "binary/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-de1997e62b9b\"", + "etag": "\"fixture-672b31e65569\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nInvalidRangeEmpty object0" - }, - "framing": "chunked" + "encoding": "base64", + "data": "MA==" + } } } ] @@ -126153,7 +167562,7 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-de1997e62b9b\"" + "value": "\"fixture-672b31e65569\"" } }, { @@ -126161,7 +167570,7 @@ "optional": false, "rule": { "is": "equal", - "value": 0 + "value": 1 } }, { @@ -126188,24 +167597,27 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "MA==" } } ], "refusal": null }, { - "id": "operations/s3-express/get-if-match-current", + "id": "operations/s3-express/get-range", "profile": "s3-express", "lane": "core", - "purpose": "get if match current", + "purpose": "get range", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "if_match": "\"fixture-672b31e65569\"", "key": "object-tests/read/object.txt", - "op": "get" + "op": "get", + "range": { + "end": 6, + "start": 2 + } }, "exchanges": [ { @@ -126309,99 +167721,12 @@ "value": "" } }, - { - "at": "/headers/if-match", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-672b31e65569\"" - } - }, - { - "at": "/headers/host", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" - } - }, - { - "at": "/headers/x-amz-s3session-token", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-session-token" - } - }, - { - "at": "/headers/authorization", - "optional": false, - "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" - } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-type": "binary/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-672b31e65569\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" - }, - "body": { - "encoding": "base64", - "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" - } - } - }, - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/object-tests/read/object.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/headers/if-match", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-672b31e65569\"" - } - }, { "at": "/headers/range", "optional": false, "rule": { - "is": "matches", - "pattern": "bytes=0-[1-9][0-9]{2,}" + "is": "equal", + "value": "bytes=2-5" } }, { @@ -126436,7 +167761,7 @@ "response": { "status": 206, "headers": { - "content-range": "bytes 0-29/30", + "content-range": "bytes 2-5/30", "content-type": "binary/octet-stream", "date": { "from": "now" @@ -126446,7 +167771,7 @@ }, "body": { "encoding": "base64", - "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + "data": "MjM0NQ==" } } } @@ -126475,7 +167800,7 @@ "optional": false, "rule": { "is": "equal", - "value": 30 + "value": 4 } }, { @@ -126502,24 +167827,26 @@ "optional": false, "rule": { "is": "equal", - "value": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + "value": "MjM0NQ==" } } ], "refusal": null }, { - "id": "operations/s3-express/get-if-none-match-other", + "id": "operations/s3-express/get-range-open", "profile": "s3-express", "lane": "core", - "purpose": "get if none match other", + "purpose": "get range open", "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html" ], "call": { - "if_none_match": "\"fixture-db71b2c0257c\"", - "key": "object-tests/read/object.txt", - "op": "get" + "key": "object", + "op": "get", + "range": { + "start": 3 + } }, "exchanges": [ { @@ -126612,7 +167939,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/read/object.txt" + "value": "/object" } }, { @@ -126624,11 +167951,23 @@ } }, { - "at": "/headers/if-none-match", + "at": "/headers/range", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-db71b2c0257c\"" + "value": "bytes=3-" + } + }, + { + "at": "/headers/content-type", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + "application/xml", + "application/octet-stream", + "binary/octet-stream" + ] } }, { @@ -126656,23 +167995,23 @@ } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 200, + "status": 206, "headers": { - "content-type": "binary/octet-stream", + "content-range": "bytes 3-4/5", + "content-type": "application/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-672b31e65569\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-amz-request-id": "fixture-request-id" }, "body": { "encoding": "base64", - "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + "data": "bG8=" } } }, @@ -126691,7 +168030,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/read/object.txt" + "value": "/object" } }, { @@ -126703,11 +168042,15 @@ } }, { - "at": "/headers/if-none-match", - "optional": false, + "at": "/headers/content-type", + "optional": true, "rule": { - "is": "equal", - "value": "\"fixture-db71b2c0257c\"" + "is": "one_of", + "values": [ + "application/xml", + "application/octet-stream", + "binary/octet-stream" + ] } }, { @@ -126715,7 +168058,7 @@ "optional": false, "rule": { "is": "matches", - "pattern": "bytes=0-[1-9][0-9]{2,}" + "pattern": "bytes=3-[1-9][0-9]{2,}" } }, { @@ -126743,24 +168086,23 @@ } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { "status": 206, "headers": { - "content-range": "bytes 0-29/30", - "content-type": "binary/octet-stream", + "content-range": "bytes 3-4/5", + "content-type": "application/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-672b31e65569\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-amz-request-id": "fixture-request-id" }, "body": { "encoding": "base64", - "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + "data": "bG8=" } } } @@ -126776,62 +168118,27 @@ "value": "ok" } }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-672b31e65569\"" - } - }, - { - "at": "/value/size", - "optional": false, - "rule": { - "is": "equal", - "value": 30 - } - }, - { - "at": "/value/content_type", - "optional": false, - "rule": { - "is": "equal", - "value": "binary/octet-stream" - } - }, - { - "at": "/value/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, { "at": "/value/body_base64", "optional": false, "rule": { "is": "equal", - "value": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + "value": "bG8=" } } ], "refusal": null }, { - "id": "operations/s3-express/get-key-with-hash", + "id": "operations/s3-express/get-replaced", "profile": "s3-express", "lane": "core", - "purpose": "get key with hash", + "purpose": "get replaced", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/names/hash#tag.txt", + "key": "object-tests/multipart/replaced.bin", "op": "get" }, "exchanges": [ @@ -126925,7 +168232,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/names/hash#tag.txt" + "value": "/object-tests/multipart/replaced.bin" } }, { @@ -126972,12 +168279,12 @@ "date": { "from": "now" }, - "etag": "\"fixture-84af5210cfd9\"", + "etag": "\"fixture-eef5a071f9f6\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "base64", - "data": "MQ==" + "data": "Yg==" } } }, @@ -126996,7 +168303,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/names/hash#tag.txt" + "value": "/object-tests/multipart/replaced.bin" } }, { @@ -127052,12 +168359,12 @@ "date": { "from": "now" }, - "etag": "\"fixture-84af5210cfd9\"", + "etag": "\"fixture-eef5a071f9f6\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "base64", - "data": "MQ==" + "data": "Yg==" } } } @@ -127078,7 +168385,7 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-84af5210cfd9\"" + "value": "\"fixture-eef5a071f9f6\"" } }, { @@ -127113,22 +168420,22 @@ "optional": false, "rule": { "is": "equal", - "value": "MQ==" + "value": "Yg==" } } ], "refusal": null }, { - "id": "operations/s3-express/get-key-with-percent", + "id": "operations/s3-express/get-single-part", "profile": "s3-express", "lane": "core", - "purpose": "get key with percent", + "purpose": "get single part", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/names/percent%20.txt", + "key": "object-tests/multipart/single.bin", "op": "get" }, "exchanges": [ @@ -127222,7 +168529,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/names/percent%20.txt" + "value": "/object-tests/multipart/single.bin" } }, { @@ -127269,12 +168576,12 @@ "date": { "from": "now" }, - "etag": "\"fixture-a16607f00956\"", + "etag": "\"fixture-0841fa5d9c5c\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "base64", - "data": "MQ==" + "data": "b25seQ==" } } }, @@ -127293,7 +168600,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/names/percent%20.txt" + "value": "/object-tests/multipart/single.bin" } }, { @@ -127344,17 +168651,17 @@ "response": { "status": 206, "headers": { - "content-range": "bytes 0-0/1", + "content-range": "bytes 0-3/4", "content-type": "binary/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-a16607f00956\"", + "etag": "\"fixture-0841fa5d9c5c\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "base64", - "data": "MQ==" + "data": "b25seQ==" } } } @@ -127375,7 +168682,7 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-a16607f00956\"" + "value": "\"fixture-0841fa5d9c5c\"" } }, { @@ -127383,7 +168690,7 @@ "optional": false, "rule": { "is": "equal", - "value": 1 + "value": 4 } }, { @@ -127410,23 +168717,26 @@ "optional": false, "rule": { "is": "equal", - "value": "MQ==" + "value": "b25seQ==" } } ], "refusal": null }, { - "id": "operations/s3-express/get-key-with-plus", + "id": "operations/s3-express/get-suffix-longer-than-object", "profile": "s3-express", "lane": "core", - "purpose": "get key with plus", + "purpose": "get suffix longer than object", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/names/plus+plus.txt", - "op": "get" + "key": "object-tests/read/object.txt", + "op": "get", + "range": { + "suffix": 100 + } }, "exchanges": [ { @@ -127519,7 +168829,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/names/plus+plus.txt" + "value": "/object-tests/read/object.txt" } }, { @@ -127530,6 +168840,14 @@ "value": "" } }, + { + "at": "/headers/range", + "optional": false, + "rule": { + "is": "equal", + "value": "bytes=-100" + } + }, { "at": "/headers/host", "optional": false, @@ -127560,37 +168878,30 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 206, "headers": { + "content-range": "bytes 0-29/30", "content-type": "binary/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-1b1e630ad692\"", + "etag": "\"fixture-672b31e65569\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "base64", - "data": "MQ==" + "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" } } }, { "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, { "at": "/path", "optional": false, "rule": { "is": "equal", - "value": "/object-tests/names/plus+plus.txt" + "value": "/object-tests/read/object.txt" } }, { @@ -127602,11 +168913,11 @@ } }, { - "at": "/headers/range", + "at": "/method", "optional": false, "rule": { - "is": "matches", - "pattern": "bytes=0-[1-9][0-9]{2,}" + "is": "equal", + "value": "HEAD" } }, { @@ -127632,6 +168943,108 @@ "is": "matches", "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } + }, + { + "at": "/headers/range", + "optional": false, + "rule": { + "is": "equal", + "value": "bytes=-100" + } + } + ], + "then": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/object-tests/read/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/range", + "optional": false, + "rule": { + "is": "equal", + "value": "bytes=0-29" + } + }, + { + "at": "/headers/if-match", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-672b31e65569\"" + } + }, + { + "at": "/headers/host", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-session-token" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 206, + "headers": { + "content-range": "bytes 0-29/30", + "content-type": "binary/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-672b31e65569\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "base64", + "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + } + } + } + ] } ], "allow_headers": [ @@ -127641,17 +169054,17 @@ "response": { "status": 206, "headers": { - "content-range": "bytes 0-0/1", + "content-length": "30", + "content-range": "bytes 0-29/30", "content-type": "binary/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-1b1e630ad692\"", + "etag": "\"fixture-672b31e65569\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "MQ==" + "encoding": "empty" } } } @@ -127672,7 +169085,7 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-1b1e630ad692\"" + "value": "\"fixture-672b31e65569\"" } }, { @@ -127680,7 +169093,7 @@ "optional": false, "rule": { "is": "equal", - "value": 1 + "value": 30 } }, { @@ -127707,23 +169120,26 @@ "optional": false, "rule": { "is": "equal", - "value": "MQ==" + "value": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" } } ], "refusal": null }, { - "id": "operations/s3-express/get-key-with-space", + "id": "operations/s3-express/get-suffix", "profile": "s3-express", "lane": "core", - "purpose": "get key with space", + "purpose": "get suffix", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/names/space name.txt", - "op": "get" + "key": "object-tests/read/object.txt", + "op": "get", + "range": { + "suffix": 6 + } }, "exchanges": [ { @@ -127816,7 +169232,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/names/space name.txt" + "value": "/object-tests/read/object.txt" } }, { @@ -127827,6 +169243,14 @@ "value": "" } }, + { + "at": "/headers/range", + "optional": false, + "rule": { + "is": "equal", + "value": "bytes=-6" + } + }, { "at": "/headers/host", "optional": false, @@ -127857,37 +169281,30 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 206, "headers": { + "content-range": "bytes 24-29/30", "content-type": "binary/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-d614f09fca44\"", + "etag": "\"fixture-672b31e65569\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "base64", - "data": "MQ==" + "data": "b2JqZWN0" } } }, { "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, { "at": "/path", "optional": false, "rule": { "is": "equal", - "value": "/object-tests/names/space name.txt" + "value": "/object-tests/read/object.txt" } }, { @@ -127899,11 +169316,11 @@ } }, { - "at": "/headers/range", + "at": "/method", "optional": false, "rule": { - "is": "matches", - "pattern": "bytes=0-[1-9][0-9]{2,}" + "is": "equal", + "value": "HEAD" } }, { @@ -127929,6 +169346,108 @@ "is": "matches", "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } + }, + { + "at": "/headers/range", + "optional": false, + "rule": { + "is": "equal", + "value": "bytes=-6" + } + } + ], + "then": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/object-tests/read/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/range", + "optional": false, + "rule": { + "is": "equal", + "value": "bytes=24-29" + } + }, + { + "at": "/headers/if-match", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-672b31e65569\"" + } + }, + { + "at": "/headers/host", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-session-token" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 206, + "headers": { + "content-range": "bytes 24-29/30", + "content-type": "binary/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-672b31e65569\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "base64", + "data": "b2JqZWN0" + } + } + } + ] } ], "allow_headers": [ @@ -127938,17 +169457,17 @@ "response": { "status": 206, "headers": { - "content-range": "bytes 0-0/1", + "content-length": "6", + "content-range": "bytes 24-29/30", "content-type": "binary/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-d614f09fca44\"", + "etag": "\"fixture-672b31e65569\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "MQ==" + "encoding": "empty" } } } @@ -127969,7 +169488,7 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-d614f09fca44\"" + "value": "\"fixture-672b31e65569\"" } }, { @@ -127977,7 +169496,7 @@ "optional": false, "rule": { "is": "equal", - "value": 1 + "value": 6 } }, { @@ -128004,22 +169523,22 @@ "optional": false, "rule": { "is": "equal", - "value": "MQ==" + "value": "b2JqZWN0" } } ], "refusal": null }, { - "id": "operations/s3-express/get-key-with-question", + "id": "operations/s3-express/get-whole", "profile": "s3-express", "lane": "core", - "purpose": "get key question", + "purpose": "get whole", "sources": [ - "https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "a?b", + "key": "object-tests/read/object.txt", "op": "get" }, "exchanges": [ @@ -128113,7 +169632,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/a?b" + "value": "/object-tests/read/object.txt" } }, { @@ -128124,18 +169643,6 @@ "value": "" } }, - { - "at": "/headers/content-type", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - "application/xml", - "application/octet-stream", - "binary/octet-stream" - ] - } - }, { "at": "/headers/host", "optional": false, @@ -128161,22 +169668,23 @@ } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { "status": 200, "headers": { - "content-type": "application/octet-stream", + "content-type": "binary/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-etag\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-amz-request-id": "fixture-request-id" + "etag": "\"fixture-672b31e65569\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "base64", - "data": "aGVsbG8=" + "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" } } }, @@ -128195,7 +169703,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/a?b" + "value": "/object-tests/read/object.txt" } }, { @@ -128206,18 +169714,6 @@ "value": "" } }, - { - "at": "/headers/content-type", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - "application/xml", - "application/octet-stream", - "binary/octet-stream" - ] - } - }, { "at": "/headers/range", "optional": false, @@ -128251,23 +169747,24 @@ } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { "status": 206, "headers": { - "content-range": "bytes 0-4/5", - "content-type": "application/octet-stream", + "content-range": "bytes 0-29/30", + "content-type": "binary/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-etag\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-amz-request-id": "fixture-request-id" + "etag": "\"fixture-672b31e65569\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "base64", - "data": "aGVsbG8=" + "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" } } } @@ -128283,27 +169780,63 @@ "value": "ok" } }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-672b31e65569\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 30 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "binary/octet-stream" + } + }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, { "at": "/value/body_base64", "optional": false, "rule": { "is": "equal", - "value": "aGVsbG8=" + "value": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" } } ], "refusal": null }, { - "id": "operations/s3-express/get-key-with-non-ascii", + "id": "operations/s3-express/get-session-expired", "profile": "s3-express", "lane": "core", - "purpose": "get key unicode", + "purpose": "Renew a session whose Expiration has passed before using it: ask CreateSession again, and sign the GET with the second session", "sources": [ - "https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], + "origin": "constructed", "call": { - "key": "café/雪", + "key": "object-tests/read/object.txt", "op": "get" }, "exchanges": [ @@ -128374,7 +169907,7 @@ }, "body_time": { "text": "SESSION_EXPIRATION", - "offset_seconds": 300 + "offset_seconds": -60 } } } @@ -128397,11 +169930,11 @@ "optional": false, "rule": { "is": "equal", - "value": "/café/雪" + "value": "/" } }, { - "at": "/body_base64", + "at": "/query/session", "optional": false, "rule": { "is": "equal", @@ -128409,15 +169942,76 @@ } }, { - "at": "/headers/content-type", - "optional": true, + "at": "/headers/host", + "optional": false, "rule": { - "is": "one_of", - "values": [ - "application/xml", - "application/octet-stream", - "binary/octet-stream" - ] + "is": "equal", + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "absent" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml" + }, + "body": { + "encoding": "utf8", + "data": "\nfixture-session-token-2fixture-secret-key-2fixture-access-key-2SESSION_EXPIRATION" + }, + "body_time": { + "text": "SESSION_EXPIRATION", + "offset_seconds": 300 + } + } + } + ] + }, + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/object-tests/read/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" } }, { @@ -128433,7 +170027,7 @@ "optional": false, "rule": { "is": "equal", - "value": "fixture-session-token" + "value": "fixture-session-token-2" } }, { @@ -128441,26 +170035,27 @@ "optional": false, "rule": { "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key-2/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { "status": 200, "headers": { - "content-type": "application/octet-stream", + "content-type": "binary/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-etag\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-amz-request-id": "fixture-request-id" + "etag": "\"fixture-672b31e65569\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "base64", - "data": "aGVsbG8=" + "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" } } }, @@ -128479,7 +170074,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/café/雪" + "value": "/object-tests/read/object.txt" } }, { @@ -128490,18 +170085,6 @@ "value": "" } }, - { - "at": "/headers/content-type", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - "application/xml", - "application/octet-stream", - "binary/octet-stream" - ] - } - }, { "at": "/headers/range", "optional": false, @@ -128523,7 +170106,7 @@ "optional": false, "rule": { "is": "equal", - "value": "fixture-session-token" + "value": "fixture-session-token-2" } }, { @@ -128531,27 +170114,28 @@ "optional": false, "rule": { "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key-2/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { "status": 206, "headers": { - "content-range": "bytes 0-4/5", - "content-type": "application/octet-stream", + "content-range": "bytes 0-29/30", + "content-type": "binary/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-etag\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-amz-request-id": "fixture-request-id" + "etag": "\"fixture-672b31e65569\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "base64", - "data": "aGVsbG8=" + "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" } } } @@ -128567,27 +170151,62 @@ "value": "ok" } }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-672b31e65569\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 30 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "binary/octet-stream" + } + }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, { "at": "/value/body_base64", "optional": false, "rule": { "is": "equal", - "value": "aGVsbG8=" + "value": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" } } ], "refusal": null }, { - "id": "operations/s3-express/get-key-with-separators", + "id": "operations/s3-express/get-xml-looking", "profile": "s3-express", "lane": "core", - "purpose": "get key separators", + "purpose": "get xml looking", "sources": [ "https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html" ], "call": { - "key": "a//b/", + "key": "object", "op": "get" }, "exchanges": [ @@ -128681,7 +170300,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/a//b/" + "value": "/object" } }, { @@ -128744,7 +170363,7 @@ }, "body": { "encoding": "base64", - "data": "aGVsbG8=" + "data": "PEVycm9yPnN0aWxsIG9iamVjdCBieXRlczwvRXJyb3I+" } } }, @@ -128763,7 +170382,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/a//b/" + "value": "/object" } }, { @@ -128824,7 +170443,7 @@ "response": { "status": 206, "headers": { - "content-range": "bytes 0-4/5", + "content-range": "bytes 0-32/33", "content-type": "application/octet-stream", "date": { "from": "now" @@ -128835,7 +170454,7 @@ }, "body": { "encoding": "base64", - "data": "aGVsbG8=" + "data": "PEVycm9yPnN0aWxsIG9iamVjdCBieXRlczwvRXJyb3I+" } } } @@ -128856,22 +170475,23 @@ "optional": false, "rule": { "is": "equal", - "value": "aGVsbG8=" + "value": "PEVycm9yPnN0aWxsIG9iamVjdCBieXRlczwvRXJyb3I+" } } ], "refusal": null }, { - "id": "operations/s3-express/get-metadata-empty-value", + "id": "operations/s3-express/get-noise-tolerance", "profile": "s3-express", "lane": "core", - "purpose": "get metadata empty value", + "purpose": "get noise tolerance", "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html" ], + "origin": "constructed", "call": { - "key": "object-tests/metadata/empty-value.txt", + "key": "object", "op": "get" }, "exchanges": [ @@ -128965,7 +170585,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/metadata/empty-value.txt" + "value": "/object" } }, { @@ -128976,6 +170596,18 @@ "value": "" } }, + { + "at": "/headers/content-type", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + "application/xml", + "application/octet-stream", + "binary/octet-stream" + ] + } + }, { "at": "/headers/host", "optional": false, @@ -129001,24 +170633,23 @@ } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { "status": 200, "headers": { - "content-type": "binary/octet-stream", + "content-type": "application/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-e6096f6fd1ec\"", + "etag": "\"a-different-etag\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-amz-meta-empty": "" + "x-amz-request-id": "another-id", + "x-fixture-unknown": "ignored" }, "body": { "encoding": "base64", - "data": "MQ==" + "data": "aGVsbG8=" } } }, @@ -129037,7 +170668,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/metadata/empty-value.txt" + "value": "/object" } }, { @@ -129048,6 +170679,18 @@ "value": "" } }, + { + "at": "/headers/content-type", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + "application/xml", + "application/octet-stream", + "binary/octet-stream" + ] + } + }, { "at": "/headers/range", "optional": false, @@ -129081,25 +170724,24 @@ } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { "status": 206, "headers": { - "content-range": "bytes 0-0/1", - "content-type": "binary/octet-stream", + "content-range": "bytes 0-4/5", + "content-type": "application/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-e6096f6fd1ec\"", + "etag": "\"a-different-etag\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-amz-meta-empty": "" + "x-amz-request-id": "another-id", + "x-fixture-unknown": "ignored" }, "body": { "encoding": "base64", - "data": "MQ==" + "data": "aGVsbG8=" } } } @@ -129115,70 +170757,29 @@ "value": "ok" } }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-e6096f6fd1ec\"" - } - }, - { - "at": "/value/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/content_type", - "optional": false, - "rule": { - "is": "equal", - "value": "binary/octet-stream" - } - }, - { - "at": "/value/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/metadata/empty", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, { "at": "/value/body_base64", "optional": false, "rule": { "is": "equal", - "value": "MQ==" + "value": "aGVsbG8=" } } ], "refusal": null }, { - "id": "operations/s3-express/get-metadata-hyphen-name", + "id": "operations/s3-express/get-body-cut-short", "profile": "s3-express", "lane": "core", - "purpose": "get metadata hyphen name", + "purpose": "Report a body that ends before its Content-Length as an error, or resume it, but never return the short body", "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + "https://www.rfc-editor.org/rfc/rfc9112#section-8", + "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_client.cpp" ], + "origin": "transient", "call": { - "key": "object-tests/metadata/hyphen-name.txt", + "key": "object-tests/read/object.txt", "op": "get" }, "exchanges": [ @@ -129272,7 +170873,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/metadata/hyphen-name.txt" + "value": "/object-tests/read/object.txt" } }, { @@ -129319,14 +170920,14 @@ "date": { "from": "now" }, - "etag": "\"fixture-adae183ea4af\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-amz-meta-not-valid": "1" + "etag": "\"fixture-672b31e65569\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "base64", - "data": "MQ==" - } + "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + }, + "truncate_body_after": 15 } }, { @@ -129344,7 +170945,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/metadata/hyphen-name.txt" + "value": "/object-tests/read/object.txt" } }, { @@ -129395,100 +170996,23 @@ "response": { "status": 206, "headers": { - "content-range": "bytes 0-0/1", + "content-range": "bytes 0-29/30", "content-type": "binary/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-adae183ea4af\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-amz-meta-not-valid": "1" + "etag": "\"fixture-672b31e65569\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "base64", - "data": "MQ==" - } + "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + }, + "truncate_body_after": 15 } } ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-adae183ea4af\"" - } - }, - { - "at": "/value/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/content_type", - "optional": false, - "rule": { - "is": "equal", - "value": "binary/octet-stream" - } - }, - { - "at": "/value/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/metadata/not-valid", - "optional": false, - "rule": { - "is": "equal", - "value": "1" - } - }, - { - "at": "/value/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "MQ==" - } - } - ], - "refusal": null - }, - { - "id": "operations/s3-express/get-metadata-punctuation-name", - "profile": "s3-express", - "lane": "core", - "purpose": "Report a metadata name that holds any character of an HTTP token.", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "key": "object-tests/metadata/punctuation-name.txt", - "op": "get" - }, - "exchanges": [ { "alternatives": [ { @@ -129506,11 +171030,11 @@ "optional": false, "rule": { "is": "equal", - "value": "/" + "value": "/object-tests/read/object.txt" } }, { - "at": "/query/session", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", @@ -129526,44 +171050,43 @@ } }, { - "at": "/headers/authorization", + "at": "/headers/x-amz-s3session-token", "optional": false, "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + "is": "equal", + "value": "fixture-session-token" } }, { - "at": "/headers/x-amz-s3session-token", + "at": "/headers/authorization", "optional": false, "rule": { - "is": "absent" + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } } ], "allow_headers": [ + "content-type", "content-type" ], "allow_query": [], "response": { "status": 200, "headers": { - "content-type": "application/xml" + "content-type": "binary/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-672b31e65569\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" - }, - "body_time": { - "text": "SESSION_EXPIRATION", - "offset_seconds": 300 + "encoding": "base64", + "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" } } - } - ] - }, - { - "alternatives": [ + }, { "request": [ { @@ -129579,7 +171102,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/metadata/punctuation-name.txt" + "value": "/object-tests/read/object.txt" } }, { @@ -129590,6 +171113,14 @@ "value": "" } }, + { + "at": "/headers/range", + "optional": false, + "rule": { + "is": "matches", + "pattern": "bytes=0-[1-9][0-9]{2,}" + } + }, { "at": "/headers/host", "optional": false, @@ -129616,23 +171147,24 @@ } ], "allow_headers": [ + "content-type", "content-type" ], "allow_query": [], "response": { - "status": 200, + "status": 206, "headers": { + "content-range": "bytes 0-29/30", "content-type": "binary/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-adae183ea4af\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-amz-meta-1a!#$%&'*+.^_`|~b": "1" + "etag": "\"fixture-672b31e65569\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "base64", - "data": "MQ==" + "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" } } }, @@ -129651,7 +171183,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/metadata/punctuation-name.txt" + "value": "/object-tests/read/object.txt" } }, { @@ -129665,136 +171197,77 @@ { "at": "/headers/range", "optional": false, - "rule": { - "is": "matches", - "pattern": "bytes=0-[1-9][0-9]{2,}" - } - }, - { - "at": "/headers/host", - "optional": false, "rule": { "is": "equal", - "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + "value": "bytes=15-" } }, { - "at": "/headers/x-amz-s3session-token", + "at": "/headers/if-match", "optional": false, "rule": { "is": "equal", - "value": "fixture-session-token" - } - }, - { - "at": "/headers/authorization", - "optional": false, - "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + "value": "\"fixture-672b31e65569\"" } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { "status": 206, "headers": { - "content-range": "bytes 0-0/1", + "content-range": "bytes 15-29/30", "content-type": "binary/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-adae183ea4af\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-amz-meta-1a!#$%&'*+.^_`|~b": "1" + "etag": "\"fixture-672b31e65569\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "base64", - "data": "MQ==" + "data": "Y3QtdGVzdHMtb2JqZWN0" } } } - ] + ], + "optional": true } ], "expect": [ { "at": "/outcome", "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-adae183ea4af\"" - } - }, - { - "at": "/value/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/content_type", - "optional": false, - "rule": { - "is": "equal", - "value": "binary/octet-stream" - } - }, - { - "at": "/value/version", - "optional": true, "rule": { "is": "one_of", "values": [ - null, - "" + "error", + "ok" ] } }, { "at": "/value/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "MQ==" - } - }, - { - "at": "/value/metadata", - "optional": false, + "optional": true, "rule": { "is": "equal", - "value": { - "1a!#$%&'*+.^_`|~b": "1" - } + "value": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" } } ], "refusal": null }, { - "id": "operations/s3-express/get-metadata-non-ascii-value", + "id": "operations/s3-express/get-slow-down", "profile": "s3-express", "lane": "core", - "purpose": "A directory bucket returns an RFC 2047 encoded word as it was stored. A client that encodes on a write decodes it to é; one that keeps metadata to ASCII returns it as stored.", + "purpose": "Report a 503 SlowDown answer as an error, after at most 5 retries", "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + "https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html" ], + "origin": "transient", "call": { - "key": "object-tests/metadata/non-ascii.txt", + "key": "object-tests/read/object.txt", "op": "get" }, "exchanges": [ @@ -129888,7 +171361,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/metadata/non-ascii.txt" + "value": "/object-tests/read/object.txt" } }, { @@ -129929,20 +171402,18 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 503, "headers": { - "content-type": "binary/octet-stream", + "content-type": "application/xml", "date": { "from": "now" - }, - "etag": "\"fixture-adae183ea4af\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-amz-meta-value": "=?UTF-8?Q?caf=C3=A9?=" + } }, "body": { - "encoding": "base64", - "data": "MQ==" - } + "encoding": "utf8", + "data": "\nSlowDownPlease reduce your request rate.fixture" + }, + "framing": "chunked" } }, { @@ -129960,7 +171431,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/metadata/non-ascii.txt" + "value": "/object-tests/read/object.txt" } }, { @@ -130009,109 +171480,22 @@ ], "allow_query": [], "response": { - "status": 206, + "status": 503, "headers": { - "content-range": "bytes 0-0/1", - "content-type": "binary/octet-stream", + "content-type": "application/xml", "date": { "from": "now" - }, - "etag": "\"fixture-adae183ea4af\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-amz-meta-value": "=?UTF-8?Q?caf=C3=A9?=" + } }, "body": { - "encoding": "base64", - "data": "MQ==" - } + "encoding": "utf8", + "data": "\nSlowDownPlease reduce your request rate.fixture" + }, + "framing": "chunked" } } ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-adae183ea4af\"" - } - }, - { - "at": "/value/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } }, - { - "at": "/value/content_type", - "optional": false, - "rule": { - "is": "equal", - "value": "binary/octet-stream" - } - }, - { - "at": "/value/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "MQ==" - } - }, - { - "at": "/value/metadata", - "optional": false, - "rule": { - "is": "one_of", - "values": [ - { - "value": "café" - }, - { - "value": "=?UTF-8?Q?caf=C3=A9?=" - } - ] - } - } - ], - "refusal": null - }, - { - "id": "operations/s3-express/get-metadata-outside-latin-1", - "profile": "s3-express", - "lane": "core", - "purpose": "A directory bucket returns a base64 RFC 2047 encoded word as it was stored. A client that encodes on a write decodes it to 雪; one that keeps metadata to ASCII returns it as stored.", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "key": "object-tests/metadata/outside-latin-1.txt", - "op": "get" - }, - "exchanges": [ { "alternatives": [ { @@ -130129,11 +171513,11 @@ "optional": false, "rule": { "is": "equal", - "value": "/" + "value": "/object-tests/read/object.txt" } }, { - "at": "/query/session", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", @@ -130149,18 +171533,19 @@ } }, { - "at": "/headers/authorization", + "at": "/headers/x-amz-s3session-token", "optional": false, "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + "is": "equal", + "value": "fixture-session-token" } }, { - "at": "/headers/x-amz-s3session-token", + "at": "/headers/authorization", "optional": false, "rule": { - "is": "absent" + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } } ], @@ -130169,24 +171554,20 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 503, "headers": { - "content-type": "application/xml" + "content-type": "application/xml", + "date": { + "from": "now" + } }, "body": { "encoding": "utf8", - "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" + "data": "\nSlowDownPlease reduce your request rate.fixture" }, - "body_time": { - "text": "SESSION_EXPIRATION", - "offset_seconds": 300 - } + "framing": "chunked" } - } - ] - }, - { - "alternatives": [ + }, { "request": [ { @@ -130202,7 +171583,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/metadata/outside-latin-1.txt" + "value": "/object-tests/read/object.txt" } }, { @@ -130213,6 +171594,14 @@ "value": "" } }, + { + "at": "/headers/range", + "optional": false, + "rule": { + "is": "matches", + "pattern": "bytes=0-[1-9][0-9]{2,}" + } + }, { "at": "/headers/host", "optional": false, @@ -130243,22 +171632,25 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 503, "headers": { - "content-type": "binary/octet-stream", + "content-type": "application/xml", "date": { "from": "now" - }, - "etag": "\"fixture-adae183ea4af\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-amz-meta-value": "=?UTF-8?B?6Zuq?=" + } }, "body": { - "encoding": "base64", - "data": "MQ==" - } + "encoding": "utf8", + "data": "\nSlowDownPlease reduce your request rate.fixture" + }, + "framing": "chunked" } - }, + } + ], + "optional": true + }, + { + "alternatives": [ { "request": [ { @@ -130274,7 +171666,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/metadata/outside-latin-1.txt" + "value": "/object-tests/read/object.txt" } }, { @@ -130285,14 +171677,6 @@ "value": "" } }, - { - "at": "/headers/range", - "optional": false, - "rule": { - "is": "matches", - "pattern": "bytes=0-[1-9][0-9]{2,}" - } - }, { "at": "/headers/host", "optional": false, @@ -130323,111 +171707,20 @@ ], "allow_query": [], "response": { - "status": 206, + "status": 503, "headers": { - "content-range": "bytes 0-0/1", - "content-type": "binary/octet-stream", + "content-type": "application/xml", "date": { "from": "now" - }, - "etag": "\"fixture-adae183ea4af\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-amz-meta-value": "=?UTF-8?B?6Zuq?=" + } }, "body": { - "encoding": "base64", - "data": "MQ==" - } - } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-adae183ea4af\"" - } - }, - { - "at": "/value/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/content_type", - "optional": false, - "rule": { - "is": "equal", - "value": "binary/octet-stream" - } - }, - { - "at": "/value/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "MQ==" - } - }, - { - "at": "/value/metadata", - "optional": false, - "rule": { - "is": "one_of", - "values": [ - { - "value": "雪" - }, - { - "value": "=?UTF-8?B?6Zuq?=" + "encoding": "utf8", + "data": "\nSlowDownPlease reduce your request rate.fixture" + }, + "framing": "chunked" } - ] - } - } - ], - "refusal": null - }, - { - "id": "operations/s3-express/get-metadata-split-encoded-words", - "profile": "s3-express", - "lane": "core", - "purpose": "Decode a long metadata value that a directory bucket returns as one encoded word", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "key": "object-tests/metadata/split-encoded-words.txt", - "op": "get" - }, - "exchanges": [ - { - "alternatives": [ + }, { "request": [ { @@ -130443,17 +171736,25 @@ "optional": false, "rule": { "is": "equal", - "value": "/" + "value": "/object-tests/read/object.txt" } }, { - "at": "/query/session", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", "value": "" } }, + { + "at": "/headers/range", + "optional": false, + "rule": { + "is": "matches", + "pattern": "bytes=0-[1-9][0-9]{2,}" + } + }, { "at": "/headers/host", "optional": false, @@ -130463,18 +171764,19 @@ } }, { - "at": "/headers/authorization", + "at": "/headers/x-amz-s3session-token", "optional": false, "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + "is": "equal", + "value": "fixture-session-token" } }, { - "at": "/headers/x-amz-s3session-token", + "at": "/headers/authorization", "optional": false, "rule": { - "is": "absent" + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } } ], @@ -130483,21 +171785,22 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 503, "headers": { - "content-type": "application/xml" + "content-type": "application/xml", + "date": { + "from": "now" + } }, "body": { "encoding": "utf8", - "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" + "data": "\nSlowDownPlease reduce your request rate.fixture" }, - "body_time": { - "text": "SESSION_EXPIRATION", - "offset_seconds": 300 - } + "framing": "chunked" } } - ] + ], + "optional": true }, { "alternatives": [ @@ -130516,7 +171819,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/metadata/split-encoded-words.txt" + "value": "/object-tests/read/object.txt" } }, { @@ -130557,20 +171860,18 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 503, "headers": { - "content-type": "binary/octet-stream", + "content-type": "application/xml", "date": { "from": "now" - }, - "etag": "\"fixture-6c30b210f0a8\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-amz-meta-value": "=?UTF-8?B?6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq?=" + } }, "body": { - "encoding": "base64", - "data": "MQ==" - } + "encoding": "utf8", + "data": "\nSlowDownPlease reduce your request rate.fixture" + }, + "framing": "chunked" } }, { @@ -130588,7 +171889,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/metadata/split-encoded-words.txt" + "value": "/object-tests/read/object.txt" } }, { @@ -130637,104 +171938,23 @@ ], "allow_query": [], "response": { - "status": 206, + "status": 503, "headers": { - "content-range": "bytes 0-0/1", - "content-type": "binary/octet-stream", + "content-type": "application/xml", "date": { "from": "now" - }, - "etag": "\"fixture-6c30b210f0a8\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-amz-meta-value": "=?UTF-8?B?6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq6Zuq?=" + } }, "body": { - "encoding": "base64", - "data": "MQ==" - } + "encoding": "utf8", + "data": "\nSlowDownPlease reduce your request rate.fixture" + }, + "framing": "chunked" } } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-6c30b210f0a8\"" - } - }, - { - "at": "/value/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/content_type", - "optional": false, - "rule": { - "is": "equal", - "value": "binary/octet-stream" - } - }, - { - "at": "/value/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "MQ==" - } + ], + "optional": true }, - { - "at": "/value/metadata", - "optional": false, - "rule": { - "is": "equal", - "value": { - "value": "雪雪雪雪雪雪雪雪雪雪雪雪雪雪雪雪雪雪雪雪雪雪雪雪雪雪雪雪雪雪" - } - } - } - ], - "refusal": null - }, - { - "id": "operations/s3-express/get-metadata-malformed-encoded-word", - "profile": "s3-express", - "lane": "core", - "purpose": "Leave a value that only looks like an RFC 2047 encoded word as it is: =ZZ is no hexadecimal byte.", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "key": "object-tests/metadata/malformed-encoded-word.txt", - "op": "get" - }, - "exchanges": [ { "alternatives": [ { @@ -130752,11 +171972,11 @@ "optional": false, "rule": { "is": "equal", - "value": "/" + "value": "/object-tests/read/object.txt" } }, { - "at": "/query/session", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", @@ -130772,18 +171992,19 @@ } }, { - "at": "/headers/authorization", + "at": "/headers/x-amz-s3session-token", "optional": false, "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + "is": "equal", + "value": "fixture-session-token" } }, { - "at": "/headers/x-amz-s3session-token", + "at": "/headers/authorization", "optional": false, "rule": { - "is": "absent" + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } } ], @@ -130792,24 +172013,20 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 503, "headers": { - "content-type": "application/xml" + "content-type": "application/xml", + "date": { + "from": "now" + } }, "body": { "encoding": "utf8", - "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" + "data": "\nSlowDownPlease reduce your request rate.fixture" }, - "body_time": { - "text": "SESSION_EXPIRATION", - "offset_seconds": 300 - } + "framing": "chunked" } - } - ] - }, - { - "alternatives": [ + }, { "request": [ { @@ -130825,7 +172042,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/metadata/malformed-encoded-word.txt" + "value": "/object-tests/read/object.txt" } }, { @@ -130836,6 +172053,14 @@ "value": "" } }, + { + "at": "/headers/range", + "optional": false, + "rule": { + "is": "matches", + "pattern": "bytes=0-[1-9][0-9]{2,}" + } + }, { "at": "/headers/host", "optional": false, @@ -130866,20 +172091,93 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 503, "headers": { - "content-type": "binary/octet-stream", + "content-type": "application/xml", "date": { "from": "now" - }, - "etag": "\"fixture-adae183ea4af\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-amz-meta-value": "=?UTF-8?Q?caf=ZZ?=" + } }, "body": { - "encoding": "base64", - "data": "MQ==" + "encoding": "utf8", + "data": "\nSlowDownPlease reduce your request rate.fixture" + }, + "framing": "chunked" + } + } + ], + "optional": true + }, + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/object-tests/read/object.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/host", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-session-token" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + } } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 503, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + } + }, + "body": { + "encoding": "utf8", + "data": "\nSlowDownPlease reduce your request rate.fixture" + }, + "framing": "chunked" } }, { @@ -130897,7 +172195,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/metadata/malformed-encoded-word.txt" + "value": "/object-tests/read/object.txt" } }, { @@ -130946,24 +172244,22 @@ ], "allow_query": [], "response": { - "status": 206, + "status": 503, "headers": { - "content-range": "bytes 0-0/1", - "content-type": "binary/octet-stream", + "content-type": "application/xml", "date": { "from": "now" - }, - "etag": "\"fixture-adae183ea4af\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-amz-meta-value": "=?UTF-8?Q?caf=ZZ?=" + } }, "body": { - "encoding": "base64", - "data": "MQ==" - } + "encoding": "utf8", + "data": "\nSlowDownPlease reduce your request rate.fixture" + }, + "framing": "chunked" } } - ] + ], + "optional": true } ], "expect": [ @@ -130972,75 +172268,39 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-adae183ea4af\"" - } - }, - { - "at": "/value/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/content_type", - "optional": false, - "rule": { - "is": "equal", - "value": "binary/octet-stream" - } - }, - { - "at": "/value/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "value": "error" } }, { - "at": "/value/body_base64", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "MQ==" + "value": 503 } }, { - "at": "/value/metadata", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": { - "value": "=?UTF-8?Q?caf=ZZ?=" - } + "value": "SlowDown" } } ], "refusal": null }, { - "id": "operations/s3-express/get-metadata-replaced", + "id": "operations/s3-express/get-if-unmodified-since-past", "profile": "s3-express", "lane": "core", - "purpose": "get metadata replaced", + "purpose": "Refuse a read with 412 when the object changed after If-Unmodified-Since", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/metadata/replaced.txt", + "if_unmodified_since": "Sat, 01 Jan 2000 00:00:00 GMT", + "key": "object-tests/read/object.txt", "op": "get" }, "exchanges": [ @@ -131134,7 +172394,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/metadata/replaced.txt" + "value": "/object-tests/read/object.txt" } }, { @@ -131168,6 +172428,14 @@ "is": "matches", "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } + }, + { + "at": "/headers/if-unmodified-since", + "optional": false, + "rule": { + "is": "equal", + "value": "Sat, 01 Jan 2000 00:00:00 GMT" + } } ], "allow_headers": [ @@ -131175,19 +172443,18 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 412, "headers": { - "content-type": "binary/octet-stream", + "content-type": "application/xml", "date": { "from": "now" - }, - "etag": "\"fixture-8ff37996a1a3\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { - "encoding": "base64", - "data": "Mg==" - } + "encoding": "utf8", + "data": "\nPreconditionFailedFixture error" + }, + "framing": "chunked" } }, { @@ -131205,7 +172472,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/metadata/replaced.txt" + "value": "/object-tests/read/object.txt" } }, { @@ -131247,6 +172514,14 @@ "is": "matches", "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } + }, + { + "at": "/headers/if-unmodified-since", + "optional": false, + "rule": { + "is": "equal", + "value": "Sat, 01 Jan 2000 00:00:00 GMT" + } } ], "allow_headers": [ @@ -131254,20 +172529,18 @@ ], "allow_query": [], "response": { - "status": 206, + "status": 412, "headers": { - "content-range": "bytes 0-0/1", - "content-type": "binary/octet-stream", + "content-type": "application/xml", "date": { "from": "now" - }, - "etag": "\"fixture-8ff37996a1a3\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { - "encoding": "base64", - "data": "Mg==" - } + "encoding": "utf8", + "data": "\nPreconditionFailedFixture error" + }, + "framing": "chunked" } } ] @@ -131279,65 +172552,39 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-8ff37996a1a3\"" - } - }, - { - "at": "/value/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 + "value": "error" } }, { - "at": "/value/content_type", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "binary/octet-stream" - } - }, - { - "at": "/value/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "value": 412 } }, { - "at": "/value/body_base64", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": "Mg==" + "value": "PreconditionFailed" } } ], "refusal": null }, { - "id": "operations/s3-express/get-metadata", + "id": "operations/s3-express/get-if-modified-since-future", "profile": "s3-express", "lane": "core", - "purpose": "get metadata", + "purpose": "Read an object when If-Modified-Since names a future date", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/metadata/object.txt", + "if_modified_since": "Fri, 01 Jan 2100 00:00:00 GMT", + "key": "object-tests/read/object.txt", "op": "get" }, "exchanges": [ @@ -131431,7 +172678,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/metadata/object.txt" + "value": "/object-tests/read/object.txt" } }, { @@ -131465,6 +172712,14 @@ "is": "matches", "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } + }, + { + "at": "/headers/if-modified-since", + "optional": false, + "rule": { + "is": "equal", + "value": "Fri, 01 Jan 2100 00:00:00 GMT" + } } ], "allow_headers": [ @@ -131478,14 +172733,12 @@ "date": { "from": "now" }, - "etag": "\"fixture-ee657e36119d\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-amz-meta-name": "value", - "x-amz-meta-second": "2" + "etag": "\"fixture-672b31e65569\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "base64", - "data": "MQ==" + "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" } } }, @@ -131504,7 +172757,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/metadata/object.txt" + "value": "/object-tests/read/object.txt" } }, { @@ -131546,6 +172799,14 @@ "is": "matches", "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } + }, + { + "at": "/headers/if-modified-since", + "optional": false, + "rule": { + "is": "equal", + "value": "Fri, 01 Jan 2100 00:00:00 GMT" + } } ], "allow_headers": [ @@ -131555,19 +172816,17 @@ "response": { "status": 206, "headers": { - "content-range": "bytes 0-0/1", + "content-range": "bytes 0-29/30", "content-type": "binary/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-ee657e36119d\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-amz-meta-name": "value", - "x-amz-meta-second": "2" + "etag": "\"fixture-672b31e65569\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "base64", - "data": "MQ==" + "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" } } } @@ -131588,7 +172847,7 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-ee657e36119d\"" + "value": "\"fixture-672b31e65569\"" } }, { @@ -131596,7 +172855,7 @@ "optional": false, "rule": { "is": "equal", - "value": 1 + "value": 30 } }, { @@ -131618,43 +172877,28 @@ ] } }, - { - "at": "/value/metadata/name", - "optional": false, - "rule": { - "is": "equal", - "value": "value" - } - }, - { - "at": "/value/metadata/second", - "optional": false, - "rule": { - "is": "equal", - "value": "2" - } - }, { "at": "/value/body_base64", "optional": false, "rule": { "is": "equal", - "value": "MQ==" + "value": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" } } ], "refusal": null }, { - "id": "operations/s3-express/get-metadata-ignores-unknown-headers", + "id": "operations/s3-express/get-if-modified-since-past", "profile": "s3-express", "lane": "core", - "purpose": "Surface user metadata; unknown headers must not become metadata.", + "purpose": "Read an object modified since a past date", "sources": [ - "https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object", + "if_modified_since": "Sat, 01 Jan 2000 00:00:00 GMT", + "key": "object-tests/read/object.txt", "op": "get" }, "exchanges": [ @@ -131748,7 +172992,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object" + "value": "/object-tests/read/object.txt" } }, { @@ -131759,18 +173003,6 @@ "value": "" } }, - { - "at": "/headers/content-type", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - "application/xml", - "application/octet-stream", - "binary/octet-stream" - ] - } - }, { "at": "/headers/host", "optional": false, @@ -131794,26 +173026,33 @@ "is": "matches", "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } + }, + { + "at": "/headers/if-modified-since", + "optional": false, + "rule": { + "is": "equal", + "value": "Sat, 01 Jan 2000 00:00:00 GMT" + } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { "status": 200, "headers": { - "content-type": "application/octet-stream", + "content-type": "binary/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-etag\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-amz-meta-author": "Ada", - "x-amz-request-id": "fixture-request-id", - "x-unrelated": "not metadata" + "etag": "\"fixture-672b31e65569\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "base64", - "data": "aGVsbG8=" + "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" } } }, @@ -131832,7 +173071,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object" + "value": "/object-tests/read/object.txt" } }, { @@ -131843,18 +173082,6 @@ "value": "" } }, - { - "at": "/headers/content-type", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - "application/xml", - "application/octet-stream", - "binary/octet-stream" - ] - } - }, { "at": "/headers/range", "optional": false, @@ -131886,27 +173113,34 @@ "is": "matches", "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } + }, + { + "at": "/headers/if-modified-since", + "optional": false, + "rule": { + "is": "equal", + "value": "Sat, 01 Jan 2000 00:00:00 GMT" + } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { "status": 206, "headers": { - "content-range": "bytes 0-4/5", - "content-type": "application/octet-stream", + "content-range": "bytes 0-29/30", + "content-type": "binary/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-etag\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-amz-meta-author": "Ada", - "x-amz-request-id": "fixture-request-id", - "x-unrelated": "not metadata" + "etag": "\"fixture-672b31e65569\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "base64", - "data": "aGVsbG8=" + "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" } } } @@ -131923,36 +173157,62 @@ } }, { - "at": "/value/body_base64", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": "aGVsbG8=" + "value": "\"fixture-672b31e65569\"" } }, { - "at": "/value/metadata", + "at": "/value/size", "optional": false, "rule": { "is": "equal", - "value": { - "author": "Ada" - } + "value": 30 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "binary/octet-stream" + } + }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" } } ], "refusal": null }, { - "id": "operations/s3-express/get-missing", + "id": "operations/s3-express/get-if-modified-since-unchanged", "profile": "s3-express", "lane": "core", - "purpose": "get missing", + "purpose": "Report an object not changed since the If-Modified-Since date as 304 Not Modified, not as an error of the service or an empty object", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/read/absent.txt", + "if_modified_since": "Mon, 01 Jan 2024 00:00:00 GMT", + "key": "object-tests/read/object.txt", "op": "get" }, "exchanges": [ @@ -132046,7 +173306,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/read/absent.txt" + "value": "/object-tests/read/object.txt" } }, { @@ -132080,6 +173340,14 @@ "is": "matches", "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } + }, + { + "at": "/headers/if-modified-since", + "optional": false, + "rule": { + "is": "equal", + "value": "Mon, 01 Jan 2024 00:00:00 GMT" + } } ], "allow_headers": [ @@ -132087,18 +173355,17 @@ ], "allow_query": [], "response": { - "status": 404, + "status": 304, "headers": { - "content-type": "application/xml", "date": { "from": "now" - } + }, + "etag": "\"fixture-ad03f2ab332a\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nNoSuchKeyFixture error" - }, - "framing": "chunked" + "encoding": "empty" + } } }, { @@ -132116,7 +173383,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/read/absent.txt" + "value": "/object-tests/read/object.txt" } }, { @@ -132158,6 +173425,14 @@ "is": "matches", "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } + }, + { + "at": "/headers/if-modified-since", + "optional": false, + "rule": { + "is": "equal", + "value": "Mon, 01 Jan 2024 00:00:00 GMT" + } } ], "allow_headers": [ @@ -132165,18 +173440,17 @@ ], "allow_query": [], "response": { - "status": 404, + "status": 304, "headers": { - "content-type": "application/xml", "date": { "from": "now" - } + }, + "etag": "\"fixture-ad03f2ab332a\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nNoSuchKeyFixture error" - }, - "framing": "chunked" + "encoding": "empty" + } } } ] @@ -132196,30 +173470,22 @@ "optional": false, "rule": { "is": "equal", - "value": 404 - } - }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "equal", - "value": "NoSuchKey" + "value": 304 } } ], "refusal": null }, { - "id": "operations/s3-express/get-not-modified", + "id": "operations/s3-express/get-if-modified-since-invalid", "profile": "s3-express", "lane": "core", - "purpose": "get not modified", + "purpose": "Read an object when If-Modified-Since is not an HTTP date, which S3 ignores. A client may refuse the date instead", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "if_none_match": "\"fixture-672b31e65569\"", + "if_modified_since": "not a date", "key": "object-tests/read/object.txt", "op": "get" }, @@ -132325,14 +173591,6 @@ "value": "" } }, - { - "at": "/headers/if-none-match", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-672b31e65569\"" - } - }, { "at": "/headers/host", "optional": false, @@ -132356,6 +173614,14 @@ "is": "matches", "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } + }, + { + "at": "/headers/if-modified-since", + "optional": false, + "rule": { + "is": "equal", + "value": "not a date" + } } ], "allow_headers": [ @@ -132363,16 +173629,18 @@ ], "allow_query": [], "response": { - "status": 304, + "status": 200, "headers": { + "content-type": "binary/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-672b31e65569\"" + "etag": "\"fixture-672b31e65569\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "base64", - "data": "" + "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" } } }, @@ -132402,14 +173670,6 @@ "value": "" } }, - { - "at": "/headers/if-none-match", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-672b31e65569\"" - } - }, { "at": "/headers/range", "optional": false, @@ -132441,6 +173701,14 @@ "is": "matches", "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } + }, + { + "at": "/headers/if-modified-since", + "optional": false, + "rule": { + "is": "equal", + "value": "not a date" + } } ], "allow_headers": [ @@ -132448,16 +173716,19 @@ ], "allow_query": [], "response": { - "status": 304, + "status": 206, "headers": { + "content-range": "bytes 0-29/30", + "content-type": "binary/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-672b31e65569\"" + "etag": "\"fixture-672b31e65569\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "base64", - "data": "" + "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" } } } @@ -132470,30 +173741,90 @@ "optional": false, "rule": { "is": "equal", - "value": "error" + "value": "ok" } }, { - "at": "/status", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": 304 + "value": "\"fixture-672b31e65569\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 30 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "binary/octet-stream" + } + }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" } } ], - "refusal": null + "refusal": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "refused" + } + }, + { + "at": "/kind", + "optional": false, + "rule": { + "is": "matches", + "pattern": ".+" + } + }, + { + "at": "/parameter", + "optional": false, + "rule": { + "is": "equal", + "value": "if_modified_since" + } + } + ], + "decline_permitted": true }, { - "id": "operations/s3-express/get-precondition-failed", + "id": "operations/s3-express/get-content-properties", "profile": "s3-express", "lane": "core", - "purpose": "get precondition failed", + "purpose": "Return the stored content properties from a GET", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "if_match": "\"fixture-db71b2c0257c\"", "key": "object-tests/read/object.txt", "op": "get" }, @@ -132557,11 +173888,14 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml" + "cache-control": "max-age=3600", + "content-disposition": "attachment; filename=\"report.txt\"", + "content-language": "nl-NL", + "content-type": "text/plain; charset=utf-8" }, "body": { "encoding": "utf8", - "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" + "data": "fixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" }, "body_time": { "text": "SESSION_EXPIRATION", @@ -132599,14 +173933,6 @@ "value": "" } }, - { - "at": "/headers/if-match", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-db71b2c0257c\"" - } - }, { "at": "/headers/host", "optional": false, @@ -132637,18 +173963,22 @@ ], "allow_query": [], "response": { - "status": 412, + "status": 200, "headers": { - "content-type": "application/xml", + "cache-control": "max-age=3600", + "content-disposition": "attachment; filename=\"report.txt\"", + "content-language": "nl-NL", + "content-type": "text/plain; charset=utf-8", "date": { "from": "now" - } + }, + "etag": "\"fixture-672b31e65569\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nPreconditionFailedFixture error" - }, - "framing": "chunked" + "encoding": "base64", + "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + } } }, { @@ -132677,14 +174007,6 @@ "value": "" } }, - { - "at": "/headers/if-match", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-db71b2c0257c\"" - } - }, { "at": "/headers/range", "optional": false, @@ -132723,18 +174045,23 @@ ], "allow_query": [], "response": { - "status": 412, + "status": 206, "headers": { - "content-type": "application/xml", + "cache-control": "max-age=3600", + "content-disposition": "attachment; filename=\"report.txt\"", + "content-language": "nl-NL", + "content-range": "bytes 0-29/30", + "content-type": "text/plain; charset=utf-8", "date": { "from": "now" - } + }, + "etag": "\"fixture-672b31e65569\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nPreconditionFailedFixture error" - }, - "framing": "chunked" + "encoding": "base64", + "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + } } } ] @@ -132746,43 +174073,90 @@ "optional": false, "rule": { "is": "equal", - "value": "error" + "value": "ok" } }, { - "at": "/status", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": 412 + "value": "\"fixture-672b31e65569\"" } }, { - "at": "/code", + "at": "/value/size", "optional": false, "rule": { "is": "equal", - "value": "PreconditionFailed" + "value": 30 + } + }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "text/plain; charset=utf-8" + } + }, + { + "at": "/value/content_language", + "optional": false, + "rule": { + "is": "equal", + "value": "nl-NL" + } + }, + { + "at": "/value/content_disposition", + "optional": false, + "rule": { + "is": "equal", + "value": "attachment; filename=\"report.txt\"" + } + }, + { + "at": "/value/cache_control", + "optional": false, + "rule": { + "is": "equal", + "value": "max-age=3600" } } ], "refusal": null }, { - "id": "operations/s3-express/get-range-inverted", + "id": "operations/s3-express/head-committed", "profile": "s3-express", "lane": "core", - "purpose": "get range inverted", + "purpose": "head committed", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/read/object.txt", - "op": "get", - "range": { - "end": 2, - "start": 6 - } + "key": "object-tests/multipart/object.bin", + "op": "head" }, "exchanges": [ { @@ -132867,7 +174241,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "HEAD" } }, { @@ -132875,7 +174249,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/read/object.txt" + "value": "/object-tests/multipart/object.bin" } }, { @@ -132886,14 +174260,6 @@ "value": "" } }, - { - "at": "/headers/range", - "optional": false, - "rule": { - "is": "equal", - "value": "bytes=6-1" - } - }, { "at": "/headers/host", "optional": false, @@ -132926,16 +174292,17 @@ "response": { "status": 200, "headers": { + "content-length": "5242886", "content-type": "binary/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-672b31e65569\"", + "etag": "\"fixture-ec4f3b9bcac2\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "base64", - "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + "data": "" } } } @@ -132956,7 +174323,7 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-672b31e65569\"" + "value": "\"fixture-ec4f3b9bcac2\"" } }, { @@ -132964,7 +174331,7 @@ "optional": false, "rule": { "is": "equal", - "value": 30 + "value": 5242886 } }, { @@ -132985,58 +174352,21 @@ "" ] } - }, - { - "at": "/value/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" - } } ], - "refusal": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "refused" - } - }, - { - "at": "/kind", - "optional": false, - "rule": { - "is": "matches", - "pattern": ".+" - } - }, - { - "at": "/parameter", - "optional": false, - "rule": { - "is": "equal", - "value": "range" - } - } - ], - "decline_permitted": true + "refusal": null }, { - "id": "operations/s3-express/get-range-not-satisfiable", + "id": "operations/s3-express/head-metadata", "profile": "s3-express", "lane": "core", - "purpose": "get range not satisfiable", + "purpose": "head metadata", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/read/object.txt", - "op": "get", - "range": { - "start": 40 - } + "key": "object-tests/metadata/object.txt", + "op": "head" }, "exchanges": [ { @@ -133121,7 +174451,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "HEAD" } }, { @@ -133129,7 +174459,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/read/object.txt" + "value": "/object-tests/metadata/object.txt" } }, { @@ -133140,14 +174470,6 @@ "value": "" } }, - { - "at": "/headers/range", - "optional": false, - "rule": { - "is": "equal", - "value": "bytes=40-" - } - }, { "at": "/headers/host", "optional": false, @@ -133178,96 +174500,22 @@ ], "allow_query": [], "response": { - "status": 416, + "status": 200, "headers": { - "content-type": "application/xml", + "content-length": "1", + "content-type": "binary/octet-stream", "date": { "from": "now" - } + }, + "etag": "\"fixture-ee657e36119d\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-amz-meta-name": "value", + "x-amz-meta-second": "2" }, "body": { - "encoding": "utf8", - "data": "\nInvalidRangeFixture error" - }, - "framing": "chunked" - } - }, - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/object-tests/read/object.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/headers/range", - "optional": false, - "rule": { - "is": "matches", - "pattern": "bytes=40-[1-9][0-9]{2,}" - } - }, - { - "at": "/headers/host", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" - } - }, - { - "at": "/headers/x-amz-s3session-token", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-session-token" - } - }, - { - "at": "/headers/authorization", - "optional": false, - "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" - } + "encoding": "base64", + "data": "" } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 416, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - } - }, - "body": { - "encoding": "utf8", - "data": "\nInvalidRangeFixture error" - }, - "framing": "chunked" } } ] @@ -133279,43 +174527,74 @@ "optional": false, "rule": { "is": "equal", - "value": "error" + "value": "ok" } }, { - "at": "/status", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": 416 + "value": "\"fixture-ee657e36119d\"" } }, { - "at": "/code", + "at": "/value/size", "optional": false, "rule": { "is": "equal", - "value": "InvalidRange" + "value": 1 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "binary/octet-stream" + } + }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/metadata/name", + "optional": false, + "rule": { + "is": "equal", + "value": "value" + } + }, + { + "at": "/value/metadata/second", + "optional": false, + "rule": { + "is": "equal", + "value": "2" } } ], "refusal": null }, { - "id": "operations/s3-express/get-range-past-the-end", + "id": "operations/s3-express/head-missing", "profile": "s3-express", "lane": "core", - "purpose": "get range past the end", + "purpose": "Report a HEAD answered 404 as not_found or missing. Its answer has no body, so it cannot say whether the object or the bucket is absent", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/read/object.txt", - "op": "get", - "range": { - "end": 64, - "start": 28 - } + "key": "object-tests/read/absent.txt", + "op": "head" }, "exchanges": [ { @@ -133400,7 +174679,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "HEAD" } }, { @@ -133408,7 +174687,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/read/object.txt" + "value": "/object-tests/read/absent.txt" } }, { @@ -133419,14 +174698,6 @@ "value": "" } }, - { - "at": "/headers/range", - "optional": false, - "rule": { - "is": "equal", - "value": "bytes=28-63" - } - }, { "at": "/headers/host", "optional": false, @@ -133457,19 +174728,16 @@ ], "allow_query": [], "response": { - "status": 206, + "status": 404, "headers": { - "content-range": "bytes 28-29/30", - "content-type": "binary/octet-stream", + "content-type": "application/xml", "date": { "from": "now" - }, - "etag": "\"fixture-672b31e65569\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { "encoding": "base64", - "data": "Y3Q=" + "data": "" } } } @@ -133482,70 +174750,42 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-672b31e65569\"" + "value": "error" } }, { - "at": "/value/size", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": 2 + "value": 404 } }, { - "at": "/value/content_type", + "at": "/kind", "optional": false, - "rule": { - "is": "equal", - "value": "binary/octet-stream" - } - }, - { - "at": "/value/version", - "optional": true, "rule": { "is": "one_of", "values": [ - null, - "" + "not_found", + "missing" ] } - }, - { - "at": "/value/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "Y3Q=" - } } ], "refusal": null }, { - "id": "operations/s3-express/get-range-single-byte", + "id": "operations/s3-express/head", "profile": "s3-express", "lane": "core", - "purpose": "get range single byte", + "purpose": "head", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { "key": "object-tests/read/object.txt", - "op": "get", - "range": { - "end": 1, - "start": 0 - } + "op": "head" }, "exchanges": [ { @@ -133630,7 +174870,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "HEAD" } }, { @@ -133649,14 +174889,6 @@ "value": "" } }, - { - "at": "/headers/range", - "optional": false, - "rule": { - "is": "equal", - "value": "bytes=0-0" - } - }, { "at": "/headers/host", "optional": false, @@ -133687,9 +174919,9 @@ ], "allow_query": [], "response": { - "status": 206, + "status": 200, "headers": { - "content-range": "bytes 0-0/30", + "content-length": "30", "content-type": "binary/octet-stream", "date": { "from": "now" @@ -133699,7 +174931,7 @@ }, "body": { "encoding": "base64", - "data": "MA==" + "data": "" } } } @@ -133728,7 +174960,7 @@ "optional": false, "rule": { "is": "equal", - "value": 1 + "value": 30 } }, { @@ -133749,33 +174981,21 @@ "" ] } - }, - { - "at": "/value/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "MA==" - } } ], "refusal": null }, { - "id": "operations/s3-express/get-range", + "id": "operations/s3-express/head-content-properties", "profile": "s3-express", "lane": "core", - "purpose": "get range", + "purpose": "Return the stored content properties from a HEAD", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { "key": "object-tests/read/object.txt", - "op": "get", - "range": { - "end": 6, - "start": 2 - } + "op": "head" }, "exchanges": [ { @@ -133837,11 +175057,14 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml" + "cache-control": "max-age=3600", + "content-disposition": "attachment; filename=\"report.txt\"", + "content-language": "nl-NL", + "content-type": "text/plain; charset=utf-8" }, "body": { "encoding": "utf8", - "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" + "data": "fixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" }, "body_time": { "text": "SESSION_EXPIRATION", @@ -133860,7 +175083,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "HEAD" } }, { @@ -133879,14 +175102,6 @@ "value": "" } }, - { - "at": "/headers/range", - "optional": false, - "rule": { - "is": "equal", - "value": "bytes=2-5" - } - }, { "at": "/headers/host", "optional": false, @@ -133917,10 +175132,13 @@ ], "allow_query": [], "response": { - "status": 206, + "status": 200, "headers": { - "content-range": "bytes 2-5/30", - "content-type": "binary/octet-stream", + "cache-control": "max-age=3600", + "content-disposition": "attachment; filename=\"report.txt\"", + "content-language": "nl-NL", + "content-length": "30", + "content-type": "text/plain; charset=utf-8", "date": { "from": "now" }, @@ -133929,7 +175147,7 @@ }, "body": { "encoding": "base64", - "data": "MjM0NQ==" + "data": "" } } } @@ -133958,15 +175176,7 @@ "optional": false, "rule": { "is": "equal", - "value": 4 - } - }, - { - "at": "/value/content_type", - "optional": false, - "rule": { - "is": "equal", - "value": "binary/octet-stream" + "value": 30 } }, { @@ -133981,30 +175191,52 @@ } }, { - "at": "/value/body_base64", + "at": "/value/content_type", "optional": false, "rule": { "is": "equal", - "value": "MjM0NQ==" + "value": "text/plain; charset=utf-8" + } + }, + { + "at": "/value/content_language", + "optional": false, + "rule": { + "is": "equal", + "value": "nl-NL" + } + }, + { + "at": "/value/content_disposition", + "optional": false, + "rule": { + "is": "equal", + "value": "attachment; filename=\"report.txt\"" + } + }, + { + "at": "/value/cache_control", + "optional": false, + "rule": { + "is": "equal", + "value": "max-age=3600" } } ], "refusal": null }, { - "id": "operations/s3-express/get-range-open", + "id": "operations/s3-express/head-if-unmodified-since-past", "profile": "s3-express", "lane": "core", - "purpose": "get range open", + "purpose": "Refuse a HEAD with 412 when the object changed after If-Unmodified-Since", "sources": [ - "https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object", - "op": "get", - "range": { - "start": 3 - } + "if_unmodified_since": "Sat, 01 Jan 2000 00:00:00 GMT", + "key": "object-tests/read/object.txt", + "op": "head" }, "exchanges": [ { @@ -134089,7 +175321,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "HEAD" } }, { @@ -134097,7 +175329,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object" + "value": "/object-tests/read/object.txt" } }, { @@ -134108,26 +175340,6 @@ "value": "" } }, - { - "at": "/headers/range", - "optional": false, - "rule": { - "is": "equal", - "value": "bytes=3-" - } - }, - { - "at": "/headers/content-type", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - "application/xml", - "application/octet-stream", - "binary/octet-stream" - ] - } - }, { "at": "/headers/host", "optional": false, @@ -134151,116 +175363,29 @@ "is": "matches", "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } - } - ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 206, - "headers": { - "content-range": "bytes 3-4/5", - "content-type": "application/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-etag\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-amz-request-id": "fixture-request-id" - }, - "body": { - "encoding": "base64", - "data": "bG8=" - } - } - }, - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } }, { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/object" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/headers/content-type", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - "application/xml", - "application/octet-stream", - "binary/octet-stream" - ] - } - }, - { - "at": "/headers/range", - "optional": false, - "rule": { - "is": "matches", - "pattern": "bytes=3-[1-9][0-9]{2,}" - } - }, - { - "at": "/headers/host", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" - } - }, - { - "at": "/headers/x-amz-s3session-token", + "at": "/headers/if-unmodified-since", "optional": false, "rule": { "is": "equal", - "value": "fixture-session-token" - } - }, - { - "at": "/headers/authorization", - "optional": false, - "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + "value": "Sat, 01 Jan 2000 00:00:00 GMT" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 206, + "status": 412, "headers": { - "content-range": "bytes 3-4/5", - "content-type": "application/octet-stream", "date": { "from": "now" - }, - "etag": "\"fixture-etag\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-amz-request-id": "fixture-request-id" + } }, "body": { - "encoding": "base64", - "data": "bG8=" + "encoding": "empty" } } } @@ -134273,31 +175398,31 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "error" } }, { - "at": "/value/body_base64", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "bG8=" + "value": 412 } } ], "refusal": null }, { - "id": "operations/s3-express/get-replaced", + "id": "operations/s3-express/head-key-question", "profile": "s3-express", "lane": "core", - "purpose": "get replaced", + "purpose": "head, with the key \"question?mark.txt\"", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/multipart/replaced.bin", - "op": "get" + "key": "object-tests/keys/question?mark.txt", + "op": "head" }, "exchanges": [ { @@ -134382,7 +175507,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "HEAD" } }, { @@ -134390,7 +175515,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/multipart/replaced.bin" + "value": "/object-tests/keys/question?mark.txt" } }, { @@ -134433,96 +175558,17 @@ "response": { "status": 200, "headers": { + "content-length": "30", "content-type": "binary/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-eef5a071f9f6\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" - }, - "body": { - "encoding": "base64", - "data": "Yg==" - } - } - }, - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/object-tests/multipart/replaced.bin" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/headers/range", - "optional": false, - "rule": { - "is": "matches", - "pattern": "bytes=0-[1-9][0-9]{2,}" - } - }, - { - "at": "/headers/host", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" - } - }, - { - "at": "/headers/x-amz-s3session-token", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-session-token" - } - }, - { - "at": "/headers/authorization", - "optional": false, - "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" - } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 206, - "headers": { - "content-range": "bytes 0-0/1", - "content-type": "binary/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-eef5a071f9f6\"", + "etag": "\"fixture-672b31e65569\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "base64", - "data": "Yg==" + "data": "" } } } @@ -134543,7 +175589,7 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-eef5a071f9f6\"" + "value": "\"fixture-672b31e65569\"" } }, { @@ -134551,7 +175597,7 @@ "optional": false, "rule": { "is": "equal", - "value": 1 + "value": 30 } }, { @@ -134572,29 +175618,21 @@ "" ] } - }, - { - "at": "/value/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "Yg==" - } } ], "refusal": null }, { - "id": "operations/s3-express/get-single-part", + "id": "operations/s3-express/head-key-hash", "profile": "s3-express", "lane": "core", - "purpose": "get single part", + "purpose": "head, with the key \"hash#tag.txt\"", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/multipart/single.bin", - "op": "get" + "key": "object-tests/keys/hash#tag.txt", + "op": "head" }, "exchanges": [ { @@ -134679,7 +175717,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "HEAD" } }, { @@ -134687,7 +175725,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/multipart/single.bin" + "value": "/object-tests/keys/hash#tag.txt" } }, { @@ -134730,96 +175768,17 @@ "response": { "status": 200, "headers": { + "content-length": "30", "content-type": "binary/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-0841fa5d9c5c\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" - }, - "body": { - "encoding": "base64", - "data": "b25seQ==" - } - } - }, - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/object-tests/multipart/single.bin" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/headers/range", - "optional": false, - "rule": { - "is": "matches", - "pattern": "bytes=0-[1-9][0-9]{2,}" - } - }, - { - "at": "/headers/host", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" - } - }, - { - "at": "/headers/x-amz-s3session-token", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-session-token" - } - }, - { - "at": "/headers/authorization", - "optional": false, - "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" - } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 206, - "headers": { - "content-range": "bytes 0-3/4", - "content-type": "binary/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-0841fa5d9c5c\"", + "etag": "\"fixture-672b31e65569\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "base64", - "data": "b25seQ==" + "data": "" } } } @@ -134840,7 +175799,7 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-0841fa5d9c5c\"" + "value": "\"fixture-672b31e65569\"" } }, { @@ -134848,7 +175807,7 @@ "optional": false, "rule": { "is": "equal", - "value": 4 + "value": 30 } }, { @@ -134869,32 +175828,21 @@ "" ] } - }, - { - "at": "/value/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "b25seQ==" - } } ], "refusal": null }, { - "id": "operations/s3-express/get-suffix-longer-than-object", + "id": "operations/s3-express/head-key-percent", "profile": "s3-express", "lane": "core", - "purpose": "get suffix longer than object", + "purpose": "head, with the key \"percent%20.txt\"", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/read/object.txt", - "op": "get", - "range": { - "suffix": 100 - } + "key": "object-tests/keys/percent%20.txt", + "op": "head" }, "exchanges": [ { @@ -134979,87 +175927,15 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/object-tests/read/object.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/headers/range", - "optional": false, - "rule": { - "is": "equal", - "value": "bytes=-100" - } - }, - { - "at": "/headers/host", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" - } - }, - { - "at": "/headers/x-amz-s3session-token", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-session-token" - } - }, - { - "at": "/headers/authorization", - "optional": false, - "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + "value": "HEAD" } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 206, - "headers": { - "content-range": "bytes 0-29/30", - "content-type": "binary/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-672b31e65569\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, - "body": { - "encoding": "base64", - "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" - } - } - }, - { - "request": [ { "at": "/path", "optional": false, "rule": { "is": "equal", - "value": "/object-tests/read/object.txt" + "value": "/object-tests/keys/percent%20.txt" } }, { @@ -135070,14 +175946,6 @@ "value": "" } }, - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "HEAD" - } - }, { "at": "/headers/host", "optional": false, @@ -135101,108 +175969,6 @@ "is": "matches", "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } - }, - { - "at": "/headers/range", - "optional": false, - "rule": { - "is": "equal", - "value": "bytes=-100" - } - } - ], - "then": [ - { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/object-tests/read/object.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/headers/range", - "optional": false, - "rule": { - "is": "equal", - "value": "bytes=0-29" - } - }, - { - "at": "/headers/if-match", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-672b31e65569\"" - } - }, - { - "at": "/headers/host", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" - } - }, - { - "at": "/headers/x-amz-s3session-token", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-session-token" - } - }, - { - "at": "/headers/authorization", - "optional": false, - "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" - } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 206, - "headers": { - "content-range": "bytes 0-29/30", - "content-type": "binary/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-672b31e65569\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" - }, - "body": { - "encoding": "base64", - "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" - } - } - } - ] } ], "allow_headers": [ @@ -135210,10 +175976,9 @@ ], "allow_query": [], "response": { - "status": 206, + "status": 200, "headers": { "content-length": "30", - "content-range": "bytes 0-29/30", "content-type": "binary/octet-stream", "date": { "from": "now" @@ -135222,7 +175987,8 @@ "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "empty" + "encoding": "base64", + "data": "" } } } @@ -135272,32 +176038,21 @@ "" ] } - }, - { - "at": "/value/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" - } } ], "refusal": null }, { - "id": "operations/s3-express/get-suffix", + "id": "operations/s3-express/head-key-plus", "profile": "s3-express", "lane": "core", - "purpose": "get suffix", + "purpose": "head, with the key \"plus+plus.txt\"", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/read/object.txt", - "op": "get", - "range": { - "suffix": 6 - } + "key": "object-tests/keys/plus+plus.txt", + "op": "head" }, "exchanges": [ { @@ -135382,7 +176137,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "HEAD" } }, { @@ -135390,7 +176145,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/read/object.txt" + "value": "/object-tests/keys/plus+plus.txt" } }, { @@ -135401,14 +176156,6 @@ "value": "" } }, - { - "at": "/headers/range", - "optional": false, - "rule": { - "is": "equal", - "value": "bytes=-6" - } - }, { "at": "/headers/host", "optional": false, @@ -135439,9 +176186,9 @@ ], "allow_query": [], "response": { - "status": 206, + "status": 200, "headers": { - "content-range": "bytes 24-29/30", + "content-length": "30", "content-type": "binary/octet-stream", "date": { "from": "now" @@ -135451,181 +176198,7 @@ }, "body": { "encoding": "base64", - "data": "b2JqZWN0" - } - } - }, - { - "request": [ - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/object-tests/read/object.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "HEAD" - } - }, - { - "at": "/headers/host", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" - } - }, - { - "at": "/headers/x-amz-s3session-token", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-session-token" - } - }, - { - "at": "/headers/authorization", - "optional": false, - "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" - } - }, - { - "at": "/headers/range", - "optional": false, - "rule": { - "is": "equal", - "value": "bytes=-6" - } - } - ], - "then": [ - { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/object-tests/read/object.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/headers/range", - "optional": false, - "rule": { - "is": "equal", - "value": "bytes=24-29" - } - }, - { - "at": "/headers/if-match", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-672b31e65569\"" - } - }, - { - "at": "/headers/host", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" - } - }, - { - "at": "/headers/x-amz-s3session-token", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-session-token" - } - }, - { - "at": "/headers/authorization", - "optional": false, - "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" - } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 206, - "headers": { - "content-range": "bytes 24-29/30", - "content-type": "binary/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-672b31e65569\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" - }, - "body": { - "encoding": "base64", - "data": "b2JqZWN0" - } - } - } - ] - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 206, - "headers": { - "content-length": "6", - "content-range": "bytes 24-29/30", - "content-type": "binary/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-672b31e65569\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" - }, - "body": { - "encoding": "empty" + "data": "" } } } @@ -135654,7 +176227,7 @@ "optional": false, "rule": { "is": "equal", - "value": 6 + "value": 30 } }, { @@ -135675,29 +176248,21 @@ "" ] } - }, - { - "at": "/value/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "b2JqZWN0" - } } ], "refusal": null }, { - "id": "operations/s3-express/get-whole", + "id": "operations/s3-express/head-key-space", "profile": "s3-express", "lane": "core", - "purpose": "get whole", + "purpose": "head, with the key \"space name.txt\"", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/read/object.txt", - "op": "get" + "key": "object-tests/keys/space name.txt", + "op": "head" }, "exchanges": [ { @@ -135782,7 +176347,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "HEAD" } }, { @@ -135790,7 +176355,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/read/object.txt" + "value": "/object-tests/keys/space name.txt" } }, { @@ -135833,6 +176398,7 @@ "response": { "status": 200, "headers": { + "content-length": "30", "content-type": "binary/octet-stream", "date": { "from": "now" @@ -135842,87 +176408,7 @@ }, "body": { "encoding": "base64", - "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" - } - } - }, - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/object-tests/read/object.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/headers/range", - "optional": false, - "rule": { - "is": "matches", - "pattern": "bytes=0-[1-9][0-9]{2,}" - } - }, - { - "at": "/headers/host", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" - } - }, - { - "at": "/headers/x-amz-s3session-token", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-session-token" - } - }, - { - "at": "/headers/authorization", - "optional": false, - "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" - } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 206, - "headers": { - "content-range": "bytes 0-29/30", - "content-type": "binary/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-672b31e65569\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" - }, - "body": { - "encoding": "base64", - "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + "data": "" } } } @@ -135972,30 +176458,21 @@ "" ] } - }, - { - "at": "/value/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" - } } ], "refusal": null }, { - "id": "operations/s3-express/get-session-expired", + "id": "operations/s3-express/head-key-non-ascii", "profile": "s3-express", "lane": "core", - "purpose": "Renew a session whose Expiration has passed before using it: ask CreateSession again, and sign the GET with the second session", + "purpose": "head, with the key \"café/雪.txt\"", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], - "origin": "constructed", "call": { - "key": "object-tests/read/object.txt", - "op": "get" + "key": "object-tests/keys/café/雪.txt", + "op": "head" }, "exchanges": [ { @@ -136065,7 +176542,7 @@ }, "body_time": { "text": "SESSION_EXPIRATION", - "offset_seconds": -60 + "offset_seconds": 300 } } } @@ -136080,7 +176557,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "HEAD" } }, { @@ -136088,11 +176565,11 @@ "optional": false, "rule": { "is": "equal", - "value": "/" + "value": "/object-tests/keys/café/雪.txt" } }, { - "at": "/query/session", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", @@ -136108,18 +176585,19 @@ } }, { - "at": "/headers/authorization", + "at": "/headers/x-amz-s3session-token", "optional": false, "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + "is": "equal", + "value": "fixture-session-token" } }, { - "at": "/headers/x-amz-s3session-token", + "at": "/headers/authorization", "optional": false, "rule": { - "is": "absent" + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } } ], @@ -136130,20 +176608,83 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml" + "content-length": "30", + "content-type": "binary/octet-stream", + "date": { + "from": "now" + }, + "etag": "\"fixture-672b31e65569\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nfixture-session-token-2fixture-secret-key-2fixture-access-key-2SESSION_EXPIRATION" - }, - "body_time": { - "text": "SESSION_EXPIRATION", - "offset_seconds": 300 + "encoding": "base64", + "data": "" } } } ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-672b31e65569\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 30 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "binary/octet-stream" + } }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + } + ], + "refusal": null + }, + { + "id": "operations/s3-express/head-key-double-slash", + "profile": "s3-express", + "lane": "core", + "purpose": "head, with the key \"double//slash.txt\"", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "key": "object-tests/keys/double//slash.txt", + "op": "head" + }, + "exchanges": [ { "alternatives": [ { @@ -136161,11 +176702,11 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/read/object.txt" + "value": "/" } }, { - "at": "/body_base64", + "at": "/query/session", "optional": false, "rule": { "is": "equal", @@ -136181,19 +176722,18 @@ } }, { - "at": "/headers/x-amz-s3session-token", + "at": "/headers/authorization", "optional": false, "rule": { - "is": "equal", - "value": "fixture-session-token-2" + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } }, { - "at": "/headers/authorization", + "at": "/headers/x-amz-s3session-token", "optional": false, "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key-2/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + "is": "absent" } } ], @@ -136204,19 +176744,22 @@ "response": { "status": 200, "headers": { - "content-type": "binary/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-672b31e65569\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + "content-type": "application/xml" }, "body": { - "encoding": "base64", - "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + "encoding": "utf8", + "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" + }, + "body_time": { + "text": "SESSION_EXPIRATION", + "offset_seconds": 300 } } - }, + } + ] + }, + { + "alternatives": [ { "request": [ { @@ -136224,7 +176767,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "HEAD" } }, { @@ -136232,7 +176775,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/read/object.txt" + "value": "/object-tests/keys/double//slash.txt" } }, { @@ -136243,14 +176786,6 @@ "value": "" } }, - { - "at": "/headers/range", - "optional": false, - "rule": { - "is": "matches", - "pattern": "bytes=0-[1-9][0-9]{2,}" - } - }, { "at": "/headers/host", "optional": false, @@ -136264,7 +176799,7 @@ "optional": false, "rule": { "is": "equal", - "value": "fixture-session-token-2" + "value": "fixture-session-token" } }, { @@ -136272,7 +176807,7 @@ "optional": false, "rule": { "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key-2/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } } ], @@ -136281,9 +176816,9 @@ ], "allow_query": [], "response": { - "status": 206, + "status": 200, "headers": { - "content-range": "bytes 0-29/30", + "content-length": "30", "content-type": "binary/octet-stream", "date": { "from": "now" @@ -136293,7 +176828,7 @@ }, "body": { "encoding": "base64", - "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + "data": "" } } } @@ -136343,29 +176878,21 @@ "" ] } - }, - { - "at": "/value/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" - } } ], "refusal": null }, { - "id": "operations/s3-express/get-xml-looking", + "id": "operations/s3-express/head-key-trailing-slash", "profile": "s3-express", "lane": "core", - "purpose": "get xml looking", + "purpose": "head, with the key \"trailing-slash/\"", "sources": [ - "https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object", - "op": "get" + "key": "object-tests/keys/trailing-slash/", + "op": "head" }, "exchanges": [ { @@ -136450,7 +176977,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "HEAD" } }, { @@ -136458,7 +176985,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object" + "value": "/object-tests/keys/trailing-slash/" } }, { @@ -136469,18 +176996,6 @@ "value": "" } }, - { - "at": "/headers/content-type", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - "application/xml", - "application/octet-stream", - "binary/octet-stream" - ] - } - }, { "at": "/headers/host", "optional": false, @@ -136506,113 +177021,24 @@ } } ], - "allow_headers": [], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-type": "application/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-etag\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-amz-request-id": "fixture-request-id" - }, - "body": { - "encoding": "base64", - "data": "PEVycm9yPnN0aWxsIG9iamVjdCBieXRlczwvRXJyb3I+" - } - } - }, - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/object" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/headers/content-type", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - "application/xml", - "application/octet-stream", - "binary/octet-stream" - ] - } - }, - { - "at": "/headers/range", - "optional": false, - "rule": { - "is": "matches", - "pattern": "bytes=0-[1-9][0-9]{2,}" - } - }, - { - "at": "/headers/host", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" - } - }, - { - "at": "/headers/x-amz-s3session-token", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-session-token" - } - }, - { - "at": "/headers/authorization", - "optional": false, - "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" - } - } + "allow_headers": [ + "content-type" ], - "allow_headers": [], "allow_query": [], "response": { - "status": 206, + "status": 200, "headers": { - "content-range": "bytes 0-32/33", - "content-type": "application/octet-stream", + "content-length": "30", + "content-type": "binary/octet-stream", "date": { "from": "now" }, - "etag": "\"fixture-etag\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-amz-request-id": "fixture-request-id" + "etag": "\"fixture-672b31e65569\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "base64", - "data": "PEVycm9yPnN0aWxsIG9iamVjdCBieXRlczwvRXJyb3I+" + "data": "" } } } @@ -136629,28 +177055,55 @@ } }, { - "at": "/value/body_base64", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": "PEVycm9yPnN0aWxsIG9iamVjdCBieXRlczwvRXJyb3I+" + "value": "\"fixture-672b31e65569\"" + } + }, + { + "at": "/value/size", + "optional": false, + "rule": { + "is": "equal", + "value": 30 + } + }, + { + "at": "/value/content_type", + "optional": false, + "rule": { + "is": "equal", + "value": "binary/octet-stream" + } + }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] } } ], "refusal": null }, { - "id": "operations/s3-express/get-noise-tolerance", + "id": "operations/s3-express/list-bad-marker", "profile": "s3-express", "lane": "core", - "purpose": "get noise tolerance", + "purpose": "Report S3's 400 InvalidArgument for a continuation token it did not issue", "sources": [ - "https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], - "origin": "constructed", "call": { - "key": "object", - "op": "get" + "continuation_token": "fixture-marker+/ce6f21ae951d=", + "op": "list_page", + "prefix": "object-tests/board/" }, "exchanges": [ { @@ -136743,7 +177196,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object" + "value": "/" } }, { @@ -136755,15 +177208,27 @@ } }, { - "at": "/headers/content-type", - "optional": true, + "at": "/query/list-type", + "optional": false, "rule": { - "is": "one_of", - "values": [ - "application/xml", - "application/octet-stream", - "binary/octet-stream" - ] + "is": "equal", + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/" + } + }, + { + "at": "/query/continuation-token", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-marker+/ce6f21ae951d=" } }, { @@ -136791,24 +177256,23 @@ } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 200, + "status": 400, "headers": { - "content-type": "application/octet-stream", + "content-type": "application/xml", "date": { "from": "now" - }, - "etag": "\"a-different-etag\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-amz-request-id": "another-id", - "x-fixture-unknown": "ignored" + } }, "body": { - "encoding": "base64", - "data": "aGVsbG8=" - } + "encoding": "utf8", + "data": "\nInvalidArgumentFixture error" + }, + "framing": "chunked" } }, { @@ -136826,7 +177290,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object" + "value": "/" } }, { @@ -136838,23 +177302,27 @@ } }, { - "at": "/headers/content-type", - "optional": true, + "at": "/query/list-type", + "optional": false, "rule": { - "is": "one_of", - "values": [ - "application/xml", - "application/octet-stream", - "binary/octet-stream" - ] + "is": "equal", + "value": "2" } }, { - "at": "/headers/range", + "at": "/query/prefix", "optional": false, "rule": { - "is": "matches", - "pattern": "bytes=0-[1-9][0-9]{2,}" + "is": "equal", + "value": "object-tests/board/" + } + }, + { + "at": "/query/continuation-token", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-marker+/ce6f21ae951d=" } }, { @@ -136880,27 +177348,33 @@ "is": "matches", "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } + }, + { + "at": "/query/encoding-type", + "optional": false, + "rule": { + "is": "equal", + "value": "url" + } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 206, + "status": 400, "headers": { - "content-range": "bytes 0-4/5", - "content-type": "application/octet-stream", + "content-type": "application/xml", "date": { "from": "now" - }, - "etag": "\"a-different-etag\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-amz-request-id": "another-id", - "x-fixture-unknown": "ignored" + } }, "body": { - "encoding": "base64", - "data": "aGVsbG8=" - } + "encoding": "utf8", + "data": "\nInvalidArgumentThe continuation token provided is incorrectcontinuation-token01516607970001a08269f32e0c1ad876480f0641WZg5FiuD0" + }, + "framing": "chunked" } } ] @@ -136912,33 +177386,40 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "error" } }, { - "at": "/value/body_base64", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "aGVsbG8=" + "value": 400 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "InvalidArgument" } } ], "refusal": null }, { - "id": "operations/s3-express/get-body-cut-short", + "id": "operations/s3-express/list-delimited", "profile": "s3-express", "lane": "core", - "purpose": "Report a body that ends before its Content-Length as an error, or resume it, but never return the short body", + "purpose": "Send the delimiter, and report the keys it groups as common prefixes, not as entries", "sources": [ - "https://www.rfc-editor.org/rfc/rfc9112#section-8", - "azure-sdk-for-cpp/sdk/storage/azure-storage-blobs/src/blob_client.cpp" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], - "origin": "transient", "call": { - "key": "object-tests/read/object.txt", - "op": "get" + "delimiter": "/", + "op": "list_page", + "prefix": "object-tests/board/" }, "exchanges": [ { @@ -137031,7 +177512,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/read/object.txt" + "value": "/" } }, { @@ -137042,6 +177523,30 @@ "value": "" } }, + { + "at": "/query/list-type", + "optional": false, + "rule": { + "is": "equal", + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/" + } + }, + { + "at": "/query/delimiter", + "optional": false, + "rule": { + "is": "equal", + "value": "/" + } + }, { "at": "/headers/host", "optional": false, @@ -137074,18 +177579,16 @@ "response": { "status": 200, "headers": { - "content-type": "binary/octet-stream", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-672b31e65569\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" - }, - "truncate_body_after": 15 + "encoding": "utf8", + "data": "\nfixtureobject-tests/board/31000falseCRC64NVME"fixture-7d1b875717fa"object-tests/board/z.txt2024-01-01T00:00:00.000Z2EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-ca40e4206a8d"object-tests/board/a.txt2024-01-01T00:00:00.000Z8EXPRESS_ONEZONEFULL_OBJECT/object-tests/board/nested/" + } } }, { @@ -137103,7 +177606,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/read/object.txt" + "value": "/" } }, { @@ -137115,11 +177618,27 @@ } }, { - "at": "/headers/range", + "at": "/query/list-type", "optional": false, "rule": { - "is": "matches", - "pattern": "bytes=0-[1-9][0-9]{2,}" + "is": "equal", + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/" + } + }, + { + "at": "/query/delimiter", + "optional": false, + "rule": { + "is": "equal", + "value": "/" } }, { @@ -137145,6 +177664,14 @@ "is": "matches", "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } + }, + { + "at": "/query/encoding-type", + "optional": false, + "rule": { + "is": "equal", + "value": "url" + } } ], "allow_headers": [ @@ -137152,25 +177679,194 @@ ], "allow_query": [], "response": { - "status": 206, + "status": 200, "headers": { - "content-range": "bytes 0-29/30", - "content-type": "binary/octet-stream", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-672b31e65569\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" - }, - "truncate_body_after": 15 + "encoding": "utf8", + "data": "\nfixtureobject-tests/board/31000urlfalseCRC64NVME"fixture-7d1b875717fa"object-tests/board/z.txt2024-01-01T00:00:00.000Z2EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-ca40e4206a8d"object-tests/board/a.txt2024-01-01T00:00:00.000Z8EXPRESS_ONEZONEFULL_OBJECT/object-tests/board/nested/" + } } } ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/entries/0/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/z.txt" + } + }, + { + "at": "/value/entries/0/size", + "optional": false, + "rule": { + "is": "equal", + "value": 2 + } + }, + { + "at": "/value/entries/0/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-7d1b875717fa\"" + } + }, + { + "at": "/value/entries/0/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/1/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/a.txt" + } + }, + { + "at": "/value/entries/1/size", + "optional": false, + "rule": { + "is": "equal", + "value": 8 + } + }, + { + "at": "/value/entries/1/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-ca40e4206a8d\"" + } + }, + { + "at": "/value/entries/1/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/1/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/1/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/prefixes/0", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/nested/" + } + }, + { + "at": "/value/continuation_token", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/value/entries", + "optional": false, + "rule": { + "is": "array_length", + "value": 2 + } }, + { + "at": "/value/prefixes", + "optional": false, + "rule": { + "is": "array_length", + "value": 1 + } + } + ], + "refusal": null + }, + { + "id": "operations/s3-express/list-empty", + "profile": "s3-express", + "lane": "core", + "purpose": "Report a prefix with no objects as no entries, no prefixes and an empty continuation token", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "op": "list_page", + "prefix": "object-tests/nothing/" + }, + "exchanges": [ { "alternatives": [ { @@ -137188,11 +177884,11 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/read/object.txt" + "value": "/" } }, { - "at": "/body_base64", + "at": "/query/session", "optional": false, "rule": { "is": "equal", @@ -137208,43 +177904,44 @@ } }, { - "at": "/headers/x-amz-s3session-token", + "at": "/headers/authorization", "optional": false, "rule": { - "is": "equal", - "value": "fixture-session-token" + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } }, { - "at": "/headers/authorization", + "at": "/headers/x-amz-s3session-token", "optional": false, "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + "is": "absent" } } ], "allow_headers": [ - "content-type", "content-type" ], "allow_query": [], "response": { "status": 200, "headers": { - "content-type": "binary/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-672b31e65569\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + "content-type": "application/xml" }, "body": { - "encoding": "base64", - "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + "encoding": "utf8", + "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" + }, + "body_time": { + "text": "SESSION_EXPIRATION", + "offset_seconds": 300 } } - }, + } + ] + }, + { + "alternatives": [ { "request": [ { @@ -137260,7 +177957,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/read/object.txt" + "value": "/" } }, { @@ -137272,11 +177969,19 @@ } }, { - "at": "/headers/range", + "at": "/query/list-type", "optional": false, "rule": { - "is": "matches", - "pattern": "bytes=0-[1-9][0-9]{2,}" + "is": "equal", + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/nothing/" } }, { @@ -137305,24 +178010,21 @@ } ], "allow_headers": [ - "content-type", "content-type" ], "allow_query": [], "response": { - "status": 206, + "status": 200, "headers": { - "content-range": "bytes 0-29/30", - "content-type": "binary/octet-stream", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-672b31e65569\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + "encoding": "utf8", + "data": "\nfixtureobject-tests/nothing/01000false" } } }, @@ -137341,7 +178043,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/read/object.txt" + "value": "/" } }, { @@ -137353,43 +178055,74 @@ } }, { - "at": "/headers/range", + "at": "/query/list-type", "optional": false, "rule": { "is": "equal", - "value": "bytes=15-" + "value": "2" } }, { - "at": "/headers/if-match", + "at": "/query/prefix", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-672b31e65569\"" + "value": "object-tests/nothing/" + } + }, + { + "at": "/headers/host", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-session-token" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + } + }, + { + "at": "/query/encoding-type", + "optional": false, + "rule": { + "is": "equal", + "value": "url" } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { - "status": 206, + "status": 200, "headers": { - "content-range": "bytes 15-29/30", - "content-type": "binary/octet-stream", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-672b31e65569\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "Y3QtdGVzdHMtb2JqZWN0" + "encoding": "utf8", + "data": "\nfixtureobject-tests/nothing/01000urlfalse" } } } - ], - "optional": true + ] } ], "expect": [ @@ -137397,36 +178130,48 @@ "at": "/outcome", "optional": false, "rule": { - "is": "one_of", - "values": [ - "error", - "ok" - ] + "is": "equal", + "value": "ok" } }, { - "at": "/value/body_base64", - "optional": true, + "at": "/value/continuation_token", + "optional": false, "rule": { "is": "equal", - "value": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" + "value": "" + } + }, + { + "at": "/value/entries", + "optional": false, + "rule": { + "is": "array_length", + "value": 0 + } + }, + { + "at": "/value/prefixes", + "optional": false, + "rule": { + "is": "array_length", + "value": 0 } } ], "refusal": null }, { - "id": "operations/s3-express/get-slow-down", + "id": "operations/s3-express/list-all-empty", "profile": "s3-express", "lane": "core", - "purpose": "Report a 503 SlowDown answer as an error, after at most 5 retries", + "purpose": "Report an empty bucket as an empty listing", "sources": [ - "https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html" + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html" ], - "origin": "transient", "call": { - "key": "object-tests/read/object.txt", - "op": "get" + "op": "list", + "prefix": "" }, "exchanges": [ { @@ -137519,7 +178264,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/read/object.txt" + "value": "/" } }, { @@ -137530,6 +178275,34 @@ "value": "" } }, + { + "at": "/query/list-type", + "optional": false, + "rule": { + "is": "equal", + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": true, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/content-type", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + "application/xml", + "application/octet-stream", + "binary/octet-stream" + ] + } + }, { "at": "/headers/host", "optional": false, @@ -137555,23 +178328,23 @@ } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 503, + "status": 200, "headers": { "content-type": "application/xml", "date": { "from": "now" - } + }, + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-amz-request-id": "fixture-request-id" }, "body": { - "encoding": "utf8", - "data": "\nSlowDownPlease reduce your request rate.fixture" - }, - "framing": "chunked" + "encoding": "base64", + "data": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Zml4dHVyZTwvTmFtZT48UHJlZml4PjwvUHJlZml4PjxNYXhLZXlzPjEwMDA8L01heEtleXM+PEtleUNvdW50PjA8L0tleUNvdW50PjxJc1RydW5jYXRlZD5mYWxzZTwvSXNUcnVuY2F0ZWQ+PC9MaXN0QnVja2V0UmVzdWx0Pg==" + } } }, { @@ -137589,7 +178362,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/read/object.txt" + "value": "/" } }, { @@ -137601,85 +178374,39 @@ } }, { - "at": "/headers/range", - "optional": false, - "rule": { - "is": "matches", - "pattern": "bytes=0-[1-9][0-9]{2,}" - } - }, - { - "at": "/headers/host", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" - } - }, - { - "at": "/headers/x-amz-s3session-token", + "at": "/query/list-type", "optional": false, "rule": { "is": "equal", - "value": "fixture-session-token" - } - }, - { - "at": "/headers/authorization", - "optional": false, - "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" - } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 503, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" + "value": "2" } }, - "body": { - "encoding": "utf8", - "data": "\nSlowDownPlease reduce your request rate.fixture" - }, - "framing": "chunked" - } - } - ] - }, - { - "alternatives": [ - { - "request": [ { - "at": "/method", - "optional": false, + "at": "/query/prefix", + "optional": true, "rule": { "is": "equal", - "value": "GET" + "value": "" } }, { - "at": "/path", - "optional": false, + "at": "/headers/content-type", + "optional": true, "rule": { - "is": "equal", - "value": "/object-tests/read/object.txt" + "is": "one_of", + "values": [ + "application/xml", + "application/octet-stream", + "binary/octet-stream" + ] } }, { - "at": "/body_base64", + "at": "/query/encoding-type", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "url" } }, { @@ -137707,25 +178434,63 @@ } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 503, + "status": 200, "headers": { "content-type": "application/xml", "date": { "from": "now" - } + }, + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-amz-request-id": "fixture-request-id" }, "body": { - "encoding": "utf8", - "data": "\nSlowDownPlease reduce your request rate.fixture" - }, - "framing": "chunked" + "encoding": "base64", + "data": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Zml4dHVyZTwvTmFtZT48UHJlZml4PjwvUHJlZml4PjxNYXhLZXlzPjEwMDA8L01heEtleXM+PEtleUNvdW50PjA8L0tleUNvdW50PjxFbmNvZGluZ1R5cGU+dXJsPC9FbmNvZGluZ1R5cGU+PElzVHJ1bmNhdGVkPmZhbHNlPC9Jc1RydW5jYXRlZD48L0xpc3RCdWNrZXRSZXN1bHQ+" + } } - }, + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/keys", + "optional": false, + "rule": { + "is": "equal", + "value": [] + } + } + ], + "refusal": null + }, + { + "id": "operations/s3-express/list-xml-escaped", + "profile": "s3-express", + "lane": "core", + "purpose": "Read XML character references in listed names, such as & and <, or ask for encoding-type=url and decode the names", + "sources": [ + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html" + ], + "call": { + "op": "list", + "prefix": "" + }, + "exchanges": [ + { + "alternatives": [ { "request": [ { @@ -137741,25 +178506,17 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/read/object.txt" + "value": "/" } }, { - "at": "/body_base64", + "at": "/query/session", "optional": false, "rule": { "is": "equal", "value": "" } }, - { - "at": "/headers/range", - "optional": false, - "rule": { - "is": "matches", - "pattern": "bytes=0-[1-9][0-9]{2,}" - } - }, { "at": "/headers/host", "optional": false, @@ -137769,19 +178526,18 @@ } }, { - "at": "/headers/x-amz-s3session-token", + "at": "/headers/authorization", "optional": false, "rule": { - "is": "equal", - "value": "fixture-session-token" + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } }, { - "at": "/headers/authorization", + "at": "/headers/x-amz-s3session-token", "optional": false, "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + "is": "absent" } } ], @@ -137790,22 +178546,21 @@ ], "allow_query": [], "response": { - "status": 503, + "status": 200, "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - } + "content-type": "application/xml" }, "body": { "encoding": "utf8", - "data": "\nSlowDownPlease reduce your request rate.fixture" + "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" }, - "framing": "chunked" + "body_time": { + "text": "SESSION_EXPIRATION", + "offset_seconds": 300 + } } } - ], - "optional": true + ] }, { "alternatives": [ @@ -137824,7 +178579,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/read/object.txt" + "value": "/" } }, { @@ -137835,6 +178590,34 @@ "value": "" } }, + { + "at": "/query/list-type", + "optional": false, + "rule": { + "is": "equal", + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": true, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/content-type", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + "application/xml", + "application/octet-stream", + "binary/octet-stream" + ] + } + }, { "at": "/headers/host", "optional": false, @@ -137860,23 +178643,23 @@ } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 503, + "status": 200, "headers": { "content-type": "application/xml", "date": { "from": "now" - } + }, + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-amz-request-id": "fixture-request-id" }, "body": { - "encoding": "utf8", - "data": "\nSlowDownPlease reduce your request rate.fixture" - }, - "framing": "chunked" + "encoding": "base64", + "data": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Zml4dHVyZTwvTmFtZT48UHJlZml4PjwvUHJlZml4PjxNYXhLZXlzPjEwMDA8L01heEtleXM+PEtleUNvdW50PjI8L0tleUNvdW50PjxJc1RydW5jYXRlZD5mYWxzZTwvSXNUcnVuY2F0ZWQ+PENvbnRlbnRzPjxFVGFnPiZxdW90O2ZpeHR1cmUmcXVvdDs8L0VUYWc+PEtleT5hJmFtcDtiPC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTAxLTAxVDAwOjAwOjAwLjAwMFo8L0xhc3RNb2RpZmllZD48U2l6ZT41PC9TaXplPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb250ZW50cz48RVRhZz4mcXVvdDtmaXh0dXJlJnF1b3Q7PC9FVGFnPjxLZXk+YyZsdDtkPC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTAxLTAxVDAwOjAwOjAwLjAwMFo8L0xhc3RNb2RpZmllZD48U2l6ZT41PC9TaXplPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjwvTGlzdEJ1Y2tldFJlc3VsdD4=" + } } }, { @@ -137894,7 +178677,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/read/object.txt" + "value": "/" } }, { @@ -137906,11 +178689,39 @@ } }, { - "at": "/headers/range", + "at": "/query/list-type", "optional": false, "rule": { - "is": "matches", - "pattern": "bytes=0-[1-9][0-9]{2,}" + "is": "equal", + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": true, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/content-type", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + "application/xml", + "application/octet-stream", + "binary/octet-stream" + ] + } + }, + { + "at": "/query/encoding-type", + "optional": false, + "rule": { + "is": "equal", + "value": "url" } }, { @@ -137938,28 +178749,64 @@ } } ], - "allow_headers": [ - "content-type" - ], + "allow_headers": [], "allow_query": [], "response": { - "status": 503, + "status": 200, "headers": { "content-type": "application/xml", "date": { "from": "now" - } + }, + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", + "x-amz-request-id": "fixture-request-id" }, "body": { - "encoding": "utf8", - "data": "\nSlowDownPlease reduce your request rate.fixture" - }, - "framing": "chunked" + "encoding": "base64", + "data": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Zml4dHVyZTwvTmFtZT48UHJlZml4PjwvUHJlZml4PjxNYXhLZXlzPjEwMDA8L01heEtleXM+PEtleUNvdW50PjI8L0tleUNvdW50PjxFbmNvZGluZ1R5cGU+dXJsPC9FbmNvZGluZ1R5cGU+PElzVHJ1bmNhdGVkPmZhbHNlPC9Jc1RydW5jYXRlZD48Q29udGVudHM+PEVUYWc+JnF1b3Q7Zml4dHVyZSZxdW90OzwvRVRhZz48S2V5PmElMjZiPC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTAxLTAxVDAwOjAwOjAwLjAwMFo8L0xhc3RNb2RpZmllZD48U2l6ZT41PC9TaXplPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb250ZW50cz48RVRhZz4mcXVvdDtmaXh0dXJlJnF1b3Q7PC9FVGFnPjxLZXk+YyUzQ2Q8L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDEtMDFUMDA6MDA6MDAuMDAwWjwvTGFzdE1vZGlmaWVkPjxTaXplPjU8L1NpemU+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PC9MaXN0QnVja2V0UmVzdWx0Pg==" + } } } - ], - "optional": true + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } }, + { + "at": "/value/keys", + "optional": false, + "rule": { + "is": "equal", + "value": [ + "a&b", + "c\nSlowDownPlease reduce your request rate.fixture" + "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" }, - "framing": "chunked" + "body_time": { + "text": "SESSION_EXPIRATION", + "offset_seconds": 300 + } } - }, + } + ] + }, + { + "alternatives": [ { "request": [ { @@ -138047,7 +178897,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/read/object.txt" + "value": "/" } }, { @@ -138059,11 +178909,19 @@ } }, { - "at": "/headers/range", + "at": "/query/list-type", "optional": false, "rule": { - "is": "matches", - "pattern": "bytes=0-[1-9][0-9]{2,}" + "is": "equal", + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/names/" } }, { @@ -138096,25 +178954,20 @@ ], "allow_query": [], "response": { - "status": 503, + "status": 200, "headers": { "content-type": "application/xml", "date": { "from": "now" - } + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "utf8", - "data": "\nSlowDownPlease reduce your request rate.fixture" - }, - "framing": "chunked" + "data": "\nfixtureobject-tests/names/101000falseCRC64NVME"fixture-36534817118e"object-tests/names/back\\slash.txt2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-10822d0eb6a7"object-tests/names/q?mark.txt2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-bd8e8b1adffd"object-tests/names/a&b.txt2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-a16607f00956"object-tests/names/percent%20.txt2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-1b1e630ad692"object-tests/names/plus+plus.txt2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-daab0593c9af"object-tests/names/100%-name.txt2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-d614f09fca44"object-tests/names/space name.txt2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-e759336a908a"object-tests/names/ctrl\u0001.txt2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-578365eba262"object-tests/names/café.txt2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-84af5210cfd9"object-tests/names/hash#tag.txt2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECT" + } } - } - ], - "optional": true - }, - { - "alternatives": [ + }, { "request": [ { @@ -138130,7 +178983,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/read/object.txt" + "value": "/" } }, { @@ -138141,6 +178994,22 @@ "value": "" } }, + { + "at": "/query/list-type", + "optional": false, + "rule": { + "is": "equal", + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/names/" + } + }, { "at": "/headers/host", "optional": false, @@ -138164,6 +179033,14 @@ "is": "matches", "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } + }, + { + "at": "/query/encoding-type", + "optional": false, + "rule": { + "is": "equal", + "value": "url" + } } ], "allow_headers": [ @@ -138171,20 +179048,645 @@ ], "allow_query": [], "response": { - "status": 503, + "status": 200, "headers": { "content-type": "application/xml", "date": { "from": "now" - } + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "utf8", - "data": "\nSlowDownPlease reduce your request rate.fixture" - }, - "framing": "chunked" + "data": "\nfixtureobject-tests/names/101000urlfalseCRC64NVME"fixture-36534817118e"object-tests/names/back%5Cslash.txt2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-10822d0eb6a7"object-tests/names/q%3Fmark.txt2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-bd8e8b1adffd"object-tests/names/a%26b.txt2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-a16607f00956"object-tests/names/percent%2520.txt2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-1b1e630ad692"object-tests/names/plus%2Bplus.txt2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-daab0593c9af"object-tests/names/100%25-name.txt2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-d614f09fca44"object-tests/names/space+name.txt2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-e759336a908a"object-tests/names/ctrl%01.txt2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-578365eba262"object-tests/names/caf%C3%A9.txt2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-84af5210cfd9"object-tests/names/hash%23tag.txt2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECT" + } } - }, + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/entries/0/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/names/back\\slash.txt" + } + }, + { + "at": "/value/entries/0/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/0/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-36534817118e\"" + } + }, + { + "at": "/value/entries/0/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/1/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/names/q?mark.txt" + } + }, + { + "at": "/value/entries/1/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/1/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-10822d0eb6a7\"" + } + }, + { + "at": "/value/entries/1/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/1/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/1/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/2/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/names/a&b.txt" + } + }, + { + "at": "/value/entries/2/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/2/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-bd8e8b1adffd\"" + } + }, + { + "at": "/value/entries/2/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/2/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/2/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/3/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/names/percent%20.txt" + } + }, + { + "at": "/value/entries/3/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/3/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-a16607f00956\"" + } + }, + { + "at": "/value/entries/3/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/3/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/3/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/4/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/names/plus+plus.txt" + } + }, + { + "at": "/value/entries/4/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/4/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-1b1e630ad692\"" + } + }, + { + "at": "/value/entries/4/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/4/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/4/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/5/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/names/100%-name.txt" + } + }, + { + "at": "/value/entries/5/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/5/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-daab0593c9af\"" + } + }, + { + "at": "/value/entries/5/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/5/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/5/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/6/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/names/space name.txt" + } + }, + { + "at": "/value/entries/6/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/6/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-d614f09fca44\"" + } + }, + { + "at": "/value/entries/6/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/6/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/6/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/7/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/names/ctrl\u0001.txt" + } + }, + { + "at": "/value/entries/7/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/7/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-e759336a908a\"" + } + }, + { + "at": "/value/entries/7/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/7/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/7/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/8/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/names/café.txt" + } + }, + { + "at": "/value/entries/8/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/8/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-578365eba262\"" + } + }, + { + "at": "/value/entries/8/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/8/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/8/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/9/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/names/hash#tag.txt" + } + }, + { + "at": "/value/entries/9/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/9/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-84af5210cfd9\"" + } + }, + { + "at": "/value/entries/9/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/9/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/9/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/continuation_token", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/value/entries", + "optional": false, + "rule": { + "is": "array_length", + "value": 10 + } + }, + { + "at": "/value/prefixes", + "optional": false, + "rule": { + "is": "array_length", + "value": 0 + } + } + ], + "refusal": null + }, + { + "id": "operations/s3-express/list-first-page", + "profile": "s3-express", + "lane": "core", + "purpose": "Send page_size as max-keys, and report a truncated page's NextContinuationToken as the continuation token", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "op": "list_page", + "page_size": 2, + "prefix": "object-tests/board/" + }, + "exchanges": [ + { + "alternatives": [ { "request": [ { @@ -138200,25 +179702,17 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/read/object.txt" + "value": "/" } }, { - "at": "/body_base64", + "at": "/query/session", "optional": false, "rule": { "is": "equal", "value": "" } }, - { - "at": "/headers/range", - "optional": false, - "rule": { - "is": "matches", - "pattern": "bytes=0-[1-9][0-9]{2,}" - } - }, { "at": "/headers/host", "optional": false, @@ -138228,19 +179722,18 @@ } }, { - "at": "/headers/x-amz-s3session-token", + "at": "/headers/authorization", "optional": false, "rule": { - "is": "equal", - "value": "fixture-session-token" + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } }, { - "at": "/headers/authorization", + "at": "/headers/x-amz-s3session-token", "optional": false, "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + "is": "absent" } } ], @@ -138249,22 +179742,21 @@ ], "allow_query": [], "response": { - "status": 503, + "status": 200, "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - } + "content-type": "application/xml" }, "body": { "encoding": "utf8", - "data": "\nSlowDownPlease reduce your request rate.fixture" + "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" }, - "framing": "chunked" + "body_time": { + "text": "SESSION_EXPIRATION", + "offset_seconds": 300 + } } } - ], - "optional": true + ] }, { "alternatives": [ @@ -138283,7 +179775,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/read/object.txt" + "value": "/" } }, { @@ -138294,6 +179786,30 @@ "value": "" } }, + { + "at": "/query/list-type", + "optional": false, + "rule": { + "is": "equal", + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/" + } + }, + { + "at": "/query/max-keys", + "optional": false, + "rule": { + "is": "equal", + "value": "2" + } + }, { "at": "/headers/host", "optional": false, @@ -138324,18 +179840,18 @@ ], "allow_query": [], "response": { - "status": 503, + "status": 200, "headers": { "content-type": "application/xml", "date": { "from": "now" - } + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "utf8", - "data": "\nSlowDownPlease reduce your request rate.fixture" - }, - "framing": "chunked" + "data": "\nfixtureobject-tests/board/fixture-marker+/88ab99096baf=22trueCRC64NVME"fixture-7d1b875717fa"object-tests/board/z.txt2024-01-01T00:00:00.000Z2EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-d9b959b4d7a6"object-tests/board/nested/c.txt2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECT" + } } }, { @@ -138353,7 +179869,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/read/object.txt" + "value": "/" } }, { @@ -138365,11 +179881,27 @@ } }, { - "at": "/headers/range", + "at": "/query/list-type", "optional": false, "rule": { - "is": "matches", - "pattern": "bytes=0-[1-9][0-9]{2,}" + "is": "equal", + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/" + } + }, + { + "at": "/query/max-keys", + "optional": false, + "rule": { + "is": "equal", + "value": "2" } }, { @@ -138395,6 +179927,14 @@ "is": "matches", "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } + }, + { + "at": "/query/encoding-type", + "optional": false, + "rule": { + "is": "equal", + "value": "url" + } } ], "allow_headers": [ @@ -138402,64 +179942,186 @@ ], "allow_query": [], "response": { - "status": 503, + "status": 200, "headers": { "content-type": "application/xml", "date": { "from": "now" - } + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "utf8", - "data": "\nSlowDownPlease reduce your request rate.fixture" - }, - "framing": "chunked" + "data": "\nfixtureobject-tests/board/fixture-marker+/88ab99096baf=22urltrueCRC64NVME"fixture-7d1b875717fa"object-tests/board/z.txt2024-01-01T00:00:00.000Z2EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-d9b959b4d7a6"object-tests/board/nested/c.txt2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECT" + } } } - ], - "optional": true + ] } ], "expect": [ { - "at": "/outcome", + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/entries/0/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/z.txt" + } + }, + { + "at": "/value/entries/0/size", + "optional": false, + "rule": { + "is": "equal", + "value": 2 + } + }, + { + "at": "/value/entries/0/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-7d1b875717fa\"" + } + }, + { + "at": "/value/entries/0/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/1/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/nested/c.txt" + } + }, + { + "at": "/value/entries/1/size", "optional": false, "rule": { "is": "equal", - "value": "error" + "value": 1 } }, { - "at": "/status", + "at": "/value/entries/1/etag", "optional": false, "rule": { "is": "equal", - "value": 503 + "value": "\"fixture-d9b959b4d7a6\"" } }, { - "at": "/code", + "at": "/value/entries/1/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/1/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/1/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/continuation_token", "optional": false, "rule": { "is": "equal", - "value": "SlowDown" + "value": "fixture-marker+/88ab99096baf=" + } + }, + { + "at": "/value/entries", + "optional": false, + "rule": { + "is": "array_length", + "value": 2 + } + }, + { + "at": "/value/prefixes", + "optional": false, + "rule": { + "is": "array_length", + "value": 0 } } ], "refusal": null }, { - "id": "operations/s3-express/get-if-unmodified-since-past", + "id": "operations/s3-express/list-service-unavailable", "profile": "s3-express", "lane": "core", - "purpose": "Refuse a read with 412 when the object changed after If-Unmodified-Since", + "purpose": "Report a 503 ServiceUnavailable answer as an error, after at most 5 retries", "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + "https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html" ], + "origin": "transient", "call": { - "if_unmodified_since": "Sat, 01 Jan 2000 00:00:00 GMT", - "key": "object-tests/read/object.txt", - "op": "get" + "op": "list_page", + "page_size": 2, + "prefix": "object-tests/board/" }, "exchanges": [ { @@ -138552,7 +180214,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/read/object.txt" + "value": "/" } }, { @@ -138563,6 +180225,30 @@ "value": "" } }, + { + "at": "/query/list-type", + "optional": false, + "rule": { + "is": "equal", + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/" + } + }, + { + "at": "/query/max-keys", + "optional": false, + "rule": { + "is": "equal", + "value": "2" + } + }, { "at": "/headers/host", "optional": false, @@ -138586,14 +180272,6 @@ "is": "matches", "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } - }, - { - "at": "/headers/if-unmodified-since", - "optional": false, - "rule": { - "is": "equal", - "value": "Sat, 01 Jan 2000 00:00:00 GMT" - } } ], "allow_headers": [ @@ -138601,7 +180279,7 @@ ], "allow_query": [], "response": { - "status": 412, + "status": 503, "headers": { "content-type": "application/xml", "date": { @@ -138610,7 +180288,7 @@ }, "body": { "encoding": "utf8", - "data": "\nPreconditionFailedFixture error" + "data": "\nServiceUnavailablePlease reduce your request rate.fixture" }, "framing": "chunked" } @@ -138630,7 +180308,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/read/object.txt" + "value": "/" } }, { @@ -138642,11 +180320,27 @@ } }, { - "at": "/headers/range", + "at": "/query/list-type", "optional": false, "rule": { - "is": "matches", - "pattern": "bytes=0-[1-9][0-9]{2,}" + "is": "equal", + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/" + } + }, + { + "at": "/query/max-keys", + "optional": false, + "rule": { + "is": "equal", + "value": "2" } }, { @@ -138674,11 +180368,11 @@ } }, { - "at": "/headers/if-unmodified-since", + "at": "/query/encoding-type", "optional": false, "rule": { "is": "equal", - "value": "Sat, 01 Jan 2000 00:00:00 GMT" + "value": "url" } } ], @@ -138687,7 +180381,7 @@ ], "allow_query": [], "response": { - "status": 412, + "status": 503, "headers": { "content-type": "application/xml", "date": { @@ -138696,56 +180390,13 @@ }, "body": { "encoding": "utf8", - "data": "\nPreconditionFailedFixture error" + "data": "\nServiceUnavailablePlease reduce your request rate.fixture" }, "framing": "chunked" } } ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 412 - } }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "equal", - "value": "PreconditionFailed" - } - } - ], - "refusal": null - }, - { - "id": "operations/s3-express/get-if-modified-since-future", - "profile": "s3-express", - "lane": "core", - "purpose": "Read an object when If-Modified-Since names a future date", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "if_modified_since": "Fri, 01 Jan 2100 00:00:00 GMT", - "key": "object-tests/read/object.txt", - "op": "get" - }, - "exchanges": [ { "alternatives": [ { @@ -138767,7 +180418,7 @@ } }, { - "at": "/query/session", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", @@ -138775,76 +180426,27 @@ } }, { - "at": "/headers/host", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" - } - }, - { - "at": "/headers/authorization", - "optional": false, - "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" - } - }, - { - "at": "/headers/x-amz-s3session-token", - "optional": false, - "rule": { - "is": "absent" - } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-type": "application/xml" - }, - "body": { - "encoding": "utf8", - "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" - }, - "body_time": { - "text": "SESSION_EXPIRATION", - "offset_seconds": 300 - } - } - } - ] - }, - { - "alternatives": [ - { - "request": [ - { - "at": "/method", + "at": "/query/list-type", "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "2" } }, { - "at": "/path", + "at": "/query/prefix", "optional": false, "rule": { "is": "equal", - "value": "/object-tests/read/object.txt" + "value": "object-tests/board/" } }, { - "at": "/body_base64", + "at": "/query/max-keys", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "2" } }, { @@ -138870,14 +180472,6 @@ "is": "matches", "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } - }, - { - "at": "/headers/if-modified-since", - "optional": false, - "rule": { - "is": "equal", - "value": "Fri, 01 Jan 2100 00:00:00 GMT" - } } ], "allow_headers": [ @@ -138885,19 +180479,18 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 503, "headers": { - "content-type": "binary/octet-stream", + "content-type": "application/xml", "date": { "from": "now" - }, - "etag": "\"fixture-672b31e65569\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { - "encoding": "base64", - "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" - } + "encoding": "utf8", + "data": "\nServiceUnavailablePlease reduce your request rate.fixture" + }, + "framing": "chunked" } }, { @@ -138915,7 +180508,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/read/object.txt" + "value": "/" } }, { @@ -138927,11 +180520,27 @@ } }, { - "at": "/headers/range", + "at": "/query/list-type", "optional": false, "rule": { - "is": "matches", - "pattern": "bytes=0-[1-9][0-9]{2,}" + "is": "equal", + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/" + } + }, + { + "at": "/query/max-keys", + "optional": false, + "rule": { + "is": "equal", + "value": "2" } }, { @@ -138959,11 +180568,11 @@ } }, { - "at": "/headers/if-modified-since", + "at": "/query/encoding-type", "optional": false, "rule": { "is": "equal", - "value": "Fri, 01 Jan 2100 00:00:00 GMT" + "value": "url" } } ], @@ -138972,94 +180581,23 @@ ], "allow_query": [], "response": { - "status": 206, + "status": 503, "headers": { - "content-range": "bytes 0-29/30", - "content-type": "binary/octet-stream", + "content-type": "application/xml", "date": { "from": "now" - }, - "etag": "\"fixture-672b31e65569\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { - "encoding": "base64", - "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" - } + "encoding": "utf8", + "data": "\nServiceUnavailablePlease reduce your request rate.fixture" + }, + "framing": "chunked" } } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-672b31e65569\"" - } - }, - { - "at": "/value/size", - "optional": false, - "rule": { - "is": "equal", - "value": 30 - } - }, - { - "at": "/value/content_type", - "optional": false, - "rule": { - "is": "equal", - "value": "binary/octet-stream" - } - }, - { - "at": "/value/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } + ], + "optional": true }, - { - "at": "/value/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" - } - } - ], - "refusal": null - }, - { - "id": "operations/s3-express/get-if-modified-since-past", - "profile": "s3-express", - "lane": "core", - "purpose": "Read an object modified since a past date", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "if_modified_since": "Sat, 01 Jan 2000 00:00:00 GMT", - "key": "object-tests/read/object.txt", - "op": "get" - }, - "exchanges": [ { "alternatives": [ { @@ -139081,13 +180619,37 @@ } }, { - "at": "/query/session", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", "value": "" } }, + { + "at": "/query/list-type", + "optional": false, + "rule": { + "is": "equal", + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/" + } + }, + { + "at": "/query/max-keys", + "optional": false, + "rule": { + "is": "equal", + "value": "2" + } + }, { "at": "/headers/host", "optional": false, @@ -139097,18 +180659,19 @@ } }, { - "at": "/headers/authorization", + "at": "/headers/x-amz-s3session-token", "optional": false, "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + "is": "equal", + "value": "fixture-session-token" } }, { - "at": "/headers/x-amz-s3session-token", + "at": "/headers/authorization", "optional": false, "rule": { - "is": "absent" + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } } ], @@ -139117,24 +180680,20 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 503, "headers": { - "content-type": "application/xml" + "content-type": "application/xml", + "date": { + "from": "now" + } }, "body": { "encoding": "utf8", - "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" + "data": "\nServiceUnavailablePlease reduce your request rate.fixture" }, - "body_time": { - "text": "SESSION_EXPIRATION", - "offset_seconds": 300 - } + "framing": "chunked" } - } - ] - }, - { - "alternatives": [ + }, { "request": [ { @@ -139150,7 +180709,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/read/object.txt" + "value": "/" } }, { @@ -139161,6 +180720,30 @@ "value": "" } }, + { + "at": "/query/list-type", + "optional": false, + "rule": { + "is": "equal", + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/" + } + }, + { + "at": "/query/max-keys", + "optional": false, + "rule": { + "is": "equal", + "value": "2" + } + }, { "at": "/headers/host", "optional": false, @@ -139186,11 +180769,11 @@ } }, { - "at": "/headers/if-modified-since", + "at": "/query/encoding-type", "optional": false, "rule": { "is": "equal", - "value": "Sat, 01 Jan 2000 00:00:00 GMT" + "value": "url" } } ], @@ -139199,21 +180782,25 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 503, "headers": { - "content-type": "binary/octet-stream", + "content-type": "application/xml", "date": { "from": "now" - }, - "etag": "\"fixture-672b31e65569\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { - "encoding": "base64", - "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" - } + "encoding": "utf8", + "data": "\nServiceUnavailablePlease reduce your request rate.fixture" + }, + "framing": "chunked" } - }, + } + ], + "optional": true + }, + { + "alternatives": [ { "request": [ { @@ -139229,7 +180816,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/read/object.txt" + "value": "/" } }, { @@ -139241,11 +180828,27 @@ } }, { - "at": "/headers/range", + "at": "/query/list-type", "optional": false, "rule": { - "is": "matches", - "pattern": "bytes=0-[1-9][0-9]{2,}" + "is": "equal", + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/" + } + }, + { + "at": "/query/max-keys", + "optional": false, + "rule": { + "is": "equal", + "value": "2" } }, { @@ -139271,14 +180874,6 @@ "is": "matches", "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } - }, - { - "at": "/headers/if-modified-since", - "optional": false, - "rule": { - "is": "equal", - "value": "Sat, 01 Jan 2000 00:00:00 GMT" - } } ], "allow_headers": [ @@ -139286,95 +180881,20 @@ ], "allow_query": [], "response": { - "status": 206, + "status": 503, "headers": { - "content-range": "bytes 0-29/30", - "content-type": "binary/octet-stream", + "content-type": "application/xml", "date": { "from": "now" - }, - "etag": "\"fixture-672b31e65569\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { - "encoding": "base64", - "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" - } + "encoding": "utf8", + "data": "\nServiceUnavailablePlease reduce your request rate.fixture" + }, + "framing": "chunked" } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-672b31e65569\"" - } - }, - { - "at": "/value/size", - "optional": false, - "rule": { - "is": "equal", - "value": 30 - } - }, - { - "at": "/value/content_type", - "optional": false, - "rule": { - "is": "equal", - "value": "binary/octet-stream" - } - }, - { - "at": "/value/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" - } - } - ], - "refusal": null - }, - { - "id": "operations/s3-express/get-content-properties", - "profile": "s3-express", - "lane": "core", - "purpose": "Return the stored content properties from a GET", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "key": "object-tests/read/object.txt", - "op": "get" - }, - "exchanges": [ - { - "alternatives": [ + }, { "request": [ { @@ -139394,13 +180914,37 @@ } }, { - "at": "/query/session", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", "value": "" } }, + { + "at": "/query/list-type", + "optional": false, + "rule": { + "is": "equal", + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/" + } + }, + { + "at": "/query/max-keys", + "optional": false, + "rule": { + "is": "equal", + "value": "2" + } + }, { "at": "/headers/host", "optional": false, @@ -139409,19 +180953,28 @@ "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" } }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-session-token" + } + }, { "at": "/headers/authorization", "optional": false, "rule": { "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } }, { - "at": "/headers/x-amz-s3session-token", + "at": "/query/encoding-type", "optional": false, "rule": { - "is": "absent" + "is": "equal", + "value": "url" } } ], @@ -139430,24 +180983,22 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 503, "headers": { - "cache-control": "max-age=3600", - "content-disposition": "attachment; filename=\"report.txt\"", - "content-language": "nl-NL", - "content-type": "text/plain; charset=utf-8" + "content-type": "application/xml", + "date": { + "from": "now" + } }, "body": { "encoding": "utf8", - "data": "fixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" + "data": "\nServiceUnavailablePlease reduce your request rate.fixture" }, - "body_time": { - "text": "SESSION_EXPIRATION", - "offset_seconds": 300 - } + "framing": "chunked" } } - ] + ], + "optional": true }, { "alternatives": [ @@ -139466,7 +181017,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/read/object.txt" + "value": "/" } }, { @@ -139477,6 +181028,30 @@ "value": "" } }, + { + "at": "/query/list-type", + "optional": false, + "rule": { + "is": "equal", + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/" + } + }, + { + "at": "/query/max-keys", + "optional": false, + "rule": { + "is": "equal", + "value": "2" + } + }, { "at": "/headers/host", "optional": false, @@ -139507,22 +181082,18 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 503, "headers": { - "cache-control": "max-age=3600", - "content-disposition": "attachment; filename=\"report.txt\"", - "content-language": "nl-NL", - "content-type": "text/plain; charset=utf-8", + "content-type": "application/xml", "date": { "from": "now" - }, - "etag": "\"fixture-672b31e65569\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { - "encoding": "base64", - "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" - } + "encoding": "utf8", + "data": "\nServiceUnavailablePlease reduce your request rate.fixture" + }, + "framing": "chunked" } }, { @@ -139540,7 +181111,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/read/object.txt" + "value": "/" } }, { @@ -139552,11 +181123,27 @@ } }, { - "at": "/headers/range", + "at": "/query/list-type", "optional": false, "rule": { - "is": "matches", - "pattern": "bytes=0-[1-9][0-9]{2,}" + "is": "equal", + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/" + } + }, + { + "at": "/query/max-keys", + "optional": false, + "rule": { + "is": "equal", + "value": "2" } }, { @@ -139582,6 +181169,14 @@ "is": "matches", "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } + }, + { + "at": "/query/encoding-type", + "optional": false, + "rule": { + "is": "equal", + "value": "url" + } } ], "allow_headers": [ @@ -139589,120 +181184,23 @@ ], "allow_query": [], "response": { - "status": 206, + "status": 503, "headers": { - "cache-control": "max-age=3600", - "content-disposition": "attachment; filename=\"report.txt\"", - "content-language": "nl-NL", - "content-range": "bytes 0-29/30", - "content-type": "text/plain; charset=utf-8", + "content-type": "application/xml", "date": { "from": "now" - }, - "etag": "\"fixture-672b31e65569\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { - "encoding": "base64", - "data": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" - } + "encoding": "utf8", + "data": "\nServiceUnavailablePlease reduce your request rate.fixture" + }, + "framing": "chunked" } } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-672b31e65569\"" - } - }, - { - "at": "/value/size", - "optional": false, - "rule": { - "is": "equal", - "value": 30 - } - }, - { - "at": "/value/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "MDEyMzQ1Njc4OS1vYmplY3QtdGVzdHMtb2JqZWN0" - } - }, - { - "at": "/value/content_type", - "optional": false, - "rule": { - "is": "equal", - "value": "text/plain; charset=utf-8" - } - }, - { - "at": "/value/content_language", - "optional": false, - "rule": { - "is": "equal", - "value": "nl-NL" - } - }, - { - "at": "/value/content_disposition", - "optional": false, - "rule": { - "is": "equal", - "value": "attachment; filename=\"report.txt\"" - } + ], + "optional": true }, - { - "at": "/value/cache_control", - "optional": false, - "rule": { - "is": "equal", - "value": "max-age=3600" - } - } - ], - "refusal": null - }, - { - "id": "operations/s3-express/head-committed", - "profile": "s3-express", - "lane": "core", - "purpose": "head committed", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "key": "object-tests/multipart/object.bin", - "op": "head" - }, - "exchanges": [ { "alternatives": [ { @@ -139724,13 +181222,37 @@ } }, { - "at": "/query/session", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", "value": "" } }, + { + "at": "/query/list-type", + "optional": false, + "rule": { + "is": "equal", + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/" + } + }, + { + "at": "/query/max-keys", + "optional": false, + "rule": { + "is": "equal", + "value": "2" + } + }, { "at": "/headers/host", "optional": false, @@ -139740,18 +181262,19 @@ } }, { - "at": "/headers/authorization", + "at": "/headers/x-amz-s3session-token", "optional": false, "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + "is": "equal", + "value": "fixture-session-token" } }, { - "at": "/headers/x-amz-s3session-token", + "at": "/headers/authorization", "optional": false, "rule": { - "is": "absent" + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } } ], @@ -139760,24 +181283,20 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 503, "headers": { - "content-type": "application/xml" + "content-type": "application/xml", + "date": { + "from": "now" + } }, "body": { "encoding": "utf8", - "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" + "data": "\nServiceUnavailablePlease reduce your request rate.fixture" }, - "body_time": { - "text": "SESSION_EXPIRATION", - "offset_seconds": 300 - } + "framing": "chunked" } - } - ] - }, - { - "alternatives": [ + }, { "request": [ { @@ -139785,7 +181304,7 @@ "optional": false, "rule": { "is": "equal", - "value": "HEAD" + "value": "GET" } }, { @@ -139793,7 +181312,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/multipart/object.bin" + "value": "/" } }, { @@ -139804,6 +181323,30 @@ "value": "" } }, + { + "at": "/query/list-type", + "optional": false, + "rule": { + "is": "equal", + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/" + } + }, + { + "at": "/query/max-keys", + "optional": false, + "rule": { + "is": "equal", + "value": "2" + } + }, { "at": "/headers/host", "optional": false, @@ -139827,6 +181370,14 @@ "is": "matches", "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } + }, + { + "at": "/query/encoding-type", + "optional": false, + "rule": { + "is": "equal", + "value": "url" + } } ], "allow_headers": [ @@ -139834,23 +181385,22 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 503, "headers": { - "content-length": "5242886", - "content-type": "binary/octet-stream", + "content-type": "application/xml", "date": { "from": "now" - }, - "etag": "\"fixture-ec4f3b9bcac2\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { - "encoding": "base64", - "data": "" - } + "encoding": "utf8", + "data": "\nServiceUnavailablePlease reduce your request rate.fixture" + }, + "framing": "chunked" } } - ] + ], + "optional": true } ], "expect": [ @@ -139859,58 +181409,40 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-ec4f3b9bcac2\"" + "value": "error" } }, { - "at": "/value/size", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": 5242886 + "value": 503 } }, { - "at": "/value/content_type", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": "binary/octet-stream" - } - }, - { - "at": "/value/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "value": "ServiceUnavailable" } } ], "refusal": null }, { - "id": "operations/s3-express/head-metadata", + "id": "operations/s3-express/list-max-keys-zero", "profile": "s3-express", "lane": "core", - "purpose": "head metadata", + "purpose": "Send page_size 0 as max-keys=0; S3 answers an empty page that is not truncated", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/metadata/object.txt", - "op": "head" + "op": "list_page", + "page_size": 0, + "prefix": "object-tests/board/" }, "exchanges": [ { @@ -139995,7 +181527,7 @@ "optional": false, "rule": { "is": "equal", - "value": "HEAD" + "value": "GET" } }, { @@ -140003,7 +181535,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/metadata/object.txt" + "value": "/" } }, { @@ -140014,6 +181546,30 @@ "value": "" } }, + { + "at": "/query/list-type", + "optional": false, + "rule": { + "is": "equal", + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/" + } + }, + { + "at": "/query/max-keys", + "optional": false, + "rule": { + "is": "equal", + "value": "0" + } + }, { "at": "/headers/host", "optional": false, @@ -140046,103 +181602,18 @@ "response": { "status": 200, "headers": { - "content-length": "1", - "content-type": "binary/octet-stream", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-ee657e36119d\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-amz-meta-name": "value", - "x-amz-meta-second": "2" + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "" + "encoding": "utf8", + "data": "\nfixtureobject-tests/board/00false" } } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-ee657e36119d\"" - } - }, - { - "at": "/value/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/content_type", - "optional": false, - "rule": { - "is": "equal", - "value": "binary/octet-stream" - } - }, - { - "at": "/value/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/metadata/name", - "optional": false, - "rule": { - "is": "equal", - "value": "value" - } - }, - { - "at": "/value/metadata/second", - "optional": false, - "rule": { - "is": "equal", - "value": "2" - } - } - ], - "refusal": null - }, - { - "id": "operations/s3-express/head-missing", - "profile": "s3-express", - "lane": "core", - "purpose": "head missing", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "key": "object-tests/read/absent.txt", - "op": "head" - }, - "exchanges": [ - { - "alternatives": [ + }, { "request": [ { @@ -140162,7 +181633,7 @@ } }, { - "at": "/query/session", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", @@ -140170,76 +181641,27 @@ } }, { - "at": "/headers/host", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" - } - }, - { - "at": "/headers/authorization", - "optional": false, - "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" - } - }, - { - "at": "/headers/x-amz-s3session-token", - "optional": false, - "rule": { - "is": "absent" - } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-type": "application/xml" - }, - "body": { - "encoding": "utf8", - "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" - }, - "body_time": { - "text": "SESSION_EXPIRATION", - "offset_seconds": 300 - } - } - } - ] - }, - { - "alternatives": [ - { - "request": [ - { - "at": "/method", + "at": "/query/list-type", "optional": false, "rule": { "is": "equal", - "value": "HEAD" + "value": "2" } }, { - "at": "/path", + "at": "/query/prefix", "optional": false, "rule": { "is": "equal", - "value": "/object-tests/read/absent.txt" + "value": "object-tests/board/" } }, { - "at": "/body_base64", + "at": "/query/max-keys", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "0" } }, { @@ -140265,6 +181687,14 @@ "is": "matches", "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } + }, + { + "at": "/query/encoding-type", + "optional": false, + "rule": { + "is": "equal", + "value": "url" + } } ], "allow_headers": [ @@ -140272,16 +181702,17 @@ ], "allow_query": [], "response": { - "status": 404, + "status": 200, "headers": { "content-type": "application/xml", "date": { "from": "now" - } + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "" + "encoding": "utf8", + "data": "\nfixtureobject-tests/board/00urlfalse" } } } @@ -140294,31 +181725,49 @@ "optional": false, "rule": { "is": "equal", - "value": "error" + "value": "ok" } }, { - "at": "/status", + "at": "/value/continuation_token", "optional": false, "rule": { "is": "equal", - "value": 404 + "value": "" + } + }, + { + "at": "/value/entries", + "optional": false, + "rule": { + "is": "array_length", + "value": 0 + } + }, + { + "at": "/value/prefixes", + "optional": false, + "rule": { + "is": "array_length", + "value": 0 } } ], "refusal": null }, { - "id": "operations/s3-express/head", + "id": "operations/s3-express/list-next-page", "profile": "s3-express", "lane": "core", - "purpose": "head", + "purpose": "Send the continuation token as continuation-token, a + in it as %2B, and report an empty token for the last page", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/read/object.txt", - "op": "head" + "continuation_token": "fixture-marker+/88ab99096baf=", + "op": "list_page", + "page_size": 2, + "prefix": "object-tests/board/" }, "exchanges": [ { @@ -140403,7 +181852,7 @@ "optional": false, "rule": { "is": "equal", - "value": "HEAD" + "value": "GET" } }, { @@ -140411,7 +181860,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/read/object.txt" + "value": "/" } }, { @@ -140422,6 +181871,38 @@ "value": "" } }, + { + "at": "/query/list-type", + "optional": false, + "rule": { + "is": "equal", + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/" + } + }, + { + "at": "/query/max-keys", + "optional": false, + "rule": { + "is": "equal", + "value": "2" + } + }, + { + "at": "/query/continuation-token", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-marker+/88ab99096baf=" + } + }, { "at": "/headers/host", "optional": false, @@ -140454,85 +181935,18 @@ "response": { "status": 200, "headers": { - "content-length": "30", - "content-type": "binary/octet-stream", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-672b31e65569\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "" + "encoding": "utf8", + "data": "\nfixtureobject-tests/board/fixture-marker+/88ab99096baf=12falseCRC64NVME"fixture-ca40e4206a8d"object-tests/board/a.txt2024-01-01T00:00:00.000Z8EXPRESS_ONEZONEFULL_OBJECT" } } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-672b31e65569\"" - } - }, - { - "at": "/value/size", - "optional": false, - "rule": { - "is": "equal", - "value": 30 - } - }, - { - "at": "/value/content_type", - "optional": false, - "rule": { - "is": "equal", - "value": "binary/octet-stream" - } - }, - { - "at": "/value/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - } - ], - "refusal": null - }, - { - "id": "operations/s3-express/head-content-properties", - "profile": "s3-express", - "lane": "core", - "purpose": "Return the stored content properties from a HEAD", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "key": "object-tests/read/object.txt", - "op": "head" - }, - "exchanges": [ - { - "alternatives": [ + }, { "request": [ { @@ -140552,7 +181966,7 @@ } }, { - "at": "/query/session", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", @@ -140560,79 +181974,35 @@ } }, { - "at": "/headers/host", + "at": "/query/list-type", "optional": false, "rule": { "is": "equal", - "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" - } - }, - { - "at": "/headers/authorization", - "optional": false, - "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" - } - }, - { - "at": "/headers/x-amz-s3session-token", - "optional": false, - "rule": { - "is": "absent" + "value": "2" } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "cache-control": "max-age=3600", - "content-disposition": "attachment; filename=\"report.txt\"", - "content-language": "nl-NL", - "content-type": "text/plain; charset=utf-8" - }, - "body": { - "encoding": "utf8", - "data": "fixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" }, - "body_time": { - "text": "SESSION_EXPIRATION", - "offset_seconds": 300 - } - } - } - ] - }, - { - "alternatives": [ - { - "request": [ { - "at": "/method", + "at": "/query/prefix", "optional": false, "rule": { "is": "equal", - "value": "HEAD" + "value": "object-tests/board/" } }, { - "at": "/path", + "at": "/query/max-keys", "optional": false, "rule": { "is": "equal", - "value": "/object-tests/read/object.txt" + "value": "2" } }, { - "at": "/body_base64", + "at": "/query/continuation-token", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "fixture-marker+/88ab99096baf=" } }, { @@ -140658,6 +182028,14 @@ "is": "matches", "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } + }, + { + "at": "/query/encoding-type", + "optional": false, + "rule": { + "is": "equal", + "value": "url" + } } ], "allow_headers": [ @@ -140667,20 +182045,15 @@ "response": { "status": 200, "headers": { - "cache-control": "max-age=3600", - "content-disposition": "attachment; filename=\"report.txt\"", - "content-language": "nl-NL", - "content-length": "30", - "content-type": "text/plain; charset=utf-8", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-672b31e65569\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "" + "encoding": "utf8", + "data": "\nfixtureobject-tests/board/Aa76REiOO0gPR6lKkFyUFtl1AAAAAAAAAAGoXKBqAAAAAAQAAAAAAAAAscQ7ZzgAAAAAAAAAQUI4QUFBQUFBQUFBYjJKcVpXTjBMWFJsYzNSekwySnZZWEprTDI1bGMzUmxaQzlqTG5SNGRBRT3cnmYCxwsmD0raHf15FaRAP0L8TRD3Kes0lU2EWDoJdA==12urlfalseCRC64NVME"fixture-ca40e4206a8d"object-tests/board/a.txt2024-01-01T00:00:00.000Z8EXPRESS_ONEZONEFULL_OBJECT" } } } @@ -140697,23 +182070,31 @@ } }, { - "at": "/value/etag", + "at": "/value/entries/0/key", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-672b31e65569\"" + "value": "object-tests/board/a.txt" } }, { - "at": "/value/size", + "at": "/value/entries/0/size", "optional": false, "rule": { "is": "equal", - "value": 30 + "value": 8 } }, { - "at": "/value/version", + "at": "/value/entries/0/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-ca40e4206a8d\"" + } + }, + { + "at": "/value/entries/0/snapshot", "optional": true, "rule": { "is": "one_of", @@ -140724,52 +182105,66 @@ } }, { - "at": "/value/content_type", - "optional": false, + "at": "/value/entries/0/version", + "optional": true, "rule": { - "is": "equal", - "value": "text/plain; charset=utf-8" + "is": "one_of", + "values": [ + null, + "" + ] } }, { - "at": "/value/content_language", + "at": "/value/entries/0/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/continuation_token", "optional": false, "rule": { "is": "equal", - "value": "nl-NL" + "value": "" } }, { - "at": "/value/content_disposition", + "at": "/value/entries", "optional": false, "rule": { - "is": "equal", - "value": "attachment; filename=\"report.txt\"" + "is": "array_length", + "value": 1 } }, { - "at": "/value/cache_control", + "at": "/value/prefixes", "optional": false, "rule": { - "is": "equal", - "value": "max-age=3600" + "is": "array_length", + "value": 0 } } ], "refusal": null }, { - "id": "operations/s3-express/head-if-unmodified-since-past", + "id": "operations/s3-express/list-order-delimited", "profile": "s3-express", "lane": "core", - "purpose": "Refuse a HEAD with 412 when the object changed after If-Unmodified-Since", + "purpose": "Report the entries and the common prefixes in the order a directory bucket sends them, without sorting them", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "if_unmodified_since": "Sat, 01 Jan 2000 00:00:00 GMT", - "key": "object-tests/read/object.txt", - "op": "head" + "delimiter": "/", + "op": "list_page", + "prefix": "object-tests/order/" }, "exchanges": [ { @@ -140854,7 +182249,7 @@ "optional": false, "rule": { "is": "equal", - "value": "HEAD" + "value": "GET" } }, { @@ -140862,7 +182257,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/read/object.txt" + "value": "/" } }, { @@ -140873,6 +182268,30 @@ "value": "" } }, + { + "at": "/query/list-type", + "optional": false, + "rule": { + "is": "equal", + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/order/" + } + }, + { + "at": "/query/delimiter", + "optional": false, + "rule": { + "is": "equal", + "value": "/" + } + }, { "at": "/headers/host", "optional": false, @@ -140896,14 +182315,6 @@ "is": "matches", "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } - }, - { - "at": "/headers/if-unmodified-since", - "optional": false, - "rule": { - "is": "equal", - "value": "Sat, 01 Jan 2000 00:00:00 GMT" - } } ], "allow_headers": [ @@ -140911,55 +182322,20 @@ ], "allow_query": [], "response": { - "status": 412, + "status": 200, "headers": { + "content-type": "application/xml", "date": { "from": "now" - } + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "empty" + "encoding": "utf8", + "data": "\nfixtureobject-tests/order/81000falseCRC64NVME"fixture-67e7081fe36a"object-tests/order/a2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-e93bd77ca678"object-tests/order/é2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-b6a492ea4100"object-tests/order/a02024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-3a908dcdb129"object-tests/order/a.txt2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-a19aa03709bc"object-tests/order/A2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-62a88dc05318"object-tests/order/a-b2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-58bd4a8a6eb3"object-tests/order/b2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECT/object-tests/order/a/" } } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 412 - } - } - ], - "refusal": null - }, - { - "id": "operations/s3-express/head-key-question", - "profile": "s3-express", - "lane": "core", - "purpose": "head, with the key \"question?mark.txt\"", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "key": "object-tests/keys/question?mark.txt", - "op": "head" - }, - "exchanges": [ - { - "alternatives": [ + }, { "request": [ { @@ -140979,7 +182355,7 @@ } }, { - "at": "/query/session", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", @@ -140987,76 +182363,27 @@ } }, { - "at": "/headers/host", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" - } - }, - { - "at": "/headers/authorization", - "optional": false, - "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" - } - }, - { - "at": "/headers/x-amz-s3session-token", - "optional": false, - "rule": { - "is": "absent" - } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-type": "application/xml" - }, - "body": { - "encoding": "utf8", - "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" - }, - "body_time": { - "text": "SESSION_EXPIRATION", - "offset_seconds": 300 - } - } - } - ] - }, - { - "alternatives": [ - { - "request": [ - { - "at": "/method", + "at": "/query/list-type", "optional": false, "rule": { "is": "equal", - "value": "HEAD" + "value": "2" } }, { - "at": "/path", + "at": "/query/prefix", "optional": false, "rule": { "is": "equal", - "value": "/object-tests/keys/question?mark.txt" + "value": "object-tests/order/" } }, { - "at": "/body_base64", + "at": "/query/delimiter", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "/" } }, { @@ -141082,6 +182409,14 @@ "is": "matches", "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } + }, + { + "at": "/query/encoding-type", + "optional": false, + "rule": { + "is": "equal", + "value": "url" + } } ], "allow_headers": [ @@ -141091,17 +182426,15 @@ "response": { "status": 200, "headers": { - "content-length": "30", - "content-type": "binary/octet-stream", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-672b31e65569\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "" + "encoding": "utf8", + "data": "\nfixtureobject-tests/order/81000urlfalseCRC64NVME"fixture-67e7081fe36a"object-tests/order/a2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-e93bd77ca678"object-tests/order/%C3%A92024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-b6a492ea4100"object-tests/order/a02024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-3a908dcdb129"object-tests/order/a.txt2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-a19aa03709bc"object-tests/order/A2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-62a88dc05318"object-tests/order/a-b2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-58bd4a8a6eb3"object-tests/order/b2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECT/object-tests/order/a/" } } } @@ -141110,62 +182443,458 @@ ], "expect": [ { - "at": "/outcome", + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/entries/0/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/order/a" + } + }, + { + "at": "/value/entries/0/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/0/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-67e7081fe36a\"" + } + }, + { + "at": "/value/entries/0/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/1/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/order/é" + } + }, + { + "at": "/value/entries/1/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/1/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-e93bd77ca678\"" + } + }, + { + "at": "/value/entries/1/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/1/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/1/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/2/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/order/a0" + } + }, + { + "at": "/value/entries/2/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/2/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-b6a492ea4100\"" + } + }, + { + "at": "/value/entries/2/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/2/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/2/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/3/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/order/a.txt" + } + }, + { + "at": "/value/entries/3/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/3/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-3a908dcdb129\"" + } + }, + { + "at": "/value/entries/3/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/3/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/3/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/4/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/order/A" + } + }, + { + "at": "/value/entries/4/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/4/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-a19aa03709bc\"" + } + }, + { + "at": "/value/entries/4/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/4/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/4/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/5/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/order/a-b" + } + }, + { + "at": "/value/entries/5/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/5/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-62a88dc05318\"" + } + }, + { + "at": "/value/entries/5/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/5/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/5/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/6/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/order/b" + } + }, + { + "at": "/value/entries/6/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/6/etag", "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "\"fixture-58bd4a8a6eb3\"" } }, { - "at": "/value/etag", + "at": "/value/entries/6/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/6/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/6/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/prefixes/0", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-672b31e65569\"" + "value": "object-tests/order/a/" } }, { - "at": "/value/size", + "at": "/value/continuation_token", "optional": false, "rule": { "is": "equal", - "value": 30 + "value": "" } }, { - "at": "/value/content_type", + "at": "/value/entries", "optional": false, "rule": { - "is": "equal", - "value": "binary/octet-stream" + "is": "array_length", + "value": 7 } }, { - "at": "/value/version", - "optional": true, + "at": "/value/prefixes", + "optional": false, "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "is": "array_length", + "value": 1 } } ], "refusal": null }, { - "id": "operations/s3-express/head-key-hash", + "id": "operations/s3-express/list-order", "profile": "s3-express", "lane": "core", - "purpose": "head, with the key \"hash#tag.txt\"", + "purpose": "Report the entries in the order a directory bucket sends them, which is not sorted, without sorting them again", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/keys/hash#tag.txt", - "op": "head" + "op": "list_page", + "prefix": "object-tests/order/" }, "exchanges": [ { @@ -141250,7 +182979,7 @@ "optional": false, "rule": { "is": "equal", - "value": "HEAD" + "value": "GET" } }, { @@ -141258,7 +182987,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/keys/hash#tag.txt" + "value": "/" } }, { @@ -141269,6 +182998,22 @@ "value": "" } }, + { + "at": "/query/list-type", + "optional": false, + "rule": { + "is": "equal", + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/order/" + } + }, { "at": "/headers/host", "optional": false, @@ -141301,85 +183046,18 @@ "response": { "status": 200, "headers": { - "content-length": "30", - "content-type": "binary/octet-stream", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-672b31e65569\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "" + "encoding": "utf8", + "data": "\nfixtureobject-tests/order/81000falseCRC64NVME"fixture-67e7081fe36a"object-tests/order/a2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-e93bd77ca678"object-tests/order/é2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-b6a492ea4100"object-tests/order/a02024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-3a908dcdb129"object-tests/order/a.txt2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-a19aa03709bc"object-tests/order/A2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-bdef091a4e21"object-tests/order/a/b2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-62a88dc05318"object-tests/order/a-b2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-58bd4a8a6eb3"object-tests/order/b2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECT" } } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-672b31e65569\"" - } - }, - { - "at": "/value/size", - "optional": false, - "rule": { - "is": "equal", - "value": 30 - } - }, - { - "at": "/value/content_type", - "optional": false, - "rule": { - "is": "equal", - "value": "binary/octet-stream" - } - }, - { - "at": "/value/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - } - ], - "refusal": null - }, - { - "id": "operations/s3-express/head-key-percent", - "profile": "s3-express", - "lane": "core", - "purpose": "head, with the key \"percent%20.txt\"", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "key": "object-tests/keys/percent%20.txt", - "op": "head" - }, - "exchanges": [ - { - "alternatives": [ + }, { "request": [ { @@ -141399,7 +183077,7 @@ } }, { - "at": "/query/session", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", @@ -141407,76 +183085,19 @@ } }, { - "at": "/headers/host", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" - } - }, - { - "at": "/headers/authorization", - "optional": false, - "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" - } - }, - { - "at": "/headers/x-amz-s3session-token", - "optional": false, - "rule": { - "is": "absent" - } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-type": "application/xml" - }, - "body": { - "encoding": "utf8", - "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" - }, - "body_time": { - "text": "SESSION_EXPIRATION", - "offset_seconds": 300 - } - } - } - ] - }, - { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "HEAD" - } - }, - { - "at": "/path", + "at": "/query/list-type", "optional": false, "rule": { "is": "equal", - "value": "/object-tests/keys/percent%20.txt" + "value": "2" } }, { - "at": "/body_base64", + "at": "/query/prefix", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "object-tests/order/" } }, { @@ -141502,6 +183123,14 @@ "is": "matches", "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } + }, + { + "at": "/query/encoding-type", + "optional": false, + "rule": { + "is": "equal", + "value": "url" + } } ], "allow_headers": [ @@ -141511,17 +183140,15 @@ "response": { "status": 200, "headers": { - "content-length": "30", - "content-type": "binary/octet-stream", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-672b31e65569\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "" + "encoding": "utf8", + "data": "\nfixtureobject-tests/order/81000urlfalseCRC64NVME"fixture-67e7081fe36a"object-tests/order/a2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-e93bd77ca678"object-tests/order/%C3%A92024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-b6a492ea4100"object-tests/order/a02024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-3a908dcdb129"object-tests/order/a.txt2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-a19aa03709bc"object-tests/order/A2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-bdef091a4e21"object-tests/order/a/b2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-62a88dc05318"object-tests/order/a-b2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-58bd4a8a6eb3"object-tests/order/b2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECT" } } } @@ -141538,31 +183165,31 @@ } }, { - "at": "/value/etag", + "at": "/value/entries/0/key", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-672b31e65569\"" + "value": "object-tests/order/a" } }, { - "at": "/value/size", + "at": "/value/entries/0/size", "optional": false, "rule": { "is": "equal", - "value": 30 + "value": 1 } }, { - "at": "/value/content_type", + "at": "/value/entries/0/etag", "optional": false, "rule": { "is": "equal", - "value": "binary/octet-stream" + "value": "\"fixture-67e7081fe36a\"" } }, { - "at": "/value/version", + "at": "/value/entries/0/snapshot", "optional": true, "rule": { "is": "one_of", @@ -141571,208 +183198,397 @@ "" ] } - } - ], - "refusal": null - }, - { - "id": "operations/s3-express/head-key-plus", - "profile": "s3-express", - "lane": "core", - "purpose": "head, with the key \"plus+plus.txt\"", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "key": "object-tests/keys/plus+plus.txt", - "op": "head" - }, - "exchanges": [ + }, { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/" - } - }, - { - "at": "/query/session", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/headers/host", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" - } - }, - { - "at": "/headers/authorization", - "optional": false, - "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" - } - }, - { - "at": "/headers/x-amz-s3session-token", - "optional": false, - "rule": { - "is": "absent" - } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-type": "application/xml" - }, - "body": { - "encoding": "utf8", - "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" - }, - "body_time": { - "text": "SESSION_EXPIRATION", - "offset_seconds": 300 - } - } - } - ] + "at": "/value/entries/0/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } }, { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "HEAD" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/object-tests/keys/plus+plus.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/headers/host", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" - } - }, - { - "at": "/headers/x-amz-s3session-token", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-session-token" - } - }, - { - "at": "/headers/authorization", - "optional": false, - "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" - } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-length": "30", - "content-type": "binary/octet-stream", - "date": { - "from": "now" - }, - "etag": "\"fixture-672b31e65569\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" - }, - "body": { - "encoding": "base64", - "data": "" - } - } - } - ] - } - ], - "expect": [ + "at": "/value/entries/0/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, { - "at": "/outcome", + "at": "/value/entries/1/key", "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "object-tests/order/é" } }, { - "at": "/value/etag", + "at": "/value/entries/1/size", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-672b31e65569\"" + "value": 1 } }, { - "at": "/value/size", + "at": "/value/entries/1/etag", "optional": false, "rule": { "is": "equal", - "value": 30 + "value": "\"fixture-e93bd77ca678\"" } }, { - "at": "/value/content_type", + "at": "/value/entries/1/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/1/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/1/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/2/key", "optional": false, "rule": { "is": "equal", - "value": "binary/octet-stream" + "value": "object-tests/order/a0" } }, { - "at": "/value/version", + "at": "/value/entries/2/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/2/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-b6a492ea4100\"" + } + }, + { + "at": "/value/entries/2/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/2/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/2/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/3/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/order/a.txt" + } + }, + { + "at": "/value/entries/3/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/3/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-3a908dcdb129\"" + } + }, + { + "at": "/value/entries/3/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/3/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/3/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/4/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/order/A" + } + }, + { + "at": "/value/entries/4/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/4/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-a19aa03709bc\"" + } + }, + { + "at": "/value/entries/4/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/4/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/4/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/5/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/order/a/b" + } + }, + { + "at": "/value/entries/5/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/5/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-bdef091a4e21\"" + } + }, + { + "at": "/value/entries/5/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/5/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/5/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/6/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/order/a-b" + } + }, + { + "at": "/value/entries/6/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/6/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-62a88dc05318\"" + } + }, + { + "at": "/value/entries/6/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/6/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/6/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/7/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/order/b" + } + }, + { + "at": "/value/entries/7/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/7/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-58bd4a8a6eb3\"" + } + }, + { + "at": "/value/entries/7/snapshot", "optional": true, "rule": { "is": "one_of", @@ -141781,21 +183597,68 @@ "" ] } + }, + { + "at": "/value/entries/7/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/7/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/continuation_token", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/value/entries", + "optional": false, + "rule": { + "is": "array_length", + "value": 8 + } + }, + { + "at": "/value/prefixes", + "optional": false, + "rule": { + "is": "array_length", + "value": 0 + } } ], "refusal": null }, { - "id": "operations/s3-express/head-key-space", + "id": "operations/s3-express/list-other-delimiter", "profile": "s3-express", "lane": "core", - "purpose": "head, with the key \"space name.txt\"", + "purpose": "Report the 400 InvalidRequest that a directory bucket answers to a delimiter other than /, or refuse it before sending", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/keys/space name.txt", - "op": "head" + "delimiter": "-", + "op": "list_page", + "prefix": "object-tests/board/" }, "exchanges": [ { @@ -141880,7 +183743,7 @@ "optional": false, "rule": { "is": "equal", - "value": "HEAD" + "value": "GET" } }, { @@ -141888,7 +183751,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/keys/space name.txt" + "value": "/" } }, { @@ -141899,6 +183762,30 @@ "value": "" } }, + { + "at": "/query/list-type", + "optional": false, + "rule": { + "is": "equal", + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/" + } + }, + { + "at": "/query/delimiter", + "optional": false, + "rule": { + "is": "equal", + "value": "-" + } + }, { "at": "/headers/host", "optional": false, @@ -141929,87 +183816,20 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 400, "headers": { - "content-length": "30", - "content-type": "binary/octet-stream", + "content-type": "application/xml", "date": { "from": "now" - }, - "etag": "\"fixture-672b31e65569\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { - "encoding": "base64", - "data": "" - } + "encoding": "utf8", + "data": "\nInvalidRequestFixture error" + }, + "framing": "chunked" } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-672b31e65569\"" - } - }, - { - "at": "/value/size", - "optional": false, - "rule": { - "is": "equal", - "value": 30 - } - }, - { - "at": "/value/content_type", - "optional": false, - "rule": { - "is": "equal", - "value": "binary/octet-stream" - } - }, - { - "at": "/value/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - } - ], - "refusal": null - }, - { - "id": "operations/s3-express/head-key-non-ascii", - "profile": "s3-express", - "lane": "core", - "purpose": "head, with the key \"café/雪.txt\"", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "key": "object-tests/keys/café/雪.txt", - "op": "head" - }, - "exchanges": [ - { - "alternatives": [ + }, { "request": [ { @@ -142029,7 +183849,7 @@ } }, { - "at": "/query/session", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", @@ -142037,76 +183857,27 @@ } }, { - "at": "/headers/host", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" - } - }, - { - "at": "/headers/authorization", - "optional": false, - "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" - } - }, - { - "at": "/headers/x-amz-s3session-token", - "optional": false, - "rule": { - "is": "absent" - } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-type": "application/xml" - }, - "body": { - "encoding": "utf8", - "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" - }, - "body_time": { - "text": "SESSION_EXPIRATION", - "offset_seconds": 300 - } - } - } - ] - }, - { - "alternatives": [ - { - "request": [ - { - "at": "/method", + "at": "/query/list-type", "optional": false, "rule": { "is": "equal", - "value": "HEAD" + "value": "2" } }, { - "at": "/path", + "at": "/query/prefix", "optional": false, "rule": { "is": "equal", - "value": "/object-tests/keys/café/雪.txt" + "value": "object-tests/board/" } }, { - "at": "/body_base64", + "at": "/query/delimiter", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "-" } }, { @@ -142132,6 +183903,14 @@ "is": "matches", "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } + }, + { + "at": "/query/encoding-type", + "optional": false, + "rule": { + "is": "equal", + "value": "url" + } } ], "allow_headers": [ @@ -142139,20 +183918,18 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 400, "headers": { - "content-length": "30", - "content-type": "binary/octet-stream", + "content-type": "application/xml", "date": { "from": "now" - }, - "etag": "\"fixture-672b31e65569\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { - "encoding": "base64", - "data": "" - } + "encoding": "utf8", + "data": "\nInvalidRequestThis bucket only supports '/' as a delimiter01a36c7dc10001a08269f29d0c1a80c2547f97e2NIAczpdqY" + }, + "framing": "chunked" } } ] @@ -142164,58 +183941,80 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "error" } }, { - "at": "/value/etag", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-672b31e65569\"" + "value": 400 } }, { - "at": "/value/size", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": 30 + "value": "InvalidRequest" + } + } + ], + "refusal": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "refused" } }, { - "at": "/value/content_type", + "at": "/kind", + "optional": false, + "rule": { + "is": "matches", + "pattern": ".+" + } + }, + { + "at": "/parameter", "optional": false, "rule": { "is": "equal", - "value": "binary/octet-stream" + "value": "delimiter" } }, { - "at": "/value/version", + "at": "/status", "optional": true, "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "is": "equal", + "value": 400 + } + }, + { + "at": "/code", + "optional": true, + "rule": { + "is": "equal", + "value": "InvalidRequest" } } - ], - "refusal": null + ] }, { - "id": "operations/s3-express/head-key-double-slash", + "id": "operations/s3-express/list-page", "profile": "s3-express", "lane": "core", - "purpose": "head, with the key \"double//slash.txt\"", + "purpose": "List a prefix with ListObjectsV2 (list-type=2), and report each entry's key, size and ETag, quotes included", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/keys/double//slash.txt", - "op": "head" + "op": "list_page", + "prefix": "object-tests/board/" }, "exchanges": [ { @@ -142300,7 +184099,7 @@ "optional": false, "rule": { "is": "equal", - "value": "HEAD" + "value": "GET" } }, { @@ -142308,7 +184107,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/keys/double//slash.txt" + "value": "/" } }, { @@ -142319,6 +184118,22 @@ "value": "" } }, + { + "at": "/query/list-type", + "optional": false, + "rule": { + "is": "equal", + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/" + } + }, { "at": "/headers/host", "optional": false, @@ -142351,85 +184166,18 @@ "response": { "status": 200, "headers": { - "content-length": "30", - "content-type": "binary/octet-stream", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-672b31e65569\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "" + "encoding": "utf8", + "data": "\nfixtureobject-tests/board/31000falseCRC64NVME"fixture-7d1b875717fa"object-tests/board/z.txt2024-01-01T00:00:00.000Z2EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-d9b959b4d7a6"object-tests/board/nested/c.txt2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-ca40e4206a8d"object-tests/board/a.txt2024-01-01T00:00:00.000Z8EXPRESS_ONEZONEFULL_OBJECT" } } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-672b31e65569\"" - } - }, - { - "at": "/value/size", - "optional": false, - "rule": { - "is": "equal", - "value": 30 - } - }, - { - "at": "/value/content_type", - "optional": false, - "rule": { - "is": "equal", - "value": "binary/octet-stream" - } - }, - { - "at": "/value/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - } - ], - "refusal": null - }, - { - "id": "operations/s3-express/head-key-trailing-slash", - "profile": "s3-express", - "lane": "core", - "purpose": "head, with the key \"trailing-slash/\"", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "key": "object-tests/keys/trailing-slash/", - "op": "head" - }, - "exchanges": [ - { - "alternatives": [ + }, { "request": [ { @@ -142449,7 +184197,7 @@ } }, { - "at": "/query/session", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", @@ -142457,76 +184205,19 @@ } }, { - "at": "/headers/host", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" - } - }, - { - "at": "/headers/authorization", - "optional": false, - "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" - } - }, - { - "at": "/headers/x-amz-s3session-token", - "optional": false, - "rule": { - "is": "absent" - } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-type": "application/xml" - }, - "body": { - "encoding": "utf8", - "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" - }, - "body_time": { - "text": "SESSION_EXPIRATION", - "offset_seconds": 300 - } - } - } - ] - }, - { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "HEAD" - } - }, - { - "at": "/path", + "at": "/query/list-type", "optional": false, "rule": { "is": "equal", - "value": "/object-tests/keys/trailing-slash/" + "value": "2" } }, { - "at": "/body_base64", + "at": "/query/prefix", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "object-tests/board/" } }, { @@ -142552,6 +184243,14 @@ "is": "matches", "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } + }, + { + "at": "/query/encoding-type", + "optional": false, + "rule": { + "is": "equal", + "value": "url" + } } ], "allow_headers": [ @@ -142561,17 +184260,15 @@ "response": { "status": 200, "headers": { - "content-length": "30", - "content-type": "binary/octet-stream", + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-672b31e65569\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "" + "encoding": "utf8", + "data": "\nfixtureobject-tests/board/31000urlfalseCRC64NVME"fixture-7d1b875717fa"object-tests/board/z.txt2024-01-01T00:00:00.000Z2EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-d9b959b4d7a6"object-tests/board/nested/c.txt2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-ca40e4206a8d"object-tests/board/a.txt2024-01-01T00:00:00.000Z8EXPRESS_ONEZONEFULL_OBJECT" } } } @@ -142588,31 +184285,156 @@ } }, { - "at": "/value/etag", + "at": "/value/entries/0/key", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-672b31e65569\"" + "value": "object-tests/board/z.txt" } }, { - "at": "/value/size", + "at": "/value/entries/0/size", "optional": false, "rule": { "is": "equal", - "value": 30 + "value": 2 } }, { - "at": "/value/content_type", + "at": "/value/entries/0/etag", "optional": false, "rule": { "is": "equal", - "value": "binary/octet-stream" + "value": "\"fixture-7d1b875717fa\"" } }, { - "at": "/value/version", + "at": "/value/entries/0/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/1/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/nested/c.txt" + } + }, + { + "at": "/value/entries/1/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/1/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-d9b959b4d7a6\"" + } + }, + { + "at": "/value/entries/1/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/1/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/1/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/2/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/a.txt" + } + }, + { + "at": "/value/entries/2/size", + "optional": false, + "rule": { + "is": "equal", + "value": 8 + } + }, + { + "at": "/value/entries/2/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-ca40e4206a8d\"" + } + }, + { + "at": "/value/entries/2/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/2/version", "optional": true, "rule": { "is": "one_of", @@ -142621,22 +184443,56 @@ "" ] } + }, + { + "at": "/value/entries/2/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/continuation_token", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/value/entries", + "optional": false, + "rule": { + "is": "array_length", + "value": 3 + } + }, + { + "at": "/value/prefixes", + "optional": false, + "rule": { + "is": "array_length", + "value": 0 + } } ], "refusal": null }, { - "id": "operations/s3-express/list-bad-marker", + "id": "operations/s3-express/list-prefix-without-slash", "profile": "s3-express", "lane": "core", - "purpose": "Report S3's 400 InvalidArgument for a continuation token it did not issue", + "purpose": "Report the 400 InvalidRequest that a directory bucket answers to a prefix not ending in /, or refuse it before sending", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "continuation_token": "fixture-marker+/ce6f21ae951d=", "op": "list_page", - "prefix": "object-tests/board/" + "prefix": "object-tests/boa" }, "exchanges": [ { @@ -142753,15 +184609,7 @@ "optional": false, "rule": { "is": "equal", - "value": "object-tests/board/" - } - }, - { - "at": "/query/continuation-token", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-marker+/ce6f21ae951d=" + "value": "object-tests/boa" } }, { @@ -142803,7 +184651,7 @@ }, "body": { "encoding": "utf8", - "data": "\nInvalidArgumentFixture error" + "data": "\nInvalidRequestFixture error" }, "framing": "chunked" } @@ -142847,15 +184695,7 @@ "optional": false, "rule": { "is": "equal", - "value": "object-tests/board/" - } - }, - { - "at": "/query/continuation-token", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-marker+/ce6f21ae951d=" + "value": "object-tests/boa" } }, { @@ -142905,7 +184745,7 @@ }, "body": { "encoding": "utf8", - "data": "\nInvalidArgumentThe continuation token provided is incorrectcontinuation-token01516607970001a08269f32e0c1ad876480f0641WZg5FiuD0" + "data": "\nInvalidRequestThis bucket does not support a prefix that does not end in a delimiter. Specify a prefix path ending with a delimiter and try again.0183be19920001a08269f26d0c1a43b807f6c3286pF5i69Tlzo" }, "framing": "chunked" } @@ -142935,24 +184775,65 @@ "optional": false, "rule": { "is": "equal", - "value": "InvalidArgument" + "value": "InvalidRequest" } } ], - "refusal": null + "refusal": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "refused" + } + }, + { + "at": "/kind", + "optional": false, + "rule": { + "is": "matches", + "pattern": ".+" + } + }, + { + "at": "/parameter", + "optional": false, + "rule": { + "is": "equal", + "value": "prefix" + } + }, + { + "at": "/status", + "optional": true, + "rule": { + "is": "equal", + "value": 400 + } + }, + { + "at": "/code", + "optional": true, + "rule": { + "is": "equal", + "value": "InvalidRequest" + } + } + ] }, { - "id": "operations/s3-express/list-delimited", + "id": "operations/s3-express/list-separator-keys-delimited", "profile": "s3-express", "lane": "core", - "purpose": "Send the delimiter, and report the keys it groups as common prefixes, not as entries", + "purpose": "Group each key at the first delimiter after the prefix, even where the key repeats it or ends with it", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { "delimiter": "/", "op": "list_page", - "prefix": "object-tests/board/" + "prefix": "object-tests/separators/" }, "exchanges": [ { @@ -143069,7 +184950,7 @@ "optional": false, "rule": { "is": "equal", - "value": "object-tests/board/" + "value": "object-tests/separators/" } }, { @@ -143120,7 +185001,7 @@ }, "body": { "encoding": "utf8", - "data": "\nfixtureobject-tests/board/31000falseCRC64NVME"fixture-7d1b875717fa"object-tests/board/z.txt2024-01-01T00:00:00.000Z2EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-ca40e4206a8d"object-tests/board/a.txt2024-01-01T00:00:00.000Z8EXPRESS_ONEZONEFULL_OBJECT/object-tests/board/nested/" + "data": "\nfixtureobject-tests/separators/61000falseCRC64NVME"fixture-42aa4973e21e"object-tests/separators/..leading2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-9282c60ce573"object-tests/separators/dot.2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECT/object-tests/separators/space /object-tests/separators/a.b/object-tests/separators/trailing/object-tests/separators/double/" } } }, @@ -143163,7 +185044,7 @@ "optional": false, "rule": { "is": "equal", - "value": "object-tests/board/" + "value": "object-tests/separators/" } }, { @@ -143222,7 +185103,7 @@ }, "body": { "encoding": "utf8", - "data": "\nfixtureobject-tests/board/31000urlfalseCRC64NVME"fixture-7d1b875717fa"object-tests/board/z.txt2024-01-01T00:00:00.000Z2EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-ca40e4206a8d"object-tests/board/a.txt2024-01-01T00:00:00.000Z8EXPRESS_ONEZONEFULL_OBJECT/object-tests/board/nested/" + "data": "\nfixtureobject-tests/separators/61000urlfalseCRC64NVME"fixture-42aa4973e21e"object-tests/separators/..leading2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-9282c60ce573"object-tests/separators/dot.2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECT/object-tests/separators/space+/object-tests/separators/a.b/object-tests/separators/trailing/object-tests/separators/double/" } } } @@ -143243,7 +185124,7 @@ "optional": false, "rule": { "is": "equal", - "value": "object-tests/board/z.txt" + "value": "object-tests/separators/..leading" } }, { @@ -143251,7 +185132,7 @@ "optional": false, "rule": { "is": "equal", - "value": 2 + "value": 1 } }, { @@ -143259,7 +185140,7 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-7d1b875717fa\"" + "value": "\"fixture-42aa4973e21e\"" } }, { @@ -143300,7 +185181,7 @@ "optional": false, "rule": { "is": "equal", - "value": "object-tests/board/a.txt" + "value": "object-tests/separators/dot." } }, { @@ -143308,7 +185189,7 @@ "optional": false, "rule": { "is": "equal", - "value": 8 + "value": 1 } }, { @@ -143316,7 +185197,7 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-ca40e4206a8d\"" + "value": "\"fixture-9282c60ce573\"" } }, { @@ -143357,7 +185238,31 @@ "optional": false, "rule": { "is": "equal", - "value": "object-tests/board/nested/" + "value": "object-tests/separators/space /" + } + }, + { + "at": "/value/prefixes/1", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/separators/a.b/" + } + }, + { + "at": "/value/prefixes/2", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/separators/trailing/" + } + }, + { + "at": "/value/prefixes/3", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/separators/double/" } }, { @@ -143381,23 +185286,23 @@ "optional": false, "rule": { "is": "array_length", - "value": 1 + "value": 4 } } ], "refusal": null }, { - "id": "operations/s3-express/list-empty", + "id": "operations/s3-express/list-separator-keys", "profile": "s3-express", "lane": "core", - "purpose": "Report a prefix with no objects as no entries, no prefixes and an empty continuation token", + "purpose": "Report keys with leading dots, repeated slashes, a space and a trailing slash exactly as stored", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { "op": "list_page", - "prefix": "object-tests/nothing/" + "prefix": "object-tests/separators/" }, "exchanges": [ { @@ -143514,7 +185419,7 @@ "optional": false, "rule": { "is": "equal", - "value": "object-tests/nothing/" + "value": "object-tests/separators/" } }, { @@ -143557,7 +185462,7 @@ }, "body": { "encoding": "utf8", - "data": "\nfixtureobject-tests/nothing/01000false" + "data": "\nfixtureobject-tests/separators/61000falseCRC64NVME"fixture-42aa4973e21e"object-tests/separators/..leading2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-42eb96253921"object-tests/separators/space /x2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-9282c60ce573"object-tests/separators/dot.2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-3103883be81f"object-tests/separators/a.b/c2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-9122241c6748"object-tests/separators/trailing/2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-86940355381a"object-tests/separators/double//slash2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECT" } } }, @@ -143600,7 +185505,7 @@ "optional": false, "rule": { "is": "equal", - "value": "object-tests/nothing/" + "value": "object-tests/separators/" } }, { @@ -143651,7 +185556,7 @@ }, "body": { "encoding": "utf8", - "data": "\nfixtureobject-tests/nothing/01000urlfalse" + "data": "\nfixtureobject-tests/separators/61000urlfalseCRC64NVME"fixture-42aa4973e21e"object-tests/separators/..leading2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-42eb96253921"object-tests/separators/space+/x2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-9282c60ce573"object-tests/separators/dot.2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-3103883be81f"object-tests/separators/a.b/c2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-9122241c6748"object-tests/separators/trailing/2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-86940355381a"object-tests/separators/double//slash2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECT" } } } @@ -143667,6 +185572,348 @@ "value": "ok" } }, + { + "at": "/value/entries/0/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/separators/..leading" + } + }, + { + "at": "/value/entries/0/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/0/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-42aa4973e21e\"" + } + }, + { + "at": "/value/entries/0/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/1/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/separators/space /x" + } + }, + { + "at": "/value/entries/1/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/1/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-42eb96253921\"" + } + }, + { + "at": "/value/entries/1/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/1/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/1/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/2/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/separators/dot." + } + }, + { + "at": "/value/entries/2/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/2/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-9282c60ce573\"" + } + }, + { + "at": "/value/entries/2/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/2/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/2/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/3/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/separators/a.b/c" + } + }, + { + "at": "/value/entries/3/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/3/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-3103883be81f\"" + } + }, + { + "at": "/value/entries/3/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/3/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/3/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/4/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/separators/trailing/" + } + }, + { + "at": "/value/entries/4/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/4/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-9122241c6748\"" + } + }, + { + "at": "/value/entries/4/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/4/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/4/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries/5/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/separators/double//slash" + } + }, + { + "at": "/value/entries/5/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/5/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-86940355381a\"" + } + }, + { + "at": "/value/entries/5/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/5/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/5/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, { "at": "/value/continuation_token", "optional": false, @@ -143680,7 +185927,7 @@ "optional": false, "rule": { "is": "array_length", - "value": 0 + "value": 6 } }, { @@ -143695,16 +185942,17 @@ "refusal": null }, { - "id": "operations/s3-express/list-all-empty", + "id": "operations/s3-express/list-all-pages", "profile": "s3-express", "lane": "core", - "purpose": "Report an empty bucket as an empty listing", + "purpose": "Follow each page's continuation token until a page is not truncated", "sources": [ - "https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { "op": "list", - "prefix": "" + "page_size": 1, + "prefix": "object-tests/board/" }, "exchanges": [ { @@ -143712,27 +185960,124 @@ { "request": [ { - "at": "/method", + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/" + } + }, + { + "at": "/query/session", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/host", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "absent" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml" + }, + "body": { + "encoding": "utf8", + "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" + }, + "body_time": { + "text": "SESSION_EXPIRATION", + "offset_seconds": 300 + } + } + } + ] + }, + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/" + } + }, + { + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "" } }, { - "at": "/path", + "at": "/query/list-type", "optional": false, "rule": { "is": "equal", - "value": "/" + "value": "2" } }, { - "at": "/query/session", + "at": "/query/prefix", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "object-tests/board/" + } + }, + { + "at": "/query/max-keys", + "optional": false, + "rule": { + "is": "equal", + "value": "1" } }, { @@ -143744,18 +186089,19 @@ } }, { - "at": "/headers/authorization", + "at": "/headers/x-amz-s3session-token", "optional": false, "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + "is": "equal", + "value": "fixture-session-token" } }, { - "at": "/headers/x-amz-s3session-token", + "at": "/headers/authorization", "optional": false, "rule": { - "is": "absent" + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } } ], @@ -143766,22 +186112,18 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml" + "content-type": "application/xml", + "date": { + "from": "now" + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "utf8", - "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" - }, - "body_time": { - "text": "SESSION_EXPIRATION", - "offset_seconds": 300 + "data": "\nfixtureobject-tests/board/fixture-marker+/a11ba9e5001=11trueCRC64NVME"fixture-626f61720000"object-tests/board/a.txt2024-01-01T00:00:00.000Z8EXPRESS_ONEZONEFULL_OBJECT" } } - } - ] - }, - { - "alternatives": [ + }, { "request": [ { @@ -143818,22 +186160,26 @@ }, { "at": "/query/prefix", - "optional": true, + "optional": false, "rule": { "is": "equal", - "value": "" + "value": "object-tests/board/" } }, { - "at": "/headers/content-type", - "optional": true, + "at": "/query/max-keys", + "optional": false, "rule": { - "is": "one_of", - "values": [ - "application/xml", - "application/octet-stream", - "binary/octet-stream" - ] + "is": "equal", + "value": "1" + } + }, + { + "at": "/query/encoding-type", + "optional": false, + "rule": { + "is": "equal", + "value": "url" } }, { @@ -143861,7 +186207,9 @@ } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { "status": 200, @@ -143870,16 +186218,18 @@ "date": { "from": "now" }, - "etag": "\"fixture-etag\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-amz-request-id": "fixture-request-id" + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Zml4dHVyZTwvTmFtZT48UHJlZml4PjwvUHJlZml4PjxNYXhLZXlzPjEwMDA8L01heEtleXM+PEtleUNvdW50PjA8L0tleUNvdW50PjxJc1RydW5jYXRlZD5mYWxzZTwvSXNUcnVuY2F0ZWQ+PC9MaXN0QnVja2V0UmVzdWx0Pg==" + "encoding": "utf8", + "data": "\nfixtureobject-tests/board/fixture-marker+/a11ba9e5001=11urltrueCRC64NVME"fixture-626f61720000"object-tests/board/a.txt2024-01-01T00:00:00.000Z8EXPRESS_ONEZONEFULL_OBJECT" } } - }, + } + ] + }, + { + "alternatives": [ { "request": [ { @@ -143916,30 +186266,26 @@ }, { "at": "/query/prefix", - "optional": true, + "optional": false, "rule": { "is": "equal", - "value": "" + "value": "object-tests/board/" } }, { - "at": "/headers/content-type", - "optional": true, + "at": "/query/max-keys", + "optional": false, "rule": { - "is": "one_of", - "values": [ - "application/xml", - "application/octet-stream", - "binary/octet-stream" - ] + "is": "equal", + "value": "1" } }, { - "at": "/query/encoding-type", + "at": "/query/continuation-token", "optional": false, "rule": { "is": "equal", - "value": "url" + "value": "fixture-marker+/a11ba9e5001=" } }, { @@ -143967,7 +186313,9 @@ } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { "status": 200, @@ -143976,54 +186324,14 @@ "date": { "from": "now" }, - "etag": "\"fixture-etag\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-amz-request-id": "fixture-request-id" + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Zml4dHVyZTwvTmFtZT48UHJlZml4PjwvUHJlZml4PjxNYXhLZXlzPjEwMDA8L01heEtleXM+PEtleUNvdW50PjA8L0tleUNvdW50PjxFbmNvZGluZ1R5cGU+dXJsPC9FbmNvZGluZ1R5cGU+PElzVHJ1bmNhdGVkPmZhbHNlPC9Jc1RydW5jYXRlZD48L0xpc3RCdWNrZXRSZXN1bHQ+" + "encoding": "utf8", + "data": "\nfixtureobject-tests/board/fixture-marker+/a11ba9e5001=fixture-marker+/a11ba9e5002=11trueCRC64NVME"fixture-626f61720001"object-tests/board/nested/c.txt2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECT" } } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/keys", - "optional": false, - "rule": { - "is": "equal", - "value": [] - } - } - ], - "refusal": null - }, - { - "id": "operations/s3-express/list-xml-escaped", - "profile": "s3-express", - "lane": "core", - "purpose": "Read XML character references in listed names, such as & and <, or ask for encoding-type=url and decode the names", - "sources": [ - "https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html" - ], - "call": { - "op": "list", - "prefix": "" - }, - "exchanges": [ - { - "alternatives": [ + }, { "request": [ { @@ -144043,13 +186351,53 @@ } }, { - "at": "/query/session", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", "value": "" } }, + { + "at": "/query/list-type", + "optional": false, + "rule": { + "is": "equal", + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/board/" + } + }, + { + "at": "/query/max-keys", + "optional": false, + "rule": { + "is": "equal", + "value": "1" + } + }, + { + "at": "/query/continuation-token", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-marker+/a11ba9e5001=" + } + }, + { + "at": "/query/encoding-type", + "optional": false, + "rule": { + "is": "equal", + "value": "url" + } + }, { "at": "/headers/host", "optional": false, @@ -144059,18 +186407,19 @@ } }, { - "at": "/headers/authorization", + "at": "/headers/x-amz-s3session-token", "optional": false, "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + "is": "equal", + "value": "fixture-session-token" } }, { - "at": "/headers/x-amz-s3session-token", + "at": "/headers/authorization", "optional": false, "rule": { - "is": "absent" + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } } ], @@ -144081,15 +186430,15 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml" + "content-type": "application/xml", + "date": { + "from": "now" + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "utf8", - "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" - }, - "body_time": { - "text": "SESSION_EXPIRATION", - "offset_seconds": 300 + "data": "\nfixtureobject-tests/board/fixture-marker+/a11ba9e5001=fixture-marker+/a11ba9e5002=11urltrueCRC64NVME"fixture-626f61720001"object-tests/board/nested/c.txt2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECT" } } } @@ -144133,22 +186482,26 @@ }, { "at": "/query/prefix", - "optional": true, + "optional": false, "rule": { "is": "equal", - "value": "" + "value": "object-tests/board/" } }, { - "at": "/headers/content-type", - "optional": true, + "at": "/query/max-keys", + "optional": false, "rule": { - "is": "one_of", - "values": [ - "application/xml", - "application/octet-stream", - "binary/octet-stream" - ] + "is": "equal", + "value": "1" + } + }, + { + "at": "/query/continuation-token", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-marker+/a11ba9e5002=" } }, { @@ -144176,7 +186529,9 @@ } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { "status": 200, @@ -144185,13 +186540,11 @@ "date": { "from": "now" }, - "etag": "\"fixture-etag\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-amz-request-id": "fixture-request-id" + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Zml4dHVyZTwvTmFtZT48UHJlZml4PjwvUHJlZml4PjxNYXhLZXlzPjEwMDA8L01heEtleXM+PEtleUNvdW50PjI8L0tleUNvdW50PjxJc1RydW5jYXRlZD5mYWxzZTwvSXNUcnVuY2F0ZWQ+PENvbnRlbnRzPjxFVGFnPiZxdW90O2ZpeHR1cmUmcXVvdDs8L0VUYWc+PEtleT5hJmFtcDtiPC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTAxLTAxVDAwOjAwOjAwLjAwMFo8L0xhc3RNb2RpZmllZD48U2l6ZT41PC9TaXplPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb250ZW50cz48RVRhZz4mcXVvdDtmaXh0dXJlJnF1b3Q7PC9FVGFnPjxLZXk+YyZsdDtkPC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTAxLTAxVDAwOjAwOjAwLjAwMFo8L0xhc3RNb2RpZmllZD48U2l6ZT41PC9TaXplPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjwvTGlzdEJ1Y2tldFJlc3VsdD4=" + "encoding": "utf8", + "data": "\nfixtureobject-tests/board/fixture-marker+/a11ba9e5002=11falseCRC64NVME"fixture-626f61720002"object-tests/board/z.txt2024-01-01T00:00:00.000Z2EXPRESS_ONEZONEFULL_OBJECT" } } }, @@ -144231,22 +186584,26 @@ }, { "at": "/query/prefix", - "optional": true, + "optional": false, "rule": { "is": "equal", - "value": "" + "value": "object-tests/board/" } }, { - "at": "/headers/content-type", - "optional": true, + "at": "/query/max-keys", + "optional": false, "rule": { - "is": "one_of", - "values": [ - "application/xml", - "application/octet-stream", - "binary/octet-stream" - ] + "is": "equal", + "value": "1" + } + }, + { + "at": "/query/continuation-token", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-marker+/a11ba9e5002=" } }, { @@ -144282,7 +186639,9 @@ } } ], - "allow_headers": [], + "allow_headers": [ + "content-type" + ], "allow_query": [], "response": { "status": 200, @@ -144291,13 +186650,11 @@ "date": { "from": "now" }, - "etag": "\"fixture-etag\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT", - "x-amz-request-id": "fixture-request-id" + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPExpc3RCdWNrZXRSZXN1bHQgeG1sbnM9Imh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2RvYy8yMDA2LTAzLTAxLyI+PE5hbWU+Zml4dHVyZTwvTmFtZT48UHJlZml4PjwvUHJlZml4PjxNYXhLZXlzPjEwMDA8L01heEtleXM+PEtleUNvdW50PjI8L0tleUNvdW50PjxFbmNvZGluZ1R5cGU+dXJsPC9FbmNvZGluZ1R5cGU+PElzVHJ1bmNhdGVkPmZhbHNlPC9Jc1RydW5jYXRlZD48Q29udGVudHM+PEVUYWc+JnF1b3Q7Zml4dHVyZSZxdW90OzwvRVRhZz48S2V5PmElMjZiPC9LZXk+PExhc3RNb2RpZmllZD4yMDI0LTAxLTAxVDAwOjAwOjAwLjAwMFo8L0xhc3RNb2RpZmllZD48U2l6ZT41PC9TaXplPjxTdG9yYWdlQ2xhc3M+U1RBTkRBUkQ8L1N0b3JhZ2VDbGFzcz48L0NvbnRlbnRzPjxDb250ZW50cz48RVRhZz4mcXVvdDtmaXh0dXJlJnF1b3Q7PC9FVGFnPjxLZXk+YyUzQ2Q8L0tleT48TGFzdE1vZGlmaWVkPjIwMjQtMDEtMDFUMDA6MDA6MDAuMDAwWjwvTGFzdE1vZGlmaWVkPjxTaXplPjU8L1NpemU+PFN0b3JhZ2VDbGFzcz5TVEFOREFSRDwvU3RvcmFnZUNsYXNzPjwvQ29udGVudHM+PC9MaXN0QnVja2V0UmVzdWx0Pg==" + "encoding": "utf8", + "data": "\nfixtureobject-tests/board/fixture-marker+/a11ba9e5002=11urlfalseCRC64NVME"fixture-626f61720002"object-tests/board/z.txt2024-01-01T00:00:00.000Z2EXPRESS_ONEZONEFULL_OBJECT" } } } @@ -144319,8 +186676,9 @@ "rule": { "is": "equal", "value": [ - "a&b", - "c\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" + "data": "\nNoSuchBucketFixture error" }, - "body_time": { - "text": "SESSION_EXPIRATION", - "offset_seconds": 300 - } + "framing": "chunked" } } ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 404 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "NoSuchBucket" + } }, + { + "at": "/kind", + "optional": false, + "rule": { + "is": "equal", + "value": "container_not_found" + } + } + ], + "refusal": null + }, + { + "id": "operations/s3-express/list-entry-properties", + "profile": "s3-express", + "lane": "core", + "purpose": "Report each listed object's last-modified time as RFC 3339 in UTC, and its storage class", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "op": "list_page", + "prefix": "object-tests/properties/" + }, + "exchanges": [ { "alternatives": [ { @@ -144434,7 +186842,7 @@ } }, { - "at": "/body_base64", + "at": "/query/session", "optional": false, "rule": { "is": "equal", @@ -144442,19 +186850,76 @@ } }, { - "at": "/query/list-type", + "at": "/headers/host", "optional": false, "rule": { "is": "equal", - "value": "2" + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" } }, { - "at": "/query/prefix", + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "absent" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml" + }, + "body": { + "encoding": "utf8", + "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" + }, + "body_time": { + "text": "SESSION_EXPIRATION", + "offset_seconds": 300 + } + } + } + ] + }, + { + "alternatives": [ + { + "request": [ + { + "at": "/method", "optional": false, "rule": { "is": "equal", - "value": "object-tests/names/" + "value": "GET" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" } }, { @@ -144480,6 +186945,22 @@ "is": "matches", "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } + }, + { + "at": "/query/list-type", + "optional": false, + "rule": { + "is": "equal", + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/properties/" + } } ], "allow_headers": [ @@ -144497,7 +186978,7 @@ }, "body": { "encoding": "utf8", - "data": "\nfixtureobject-tests/names/101000falseCRC64NVME"fixture-36534817118e"object-tests/names/back\\slash.txt2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-10822d0eb6a7"object-tests/names/q?mark.txt2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-bd8e8b1adffd"object-tests/names/a&b.txt2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-a16607f00956"object-tests/names/percent%20.txt2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-1b1e630ad692"object-tests/names/plus+plus.txt2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-daab0593c9af"object-tests/names/100%-name.txt2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-d614f09fca44"object-tests/names/space name.txt2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-e759336a908a"object-tests/names/ctrl\u0001.txt2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-578365eba262"object-tests/names/café.txt2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-84af5210cfd9"object-tests/names/hash#tag.txt2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECT" + "data": "\nfixtureobject-tests/properties/11000falseobject-tests/properties/a.txt2024-01-02T03:04:05.000Z"fixture-5070726f0000"CRC64NVMEFULL_OBJECT2EXPRESS_ONEZONE" } } }, @@ -144528,43 +187009,43 @@ } }, { - "at": "/query/list-type", + "at": "/headers/host", "optional": false, "rule": { "is": "equal", - "value": "2" + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" } }, { - "at": "/query/prefix", + "at": "/headers/x-amz-s3session-token", "optional": false, "rule": { "is": "equal", - "value": "object-tests/names/" + "value": "fixture-session-token" } }, { - "at": "/headers/host", + "at": "/headers/authorization", "optional": false, "rule": { - "is": "equal", - "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } }, { - "at": "/headers/x-amz-s3session-token", + "at": "/query/list-type", "optional": false, "rule": { "is": "equal", - "value": "fixture-session-token" + "value": "2" } }, { - "at": "/headers/authorization", + "at": "/query/prefix", "optional": false, "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + "is": "equal", + "value": "object-tests/properties/" } }, { @@ -144591,7 +187072,7 @@ }, "body": { "encoding": "utf8", - "data": "\nfixtureobject-tests/names/101000urlfalseCRC64NVME"fixture-36534817118e"object-tests/names/back%5Cslash.txt2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-10822d0eb6a7"object-tests/names/q%3Fmark.txt2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-bd8e8b1adffd"object-tests/names/a%26b.txt2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-a16607f00956"object-tests/names/percent%2520.txt2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-1b1e630ad692"object-tests/names/plus%2Bplus.txt2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-daab0593c9af"object-tests/names/100%25-name.txt2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-d614f09fca44"object-tests/names/space+name.txt2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-e759336a908a"object-tests/names/ctrl%01.txt2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-578365eba262"object-tests/names/caf%C3%A9.txt2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-84af5210cfd9"object-tests/names/hash%23tag.txt2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECT" + "data": "\nfixtureobject-tests/properties/11000urlfalseobject-tests/properties/a.txt2024-01-02T03:04:05.000Z"fixture-5070726f0000"CRC64NVMEFULL_OBJECT2EXPRESS_ONEZONE" } } } @@ -144612,7 +187093,7 @@ "optional": false, "rule": { "is": "equal", - "value": "object-tests/names/back\\slash.txt" + "value": "object-tests/properties/a.txt" } }, { @@ -144620,7 +187101,7 @@ "optional": false, "rule": { "is": "equal", - "value": 1 + "value": 2 } }, { @@ -144628,467 +187109,27 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-36534817118e\"" - } - }, - { - "at": "/value/entries/0/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/0/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/0/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/1/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/names/q?mark.txt" - } - }, - { - "at": "/value/entries/1/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/1/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-10822d0eb6a7\"" - } - }, - { - "at": "/value/entries/1/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/1/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/1/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/2/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/names/a&b.txt" - } - }, - { - "at": "/value/entries/2/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/2/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-bd8e8b1adffd\"" - } - }, - { - "at": "/value/entries/2/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/2/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/2/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/3/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/names/percent%20.txt" - } - }, - { - "at": "/value/entries/3/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/3/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-a16607f00956\"" - } - }, - { - "at": "/value/entries/3/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/3/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/3/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/4/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/names/plus+plus.txt" - } - }, - { - "at": "/value/entries/4/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/4/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-1b1e630ad692\"" - } - }, - { - "at": "/value/entries/4/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/4/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/4/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/5/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/names/100%-name.txt" - } - }, - { - "at": "/value/entries/5/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/5/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-daab0593c9af\"" - } - }, - { - "at": "/value/entries/5/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/5/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/5/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/6/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/names/space name.txt" - } - }, - { - "at": "/value/entries/6/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/6/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-d614f09fca44\"" - } - }, - { - "at": "/value/entries/6/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/6/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/6/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/7/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/names/ctrl\u0001.txt" - } - }, - { - "at": "/value/entries/7/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/7/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-e759336a908a\"" - } - }, - { - "at": "/value/entries/7/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/7/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/7/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/8/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/names/café.txt" + "value": "\"fixture-5070726f0000\"" } }, { - "at": "/value/entries/8/size", + "at": "/value/entries/0/last_modified", "optional": false, "rule": { "is": "equal", - "value": 1 + "value": "2024-01-02T03:04:05Z" } }, { - "at": "/value/entries/8/etag", + "at": "/value/entries/0/storage_class", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-578365eba262\"" + "value": "EXPRESS_ONEZONE" } }, { - "at": "/value/entries/8/snapshot", + "at": "/value/entries/0/snapshot", "optional": true, "rule": { "is": "one_of", @@ -145099,7 +187140,7 @@ } }, { - "at": "/value/entries/8/version", + "at": "/value/entries/0/version", "optional": true, "rule": { "is": "one_of", @@ -145110,7 +187151,7 @@ } }, { - "at": "/value/entries/8/is_current_version", + "at": "/value/entries/0/is_current_version", "optional": true, "rule": { "is": "one_of", @@ -145121,60 +187162,19 @@ } }, { - "at": "/value/entries/9/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/names/hash#tag.txt" - } - }, - { - "at": "/value/entries/9/size", + "at": "/value/entries", "optional": false, "rule": { - "is": "equal", + "is": "array_length", "value": 1 } }, { - "at": "/value/entries/9/etag", + "at": "/value/prefixes", "optional": false, "rule": { - "is": "equal", - "value": "\"fixture-84af5210cfd9\"" - } - }, - { - "at": "/value/entries/9/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/9/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/9/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] + "is": "array_length", + "value": 0 } }, { @@ -145184,38 +187184,22 @@ "is": "equal", "value": "" } - }, - { - "at": "/value/entries", - "optional": false, - "rule": { - "is": "array_length", - "value": 10 - } - }, - { - "at": "/value/prefixes", - "optional": false, - "rule": { - "is": "array_length", - "value": 0 - } } ], "refusal": null }, { - "id": "operations/s3-express/list-first-page", + "id": "operations/s3-express/list-checksum-algorithm", "profile": "s3-express", "lane": "core", - "purpose": "Send page_size as max-keys, and report a truncated page's NextContinuationToken as the continuation token", + "purpose": "Report each listed object's checksum algorithm as one name; S3 keeps one checksum per object, the one a write sent or else CRC64NVME, and lists one ChecksumAlgorithm", "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html", + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html" ], "call": { "op": "list_page", - "page_size": 2, - "prefix": "object-tests/board/" + "prefix": "object-tests/checksum-listing/" }, "exchanges": [ { @@ -145332,15 +187316,7 @@ "optional": false, "rule": { "is": "equal", - "value": "object-tests/board/" - } - }, - { - "at": "/query/max-keys", - "optional": false, - "rule": { - "is": "equal", - "value": "2" + "value": "object-tests/checksum-listing/" } }, { @@ -145383,7 +187359,7 @@ }, "body": { "encoding": "utf8", - "data": "\nfixtureobject-tests/board/fixture-marker+/88ab99096baf=22trueCRC64NVME"fixture-7d1b875717fa"object-tests/board/z.txt2024-01-01T00:00:00.000Z2EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-d9b959b4d7a6"object-tests/board/nested/c.txt2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECT" + "data": "\nfixtureobject-tests/checksum-listing/21000falseCRC32"fixture-636b736c0000"object-tests/checksum-listing/crc32.txt2024-01-01T00:00:00.000Z3EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-636b736c0001"object-tests/checksum-listing/none.txt2024-01-01T00:00:00.000Z4EXPRESS_ONEZONEFULL_OBJECT" } } }, @@ -145426,15 +187402,15 @@ "optional": false, "rule": { "is": "equal", - "value": "object-tests/board/" + "value": "object-tests/checksum-listing/" } }, { - "at": "/query/max-keys", + "at": "/query/encoding-type", "optional": false, "rule": { "is": "equal", - "value": "2" + "value": "url" } }, { @@ -145460,14 +187436,6 @@ "is": "matches", "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } - }, - { - "at": "/query/encoding-type", - "optional": false, - "rule": { - "is": "equal", - "value": "url" - } } ], "allow_headers": [ @@ -145485,7 +187453,7 @@ }, "body": { "encoding": "utf8", - "data": "\nfixtureobject-tests/board/fixture-marker+/88ab99096baf=22urltrueCRC64NVME"fixture-7d1b875717fa"object-tests/board/z.txt2024-01-01T00:00:00.000Z2EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-d9b959b4d7a6"object-tests/board/nested/c.txt2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECT" + "data": "\nfixtureobject-tests/checksum-listing/21000urlfalseCRC32"fixture-636b736c0000"object-tests/checksum-listing/crc32.txt2024-01-01T00:00:00.000Z3EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-636b736c0001"object-tests/checksum-listing/none.txt2024-01-01T00:00:00.000Z4EXPRESS_ONEZONEFULL_OBJECT" } } } @@ -145506,7 +187474,7 @@ "optional": false, "rule": { "is": "equal", - "value": "object-tests/board/z.txt" + "value": "object-tests/checksum-listing/crc32.txt" } }, { @@ -145514,7 +187482,7 @@ "optional": false, "rule": { "is": "equal", - "value": 2 + "value": 3 } }, { @@ -145522,7 +187490,15 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-7d1b875717fa\"" + "value": "\"fixture-636b736c0000\"" + } + }, + { + "at": "/value/entries/0/checksum_algorithm", + "optional": false, + "rule": { + "is": "equal", + "value": "CRC32" } }, { @@ -145563,7 +187539,7 @@ "optional": false, "rule": { "is": "equal", - "value": "object-tests/board/nested/c.txt" + "value": "object-tests/checksum-listing/none.txt" } }, { @@ -145571,7 +187547,7 @@ "optional": false, "rule": { "is": "equal", - "value": 1 + "value": 4 } }, { @@ -145579,7 +187555,15 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-d9b959b4d7a6\"" + "value": "\"fixture-636b736c0001\"" + } + }, + { + "at": "/value/entries/1/checksum_algorithm", + "optional": false, + "rule": { + "is": "equal", + "value": "CRC64NVME" } }, { @@ -145615,14 +187599,6 @@ ] } }, - { - "at": "/value/continuation_token", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-marker+/88ab99096baf=" - } - }, { "at": "/value/entries", "optional": false, @@ -145638,23 +187614,30 @@ "is": "array_length", "value": 0 } + }, + { + "at": "/value/continuation_token", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } } ], "refusal": null }, { - "id": "operations/s3-express/list-service-unavailable", + "id": "operations/s3-express/list-fetch-owner", "profile": "s3-express", "lane": "core", - "purpose": "Report a 503 ServiceUnavailable answer as an error, after at most 5 retries", + "purpose": "Ask for owners with fetch-owner=true, and report each listed object's owner ID", "sources": [ - "https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], - "origin": "transient", "call": { + "fetch_owner": true, "op": "list_page", - "page_size": 2, - "prefix": "object-tests/board/" + "prefix": "object-tests/owner/" }, "exchanges": [ { @@ -145759,51 +187742,51 @@ } }, { - "at": "/query/list-type", + "at": "/headers/host", "optional": false, "rule": { "is": "equal", - "value": "2" + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" } }, { - "at": "/query/prefix", + "at": "/headers/x-amz-s3session-token", "optional": false, "rule": { "is": "equal", - "value": "object-tests/board/" + "value": "fixture-session-token" } }, { - "at": "/query/max-keys", + "at": "/headers/authorization", "optional": false, "rule": { - "is": "equal", - "value": "2" + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } }, { - "at": "/headers/host", + "at": "/query/list-type", "optional": false, "rule": { "is": "equal", - "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + "value": "2" } }, { - "at": "/headers/x-amz-s3session-token", + "at": "/query/prefix", "optional": false, "rule": { "is": "equal", - "value": "fixture-session-token" + "value": "object-tests/owner/" } }, { - "at": "/headers/authorization", + "at": "/query/fetch-owner", "optional": false, "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + "is": "equal", + "value": "true" } } ], @@ -145812,18 +187795,18 @@ ], "allow_query": [], "response": { - "status": 503, + "status": 200, "headers": { "content-type": "application/xml", "date": { "from": "now" - } + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "utf8", - "data": "\nServiceUnavailablePlease reduce your request rate.fixture" - }, - "framing": "chunked" + "data": "\nfixtureobject-tests/owner/11000falseobject-tests/owner/a.txt2024-01-01T00:00:00.000Z"fixture-6f776e650000"CRC64NVMEFULL_OBJECT1fixture-owner-idEXPRESS_ONEZONE" + } } }, { @@ -145853,27 +187836,224 @@ } }, { - "at": "/query/list-type", + "at": "/headers/host", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-session-token" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + } + }, + { + "at": "/query/list-type", + "optional": false, + "rule": { + "is": "equal", + "value": "2" + } + }, + { + "at": "/query/prefix", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/owner/" + } + }, + { + "at": "/query/fetch-owner", + "optional": false, + "rule": { + "is": "equal", + "value": "true" + } + }, + { + "at": "/query/encoding-type", + "optional": false, + "rule": { + "is": "equal", + "value": "url" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "utf8", + "data": "\nfixtureobject-tests/owner/11000urlfalseobject-tests/owner/a.txt2024-01-01T00:00:00.000Z"fixture-6f776e650000"CRC64NVMEFULL_OBJECT1fixture-owner-idEXPRESS_ONEZONE" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/entries/0/key", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/owner/a.txt" + } + }, + { + "at": "/value/entries/0/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/entries/0/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-6f776e650000\"" + } + }, + { + "at": "/value/entries/0/owner_id", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-owner-id" + } + }, + { + "at": "/value/entries/0/snapshot", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] + } + }, + { + "at": "/value/entries", + "optional": false, + "rule": { + "is": "array_length", + "value": 1 + } + }, + { + "at": "/value/prefixes", + "optional": false, + "rule": { + "is": "array_length", + "value": 0 + } + }, + { + "at": "/value/continuation_token", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + } + ], + "refusal": null + }, + { + "id": "operations/s3-express/list-over-1000", + "profile": "s3-express", + "lane": "core", + "purpose": "List more keys than the service's default page of 1,000 by following the continuation token", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "op": "list", + "prefix": "object-tests/many/" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", "optional": false, "rule": { "is": "equal", - "value": "2" + "value": "GET" } }, { - "at": "/query/prefix", + "at": "/path", "optional": false, "rule": { "is": "equal", - "value": "object-tests/board/" + "value": "/" } }, { - "at": "/query/max-keys", + "at": "/query/session", "optional": false, "rule": { "is": "equal", - "value": "2" + "value": "" } }, { @@ -145884,28 +188064,19 @@ "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" } }, - { - "at": "/headers/x-amz-s3session-token", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-session-token" - } - }, { "at": "/headers/authorization", "optional": false, "rule": { "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } }, { - "at": "/query/encoding-type", + "at": "/headers/x-amz-s3session-token", "optional": false, "rule": { - "is": "equal", - "value": "url" + "is": "absent" } } ], @@ -145914,18 +188085,18 @@ ], "allow_query": [], "response": { - "status": 503, + "status": 200, "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - } + "content-type": "application/xml" }, "body": { "encoding": "utf8", - "data": "\nServiceUnavailablePlease reduce your request rate.fixture" + "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" }, - "framing": "chunked" + "body_time": { + "text": "SESSION_EXPIRATION", + "offset_seconds": 300 + } } } ] @@ -145971,15 +188142,7 @@ "optional": false, "rule": { "is": "equal", - "value": "object-tests/board/" - } - }, - { - "at": "/query/max-keys", - "optional": false, - "rule": { - "is": "equal", - "value": "2" + "value": "object-tests/many/" } }, { @@ -146012,18 +188175,18 @@ ], "allow_query": [], "response": { - "status": 503, + "status": 200, "headers": { "content-type": "application/xml", "date": { "from": "now" - } + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "utf8", - "data": "\nServiceUnavailablePlease reduce your request rate.fixture" - }, - "framing": "chunked" + "data": "\nfixtureobject-tests/many/fixture-marker+/3a4e1000=10001000trueCRC64NVME"fixture-6d610000"object-tests/many/00002024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610001"object-tests/many/00012024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610002"object-tests/many/00022024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610003"object-tests/many/00032024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610004"object-tests/many/00042024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610005"object-tests/many/00052024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610006"object-tests/many/00062024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610007"object-tests/many/00072024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610008"object-tests/many/00082024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610009"object-tests/many/00092024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61000a"object-tests/many/00102024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61000b"object-tests/many/00112024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61000c"object-tests/many/00122024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61000d"object-tests/many/00132024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61000e"object-tests/many/00142024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61000f"object-tests/many/00152024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610010"object-tests/many/00162024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610011"object-tests/many/00172024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610012"object-tests/many/00182024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610013"object-tests/many/00192024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610014"object-tests/many/00202024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610015"object-tests/many/00212024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610016"object-tests/many/00222024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610017"object-tests/many/00232024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610018"object-tests/many/00242024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610019"object-tests/many/00252024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61001a"object-tests/many/00262024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61001b"object-tests/many/00272024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61001c"object-tests/many/00282024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61001d"object-tests/many/00292024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61001e"object-tests/many/00302024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61001f"object-tests/many/00312024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610020"object-tests/many/00322024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610021"object-tests/many/00332024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610022"object-tests/many/00342024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610023"object-tests/many/00352024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610024"object-tests/many/00362024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610025"object-tests/many/00372024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610026"object-tests/many/00382024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610027"object-tests/many/00392024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610028"object-tests/many/00402024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610029"object-tests/many/00412024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61002a"object-tests/many/00422024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61002b"object-tests/many/00432024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61002c"object-tests/many/00442024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61002d"object-tests/many/00452024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61002e"object-tests/many/00462024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61002f"object-tests/many/00472024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610030"object-tests/many/00482024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610031"object-tests/many/00492024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610032"object-tests/many/00502024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610033"object-tests/many/00512024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610034"object-tests/many/00522024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610035"object-tests/many/00532024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610036"object-tests/many/00542024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610037"object-tests/many/00552024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610038"object-tests/many/00562024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610039"object-tests/many/00572024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61003a"object-tests/many/00582024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61003b"object-tests/many/00592024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61003c"object-tests/many/00602024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61003d"object-tests/many/00612024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61003e"object-tests/many/00622024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61003f"object-tests/many/00632024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610040"object-tests/many/00642024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610041"object-tests/many/00652024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610042"object-tests/many/00662024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610043"object-tests/many/00672024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610044"object-tests/many/00682024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610045"object-tests/many/00692024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610046"object-tests/many/00702024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610047"object-tests/many/00712024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610048"object-tests/many/00722024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610049"object-tests/many/00732024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61004a"object-tests/many/00742024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61004b"object-tests/many/00752024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61004c"object-tests/many/00762024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61004d"object-tests/many/00772024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61004e"object-tests/many/00782024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61004f"object-tests/many/00792024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610050"object-tests/many/00802024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610051"object-tests/many/00812024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610052"object-tests/many/00822024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610053"object-tests/many/00832024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610054"object-tests/many/00842024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610055"object-tests/many/00852024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610056"object-tests/many/00862024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610057"object-tests/many/00872024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610058"object-tests/many/00882024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610059"object-tests/many/00892024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61005a"object-tests/many/00902024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61005b"object-tests/many/00912024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61005c"object-tests/many/00922024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61005d"object-tests/many/00932024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61005e"object-tests/many/00942024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61005f"object-tests/many/00952024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610060"object-tests/many/00962024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610061"object-tests/many/00972024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610062"object-tests/many/00982024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610063"object-tests/many/00992024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610064"object-tests/many/01002024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610065"object-tests/many/01012024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610066"object-tests/many/01022024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610067"object-tests/many/01032024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610068"object-tests/many/01042024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610069"object-tests/many/01052024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61006a"object-tests/many/01062024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61006b"object-tests/many/01072024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61006c"object-tests/many/01082024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61006d"object-tests/many/01092024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61006e"object-tests/many/01102024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61006f"object-tests/many/01112024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610070"object-tests/many/01122024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610071"object-tests/many/01132024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610072"object-tests/many/01142024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610073"object-tests/many/01152024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610074"object-tests/many/01162024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610075"object-tests/many/01172024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610076"object-tests/many/01182024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610077"object-tests/many/01192024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610078"object-tests/many/01202024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610079"object-tests/many/01212024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61007a"object-tests/many/01222024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61007b"object-tests/many/01232024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61007c"object-tests/many/01242024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61007d"object-tests/many/01252024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61007e"object-tests/many/01262024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61007f"object-tests/many/01272024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610080"object-tests/many/01282024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610081"object-tests/many/01292024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610082"object-tests/many/01302024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610083"object-tests/many/01312024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610084"object-tests/many/01322024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610085"object-tests/many/01332024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610086"object-tests/many/01342024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610087"object-tests/many/01352024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610088"object-tests/many/01362024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610089"object-tests/many/01372024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61008a"object-tests/many/01382024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61008b"object-tests/many/01392024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61008c"object-tests/many/01402024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61008d"object-tests/many/01412024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61008e"object-tests/many/01422024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61008f"object-tests/many/01432024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610090"object-tests/many/01442024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610091"object-tests/many/01452024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610092"object-tests/many/01462024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610093"object-tests/many/01472024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610094"object-tests/many/01482024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610095"object-tests/many/01492024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610096"object-tests/many/01502024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610097"object-tests/many/01512024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610098"object-tests/many/01522024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610099"object-tests/many/01532024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61009a"object-tests/many/01542024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61009b"object-tests/many/01552024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61009c"object-tests/many/01562024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61009d"object-tests/many/01572024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61009e"object-tests/many/01582024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61009f"object-tests/many/01592024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100a0"object-tests/many/01602024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100a1"object-tests/many/01612024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100a2"object-tests/many/01622024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100a3"object-tests/many/01632024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100a4"object-tests/many/01642024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100a5"object-tests/many/01652024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100a6"object-tests/many/01662024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100a7"object-tests/many/01672024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100a8"object-tests/many/01682024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100a9"object-tests/many/01692024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100aa"object-tests/many/01702024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100ab"object-tests/many/01712024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100ac"object-tests/many/01722024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100ad"object-tests/many/01732024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100ae"object-tests/many/01742024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100af"object-tests/many/01752024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100b0"object-tests/many/01762024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100b1"object-tests/many/01772024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100b2"object-tests/many/01782024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100b3"object-tests/many/01792024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100b4"object-tests/many/01802024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100b5"object-tests/many/01812024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100b6"object-tests/many/01822024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100b7"object-tests/many/01832024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100b8"object-tests/many/01842024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100b9"object-tests/many/01852024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100ba"object-tests/many/01862024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100bb"object-tests/many/01872024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100bc"object-tests/many/01882024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100bd"object-tests/many/01892024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100be"object-tests/many/01902024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100bf"object-tests/many/01912024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100c0"object-tests/many/01922024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100c1"object-tests/many/01932024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100c2"object-tests/many/01942024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100c3"object-tests/many/01952024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100c4"object-tests/many/01962024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100c5"object-tests/many/01972024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100c6"object-tests/many/01982024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100c7"object-tests/many/01992024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100c8"object-tests/many/02002024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100c9"object-tests/many/02012024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100ca"object-tests/many/02022024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100cb"object-tests/many/02032024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100cc"object-tests/many/02042024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100cd"object-tests/many/02052024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100ce"object-tests/many/02062024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100cf"object-tests/many/02072024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100d0"object-tests/many/02082024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100d1"object-tests/many/02092024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100d2"object-tests/many/02102024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100d3"object-tests/many/02112024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100d4"object-tests/many/02122024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100d5"object-tests/many/02132024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100d6"object-tests/many/02142024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100d7"object-tests/many/02152024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100d8"object-tests/many/02162024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100d9"object-tests/many/02172024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100da"object-tests/many/02182024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100db"object-tests/many/02192024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100dc"object-tests/many/02202024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100dd"object-tests/many/02212024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100de"object-tests/many/02222024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100df"object-tests/many/02232024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100e0"object-tests/many/02242024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100e1"object-tests/many/02252024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100e2"object-tests/many/02262024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100e3"object-tests/many/02272024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100e4"object-tests/many/02282024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100e5"object-tests/many/02292024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100e6"object-tests/many/02302024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100e7"object-tests/many/02312024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100e8"object-tests/many/02322024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100e9"object-tests/many/02332024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100ea"object-tests/many/02342024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100eb"object-tests/many/02352024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100ec"object-tests/many/02362024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100ed"object-tests/many/02372024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100ee"object-tests/many/02382024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100ef"object-tests/many/02392024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100f0"object-tests/many/02402024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100f1"object-tests/many/02412024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100f2"object-tests/many/02422024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100f3"object-tests/many/02432024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100f4"object-tests/many/02442024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100f5"object-tests/many/02452024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100f6"object-tests/many/02462024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100f7"object-tests/many/02472024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100f8"object-tests/many/02482024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100f9"object-tests/many/02492024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100fa"object-tests/many/02502024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100fb"object-tests/many/02512024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100fc"object-tests/many/02522024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100fd"object-tests/many/02532024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100fe"object-tests/many/02542024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100ff"object-tests/many/02552024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610100"object-tests/many/02562024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610101"object-tests/many/02572024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610102"object-tests/many/02582024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610103"object-tests/many/02592024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610104"object-tests/many/02602024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610105"object-tests/many/02612024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610106"object-tests/many/02622024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610107"object-tests/many/02632024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610108"object-tests/many/02642024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610109"object-tests/many/02652024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61010a"object-tests/many/02662024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61010b"object-tests/many/02672024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61010c"object-tests/many/02682024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61010d"object-tests/many/02692024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61010e"object-tests/many/02702024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61010f"object-tests/many/02712024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610110"object-tests/many/02722024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610111"object-tests/many/02732024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610112"object-tests/many/02742024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610113"object-tests/many/02752024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610114"object-tests/many/02762024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610115"object-tests/many/02772024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610116"object-tests/many/02782024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610117"object-tests/many/02792024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610118"object-tests/many/02802024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610119"object-tests/many/02812024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61011a"object-tests/many/02822024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61011b"object-tests/many/02832024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61011c"object-tests/many/02842024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61011d"object-tests/many/02852024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61011e"object-tests/many/02862024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61011f"object-tests/many/02872024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610120"object-tests/many/02882024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610121"object-tests/many/02892024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610122"object-tests/many/02902024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610123"object-tests/many/02912024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610124"object-tests/many/02922024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610125"object-tests/many/02932024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610126"object-tests/many/02942024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610127"object-tests/many/02952024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610128"object-tests/many/02962024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610129"object-tests/many/02972024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61012a"object-tests/many/02982024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61012b"object-tests/many/02992024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61012c"object-tests/many/03002024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61012d"object-tests/many/03012024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61012e"object-tests/many/03022024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61012f"object-tests/many/03032024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610130"object-tests/many/03042024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610131"object-tests/many/03052024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610132"object-tests/many/03062024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610133"object-tests/many/03072024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610134"object-tests/many/03082024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610135"object-tests/many/03092024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610136"object-tests/many/03102024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610137"object-tests/many/03112024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610138"object-tests/many/03122024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610139"object-tests/many/03132024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61013a"object-tests/many/03142024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61013b"object-tests/many/03152024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61013c"object-tests/many/03162024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61013d"object-tests/many/03172024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61013e"object-tests/many/03182024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61013f"object-tests/many/03192024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610140"object-tests/many/03202024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610141"object-tests/many/03212024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610142"object-tests/many/03222024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610143"object-tests/many/03232024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610144"object-tests/many/03242024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610145"object-tests/many/03252024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610146"object-tests/many/03262024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610147"object-tests/many/03272024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610148"object-tests/many/03282024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610149"object-tests/many/03292024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61014a"object-tests/many/03302024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61014b"object-tests/many/03312024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61014c"object-tests/many/03322024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61014d"object-tests/many/03332024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61014e"object-tests/many/03342024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61014f"object-tests/many/03352024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610150"object-tests/many/03362024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610151"object-tests/many/03372024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610152"object-tests/many/03382024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610153"object-tests/many/03392024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610154"object-tests/many/03402024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610155"object-tests/many/03412024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610156"object-tests/many/03422024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610157"object-tests/many/03432024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610158"object-tests/many/03442024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610159"object-tests/many/03452024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61015a"object-tests/many/03462024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61015b"object-tests/many/03472024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61015c"object-tests/many/03482024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61015d"object-tests/many/03492024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61015e"object-tests/many/03502024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61015f"object-tests/many/03512024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610160"object-tests/many/03522024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610161"object-tests/many/03532024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610162"object-tests/many/03542024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610163"object-tests/many/03552024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610164"object-tests/many/03562024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610165"object-tests/many/03572024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610166"object-tests/many/03582024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610167"object-tests/many/03592024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610168"object-tests/many/03602024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610169"object-tests/many/03612024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61016a"object-tests/many/03622024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61016b"object-tests/many/03632024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61016c"object-tests/many/03642024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61016d"object-tests/many/03652024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61016e"object-tests/many/03662024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61016f"object-tests/many/03672024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610170"object-tests/many/03682024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610171"object-tests/many/03692024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610172"object-tests/many/03702024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610173"object-tests/many/03712024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610174"object-tests/many/03722024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610175"object-tests/many/03732024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610176"object-tests/many/03742024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610177"object-tests/many/03752024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610178"object-tests/many/03762024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610179"object-tests/many/03772024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61017a"object-tests/many/03782024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61017b"object-tests/many/03792024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61017c"object-tests/many/03802024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61017d"object-tests/many/03812024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61017e"object-tests/many/03822024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61017f"object-tests/many/03832024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610180"object-tests/many/03842024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610181"object-tests/many/03852024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610182"object-tests/many/03862024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610183"object-tests/many/03872024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610184"object-tests/many/03882024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610185"object-tests/many/03892024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610186"object-tests/many/03902024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610187"object-tests/many/03912024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610188"object-tests/many/03922024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610189"object-tests/many/03932024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61018a"object-tests/many/03942024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61018b"object-tests/many/03952024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61018c"object-tests/many/03962024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61018d"object-tests/many/03972024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61018e"object-tests/many/03982024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61018f"object-tests/many/03992024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610190"object-tests/many/04002024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610191"object-tests/many/04012024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610192"object-tests/many/04022024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610193"object-tests/many/04032024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610194"object-tests/many/04042024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610195"object-tests/many/04052024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610196"object-tests/many/04062024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610197"object-tests/many/04072024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610198"object-tests/many/04082024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610199"object-tests/many/04092024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61019a"object-tests/many/04102024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61019b"object-tests/many/04112024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61019c"object-tests/many/04122024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61019d"object-tests/many/04132024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61019e"object-tests/many/04142024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61019f"object-tests/many/04152024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101a0"object-tests/many/04162024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101a1"object-tests/many/04172024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101a2"object-tests/many/04182024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101a3"object-tests/many/04192024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101a4"object-tests/many/04202024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101a5"object-tests/many/04212024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101a6"object-tests/many/04222024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101a7"object-tests/many/04232024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101a8"object-tests/many/04242024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101a9"object-tests/many/04252024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101aa"object-tests/many/04262024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101ab"object-tests/many/04272024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101ac"object-tests/many/04282024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101ad"object-tests/many/04292024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101ae"object-tests/many/04302024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101af"object-tests/many/04312024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101b0"object-tests/many/04322024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101b1"object-tests/many/04332024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101b2"object-tests/many/04342024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101b3"object-tests/many/04352024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101b4"object-tests/many/04362024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101b5"object-tests/many/04372024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101b6"object-tests/many/04382024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101b7"object-tests/many/04392024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101b8"object-tests/many/04402024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101b9"object-tests/many/04412024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101ba"object-tests/many/04422024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101bb"object-tests/many/04432024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101bc"object-tests/many/04442024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101bd"object-tests/many/04452024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101be"object-tests/many/04462024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101bf"object-tests/many/04472024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101c0"object-tests/many/04482024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101c1"object-tests/many/04492024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101c2"object-tests/many/04502024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101c3"object-tests/many/04512024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101c4"object-tests/many/04522024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101c5"object-tests/many/04532024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101c6"object-tests/many/04542024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101c7"object-tests/many/04552024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101c8"object-tests/many/04562024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101c9"object-tests/many/04572024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101ca"object-tests/many/04582024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101cb"object-tests/many/04592024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101cc"object-tests/many/04602024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101cd"object-tests/many/04612024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101ce"object-tests/many/04622024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101cf"object-tests/many/04632024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101d0"object-tests/many/04642024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101d1"object-tests/many/04652024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101d2"object-tests/many/04662024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101d3"object-tests/many/04672024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101d4"object-tests/many/04682024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101d5"object-tests/many/04692024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101d6"object-tests/many/04702024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101d7"object-tests/many/04712024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101d8"object-tests/many/04722024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101d9"object-tests/many/04732024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101da"object-tests/many/04742024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101db"object-tests/many/04752024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101dc"object-tests/many/04762024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101dd"object-tests/many/04772024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101de"object-tests/many/04782024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101df"object-tests/many/04792024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101e0"object-tests/many/04802024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101e1"object-tests/many/04812024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101e2"object-tests/many/04822024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101e3"object-tests/many/04832024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101e4"object-tests/many/04842024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101e5"object-tests/many/04852024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101e6"object-tests/many/04862024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101e7"object-tests/many/04872024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101e8"object-tests/many/04882024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101e9"object-tests/many/04892024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101ea"object-tests/many/04902024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101eb"object-tests/many/04912024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101ec"object-tests/many/04922024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101ed"object-tests/many/04932024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101ee"object-tests/many/04942024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101ef"object-tests/many/04952024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101f0"object-tests/many/04962024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101f1"object-tests/many/04972024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101f2"object-tests/many/04982024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101f3"object-tests/many/04992024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101f4"object-tests/many/05002024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101f5"object-tests/many/05012024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101f6"object-tests/many/05022024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101f7"object-tests/many/05032024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101f8"object-tests/many/05042024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101f9"object-tests/many/05052024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101fa"object-tests/many/05062024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101fb"object-tests/many/05072024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101fc"object-tests/many/05082024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101fd"object-tests/many/05092024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101fe"object-tests/many/05102024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101ff"object-tests/many/05112024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610200"object-tests/many/05122024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610201"object-tests/many/05132024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610202"object-tests/many/05142024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610203"object-tests/many/05152024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610204"object-tests/many/05162024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610205"object-tests/many/05172024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610206"object-tests/many/05182024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610207"object-tests/many/05192024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610208"object-tests/many/05202024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610209"object-tests/many/05212024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61020a"object-tests/many/05222024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61020b"object-tests/many/05232024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61020c"object-tests/many/05242024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61020d"object-tests/many/05252024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61020e"object-tests/many/05262024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61020f"object-tests/many/05272024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610210"object-tests/many/05282024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610211"object-tests/many/05292024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610212"object-tests/many/05302024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610213"object-tests/many/05312024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610214"object-tests/many/05322024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610215"object-tests/many/05332024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610216"object-tests/many/05342024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610217"object-tests/many/05352024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610218"object-tests/many/05362024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610219"object-tests/many/05372024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61021a"object-tests/many/05382024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61021b"object-tests/many/05392024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61021c"object-tests/many/05402024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61021d"object-tests/many/05412024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61021e"object-tests/many/05422024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61021f"object-tests/many/05432024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610220"object-tests/many/05442024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610221"object-tests/many/05452024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610222"object-tests/many/05462024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610223"object-tests/many/05472024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610224"object-tests/many/05482024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610225"object-tests/many/05492024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610226"object-tests/many/05502024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610227"object-tests/many/05512024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610228"object-tests/many/05522024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610229"object-tests/many/05532024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61022a"object-tests/many/05542024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61022b"object-tests/many/05552024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61022c"object-tests/many/05562024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61022d"object-tests/many/05572024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61022e"object-tests/many/05582024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61022f"object-tests/many/05592024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610230"object-tests/many/05602024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610231"object-tests/many/05612024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610232"object-tests/many/05622024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610233"object-tests/many/05632024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610234"object-tests/many/05642024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610235"object-tests/many/05652024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610236"object-tests/many/05662024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610237"object-tests/many/05672024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610238"object-tests/many/05682024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610239"object-tests/many/05692024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61023a"object-tests/many/05702024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61023b"object-tests/many/05712024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61023c"object-tests/many/05722024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61023d"object-tests/many/05732024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61023e"object-tests/many/05742024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61023f"object-tests/many/05752024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610240"object-tests/many/05762024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610241"object-tests/many/05772024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610242"object-tests/many/05782024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610243"object-tests/many/05792024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610244"object-tests/many/05802024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610245"object-tests/many/05812024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610246"object-tests/many/05822024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610247"object-tests/many/05832024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610248"object-tests/many/05842024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610249"object-tests/many/05852024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61024a"object-tests/many/05862024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61024b"object-tests/many/05872024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61024c"object-tests/many/05882024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61024d"object-tests/many/05892024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61024e"object-tests/many/05902024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61024f"object-tests/many/05912024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610250"object-tests/many/05922024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610251"object-tests/many/05932024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610252"object-tests/many/05942024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610253"object-tests/many/05952024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610254"object-tests/many/05962024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610255"object-tests/many/05972024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610256"object-tests/many/05982024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610257"object-tests/many/05992024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610258"object-tests/many/06002024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610259"object-tests/many/06012024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61025a"object-tests/many/06022024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61025b"object-tests/many/06032024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61025c"object-tests/many/06042024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61025d"object-tests/many/06052024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61025e"object-tests/many/06062024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61025f"object-tests/many/06072024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610260"object-tests/many/06082024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610261"object-tests/many/06092024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610262"object-tests/many/06102024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610263"object-tests/many/06112024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610264"object-tests/many/06122024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610265"object-tests/many/06132024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610266"object-tests/many/06142024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610267"object-tests/many/06152024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610268"object-tests/many/06162024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610269"object-tests/many/06172024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61026a"object-tests/many/06182024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61026b"object-tests/many/06192024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61026c"object-tests/many/06202024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61026d"object-tests/many/06212024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61026e"object-tests/many/06222024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61026f"object-tests/many/06232024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610270"object-tests/many/06242024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610271"object-tests/many/06252024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610272"object-tests/many/06262024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610273"object-tests/many/06272024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610274"object-tests/many/06282024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610275"object-tests/many/06292024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610276"object-tests/many/06302024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610277"object-tests/many/06312024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610278"object-tests/many/06322024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610279"object-tests/many/06332024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61027a"object-tests/many/06342024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61027b"object-tests/many/06352024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61027c"object-tests/many/06362024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61027d"object-tests/many/06372024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61027e"object-tests/many/06382024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61027f"object-tests/many/06392024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610280"object-tests/many/06402024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610281"object-tests/many/06412024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610282"object-tests/many/06422024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610283"object-tests/many/06432024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610284"object-tests/many/06442024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610285"object-tests/many/06452024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610286"object-tests/many/06462024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610287"object-tests/many/06472024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610288"object-tests/many/06482024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610289"object-tests/many/06492024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61028a"object-tests/many/06502024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61028b"object-tests/many/06512024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61028c"object-tests/many/06522024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61028d"object-tests/many/06532024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61028e"object-tests/many/06542024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61028f"object-tests/many/06552024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610290"object-tests/many/06562024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610291"object-tests/many/06572024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610292"object-tests/many/06582024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610293"object-tests/many/06592024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610294"object-tests/many/06602024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610295"object-tests/many/06612024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610296"object-tests/many/06622024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610297"object-tests/many/06632024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610298"object-tests/many/06642024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610299"object-tests/many/06652024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61029a"object-tests/many/06662024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61029b"object-tests/many/06672024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61029c"object-tests/many/06682024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61029d"object-tests/many/06692024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61029e"object-tests/many/06702024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61029f"object-tests/many/06712024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102a0"object-tests/many/06722024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102a1"object-tests/many/06732024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102a2"object-tests/many/06742024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102a3"object-tests/many/06752024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102a4"object-tests/many/06762024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102a5"object-tests/many/06772024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102a6"object-tests/many/06782024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102a7"object-tests/many/06792024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102a8"object-tests/many/06802024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102a9"object-tests/many/06812024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102aa"object-tests/many/06822024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102ab"object-tests/many/06832024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102ac"object-tests/many/06842024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102ad"object-tests/many/06852024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102ae"object-tests/many/06862024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102af"object-tests/many/06872024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102b0"object-tests/many/06882024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102b1"object-tests/many/06892024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102b2"object-tests/many/06902024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102b3"object-tests/many/06912024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102b4"object-tests/many/06922024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102b5"object-tests/many/06932024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102b6"object-tests/many/06942024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102b7"object-tests/many/06952024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102b8"object-tests/many/06962024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102b9"object-tests/many/06972024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102ba"object-tests/many/06982024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102bb"object-tests/many/06992024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102bc"object-tests/many/07002024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102bd"object-tests/many/07012024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102be"object-tests/many/07022024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102bf"object-tests/many/07032024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102c0"object-tests/many/07042024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102c1"object-tests/many/07052024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102c2"object-tests/many/07062024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102c3"object-tests/many/07072024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102c4"object-tests/many/07082024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102c5"object-tests/many/07092024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102c6"object-tests/many/07102024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102c7"object-tests/many/07112024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102c8"object-tests/many/07122024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102c9"object-tests/many/07132024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102ca"object-tests/many/07142024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102cb"object-tests/many/07152024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102cc"object-tests/many/07162024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102cd"object-tests/many/07172024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102ce"object-tests/many/07182024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102cf"object-tests/many/07192024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102d0"object-tests/many/07202024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102d1"object-tests/many/07212024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102d2"object-tests/many/07222024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102d3"object-tests/many/07232024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102d4"object-tests/many/07242024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102d5"object-tests/many/07252024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102d6"object-tests/many/07262024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102d7"object-tests/many/07272024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102d8"object-tests/many/07282024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102d9"object-tests/many/07292024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102da"object-tests/many/07302024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102db"object-tests/many/07312024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102dc"object-tests/many/07322024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102dd"object-tests/many/07332024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102de"object-tests/many/07342024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102df"object-tests/many/07352024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102e0"object-tests/many/07362024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102e1"object-tests/many/07372024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102e2"object-tests/many/07382024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102e3"object-tests/many/07392024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102e4"object-tests/many/07402024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102e5"object-tests/many/07412024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102e6"object-tests/many/07422024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102e7"object-tests/many/07432024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102e8"object-tests/many/07442024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102e9"object-tests/many/07452024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102ea"object-tests/many/07462024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102eb"object-tests/many/07472024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102ec"object-tests/many/07482024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102ed"object-tests/many/07492024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102ee"object-tests/many/07502024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102ef"object-tests/many/07512024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102f0"object-tests/many/07522024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102f1"object-tests/many/07532024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102f2"object-tests/many/07542024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102f3"object-tests/many/07552024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102f4"object-tests/many/07562024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102f5"object-tests/many/07572024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102f6"object-tests/many/07582024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102f7"object-tests/many/07592024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102f8"object-tests/many/07602024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102f9"object-tests/many/07612024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102fa"object-tests/many/07622024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102fb"object-tests/many/07632024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102fc"object-tests/many/07642024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102fd"object-tests/many/07652024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102fe"object-tests/many/07662024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102ff"object-tests/many/07672024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610300"object-tests/many/07682024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610301"object-tests/many/07692024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610302"object-tests/many/07702024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610303"object-tests/many/07712024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610304"object-tests/many/07722024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610305"object-tests/many/07732024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610306"object-tests/many/07742024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610307"object-tests/many/07752024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610308"object-tests/many/07762024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610309"object-tests/many/07772024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61030a"object-tests/many/07782024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61030b"object-tests/many/07792024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61030c"object-tests/many/07802024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61030d"object-tests/many/07812024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61030e"object-tests/many/07822024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61030f"object-tests/many/07832024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610310"object-tests/many/07842024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610311"object-tests/many/07852024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610312"object-tests/many/07862024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610313"object-tests/many/07872024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610314"object-tests/many/07882024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610315"object-tests/many/07892024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610316"object-tests/many/07902024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610317"object-tests/many/07912024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610318"object-tests/many/07922024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610319"object-tests/many/07932024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61031a"object-tests/many/07942024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61031b"object-tests/many/07952024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61031c"object-tests/many/07962024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61031d"object-tests/many/07972024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61031e"object-tests/many/07982024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61031f"object-tests/many/07992024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610320"object-tests/many/08002024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610321"object-tests/many/08012024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610322"object-tests/many/08022024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610323"object-tests/many/08032024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610324"object-tests/many/08042024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610325"object-tests/many/08052024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610326"object-tests/many/08062024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610327"object-tests/many/08072024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610328"object-tests/many/08082024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610329"object-tests/many/08092024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61032a"object-tests/many/08102024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61032b"object-tests/many/08112024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61032c"object-tests/many/08122024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61032d"object-tests/many/08132024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61032e"object-tests/many/08142024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61032f"object-tests/many/08152024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610330"object-tests/many/08162024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610331"object-tests/many/08172024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610332"object-tests/many/08182024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610333"object-tests/many/08192024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610334"object-tests/many/08202024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610335"object-tests/many/08212024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610336"object-tests/many/08222024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610337"object-tests/many/08232024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610338"object-tests/many/08242024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610339"object-tests/many/08252024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61033a"object-tests/many/08262024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61033b"object-tests/many/08272024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61033c"object-tests/many/08282024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61033d"object-tests/many/08292024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61033e"object-tests/many/08302024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61033f"object-tests/many/08312024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610340"object-tests/many/08322024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610341"object-tests/many/08332024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610342"object-tests/many/08342024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610343"object-tests/many/08352024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610344"object-tests/many/08362024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610345"object-tests/many/08372024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610346"object-tests/many/08382024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610347"object-tests/many/08392024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610348"object-tests/many/08402024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610349"object-tests/many/08412024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61034a"object-tests/many/08422024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61034b"object-tests/many/08432024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61034c"object-tests/many/08442024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61034d"object-tests/many/08452024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61034e"object-tests/many/08462024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61034f"object-tests/many/08472024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610350"object-tests/many/08482024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610351"object-tests/many/08492024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610352"object-tests/many/08502024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610353"object-tests/many/08512024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610354"object-tests/many/08522024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610355"object-tests/many/08532024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610356"object-tests/many/08542024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610357"object-tests/many/08552024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610358"object-tests/many/08562024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610359"object-tests/many/08572024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61035a"object-tests/many/08582024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61035b"object-tests/many/08592024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61035c"object-tests/many/08602024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61035d"object-tests/many/08612024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61035e"object-tests/many/08622024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61035f"object-tests/many/08632024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610360"object-tests/many/08642024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610361"object-tests/many/08652024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610362"object-tests/many/08662024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610363"object-tests/many/08672024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610364"object-tests/many/08682024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610365"object-tests/many/08692024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610366"object-tests/many/08702024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610367"object-tests/many/08712024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610368"object-tests/many/08722024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610369"object-tests/many/08732024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61036a"object-tests/many/08742024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61036b"object-tests/many/08752024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61036c"object-tests/many/08762024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61036d"object-tests/many/08772024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61036e"object-tests/many/08782024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61036f"object-tests/many/08792024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610370"object-tests/many/08802024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610371"object-tests/many/08812024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610372"object-tests/many/08822024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610373"object-tests/many/08832024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610374"object-tests/many/08842024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610375"object-tests/many/08852024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610376"object-tests/many/08862024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610377"object-tests/many/08872024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610378"object-tests/many/08882024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610379"object-tests/many/08892024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61037a"object-tests/many/08902024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61037b"object-tests/many/08912024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61037c"object-tests/many/08922024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61037d"object-tests/many/08932024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61037e"object-tests/many/08942024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61037f"object-tests/many/08952024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610380"object-tests/many/08962024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610381"object-tests/many/08972024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610382"object-tests/many/08982024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610383"object-tests/many/08992024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610384"object-tests/many/09002024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610385"object-tests/many/09012024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610386"object-tests/many/09022024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610387"object-tests/many/09032024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610388"object-tests/many/09042024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610389"object-tests/many/09052024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61038a"object-tests/many/09062024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61038b"object-tests/many/09072024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61038c"object-tests/many/09082024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61038d"object-tests/many/09092024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61038e"object-tests/many/09102024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61038f"object-tests/many/09112024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610390"object-tests/many/09122024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610391"object-tests/many/09132024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610392"object-tests/many/09142024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610393"object-tests/many/09152024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610394"object-tests/many/09162024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610395"object-tests/many/09172024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610396"object-tests/many/09182024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610397"object-tests/many/09192024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610398"object-tests/many/09202024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610399"object-tests/many/09212024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61039a"object-tests/many/09222024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61039b"object-tests/many/09232024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61039c"object-tests/many/09242024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61039d"object-tests/many/09252024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61039e"object-tests/many/09262024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61039f"object-tests/many/09272024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103a0"object-tests/many/09282024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103a1"object-tests/many/09292024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103a2"object-tests/many/09302024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103a3"object-tests/many/09312024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103a4"object-tests/many/09322024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103a5"object-tests/many/09332024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103a6"object-tests/many/09342024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103a7"object-tests/many/09352024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103a8"object-tests/many/09362024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103a9"object-tests/many/09372024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103aa"object-tests/many/09382024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103ab"object-tests/many/09392024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103ac"object-tests/many/09402024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103ad"object-tests/many/09412024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103ae"object-tests/many/09422024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103af"object-tests/many/09432024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103b0"object-tests/many/09442024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103b1"object-tests/many/09452024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103b2"object-tests/many/09462024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103b3"object-tests/many/09472024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103b4"object-tests/many/09482024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103b5"object-tests/many/09492024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103b6"object-tests/many/09502024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103b7"object-tests/many/09512024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103b8"object-tests/many/09522024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103b9"object-tests/many/09532024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103ba"object-tests/many/09542024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103bb"object-tests/many/09552024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103bc"object-tests/many/09562024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103bd"object-tests/many/09572024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103be"object-tests/many/09582024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103bf"object-tests/many/09592024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103c0"object-tests/many/09602024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103c1"object-tests/many/09612024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103c2"object-tests/many/09622024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103c3"object-tests/many/09632024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103c4"object-tests/many/09642024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103c5"object-tests/many/09652024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103c6"object-tests/many/09662024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103c7"object-tests/many/09672024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103c8"object-tests/many/09682024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103c9"object-tests/many/09692024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103ca"object-tests/many/09702024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103cb"object-tests/many/09712024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103cc"object-tests/many/09722024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103cd"object-tests/many/09732024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103ce"object-tests/many/09742024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103cf"object-tests/many/09752024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103d0"object-tests/many/09762024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103d1"object-tests/many/09772024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103d2"object-tests/many/09782024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103d3"object-tests/many/09792024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103d4"object-tests/many/09802024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103d5"object-tests/many/09812024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103d6"object-tests/many/09822024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103d7"object-tests/many/09832024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103d8"object-tests/many/09842024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103d9"object-tests/many/09852024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103da"object-tests/many/09862024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103db"object-tests/many/09872024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103dc"object-tests/many/09882024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103dd"object-tests/many/09892024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103de"object-tests/many/09902024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103df"object-tests/many/09912024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103e0"object-tests/many/09922024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103e1"object-tests/many/09932024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103e2"object-tests/many/09942024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103e3"object-tests/many/09952024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103e4"object-tests/many/09962024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103e5"object-tests/many/09972024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103e6"object-tests/many/09982024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103e7"object-tests/many/09992024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECT" + } } }, { @@ -146065,15 +188228,15 @@ "optional": false, "rule": { "is": "equal", - "value": "object-tests/board/" + "value": "object-tests/many/" } }, { - "at": "/query/max-keys", + "at": "/query/encoding-type", "optional": false, "rule": { "is": "equal", - "value": "2" + "value": "url" } }, { @@ -146099,14 +188262,6 @@ "is": "matches", "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } - }, - { - "at": "/query/encoding-type", - "optional": false, - "rule": { - "is": "equal", - "value": "url" - } } ], "allow_headers": [ @@ -146114,22 +188269,21 @@ ], "allow_query": [], "response": { - "status": 503, + "status": 200, "headers": { "content-type": "application/xml", "date": { "from": "now" - } + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "utf8", - "data": "\nServiceUnavailablePlease reduce your request rate.fixture" - }, - "framing": "chunked" + "data": "\nfixtureobject-tests/many/fixture-marker+/3a4e1000=10001000urltrueCRC64NVME"fixture-6d610000"object-tests/many/00002024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610001"object-tests/many/00012024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610002"object-tests/many/00022024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610003"object-tests/many/00032024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610004"object-tests/many/00042024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610005"object-tests/many/00052024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610006"object-tests/many/00062024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610007"object-tests/many/00072024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610008"object-tests/many/00082024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610009"object-tests/many/00092024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61000a"object-tests/many/00102024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61000b"object-tests/many/00112024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61000c"object-tests/many/00122024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61000d"object-tests/many/00132024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61000e"object-tests/many/00142024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61000f"object-tests/many/00152024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610010"object-tests/many/00162024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610011"object-tests/many/00172024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610012"object-tests/many/00182024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610013"object-tests/many/00192024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610014"object-tests/many/00202024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610015"object-tests/many/00212024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610016"object-tests/many/00222024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610017"object-tests/many/00232024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610018"object-tests/many/00242024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610019"object-tests/many/00252024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61001a"object-tests/many/00262024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61001b"object-tests/many/00272024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61001c"object-tests/many/00282024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61001d"object-tests/many/00292024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61001e"object-tests/many/00302024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61001f"object-tests/many/00312024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610020"object-tests/many/00322024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610021"object-tests/many/00332024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610022"object-tests/many/00342024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610023"object-tests/many/00352024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610024"object-tests/many/00362024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610025"object-tests/many/00372024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610026"object-tests/many/00382024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610027"object-tests/many/00392024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610028"object-tests/many/00402024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610029"object-tests/many/00412024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61002a"object-tests/many/00422024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61002b"object-tests/many/00432024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61002c"object-tests/many/00442024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61002d"object-tests/many/00452024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61002e"object-tests/many/00462024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61002f"object-tests/many/00472024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610030"object-tests/many/00482024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610031"object-tests/many/00492024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610032"object-tests/many/00502024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610033"object-tests/many/00512024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610034"object-tests/many/00522024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610035"object-tests/many/00532024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610036"object-tests/many/00542024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610037"object-tests/many/00552024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610038"object-tests/many/00562024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610039"object-tests/many/00572024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61003a"object-tests/many/00582024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61003b"object-tests/many/00592024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61003c"object-tests/many/00602024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61003d"object-tests/many/00612024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61003e"object-tests/many/00622024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61003f"object-tests/many/00632024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610040"object-tests/many/00642024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610041"object-tests/many/00652024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610042"object-tests/many/00662024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610043"object-tests/many/00672024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610044"object-tests/many/00682024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610045"object-tests/many/00692024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610046"object-tests/many/00702024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610047"object-tests/many/00712024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610048"object-tests/many/00722024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610049"object-tests/many/00732024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61004a"object-tests/many/00742024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61004b"object-tests/many/00752024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61004c"object-tests/many/00762024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61004d"object-tests/many/00772024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61004e"object-tests/many/00782024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61004f"object-tests/many/00792024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610050"object-tests/many/00802024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610051"object-tests/many/00812024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610052"object-tests/many/00822024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610053"object-tests/many/00832024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610054"object-tests/many/00842024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610055"object-tests/many/00852024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610056"object-tests/many/00862024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610057"object-tests/many/00872024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610058"object-tests/many/00882024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610059"object-tests/many/00892024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61005a"object-tests/many/00902024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61005b"object-tests/many/00912024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61005c"object-tests/many/00922024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61005d"object-tests/many/00932024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61005e"object-tests/many/00942024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61005f"object-tests/many/00952024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610060"object-tests/many/00962024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610061"object-tests/many/00972024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610062"object-tests/many/00982024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610063"object-tests/many/00992024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610064"object-tests/many/01002024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610065"object-tests/many/01012024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610066"object-tests/many/01022024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610067"object-tests/many/01032024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610068"object-tests/many/01042024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610069"object-tests/many/01052024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61006a"object-tests/many/01062024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61006b"object-tests/many/01072024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61006c"object-tests/many/01082024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61006d"object-tests/many/01092024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61006e"object-tests/many/01102024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61006f"object-tests/many/01112024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610070"object-tests/many/01122024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610071"object-tests/many/01132024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610072"object-tests/many/01142024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610073"object-tests/many/01152024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610074"object-tests/many/01162024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610075"object-tests/many/01172024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610076"object-tests/many/01182024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610077"object-tests/many/01192024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610078"object-tests/many/01202024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610079"object-tests/many/01212024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61007a"object-tests/many/01222024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61007b"object-tests/many/01232024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61007c"object-tests/many/01242024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61007d"object-tests/many/01252024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61007e"object-tests/many/01262024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61007f"object-tests/many/01272024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610080"object-tests/many/01282024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610081"object-tests/many/01292024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610082"object-tests/many/01302024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610083"object-tests/many/01312024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610084"object-tests/many/01322024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610085"object-tests/many/01332024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610086"object-tests/many/01342024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610087"object-tests/many/01352024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610088"object-tests/many/01362024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610089"object-tests/many/01372024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61008a"object-tests/many/01382024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61008b"object-tests/many/01392024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61008c"object-tests/many/01402024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61008d"object-tests/many/01412024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61008e"object-tests/many/01422024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61008f"object-tests/many/01432024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610090"object-tests/many/01442024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610091"object-tests/many/01452024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610092"object-tests/many/01462024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610093"object-tests/many/01472024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610094"object-tests/many/01482024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610095"object-tests/many/01492024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610096"object-tests/many/01502024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610097"object-tests/many/01512024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610098"object-tests/many/01522024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610099"object-tests/many/01532024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61009a"object-tests/many/01542024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61009b"object-tests/many/01552024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61009c"object-tests/many/01562024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61009d"object-tests/many/01572024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61009e"object-tests/many/01582024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61009f"object-tests/many/01592024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100a0"object-tests/many/01602024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100a1"object-tests/many/01612024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100a2"object-tests/many/01622024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100a3"object-tests/many/01632024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100a4"object-tests/many/01642024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100a5"object-tests/many/01652024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100a6"object-tests/many/01662024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100a7"object-tests/many/01672024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100a8"object-tests/many/01682024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100a9"object-tests/many/01692024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100aa"object-tests/many/01702024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100ab"object-tests/many/01712024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100ac"object-tests/many/01722024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100ad"object-tests/many/01732024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100ae"object-tests/many/01742024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100af"object-tests/many/01752024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100b0"object-tests/many/01762024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100b1"object-tests/many/01772024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100b2"object-tests/many/01782024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100b3"object-tests/many/01792024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100b4"object-tests/many/01802024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100b5"object-tests/many/01812024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100b6"object-tests/many/01822024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100b7"object-tests/many/01832024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100b8"object-tests/many/01842024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100b9"object-tests/many/01852024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100ba"object-tests/many/01862024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100bb"object-tests/many/01872024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100bc"object-tests/many/01882024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100bd"object-tests/many/01892024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100be"object-tests/many/01902024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100bf"object-tests/many/01912024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100c0"object-tests/many/01922024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100c1"object-tests/many/01932024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100c2"object-tests/many/01942024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100c3"object-tests/many/01952024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100c4"object-tests/many/01962024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100c5"object-tests/many/01972024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100c6"object-tests/many/01982024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100c7"object-tests/many/01992024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100c8"object-tests/many/02002024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100c9"object-tests/many/02012024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100ca"object-tests/many/02022024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100cb"object-tests/many/02032024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100cc"object-tests/many/02042024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100cd"object-tests/many/02052024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100ce"object-tests/many/02062024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100cf"object-tests/many/02072024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100d0"object-tests/many/02082024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100d1"object-tests/many/02092024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100d2"object-tests/many/02102024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100d3"object-tests/many/02112024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100d4"object-tests/many/02122024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100d5"object-tests/many/02132024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100d6"object-tests/many/02142024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100d7"object-tests/many/02152024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100d8"object-tests/many/02162024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100d9"object-tests/many/02172024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100da"object-tests/many/02182024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100db"object-tests/many/02192024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100dc"object-tests/many/02202024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100dd"object-tests/many/02212024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100de"object-tests/many/02222024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100df"object-tests/many/02232024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100e0"object-tests/many/02242024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100e1"object-tests/many/02252024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100e2"object-tests/many/02262024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100e3"object-tests/many/02272024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100e4"object-tests/many/02282024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100e5"object-tests/many/02292024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100e6"object-tests/many/02302024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100e7"object-tests/many/02312024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100e8"object-tests/many/02322024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100e9"object-tests/many/02332024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100ea"object-tests/many/02342024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100eb"object-tests/many/02352024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100ec"object-tests/many/02362024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100ed"object-tests/many/02372024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100ee"object-tests/many/02382024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100ef"object-tests/many/02392024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100f0"object-tests/many/02402024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100f1"object-tests/many/02412024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100f2"object-tests/many/02422024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100f3"object-tests/many/02432024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100f4"object-tests/many/02442024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100f5"object-tests/many/02452024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100f6"object-tests/many/02462024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100f7"object-tests/many/02472024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100f8"object-tests/many/02482024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100f9"object-tests/many/02492024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100fa"object-tests/many/02502024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100fb"object-tests/many/02512024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100fc"object-tests/many/02522024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100fd"object-tests/many/02532024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100fe"object-tests/many/02542024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100ff"object-tests/many/02552024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610100"object-tests/many/02562024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610101"object-tests/many/02572024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610102"object-tests/many/02582024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610103"object-tests/many/02592024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610104"object-tests/many/02602024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610105"object-tests/many/02612024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610106"object-tests/many/02622024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610107"object-tests/many/02632024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610108"object-tests/many/02642024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610109"object-tests/many/02652024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61010a"object-tests/many/02662024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61010b"object-tests/many/02672024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61010c"object-tests/many/02682024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61010d"object-tests/many/02692024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61010e"object-tests/many/02702024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61010f"object-tests/many/02712024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610110"object-tests/many/02722024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610111"object-tests/many/02732024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610112"object-tests/many/02742024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610113"object-tests/many/02752024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610114"object-tests/many/02762024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610115"object-tests/many/02772024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610116"object-tests/many/02782024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610117"object-tests/many/02792024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610118"object-tests/many/02802024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610119"object-tests/many/02812024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61011a"object-tests/many/02822024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61011b"object-tests/many/02832024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61011c"object-tests/many/02842024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61011d"object-tests/many/02852024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61011e"object-tests/many/02862024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61011f"object-tests/many/02872024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610120"object-tests/many/02882024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610121"object-tests/many/02892024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610122"object-tests/many/02902024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610123"object-tests/many/02912024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610124"object-tests/many/02922024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610125"object-tests/many/02932024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610126"object-tests/many/02942024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610127"object-tests/many/02952024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610128"object-tests/many/02962024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610129"object-tests/many/02972024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61012a"object-tests/many/02982024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61012b"object-tests/many/02992024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61012c"object-tests/many/03002024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61012d"object-tests/many/03012024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61012e"object-tests/many/03022024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61012f"object-tests/many/03032024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610130"object-tests/many/03042024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610131"object-tests/many/03052024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610132"object-tests/many/03062024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610133"object-tests/many/03072024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610134"object-tests/many/03082024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610135"object-tests/many/03092024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610136"object-tests/many/03102024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610137"object-tests/many/03112024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610138"object-tests/many/03122024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610139"object-tests/many/03132024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61013a"object-tests/many/03142024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61013b"object-tests/many/03152024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61013c"object-tests/many/03162024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61013d"object-tests/many/03172024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61013e"object-tests/many/03182024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61013f"object-tests/many/03192024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610140"object-tests/many/03202024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610141"object-tests/many/03212024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610142"object-tests/many/03222024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610143"object-tests/many/03232024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610144"object-tests/many/03242024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610145"object-tests/many/03252024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610146"object-tests/many/03262024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610147"object-tests/many/03272024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610148"object-tests/many/03282024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610149"object-tests/many/03292024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61014a"object-tests/many/03302024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61014b"object-tests/many/03312024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61014c"object-tests/many/03322024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61014d"object-tests/many/03332024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61014e"object-tests/many/03342024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61014f"object-tests/many/03352024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610150"object-tests/many/03362024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610151"object-tests/many/03372024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610152"object-tests/many/03382024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610153"object-tests/many/03392024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610154"object-tests/many/03402024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610155"object-tests/many/03412024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610156"object-tests/many/03422024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610157"object-tests/many/03432024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610158"object-tests/many/03442024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610159"object-tests/many/03452024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61015a"object-tests/many/03462024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61015b"object-tests/many/03472024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61015c"object-tests/many/03482024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61015d"object-tests/many/03492024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61015e"object-tests/many/03502024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61015f"object-tests/many/03512024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610160"object-tests/many/03522024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610161"object-tests/many/03532024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610162"object-tests/many/03542024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610163"object-tests/many/03552024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610164"object-tests/many/03562024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610165"object-tests/many/03572024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610166"object-tests/many/03582024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610167"object-tests/many/03592024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610168"object-tests/many/03602024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610169"object-tests/many/03612024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61016a"object-tests/many/03622024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61016b"object-tests/many/03632024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61016c"object-tests/many/03642024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61016d"object-tests/many/03652024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61016e"object-tests/many/03662024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61016f"object-tests/many/03672024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610170"object-tests/many/03682024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610171"object-tests/many/03692024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610172"object-tests/many/03702024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610173"object-tests/many/03712024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610174"object-tests/many/03722024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610175"object-tests/many/03732024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610176"object-tests/many/03742024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610177"object-tests/many/03752024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610178"object-tests/many/03762024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610179"object-tests/many/03772024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61017a"object-tests/many/03782024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61017b"object-tests/many/03792024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61017c"object-tests/many/03802024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61017d"object-tests/many/03812024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61017e"object-tests/many/03822024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61017f"object-tests/many/03832024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610180"object-tests/many/03842024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610181"object-tests/many/03852024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610182"object-tests/many/03862024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610183"object-tests/many/03872024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610184"object-tests/many/03882024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610185"object-tests/many/03892024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610186"object-tests/many/03902024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610187"object-tests/many/03912024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610188"object-tests/many/03922024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610189"object-tests/many/03932024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61018a"object-tests/many/03942024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61018b"object-tests/many/03952024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61018c"object-tests/many/03962024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61018d"object-tests/many/03972024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61018e"object-tests/many/03982024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61018f"object-tests/many/03992024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610190"object-tests/many/04002024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610191"object-tests/many/04012024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610192"object-tests/many/04022024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610193"object-tests/many/04032024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610194"object-tests/many/04042024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610195"object-tests/many/04052024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610196"object-tests/many/04062024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610197"object-tests/many/04072024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610198"object-tests/many/04082024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610199"object-tests/many/04092024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61019a"object-tests/many/04102024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61019b"object-tests/many/04112024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61019c"object-tests/many/04122024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61019d"object-tests/many/04132024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61019e"object-tests/many/04142024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61019f"object-tests/many/04152024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101a0"object-tests/many/04162024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101a1"object-tests/many/04172024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101a2"object-tests/many/04182024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101a3"object-tests/many/04192024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101a4"object-tests/many/04202024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101a5"object-tests/many/04212024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101a6"object-tests/many/04222024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101a7"object-tests/many/04232024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101a8"object-tests/many/04242024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101a9"object-tests/many/04252024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101aa"object-tests/many/04262024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101ab"object-tests/many/04272024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101ac"object-tests/many/04282024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101ad"object-tests/many/04292024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101ae"object-tests/many/04302024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101af"object-tests/many/04312024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101b0"object-tests/many/04322024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101b1"object-tests/many/04332024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101b2"object-tests/many/04342024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101b3"object-tests/many/04352024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101b4"object-tests/many/04362024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101b5"object-tests/many/04372024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101b6"object-tests/many/04382024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101b7"object-tests/many/04392024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101b8"object-tests/many/04402024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101b9"object-tests/many/04412024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101ba"object-tests/many/04422024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101bb"object-tests/many/04432024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101bc"object-tests/many/04442024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101bd"object-tests/many/04452024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101be"object-tests/many/04462024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101bf"object-tests/many/04472024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101c0"object-tests/many/04482024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101c1"object-tests/many/04492024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101c2"object-tests/many/04502024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101c3"object-tests/many/04512024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101c4"object-tests/many/04522024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101c5"object-tests/many/04532024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101c6"object-tests/many/04542024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101c7"object-tests/many/04552024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101c8"object-tests/many/04562024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101c9"object-tests/many/04572024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101ca"object-tests/many/04582024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101cb"object-tests/many/04592024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101cc"object-tests/many/04602024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101cd"object-tests/many/04612024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101ce"object-tests/many/04622024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101cf"object-tests/many/04632024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101d0"object-tests/many/04642024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101d1"object-tests/many/04652024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101d2"object-tests/many/04662024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101d3"object-tests/many/04672024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101d4"object-tests/many/04682024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101d5"object-tests/many/04692024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101d6"object-tests/many/04702024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101d7"object-tests/many/04712024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101d8"object-tests/many/04722024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101d9"object-tests/many/04732024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101da"object-tests/many/04742024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101db"object-tests/many/04752024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101dc"object-tests/many/04762024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101dd"object-tests/many/04772024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101de"object-tests/many/04782024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101df"object-tests/many/04792024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101e0"object-tests/many/04802024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101e1"object-tests/many/04812024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101e2"object-tests/many/04822024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101e3"object-tests/many/04832024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101e4"object-tests/many/04842024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101e5"object-tests/many/04852024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101e6"object-tests/many/04862024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101e7"object-tests/many/04872024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101e8"object-tests/many/04882024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101e9"object-tests/many/04892024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101ea"object-tests/many/04902024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101eb"object-tests/many/04912024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101ec"object-tests/many/04922024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101ed"object-tests/many/04932024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101ee"object-tests/many/04942024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101ef"object-tests/many/04952024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101f0"object-tests/many/04962024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101f1"object-tests/many/04972024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101f2"object-tests/many/04982024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101f3"object-tests/many/04992024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101f4"object-tests/many/05002024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101f5"object-tests/many/05012024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101f6"object-tests/many/05022024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101f7"object-tests/many/05032024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101f8"object-tests/many/05042024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101f9"object-tests/many/05052024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101fa"object-tests/many/05062024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101fb"object-tests/many/05072024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101fc"object-tests/many/05082024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101fd"object-tests/many/05092024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101fe"object-tests/many/05102024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101ff"object-tests/many/05112024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610200"object-tests/many/05122024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610201"object-tests/many/05132024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610202"object-tests/many/05142024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610203"object-tests/many/05152024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610204"object-tests/many/05162024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610205"object-tests/many/05172024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610206"object-tests/many/05182024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610207"object-tests/many/05192024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610208"object-tests/many/05202024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610209"object-tests/many/05212024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61020a"object-tests/many/05222024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61020b"object-tests/many/05232024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61020c"object-tests/many/05242024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61020d"object-tests/many/05252024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61020e"object-tests/many/05262024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61020f"object-tests/many/05272024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610210"object-tests/many/05282024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610211"object-tests/many/05292024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610212"object-tests/many/05302024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610213"object-tests/many/05312024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610214"object-tests/many/05322024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610215"object-tests/many/05332024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610216"object-tests/many/05342024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610217"object-tests/many/05352024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610218"object-tests/many/05362024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610219"object-tests/many/05372024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61021a"object-tests/many/05382024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61021b"object-tests/many/05392024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61021c"object-tests/many/05402024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61021d"object-tests/many/05412024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61021e"object-tests/many/05422024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61021f"object-tests/many/05432024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610220"object-tests/many/05442024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610221"object-tests/many/05452024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610222"object-tests/many/05462024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610223"object-tests/many/05472024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610224"object-tests/many/05482024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610225"object-tests/many/05492024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610226"object-tests/many/05502024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610227"object-tests/many/05512024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610228"object-tests/many/05522024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610229"object-tests/many/05532024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61022a"object-tests/many/05542024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61022b"object-tests/many/05552024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61022c"object-tests/many/05562024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61022d"object-tests/many/05572024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61022e"object-tests/many/05582024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61022f"object-tests/many/05592024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610230"object-tests/many/05602024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610231"object-tests/many/05612024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610232"object-tests/many/05622024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610233"object-tests/many/05632024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610234"object-tests/many/05642024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610235"object-tests/many/05652024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610236"object-tests/many/05662024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610237"object-tests/many/05672024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610238"object-tests/many/05682024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610239"object-tests/many/05692024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61023a"object-tests/many/05702024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61023b"object-tests/many/05712024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61023c"object-tests/many/05722024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61023d"object-tests/many/05732024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61023e"object-tests/many/05742024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61023f"object-tests/many/05752024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610240"object-tests/many/05762024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610241"object-tests/many/05772024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610242"object-tests/many/05782024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610243"object-tests/many/05792024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610244"object-tests/many/05802024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610245"object-tests/many/05812024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610246"object-tests/many/05822024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610247"object-tests/many/05832024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610248"object-tests/many/05842024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610249"object-tests/many/05852024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61024a"object-tests/many/05862024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61024b"object-tests/many/05872024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61024c"object-tests/many/05882024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61024d"object-tests/many/05892024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61024e"object-tests/many/05902024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61024f"object-tests/many/05912024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610250"object-tests/many/05922024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610251"object-tests/many/05932024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610252"object-tests/many/05942024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610253"object-tests/many/05952024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610254"object-tests/many/05962024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610255"object-tests/many/05972024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610256"object-tests/many/05982024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610257"object-tests/many/05992024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610258"object-tests/many/06002024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610259"object-tests/many/06012024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61025a"object-tests/many/06022024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61025b"object-tests/many/06032024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61025c"object-tests/many/06042024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61025d"object-tests/many/06052024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61025e"object-tests/many/06062024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61025f"object-tests/many/06072024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610260"object-tests/many/06082024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610261"object-tests/many/06092024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610262"object-tests/many/06102024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610263"object-tests/many/06112024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610264"object-tests/many/06122024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610265"object-tests/many/06132024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610266"object-tests/many/06142024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610267"object-tests/many/06152024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610268"object-tests/many/06162024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610269"object-tests/many/06172024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61026a"object-tests/many/06182024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61026b"object-tests/many/06192024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61026c"object-tests/many/06202024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61026d"object-tests/many/06212024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61026e"object-tests/many/06222024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61026f"object-tests/many/06232024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610270"object-tests/many/06242024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610271"object-tests/many/06252024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610272"object-tests/many/06262024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610273"object-tests/many/06272024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610274"object-tests/many/06282024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610275"object-tests/many/06292024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610276"object-tests/many/06302024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610277"object-tests/many/06312024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610278"object-tests/many/06322024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610279"object-tests/many/06332024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61027a"object-tests/many/06342024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61027b"object-tests/many/06352024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61027c"object-tests/many/06362024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61027d"object-tests/many/06372024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61027e"object-tests/many/06382024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61027f"object-tests/many/06392024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610280"object-tests/many/06402024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610281"object-tests/many/06412024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610282"object-tests/many/06422024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610283"object-tests/many/06432024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610284"object-tests/many/06442024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610285"object-tests/many/06452024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610286"object-tests/many/06462024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610287"object-tests/many/06472024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610288"object-tests/many/06482024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610289"object-tests/many/06492024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61028a"object-tests/many/06502024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61028b"object-tests/many/06512024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61028c"object-tests/many/06522024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61028d"object-tests/many/06532024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61028e"object-tests/many/06542024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61028f"object-tests/many/06552024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610290"object-tests/many/06562024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610291"object-tests/many/06572024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610292"object-tests/many/06582024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610293"object-tests/many/06592024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610294"object-tests/many/06602024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610295"object-tests/many/06612024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610296"object-tests/many/06622024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610297"object-tests/many/06632024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610298"object-tests/many/06642024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610299"object-tests/many/06652024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61029a"object-tests/many/06662024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61029b"object-tests/many/06672024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61029c"object-tests/many/06682024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61029d"object-tests/many/06692024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61029e"object-tests/many/06702024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61029f"object-tests/many/06712024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102a0"object-tests/many/06722024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102a1"object-tests/many/06732024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102a2"object-tests/many/06742024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102a3"object-tests/many/06752024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102a4"object-tests/many/06762024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102a5"object-tests/many/06772024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102a6"object-tests/many/06782024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102a7"object-tests/many/06792024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102a8"object-tests/many/06802024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102a9"object-tests/many/06812024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102aa"object-tests/many/06822024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102ab"object-tests/many/06832024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102ac"object-tests/many/06842024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102ad"object-tests/many/06852024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102ae"object-tests/many/06862024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102af"object-tests/many/06872024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102b0"object-tests/many/06882024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102b1"object-tests/many/06892024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102b2"object-tests/many/06902024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102b3"object-tests/many/06912024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102b4"object-tests/many/06922024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102b5"object-tests/many/06932024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102b6"object-tests/many/06942024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102b7"object-tests/many/06952024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102b8"object-tests/many/06962024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102b9"object-tests/many/06972024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102ba"object-tests/many/06982024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102bb"object-tests/many/06992024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102bc"object-tests/many/07002024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102bd"object-tests/many/07012024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102be"object-tests/many/07022024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102bf"object-tests/many/07032024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102c0"object-tests/many/07042024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102c1"object-tests/many/07052024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102c2"object-tests/many/07062024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102c3"object-tests/many/07072024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102c4"object-tests/many/07082024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102c5"object-tests/many/07092024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102c6"object-tests/many/07102024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102c7"object-tests/many/07112024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102c8"object-tests/many/07122024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102c9"object-tests/many/07132024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102ca"object-tests/many/07142024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102cb"object-tests/many/07152024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102cc"object-tests/many/07162024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102cd"object-tests/many/07172024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102ce"object-tests/many/07182024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102cf"object-tests/many/07192024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102d0"object-tests/many/07202024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102d1"object-tests/many/07212024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102d2"object-tests/many/07222024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102d3"object-tests/many/07232024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102d4"object-tests/many/07242024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102d5"object-tests/many/07252024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102d6"object-tests/many/07262024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102d7"object-tests/many/07272024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102d8"object-tests/many/07282024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102d9"object-tests/many/07292024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102da"object-tests/many/07302024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102db"object-tests/many/07312024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102dc"object-tests/many/07322024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102dd"object-tests/many/07332024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102de"object-tests/many/07342024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102df"object-tests/many/07352024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102e0"object-tests/many/07362024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102e1"object-tests/many/07372024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102e2"object-tests/many/07382024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102e3"object-tests/many/07392024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102e4"object-tests/many/07402024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102e5"object-tests/many/07412024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102e6"object-tests/many/07422024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102e7"object-tests/many/07432024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102e8"object-tests/many/07442024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102e9"object-tests/many/07452024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102ea"object-tests/many/07462024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102eb"object-tests/many/07472024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102ec"object-tests/many/07482024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102ed"object-tests/many/07492024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102ee"object-tests/many/07502024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102ef"object-tests/many/07512024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102f0"object-tests/many/07522024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102f1"object-tests/many/07532024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102f2"object-tests/many/07542024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102f3"object-tests/many/07552024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102f4"object-tests/many/07562024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102f5"object-tests/many/07572024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102f6"object-tests/many/07582024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102f7"object-tests/many/07592024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102f8"object-tests/many/07602024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102f9"object-tests/many/07612024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102fa"object-tests/many/07622024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102fb"object-tests/many/07632024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102fc"object-tests/many/07642024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102fd"object-tests/many/07652024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102fe"object-tests/many/07662024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102ff"object-tests/many/07672024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610300"object-tests/many/07682024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610301"object-tests/many/07692024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610302"object-tests/many/07702024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610303"object-tests/many/07712024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610304"object-tests/many/07722024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610305"object-tests/many/07732024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610306"object-tests/many/07742024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610307"object-tests/many/07752024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610308"object-tests/many/07762024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610309"object-tests/many/07772024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61030a"object-tests/many/07782024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61030b"object-tests/many/07792024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61030c"object-tests/many/07802024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61030d"object-tests/many/07812024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61030e"object-tests/many/07822024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61030f"object-tests/many/07832024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610310"object-tests/many/07842024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610311"object-tests/many/07852024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610312"object-tests/many/07862024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610313"object-tests/many/07872024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610314"object-tests/many/07882024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610315"object-tests/many/07892024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610316"object-tests/many/07902024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610317"object-tests/many/07912024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610318"object-tests/many/07922024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610319"object-tests/many/07932024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61031a"object-tests/many/07942024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61031b"object-tests/many/07952024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61031c"object-tests/many/07962024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61031d"object-tests/many/07972024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61031e"object-tests/many/07982024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61031f"object-tests/many/07992024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610320"object-tests/many/08002024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610321"object-tests/many/08012024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610322"object-tests/many/08022024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610323"object-tests/many/08032024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610324"object-tests/many/08042024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610325"object-tests/many/08052024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610326"object-tests/many/08062024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610327"object-tests/many/08072024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610328"object-tests/many/08082024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610329"object-tests/many/08092024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61032a"object-tests/many/08102024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61032b"object-tests/many/08112024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61032c"object-tests/many/08122024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61032d"object-tests/many/08132024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61032e"object-tests/many/08142024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61032f"object-tests/many/08152024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610330"object-tests/many/08162024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610331"object-tests/many/08172024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610332"object-tests/many/08182024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610333"object-tests/many/08192024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610334"object-tests/many/08202024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610335"object-tests/many/08212024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610336"object-tests/many/08222024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610337"object-tests/many/08232024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610338"object-tests/many/08242024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610339"object-tests/many/08252024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61033a"object-tests/many/08262024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61033b"object-tests/many/08272024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61033c"object-tests/many/08282024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61033d"object-tests/many/08292024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61033e"object-tests/many/08302024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61033f"object-tests/many/08312024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610340"object-tests/many/08322024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610341"object-tests/many/08332024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610342"object-tests/many/08342024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610343"object-tests/many/08352024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610344"object-tests/many/08362024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610345"object-tests/many/08372024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610346"object-tests/many/08382024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610347"object-tests/many/08392024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610348"object-tests/many/08402024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610349"object-tests/many/08412024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61034a"object-tests/many/08422024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61034b"object-tests/many/08432024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61034c"object-tests/many/08442024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61034d"object-tests/many/08452024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61034e"object-tests/many/08462024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61034f"object-tests/many/08472024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610350"object-tests/many/08482024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610351"object-tests/many/08492024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610352"object-tests/many/08502024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610353"object-tests/many/08512024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610354"object-tests/many/08522024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610355"object-tests/many/08532024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610356"object-tests/many/08542024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610357"object-tests/many/08552024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610358"object-tests/many/08562024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610359"object-tests/many/08572024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61035a"object-tests/many/08582024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61035b"object-tests/many/08592024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61035c"object-tests/many/08602024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61035d"object-tests/many/08612024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61035e"object-tests/many/08622024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61035f"object-tests/many/08632024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610360"object-tests/many/08642024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610361"object-tests/many/08652024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610362"object-tests/many/08662024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610363"object-tests/many/08672024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610364"object-tests/many/08682024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610365"object-tests/many/08692024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610366"object-tests/many/08702024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610367"object-tests/many/08712024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610368"object-tests/many/08722024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610369"object-tests/many/08732024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61036a"object-tests/many/08742024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61036b"object-tests/many/08752024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61036c"object-tests/many/08762024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61036d"object-tests/many/08772024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61036e"object-tests/many/08782024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61036f"object-tests/many/08792024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610370"object-tests/many/08802024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610371"object-tests/many/08812024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610372"object-tests/many/08822024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610373"object-tests/many/08832024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610374"object-tests/many/08842024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610375"object-tests/many/08852024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610376"object-tests/many/08862024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610377"object-tests/many/08872024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610378"object-tests/many/08882024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610379"object-tests/many/08892024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61037a"object-tests/many/08902024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61037b"object-tests/many/08912024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61037c"object-tests/many/08922024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61037d"object-tests/many/08932024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61037e"object-tests/many/08942024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61037f"object-tests/many/08952024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610380"object-tests/many/08962024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610381"object-tests/many/08972024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610382"object-tests/many/08982024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610383"object-tests/many/08992024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610384"object-tests/many/09002024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610385"object-tests/many/09012024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610386"object-tests/many/09022024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610387"object-tests/many/09032024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610388"object-tests/many/09042024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610389"object-tests/many/09052024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61038a"object-tests/many/09062024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61038b"object-tests/many/09072024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61038c"object-tests/many/09082024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61038d"object-tests/many/09092024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61038e"object-tests/many/09102024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61038f"object-tests/many/09112024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610390"object-tests/many/09122024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610391"object-tests/many/09132024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610392"object-tests/many/09142024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610393"object-tests/many/09152024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610394"object-tests/many/09162024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610395"object-tests/many/09172024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610396"object-tests/many/09182024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610397"object-tests/many/09192024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610398"object-tests/many/09202024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610399"object-tests/many/09212024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61039a"object-tests/many/09222024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61039b"object-tests/many/09232024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61039c"object-tests/many/09242024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61039d"object-tests/many/09252024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61039e"object-tests/many/09262024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61039f"object-tests/many/09272024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103a0"object-tests/many/09282024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103a1"object-tests/many/09292024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103a2"object-tests/many/09302024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103a3"object-tests/many/09312024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103a4"object-tests/many/09322024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103a5"object-tests/many/09332024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103a6"object-tests/many/09342024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103a7"object-tests/many/09352024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103a8"object-tests/many/09362024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103a9"object-tests/many/09372024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103aa"object-tests/many/09382024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103ab"object-tests/many/09392024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103ac"object-tests/many/09402024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103ad"object-tests/many/09412024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103ae"object-tests/many/09422024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103af"object-tests/many/09432024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103b0"object-tests/many/09442024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103b1"object-tests/many/09452024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103b2"object-tests/many/09462024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103b3"object-tests/many/09472024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103b4"object-tests/many/09482024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103b5"object-tests/many/09492024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103b6"object-tests/many/09502024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103b7"object-tests/many/09512024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103b8"object-tests/many/09522024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103b9"object-tests/many/09532024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103ba"object-tests/many/09542024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103bb"object-tests/many/09552024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103bc"object-tests/many/09562024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103bd"object-tests/many/09572024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103be"object-tests/many/09582024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103bf"object-tests/many/09592024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103c0"object-tests/many/09602024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103c1"object-tests/many/09612024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103c2"object-tests/many/09622024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103c3"object-tests/many/09632024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103c4"object-tests/many/09642024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103c5"object-tests/many/09652024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103c6"object-tests/many/09662024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103c7"object-tests/many/09672024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103c8"object-tests/many/09682024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103c9"object-tests/many/09692024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103ca"object-tests/many/09702024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103cb"object-tests/many/09712024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103cc"object-tests/many/09722024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103cd"object-tests/many/09732024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103ce"object-tests/many/09742024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103cf"object-tests/many/09752024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103d0"object-tests/many/09762024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103d1"object-tests/many/09772024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103d2"object-tests/many/09782024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103d3"object-tests/many/09792024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103d4"object-tests/many/09802024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103d5"object-tests/many/09812024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103d6"object-tests/many/09822024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103d7"object-tests/many/09832024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103d8"object-tests/many/09842024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103d9"object-tests/many/09852024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103da"object-tests/many/09862024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103db"object-tests/many/09872024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103dc"object-tests/many/09882024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103dd"object-tests/many/09892024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103de"object-tests/many/09902024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103df"object-tests/many/09912024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103e0"object-tests/many/09922024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103e1"object-tests/many/09932024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103e2"object-tests/many/09942024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103e3"object-tests/many/09952024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103e4"object-tests/many/09962024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103e5"object-tests/many/09972024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103e6"object-tests/many/09982024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103e7"object-tests/many/09992024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECT" + } } } - ], - "optional": true + ] }, { "alternatives": [ @@ -146172,15 +188326,15 @@ "optional": false, "rule": { "is": "equal", - "value": "object-tests/board/" + "value": "object-tests/many/" } }, { - "at": "/query/max-keys", + "at": "/query/continuation-token", "optional": false, "rule": { "is": "equal", - "value": "2" + "value": "fixture-marker+/3a4e1000=" } }, { @@ -146213,18 +188367,18 @@ ], "allow_query": [], "response": { - "status": 503, + "status": 200, "headers": { "content-type": "application/xml", "date": { "from": "now" - } + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "utf8", - "data": "\nServiceUnavailablePlease reduce your request rate.fixture" - }, - "framing": "chunked" + "data": "\nfixtureobject-tests/many/fixture-marker+/3a4e1000=11000falseCRC64NVME"fixture-6d6103e8"object-tests/many/10002024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECT" + } } }, { @@ -146266,15 +188420,23 @@ "optional": false, "rule": { "is": "equal", - "value": "object-tests/board/" + "value": "object-tests/many/" } }, { - "at": "/query/max-keys", + "at": "/query/continuation-token", "optional": false, "rule": { "is": "equal", - "value": "2" + "value": "fixture-marker+/3a4e1000=" + } + }, + { + "at": "/query/encoding-type", + "optional": false, + "rule": { + "is": "equal", + "value": "url" } }, { @@ -146300,14 +188462,6 @@ "is": "matches", "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } - }, - { - "at": "/query/encoding-type", - "optional": false, - "rule": { - "is": "equal", - "value": "url" - } } ], "allow_headers": [ @@ -146315,23 +188469,1059 @@ ], "allow_query": [], "response": { - "status": 503, + "status": 200, "headers": { "content-type": "application/xml", "date": { "from": "now" - } + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "utf8", - "data": "\nServiceUnavailablePlease reduce your request rate.fixture" - }, - "framing": "chunked" + "data": "\nfixtureobject-tests/many/fixture-marker+/3a4e1000=11000urlfalseCRC64NVME"fixture-6d6103e8"object-tests/many/10002024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECT" + } } } - ], - "optional": true + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } }, + { + "at": "/value/keys", + "optional": false, + "rule": { + "is": "equal", + "value": [ + "object-tests/many/0000", + "object-tests/many/0001", + "object-tests/many/0002", + "object-tests/many/0003", + "object-tests/many/0004", + "object-tests/many/0005", + "object-tests/many/0006", + "object-tests/many/0007", + "object-tests/many/0008", + "object-tests/many/0009", + "object-tests/many/0010", + "object-tests/many/0011", + "object-tests/many/0012", + "object-tests/many/0013", + "object-tests/many/0014", + "object-tests/many/0015", + "object-tests/many/0016", + "object-tests/many/0017", + "object-tests/many/0018", + "object-tests/many/0019", + "object-tests/many/0020", + "object-tests/many/0021", + "object-tests/many/0022", + "object-tests/many/0023", + "object-tests/many/0024", + "object-tests/many/0025", + "object-tests/many/0026", + "object-tests/many/0027", + "object-tests/many/0028", + "object-tests/many/0029", + "object-tests/many/0030", + "object-tests/many/0031", + "object-tests/many/0032", + "object-tests/many/0033", + "object-tests/many/0034", + "object-tests/many/0035", + "object-tests/many/0036", + "object-tests/many/0037", + "object-tests/many/0038", + "object-tests/many/0039", + "object-tests/many/0040", + "object-tests/many/0041", + "object-tests/many/0042", + "object-tests/many/0043", + "object-tests/many/0044", + "object-tests/many/0045", + "object-tests/many/0046", + "object-tests/many/0047", + "object-tests/many/0048", + "object-tests/many/0049", + "object-tests/many/0050", + "object-tests/many/0051", + "object-tests/many/0052", + "object-tests/many/0053", + "object-tests/many/0054", + "object-tests/many/0055", + "object-tests/many/0056", + "object-tests/many/0057", + "object-tests/many/0058", + "object-tests/many/0059", + "object-tests/many/0060", + "object-tests/many/0061", + "object-tests/many/0062", + "object-tests/many/0063", + "object-tests/many/0064", + "object-tests/many/0065", + "object-tests/many/0066", + "object-tests/many/0067", + "object-tests/many/0068", + "object-tests/many/0069", + "object-tests/many/0070", + "object-tests/many/0071", + "object-tests/many/0072", + "object-tests/many/0073", + "object-tests/many/0074", + "object-tests/many/0075", + "object-tests/many/0076", + "object-tests/many/0077", + "object-tests/many/0078", + "object-tests/many/0079", + "object-tests/many/0080", + "object-tests/many/0081", + "object-tests/many/0082", + "object-tests/many/0083", + "object-tests/many/0084", + "object-tests/many/0085", + "object-tests/many/0086", + "object-tests/many/0087", + "object-tests/many/0088", + "object-tests/many/0089", + "object-tests/many/0090", + "object-tests/many/0091", + "object-tests/many/0092", + "object-tests/many/0093", + "object-tests/many/0094", + "object-tests/many/0095", + "object-tests/many/0096", + "object-tests/many/0097", + "object-tests/many/0098", + "object-tests/many/0099", + "object-tests/many/0100", + "object-tests/many/0101", + "object-tests/many/0102", + "object-tests/many/0103", + "object-tests/many/0104", + "object-tests/many/0105", + "object-tests/many/0106", + "object-tests/many/0107", + "object-tests/many/0108", + "object-tests/many/0109", + "object-tests/many/0110", + "object-tests/many/0111", + "object-tests/many/0112", + "object-tests/many/0113", + "object-tests/many/0114", + "object-tests/many/0115", + "object-tests/many/0116", + "object-tests/many/0117", + "object-tests/many/0118", + "object-tests/many/0119", + "object-tests/many/0120", + "object-tests/many/0121", + "object-tests/many/0122", + "object-tests/many/0123", + "object-tests/many/0124", + "object-tests/many/0125", + "object-tests/many/0126", + "object-tests/many/0127", + "object-tests/many/0128", + "object-tests/many/0129", + "object-tests/many/0130", + "object-tests/many/0131", + "object-tests/many/0132", + "object-tests/many/0133", + "object-tests/many/0134", + "object-tests/many/0135", + "object-tests/many/0136", + "object-tests/many/0137", + "object-tests/many/0138", + "object-tests/many/0139", + "object-tests/many/0140", + "object-tests/many/0141", + "object-tests/many/0142", + "object-tests/many/0143", + "object-tests/many/0144", + "object-tests/many/0145", + "object-tests/many/0146", + "object-tests/many/0147", + "object-tests/many/0148", + "object-tests/many/0149", + "object-tests/many/0150", + "object-tests/many/0151", + "object-tests/many/0152", + "object-tests/many/0153", + "object-tests/many/0154", + "object-tests/many/0155", + "object-tests/many/0156", + "object-tests/many/0157", + "object-tests/many/0158", + "object-tests/many/0159", + "object-tests/many/0160", + "object-tests/many/0161", + "object-tests/many/0162", + "object-tests/many/0163", + "object-tests/many/0164", + "object-tests/many/0165", + "object-tests/many/0166", + "object-tests/many/0167", + "object-tests/many/0168", + "object-tests/many/0169", + "object-tests/many/0170", + "object-tests/many/0171", + "object-tests/many/0172", + "object-tests/many/0173", + "object-tests/many/0174", + "object-tests/many/0175", + "object-tests/many/0176", + "object-tests/many/0177", + "object-tests/many/0178", + "object-tests/many/0179", + "object-tests/many/0180", + "object-tests/many/0181", + "object-tests/many/0182", + "object-tests/many/0183", + "object-tests/many/0184", + "object-tests/many/0185", + "object-tests/many/0186", + "object-tests/many/0187", + "object-tests/many/0188", + "object-tests/many/0189", + "object-tests/many/0190", + "object-tests/many/0191", + "object-tests/many/0192", + "object-tests/many/0193", + "object-tests/many/0194", + "object-tests/many/0195", + "object-tests/many/0196", + "object-tests/many/0197", + "object-tests/many/0198", + "object-tests/many/0199", + "object-tests/many/0200", + "object-tests/many/0201", + "object-tests/many/0202", + "object-tests/many/0203", + "object-tests/many/0204", + "object-tests/many/0205", + "object-tests/many/0206", + "object-tests/many/0207", + "object-tests/many/0208", + "object-tests/many/0209", + "object-tests/many/0210", + "object-tests/many/0211", + "object-tests/many/0212", + "object-tests/many/0213", + "object-tests/many/0214", + "object-tests/many/0215", + "object-tests/many/0216", + "object-tests/many/0217", + "object-tests/many/0218", + "object-tests/many/0219", + "object-tests/many/0220", + "object-tests/many/0221", + "object-tests/many/0222", + "object-tests/many/0223", + "object-tests/many/0224", + "object-tests/many/0225", + "object-tests/many/0226", + "object-tests/many/0227", + "object-tests/many/0228", + "object-tests/many/0229", + "object-tests/many/0230", + "object-tests/many/0231", + "object-tests/many/0232", + "object-tests/many/0233", + "object-tests/many/0234", + "object-tests/many/0235", + "object-tests/many/0236", + "object-tests/many/0237", + "object-tests/many/0238", + "object-tests/many/0239", + "object-tests/many/0240", + "object-tests/many/0241", + "object-tests/many/0242", + "object-tests/many/0243", + "object-tests/many/0244", + "object-tests/many/0245", + "object-tests/many/0246", + "object-tests/many/0247", + "object-tests/many/0248", + "object-tests/many/0249", + "object-tests/many/0250", + "object-tests/many/0251", + "object-tests/many/0252", + "object-tests/many/0253", + "object-tests/many/0254", + "object-tests/many/0255", + "object-tests/many/0256", + "object-tests/many/0257", + "object-tests/many/0258", + "object-tests/many/0259", + "object-tests/many/0260", + "object-tests/many/0261", + "object-tests/many/0262", + "object-tests/many/0263", + "object-tests/many/0264", + "object-tests/many/0265", + "object-tests/many/0266", + "object-tests/many/0267", + "object-tests/many/0268", + "object-tests/many/0269", + "object-tests/many/0270", + "object-tests/many/0271", + "object-tests/many/0272", + "object-tests/many/0273", + "object-tests/many/0274", + "object-tests/many/0275", + "object-tests/many/0276", + "object-tests/many/0277", + "object-tests/many/0278", + "object-tests/many/0279", + "object-tests/many/0280", + "object-tests/many/0281", + "object-tests/many/0282", + "object-tests/many/0283", + "object-tests/many/0284", + "object-tests/many/0285", + "object-tests/many/0286", + "object-tests/many/0287", + "object-tests/many/0288", + "object-tests/many/0289", + "object-tests/many/0290", + "object-tests/many/0291", + "object-tests/many/0292", + "object-tests/many/0293", + "object-tests/many/0294", + "object-tests/many/0295", + "object-tests/many/0296", + "object-tests/many/0297", + "object-tests/many/0298", + "object-tests/many/0299", + "object-tests/many/0300", + "object-tests/many/0301", + "object-tests/many/0302", + "object-tests/many/0303", + "object-tests/many/0304", + "object-tests/many/0305", + "object-tests/many/0306", + "object-tests/many/0307", + "object-tests/many/0308", + "object-tests/many/0309", + "object-tests/many/0310", + "object-tests/many/0311", + "object-tests/many/0312", + "object-tests/many/0313", + "object-tests/many/0314", + "object-tests/many/0315", + "object-tests/many/0316", + "object-tests/many/0317", + "object-tests/many/0318", + "object-tests/many/0319", + "object-tests/many/0320", + "object-tests/many/0321", + "object-tests/many/0322", + "object-tests/many/0323", + "object-tests/many/0324", + "object-tests/many/0325", + "object-tests/many/0326", + "object-tests/many/0327", + "object-tests/many/0328", + "object-tests/many/0329", + "object-tests/many/0330", + "object-tests/many/0331", + "object-tests/many/0332", + "object-tests/many/0333", + "object-tests/many/0334", + "object-tests/many/0335", + "object-tests/many/0336", + "object-tests/many/0337", + "object-tests/many/0338", + "object-tests/many/0339", + "object-tests/many/0340", + "object-tests/many/0341", + "object-tests/many/0342", + "object-tests/many/0343", + "object-tests/many/0344", + "object-tests/many/0345", + "object-tests/many/0346", + "object-tests/many/0347", + "object-tests/many/0348", + "object-tests/many/0349", + "object-tests/many/0350", + "object-tests/many/0351", + "object-tests/many/0352", + "object-tests/many/0353", + "object-tests/many/0354", + "object-tests/many/0355", + "object-tests/many/0356", + "object-tests/many/0357", + "object-tests/many/0358", + "object-tests/many/0359", + "object-tests/many/0360", + "object-tests/many/0361", + "object-tests/many/0362", + "object-tests/many/0363", + "object-tests/many/0364", + "object-tests/many/0365", + "object-tests/many/0366", + "object-tests/many/0367", + "object-tests/many/0368", + "object-tests/many/0369", + "object-tests/many/0370", + "object-tests/many/0371", + "object-tests/many/0372", + "object-tests/many/0373", + "object-tests/many/0374", + "object-tests/many/0375", + "object-tests/many/0376", + "object-tests/many/0377", + "object-tests/many/0378", + "object-tests/many/0379", + "object-tests/many/0380", + "object-tests/many/0381", + "object-tests/many/0382", + "object-tests/many/0383", + "object-tests/many/0384", + "object-tests/many/0385", + "object-tests/many/0386", + "object-tests/many/0387", + "object-tests/many/0388", + "object-tests/many/0389", + "object-tests/many/0390", + "object-tests/many/0391", + "object-tests/many/0392", + "object-tests/many/0393", + "object-tests/many/0394", + "object-tests/many/0395", + "object-tests/many/0396", + "object-tests/many/0397", + "object-tests/many/0398", + "object-tests/many/0399", + "object-tests/many/0400", + "object-tests/many/0401", + "object-tests/many/0402", + "object-tests/many/0403", + "object-tests/many/0404", + "object-tests/many/0405", + "object-tests/many/0406", + "object-tests/many/0407", + "object-tests/many/0408", + "object-tests/many/0409", + "object-tests/many/0410", + "object-tests/many/0411", + "object-tests/many/0412", + "object-tests/many/0413", + "object-tests/many/0414", + "object-tests/many/0415", + "object-tests/many/0416", + "object-tests/many/0417", + "object-tests/many/0418", + "object-tests/many/0419", + "object-tests/many/0420", + "object-tests/many/0421", + "object-tests/many/0422", + "object-tests/many/0423", + "object-tests/many/0424", + "object-tests/many/0425", + "object-tests/many/0426", + "object-tests/many/0427", + "object-tests/many/0428", + "object-tests/many/0429", + "object-tests/many/0430", + "object-tests/many/0431", + "object-tests/many/0432", + "object-tests/many/0433", + "object-tests/many/0434", + "object-tests/many/0435", + "object-tests/many/0436", + "object-tests/many/0437", + "object-tests/many/0438", + "object-tests/many/0439", + "object-tests/many/0440", + "object-tests/many/0441", + "object-tests/many/0442", + "object-tests/many/0443", + "object-tests/many/0444", + "object-tests/many/0445", + "object-tests/many/0446", + "object-tests/many/0447", + "object-tests/many/0448", + "object-tests/many/0449", + "object-tests/many/0450", + "object-tests/many/0451", + "object-tests/many/0452", + "object-tests/many/0453", + "object-tests/many/0454", + "object-tests/many/0455", + "object-tests/many/0456", + "object-tests/many/0457", + "object-tests/many/0458", + "object-tests/many/0459", + "object-tests/many/0460", + "object-tests/many/0461", + "object-tests/many/0462", + "object-tests/many/0463", + "object-tests/many/0464", + "object-tests/many/0465", + "object-tests/many/0466", + "object-tests/many/0467", + "object-tests/many/0468", + "object-tests/many/0469", + "object-tests/many/0470", + "object-tests/many/0471", + "object-tests/many/0472", + "object-tests/many/0473", + "object-tests/many/0474", + "object-tests/many/0475", + "object-tests/many/0476", + "object-tests/many/0477", + "object-tests/many/0478", + "object-tests/many/0479", + "object-tests/many/0480", + "object-tests/many/0481", + "object-tests/many/0482", + "object-tests/many/0483", + "object-tests/many/0484", + "object-tests/many/0485", + "object-tests/many/0486", + "object-tests/many/0487", + "object-tests/many/0488", + "object-tests/many/0489", + "object-tests/many/0490", + "object-tests/many/0491", + "object-tests/many/0492", + "object-tests/many/0493", + "object-tests/many/0494", + "object-tests/many/0495", + "object-tests/many/0496", + "object-tests/many/0497", + "object-tests/many/0498", + "object-tests/many/0499", + "object-tests/many/0500", + "object-tests/many/0501", + "object-tests/many/0502", + "object-tests/many/0503", + "object-tests/many/0504", + "object-tests/many/0505", + "object-tests/many/0506", + "object-tests/many/0507", + "object-tests/many/0508", + "object-tests/many/0509", + "object-tests/many/0510", + "object-tests/many/0511", + "object-tests/many/0512", + "object-tests/many/0513", + "object-tests/many/0514", + "object-tests/many/0515", + "object-tests/many/0516", + "object-tests/many/0517", + "object-tests/many/0518", + "object-tests/many/0519", + "object-tests/many/0520", + "object-tests/many/0521", + "object-tests/many/0522", + "object-tests/many/0523", + "object-tests/many/0524", + "object-tests/many/0525", + "object-tests/many/0526", + "object-tests/many/0527", + "object-tests/many/0528", + "object-tests/many/0529", + "object-tests/many/0530", + "object-tests/many/0531", + "object-tests/many/0532", + "object-tests/many/0533", + "object-tests/many/0534", + "object-tests/many/0535", + "object-tests/many/0536", + "object-tests/many/0537", + "object-tests/many/0538", + "object-tests/many/0539", + "object-tests/many/0540", + "object-tests/many/0541", + "object-tests/many/0542", + "object-tests/many/0543", + "object-tests/many/0544", + "object-tests/many/0545", + "object-tests/many/0546", + "object-tests/many/0547", + "object-tests/many/0548", + "object-tests/many/0549", + "object-tests/many/0550", + "object-tests/many/0551", + "object-tests/many/0552", + "object-tests/many/0553", + "object-tests/many/0554", + "object-tests/many/0555", + "object-tests/many/0556", + "object-tests/many/0557", + "object-tests/many/0558", + "object-tests/many/0559", + "object-tests/many/0560", + "object-tests/many/0561", + "object-tests/many/0562", + "object-tests/many/0563", + "object-tests/many/0564", + "object-tests/many/0565", + "object-tests/many/0566", + "object-tests/many/0567", + "object-tests/many/0568", + "object-tests/many/0569", + "object-tests/many/0570", + "object-tests/many/0571", + "object-tests/many/0572", + "object-tests/many/0573", + "object-tests/many/0574", + "object-tests/many/0575", + "object-tests/many/0576", + "object-tests/many/0577", + "object-tests/many/0578", + "object-tests/many/0579", + "object-tests/many/0580", + "object-tests/many/0581", + "object-tests/many/0582", + "object-tests/many/0583", + "object-tests/many/0584", + "object-tests/many/0585", + "object-tests/many/0586", + "object-tests/many/0587", + "object-tests/many/0588", + "object-tests/many/0589", + "object-tests/many/0590", + "object-tests/many/0591", + "object-tests/many/0592", + "object-tests/many/0593", + "object-tests/many/0594", + "object-tests/many/0595", + "object-tests/many/0596", + "object-tests/many/0597", + "object-tests/many/0598", + "object-tests/many/0599", + "object-tests/many/0600", + "object-tests/many/0601", + "object-tests/many/0602", + "object-tests/many/0603", + "object-tests/many/0604", + "object-tests/many/0605", + "object-tests/many/0606", + "object-tests/many/0607", + "object-tests/many/0608", + "object-tests/many/0609", + "object-tests/many/0610", + "object-tests/many/0611", + "object-tests/many/0612", + "object-tests/many/0613", + "object-tests/many/0614", + "object-tests/many/0615", + "object-tests/many/0616", + "object-tests/many/0617", + "object-tests/many/0618", + "object-tests/many/0619", + "object-tests/many/0620", + "object-tests/many/0621", + "object-tests/many/0622", + "object-tests/many/0623", + "object-tests/many/0624", + "object-tests/many/0625", + "object-tests/many/0626", + "object-tests/many/0627", + "object-tests/many/0628", + "object-tests/many/0629", + "object-tests/many/0630", + "object-tests/many/0631", + "object-tests/many/0632", + "object-tests/many/0633", + "object-tests/many/0634", + "object-tests/many/0635", + "object-tests/many/0636", + "object-tests/many/0637", + "object-tests/many/0638", + "object-tests/many/0639", + "object-tests/many/0640", + "object-tests/many/0641", + "object-tests/many/0642", + "object-tests/many/0643", + "object-tests/many/0644", + "object-tests/many/0645", + "object-tests/many/0646", + "object-tests/many/0647", + "object-tests/many/0648", + "object-tests/many/0649", + "object-tests/many/0650", + "object-tests/many/0651", + "object-tests/many/0652", + "object-tests/many/0653", + "object-tests/many/0654", + "object-tests/many/0655", + "object-tests/many/0656", + "object-tests/many/0657", + "object-tests/many/0658", + "object-tests/many/0659", + "object-tests/many/0660", + "object-tests/many/0661", + "object-tests/many/0662", + "object-tests/many/0663", + "object-tests/many/0664", + "object-tests/many/0665", + "object-tests/many/0666", + "object-tests/many/0667", + "object-tests/many/0668", + "object-tests/many/0669", + "object-tests/many/0670", + "object-tests/many/0671", + "object-tests/many/0672", + "object-tests/many/0673", + "object-tests/many/0674", + "object-tests/many/0675", + "object-tests/many/0676", + "object-tests/many/0677", + "object-tests/many/0678", + "object-tests/many/0679", + "object-tests/many/0680", + "object-tests/many/0681", + "object-tests/many/0682", + "object-tests/many/0683", + "object-tests/many/0684", + "object-tests/many/0685", + "object-tests/many/0686", + "object-tests/many/0687", + "object-tests/many/0688", + "object-tests/many/0689", + "object-tests/many/0690", + "object-tests/many/0691", + "object-tests/many/0692", + "object-tests/many/0693", + "object-tests/many/0694", + "object-tests/many/0695", + "object-tests/many/0696", + "object-tests/many/0697", + "object-tests/many/0698", + "object-tests/many/0699", + "object-tests/many/0700", + "object-tests/many/0701", + "object-tests/many/0702", + "object-tests/many/0703", + "object-tests/many/0704", + "object-tests/many/0705", + "object-tests/many/0706", + "object-tests/many/0707", + "object-tests/many/0708", + "object-tests/many/0709", + "object-tests/many/0710", + "object-tests/many/0711", + "object-tests/many/0712", + "object-tests/many/0713", + "object-tests/many/0714", + "object-tests/many/0715", + "object-tests/many/0716", + "object-tests/many/0717", + "object-tests/many/0718", + "object-tests/many/0719", + "object-tests/many/0720", + "object-tests/many/0721", + "object-tests/many/0722", + "object-tests/many/0723", + "object-tests/many/0724", + "object-tests/many/0725", + "object-tests/many/0726", + "object-tests/many/0727", + "object-tests/many/0728", + "object-tests/many/0729", + "object-tests/many/0730", + "object-tests/many/0731", + "object-tests/many/0732", + "object-tests/many/0733", + "object-tests/many/0734", + "object-tests/many/0735", + "object-tests/many/0736", + "object-tests/many/0737", + "object-tests/many/0738", + "object-tests/many/0739", + "object-tests/many/0740", + "object-tests/many/0741", + "object-tests/many/0742", + "object-tests/many/0743", + "object-tests/many/0744", + "object-tests/many/0745", + "object-tests/many/0746", + "object-tests/many/0747", + "object-tests/many/0748", + "object-tests/many/0749", + "object-tests/many/0750", + "object-tests/many/0751", + "object-tests/many/0752", + "object-tests/many/0753", + "object-tests/many/0754", + "object-tests/many/0755", + "object-tests/many/0756", + "object-tests/many/0757", + "object-tests/many/0758", + "object-tests/many/0759", + "object-tests/many/0760", + "object-tests/many/0761", + "object-tests/many/0762", + "object-tests/many/0763", + "object-tests/many/0764", + "object-tests/many/0765", + "object-tests/many/0766", + "object-tests/many/0767", + "object-tests/many/0768", + "object-tests/many/0769", + "object-tests/many/0770", + "object-tests/many/0771", + "object-tests/many/0772", + "object-tests/many/0773", + "object-tests/many/0774", + "object-tests/many/0775", + "object-tests/many/0776", + "object-tests/many/0777", + "object-tests/many/0778", + "object-tests/many/0779", + "object-tests/many/0780", + "object-tests/many/0781", + "object-tests/many/0782", + "object-tests/many/0783", + "object-tests/many/0784", + "object-tests/many/0785", + "object-tests/many/0786", + "object-tests/many/0787", + "object-tests/many/0788", + "object-tests/many/0789", + "object-tests/many/0790", + "object-tests/many/0791", + "object-tests/many/0792", + "object-tests/many/0793", + "object-tests/many/0794", + "object-tests/many/0795", + "object-tests/many/0796", + "object-tests/many/0797", + "object-tests/many/0798", + "object-tests/many/0799", + "object-tests/many/0800", + "object-tests/many/0801", + "object-tests/many/0802", + "object-tests/many/0803", + "object-tests/many/0804", + "object-tests/many/0805", + "object-tests/many/0806", + "object-tests/many/0807", + "object-tests/many/0808", + "object-tests/many/0809", + "object-tests/many/0810", + "object-tests/many/0811", + "object-tests/many/0812", + "object-tests/many/0813", + "object-tests/many/0814", + "object-tests/many/0815", + "object-tests/many/0816", + "object-tests/many/0817", + "object-tests/many/0818", + "object-tests/many/0819", + "object-tests/many/0820", + "object-tests/many/0821", + "object-tests/many/0822", + "object-tests/many/0823", + "object-tests/many/0824", + "object-tests/many/0825", + "object-tests/many/0826", + "object-tests/many/0827", + "object-tests/many/0828", + "object-tests/many/0829", + "object-tests/many/0830", + "object-tests/many/0831", + "object-tests/many/0832", + "object-tests/many/0833", + "object-tests/many/0834", + "object-tests/many/0835", + "object-tests/many/0836", + "object-tests/many/0837", + "object-tests/many/0838", + "object-tests/many/0839", + "object-tests/many/0840", + "object-tests/many/0841", + "object-tests/many/0842", + "object-tests/many/0843", + "object-tests/many/0844", + "object-tests/many/0845", + "object-tests/many/0846", + "object-tests/many/0847", + "object-tests/many/0848", + "object-tests/many/0849", + "object-tests/many/0850", + "object-tests/many/0851", + "object-tests/many/0852", + "object-tests/many/0853", + "object-tests/many/0854", + "object-tests/many/0855", + "object-tests/many/0856", + "object-tests/many/0857", + "object-tests/many/0858", + "object-tests/many/0859", + "object-tests/many/0860", + "object-tests/many/0861", + "object-tests/many/0862", + "object-tests/many/0863", + "object-tests/many/0864", + "object-tests/many/0865", + "object-tests/many/0866", + "object-tests/many/0867", + "object-tests/many/0868", + "object-tests/many/0869", + "object-tests/many/0870", + "object-tests/many/0871", + "object-tests/many/0872", + "object-tests/many/0873", + "object-tests/many/0874", + "object-tests/many/0875", + "object-tests/many/0876", + "object-tests/many/0877", + "object-tests/many/0878", + "object-tests/many/0879", + "object-tests/many/0880", + "object-tests/many/0881", + "object-tests/many/0882", + "object-tests/many/0883", + "object-tests/many/0884", + "object-tests/many/0885", + "object-tests/many/0886", + "object-tests/many/0887", + "object-tests/many/0888", + "object-tests/many/0889", + "object-tests/many/0890", + "object-tests/many/0891", + "object-tests/many/0892", + "object-tests/many/0893", + "object-tests/many/0894", + "object-tests/many/0895", + "object-tests/many/0896", + "object-tests/many/0897", + "object-tests/many/0898", + "object-tests/many/0899", + "object-tests/many/0900", + "object-tests/many/0901", + "object-tests/many/0902", + "object-tests/many/0903", + "object-tests/many/0904", + "object-tests/many/0905", + "object-tests/many/0906", + "object-tests/many/0907", + "object-tests/many/0908", + "object-tests/many/0909", + "object-tests/many/0910", + "object-tests/many/0911", + "object-tests/many/0912", + "object-tests/many/0913", + "object-tests/many/0914", + "object-tests/many/0915", + "object-tests/many/0916", + "object-tests/many/0917", + "object-tests/many/0918", + "object-tests/many/0919", + "object-tests/many/0920", + "object-tests/many/0921", + "object-tests/many/0922", + "object-tests/many/0923", + "object-tests/many/0924", + "object-tests/many/0925", + "object-tests/many/0926", + "object-tests/many/0927", + "object-tests/many/0928", + "object-tests/many/0929", + "object-tests/many/0930", + "object-tests/many/0931", + "object-tests/many/0932", + "object-tests/many/0933", + "object-tests/many/0934", + "object-tests/many/0935", + "object-tests/many/0936", + "object-tests/many/0937", + "object-tests/many/0938", + "object-tests/many/0939", + "object-tests/many/0940", + "object-tests/many/0941", + "object-tests/many/0942", + "object-tests/many/0943", + "object-tests/many/0944", + "object-tests/many/0945", + "object-tests/many/0946", + "object-tests/many/0947", + "object-tests/many/0948", + "object-tests/many/0949", + "object-tests/many/0950", + "object-tests/many/0951", + "object-tests/many/0952", + "object-tests/many/0953", + "object-tests/many/0954", + "object-tests/many/0955", + "object-tests/many/0956", + "object-tests/many/0957", + "object-tests/many/0958", + "object-tests/many/0959", + "object-tests/many/0960", + "object-tests/many/0961", + "object-tests/many/0962", + "object-tests/many/0963", + "object-tests/many/0964", + "object-tests/many/0965", + "object-tests/many/0966", + "object-tests/many/0967", + "object-tests/many/0968", + "object-tests/many/0969", + "object-tests/many/0970", + "object-tests/many/0971", + "object-tests/many/0972", + "object-tests/many/0973", + "object-tests/many/0974", + "object-tests/many/0975", + "object-tests/many/0976", + "object-tests/many/0977", + "object-tests/many/0978", + "object-tests/many/0979", + "object-tests/many/0980", + "object-tests/many/0981", + "object-tests/many/0982", + "object-tests/many/0983", + "object-tests/many/0984", + "object-tests/many/0985", + "object-tests/many/0986", + "object-tests/many/0987", + "object-tests/many/0988", + "object-tests/many/0989", + "object-tests/many/0990", + "object-tests/many/0991", + "object-tests/many/0992", + "object-tests/many/0993", + "object-tests/many/0994", + "object-tests/many/0995", + "object-tests/many/0996", + "object-tests/many/0997", + "object-tests/many/0998", + "object-tests/many/0999", + "object-tests/many/1000" + ] + } + } + ], + "refusal": null + }, + { + "id": "operations/s3-express/list-prefix-special-characters", + "profile": "s3-express", + "lane": "core", + "purpose": "Percent-encode the prefix in the query, a space as %20 and a plus as %2B, and decode the common prefixes of a URL-encoded listing as well as the keys", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "delimiter": "/", + "op": "list_page", + "prefix": "object-tests/odd a+b&c=d%é/" + }, + "exchanges": [ { "alternatives": [ { @@ -146353,37 +189543,13 @@ } }, { - "at": "/body_base64", + "at": "/query/session", "optional": false, "rule": { "is": "equal", "value": "" } }, - { - "at": "/query/list-type", - "optional": false, - "rule": { - "is": "equal", - "value": "2" - } - }, - { - "at": "/query/prefix", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/board/" - } - }, - { - "at": "/query/max-keys", - "optional": false, - "rule": { - "is": "equal", - "value": "2" - } - }, { "at": "/headers/host", "optional": false, @@ -146392,122 +189558,19 @@ "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" } }, - { - "at": "/headers/x-amz-s3session-token", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-session-token" - } - }, { "at": "/headers/authorization", "optional": false, "rule": { "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" - } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 503, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - } - }, - "body": { - "encoding": "utf8", - "data": "\nServiceUnavailablePlease reduce your request rate.fixture" - }, - "framing": "chunked" - } - }, - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/query/list-type", - "optional": false, - "rule": { - "is": "equal", - "value": "2" - } - }, - { - "at": "/query/prefix", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/board/" - } - }, - { - "at": "/query/max-keys", - "optional": false, - "rule": { - "is": "equal", - "value": "2" - } - }, - { - "at": "/headers/host", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } }, { "at": "/headers/x-amz-s3session-token", "optional": false, "rule": { - "is": "equal", - "value": "fixture-session-token" - } - }, - { - "at": "/headers/authorization", - "optional": false, - "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" - } - }, - { - "at": "/query/encoding-type", - "optional": false, - "rule": { - "is": "equal", - "value": "url" + "is": "absent" } } ], @@ -146516,22 +189579,21 @@ ], "allow_query": [], "response": { - "status": 503, + "status": 200, "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - } + "content-type": "application/xml" }, "body": { "encoding": "utf8", - "data": "\nServiceUnavailablePlease reduce your request rate.fixture" + "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" }, - "framing": "chunked" + "body_time": { + "text": "SESSION_EXPIRATION", + "offset_seconds": 300 + } } } - ], - "optional": true + ] }, { "alternatives": [ @@ -146561,30 +189623,6 @@ "value": "" } }, - { - "at": "/query/list-type", - "optional": false, - "rule": { - "is": "equal", - "value": "2" - } - }, - { - "at": "/query/prefix", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/board/" - } - }, - { - "at": "/query/max-keys", - "optional": false, - "rule": { - "is": "equal", - "value": "2" - } - }, { "at": "/headers/host", "optional": false, @@ -146608,52 +189646,6 @@ "is": "matches", "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 503, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - } - }, - "body": { - "encoding": "utf8", - "data": "\nServiceUnavailablePlease reduce your request rate.fixture" - }, - "framing": "chunked" - } - }, - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } }, { "at": "/query/list-type", @@ -146668,47 +189660,15 @@ "optional": false, "rule": { "is": "equal", - "value": "object-tests/board/" - } - }, - { - "at": "/query/max-keys", - "optional": false, - "rule": { - "is": "equal", - "value": "2" - } - }, - { - "at": "/headers/host", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" - } - }, - { - "at": "/headers/x-amz-s3session-token", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-session-token" - } - }, - { - "at": "/headers/authorization", - "optional": false, - "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + "value": "object-tests/odd a+b&c=d%é/" } }, { - "at": "/query/encoding-type", + "at": "/query/delimiter", "optional": false, "rule": { "is": "equal", - "value": "url" + "value": "/" } } ], @@ -146717,25 +189677,20 @@ ], "allow_query": [], "response": { - "status": 503, + "status": 200, "headers": { "content-type": "application/xml", "date": { "from": "now" - } + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "utf8", - "data": "\nServiceUnavailablePlease reduce your request rate.fixture" - }, - "framing": "chunked" + "data": "\nfixtureobject-tests/odd a+b&c=d%é/21000/falseobject-tests/odd a+b&c=d%é/x.txt2024-01-01T00:00:00.000Z"fixture-6f6464200000"CRC64NVMEFULL_OBJECT1EXPRESS_ONEZONEobject-tests/odd a+b&c=d%é/sub dir+/" + } } - } - ], - "optional": true - }, - { - "alternatives": [ + }, { "request": [ { @@ -146762,30 +189717,6 @@ "value": "" } }, - { - "at": "/query/list-type", - "optional": false, - "rule": { - "is": "equal", - "value": "2" - } - }, - { - "at": "/query/prefix", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/board/" - } - }, - { - "at": "/query/max-keys", - "optional": false, - "rule": { - "is": "equal", - "value": "2" - } - }, { "at": "/headers/host", "optional": false, @@ -146809,52 +189740,6 @@ "is": "matches", "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 503, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - } - }, - "body": { - "encoding": "utf8", - "data": "\nServiceUnavailablePlease reduce your request rate.fixture" - }, - "framing": "chunked" - } - }, - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } }, { "at": "/query/list-type", @@ -146869,39 +189754,15 @@ "optional": false, "rule": { "is": "equal", - "value": "object-tests/board/" - } - }, - { - "at": "/query/max-keys", - "optional": false, - "rule": { - "is": "equal", - "value": "2" - } - }, - { - "at": "/headers/host", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + "value": "object-tests/odd a+b&c=d%é/" } }, { - "at": "/headers/x-amz-s3session-token", + "at": "/query/delimiter", "optional": false, "rule": { "is": "equal", - "value": "fixture-session-token" - } - }, - { - "at": "/headers/authorization", - "optional": false, - "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + "value": "/" } }, { @@ -146918,22 +189779,21 @@ ], "allow_query": [], "response": { - "status": 503, + "status": 200, "headers": { "content-type": "application/xml", "date": { "from": "now" - } + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "utf8", - "data": "\nServiceUnavailablePlease reduce your request rate.fixture" - }, - "framing": "chunked" + "data": "\nfixtureobject-tests/odd+a%2Bb%26c%3Dd%25%C3%A9/21000/urlfalseobject-tests/odd+a%2Bb%26c%3Dd%25%C3%A9/x.txt2024-01-01T00:00:00.000Z"fixture-6f6464200000"CRC64NVMEFULL_OBJECT1EXPRESS_ONEZONEobject-tests/odd+a%2Bb%26c%3Dd%25%C3%A9/sub+dir%2B/" + } } } - ], - "optional": true + ] } ], "expect": [ @@ -146942,331 +189802,64 @@ "optional": false, "rule": { "is": "equal", - "value": "error" + "value": "ok" } }, { - "at": "/status", + "at": "/value/entries/0/key", "optional": false, "rule": { "is": "equal", - "value": 503 + "value": "object-tests/odd a+b&c=d%é/x.txt" } }, { - "at": "/code", + "at": "/value/entries/0/size", "optional": false, "rule": { "is": "equal", - "value": "ServiceUnavailable" + "value": 1 } - } - ], - "refusal": null - }, - { - "id": "operations/s3-express/list-max-keys-zero", - "profile": "s3-express", - "lane": "core", - "purpose": "Send page_size 0 as max-keys=0; S3 answers an empty page that is not truncated", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "op": "list_page", - "page_size": 0, - "prefix": "object-tests/board/" - }, - "exchanges": [ - { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/" - } - }, - { - "at": "/query/session", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/headers/host", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" - } - }, - { - "at": "/headers/authorization", - "optional": false, - "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" - } - }, - { - "at": "/headers/x-amz-s3session-token", - "optional": false, - "rule": { - "is": "absent" - } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-type": "application/xml" - }, - "body": { - "encoding": "utf8", - "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" - }, - "body_time": { - "text": "SESSION_EXPIRATION", - "offset_seconds": 300 - } - } - } - ] }, { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/query/list-type", - "optional": false, - "rule": { - "is": "equal", - "value": "2" - } - }, - { - "at": "/query/prefix", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/board/" - } - }, - { - "at": "/query/max-keys", - "optional": false, - "rule": { - "is": "equal", - "value": "0" - } - }, - { - "at": "/headers/host", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" - } - }, - { - "at": "/headers/x-amz-s3session-token", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-session-token" - } - }, - { - "at": "/headers/authorization", - "optional": false, - "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" - } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" - }, - "body": { - "encoding": "utf8", - "data": "\nfixtureobject-tests/board/00false" - } - } - }, - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/query/list-type", - "optional": false, - "rule": { - "is": "equal", - "value": "2" - } - }, - { - "at": "/query/prefix", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/board/" - } - }, - { - "at": "/query/max-keys", - "optional": false, - "rule": { - "is": "equal", - "value": "0" - } - }, - { - "at": "/headers/host", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" - } - }, - { - "at": "/headers/x-amz-s3session-token", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-session-token" - } - }, - { - "at": "/headers/authorization", - "optional": false, - "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" - } - }, - { - "at": "/query/encoding-type", - "optional": false, - "rule": { - "is": "equal", - "value": "url" - } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" - }, - "body": { - "encoding": "utf8", - "data": "\nfixtureobject-tests/board/00urlfalse" - } - } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", + "at": "/value/entries/0/etag", "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "\"fixture-6f6464200000\"" } }, { - "at": "/value/continuation_token", - "optional": false, + "at": "/value/entries/0/snapshot", + "optional": true, "rule": { - "is": "equal", - "value": "" + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + }, + { + "at": "/value/entries/0/is_current_version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + false + ] } }, { @@ -147274,7 +189867,15 @@ "optional": false, "rule": { "is": "array_length", - "value": 0 + "value": 1 + } + }, + { + "at": "/value/prefixes/0", + "optional": false, + "rule": { + "is": "equal", + "value": "object-tests/odd a+b&c=d%é/sub dir+/" } }, { @@ -147282,25 +189883,32 @@ "optional": false, "rule": { "is": "array_length", - "value": 0 + "value": 1 + } + }, + { + "at": "/value/continuation_token", + "optional": false, + "rule": { + "is": "equal", + "value": "" } } ], "refusal": null }, { - "id": "operations/s3-express/list-next-page", + "id": "operations/s3-express/list-start-after", "profile": "s3-express", "lane": "core", - "purpose": "Send the continuation token as continuation-token, a + in it as %2B, and report an empty token for the last page", + "purpose": "Report the NotSupported error that a directory bucket answers to start-after", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "continuation_token": "fixture-marker+/88ab99096baf=", "op": "list_page", - "page_size": 2, - "prefix": "object-tests/board/" + "prefix": "object-tests/board/", + "start_after": "object-tests/board/a.txt" }, "exchanges": [ { @@ -147405,59 +190013,51 @@ } }, { - "at": "/query/list-type", + "at": "/headers/host", "optional": false, "rule": { "is": "equal", - "value": "2" + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" } }, { - "at": "/query/prefix", + "at": "/headers/x-amz-s3session-token", "optional": false, "rule": { "is": "equal", - "value": "object-tests/board/" + "value": "fixture-session-token" } }, { - "at": "/query/max-keys", + "at": "/headers/authorization", "optional": false, "rule": { - "is": "equal", - "value": "2" + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } }, { - "at": "/query/continuation-token", + "at": "/query/list-type", "optional": false, "rule": { "is": "equal", - "value": "fixture-marker+/88ab99096baf=" + "value": "2" } }, { - "at": "/headers/host", + "at": "/query/prefix", "optional": false, "rule": { "is": "equal", - "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + "value": "object-tests/board/" } }, { - "at": "/headers/x-amz-s3session-token", + "at": "/query/start-after", "optional": false, "rule": { "is": "equal", - "value": "fixture-session-token" - } - }, - { - "at": "/headers/authorization", - "optional": false, - "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + "value": "object-tests/board/a.txt" } } ], @@ -147466,18 +190066,18 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 501, "headers": { "content-type": "application/xml", "date": { "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { "encoding": "utf8", - "data": "\nfixtureobject-tests/board/fixture-marker+/88ab99096baf=12falseCRC64NVME"fixture-ca40e4206a8d"object-tests/board/a.txt2024-01-01T00:00:00.000Z8EXPRESS_ONEZONEFULL_OBJECT" - } + "data": "\nNotSupportedFixture error" + }, + "framing": "chunked" } }, { @@ -147507,59 +190107,51 @@ } }, { - "at": "/query/list-type", + "at": "/headers/host", "optional": false, "rule": { "is": "equal", - "value": "2" + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" } }, { - "at": "/query/prefix", + "at": "/headers/x-amz-s3session-token", "optional": false, "rule": { "is": "equal", - "value": "object-tests/board/" + "value": "fixture-session-token" } }, { - "at": "/query/max-keys", + "at": "/headers/authorization", "optional": false, "rule": { - "is": "equal", - "value": "2" + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } }, { - "at": "/query/continuation-token", + "at": "/query/list-type", "optional": false, "rule": { "is": "equal", - "value": "fixture-marker+/88ab99096baf=" + "value": "2" } }, { - "at": "/headers/host", + "at": "/query/prefix", "optional": false, "rule": { "is": "equal", - "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + "value": "object-tests/board/" } }, { - "at": "/headers/x-amz-s3session-token", + "at": "/query/start-after", "optional": false, "rule": { "is": "equal", - "value": "fixture-session-token" - } - }, - { - "at": "/headers/authorization", - "optional": false, - "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + "value": "object-tests/board/a.txt" } }, { @@ -147576,128 +190168,64 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 501, "headers": { "content-type": "application/xml", "date": { "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { - "encoding": "utf8", - "data": "\nfixtureobject-tests/board/Aa76REiOO0gPR6lKkFyUFtl1AAAAAAAAAAGoXKBqAAAAAAQAAAAAAAAAscQ7ZzgAAAAAAAAAQUI4QUFBQUFBQUFBYjJKcVpXTjBMWFJsYzNSekwySnZZWEprTDI1bGMzUmxaQzlqTG5SNGRBRT3cnmYCxwsmD0raHf15FaRAP0L8TRD3Kes0lU2EWDoJdA==12urlfalseCRC64NVME"fixture-ca40e4206a8d"object-tests/board/a.txt2024-01-01T00:00:00.000Z8EXPRESS_ONEZONEFULL_OBJECT" - } - } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/entries/0/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/board/a.txt" - } - }, + "encoding": "utf8", + "data": "\nNotSupportedFixture error" + }, + "framing": "chunked" + } + } + ] + } + ], + "expect": [ { - "at": "/value/entries/0/size", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": 8 + "value": "error" } }, { - "at": "/value/entries/0/etag", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-ca40e4206a8d\"" - } - }, - { - "at": "/value/entries/0/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/0/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/0/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] + "value": 501 } }, { - "at": "/value/continuation_token", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": "" - } - }, - { - "at": "/value/entries", - "optional": false, - "rule": { - "is": "array_length", - "value": 1 - } - }, - { - "at": "/value/prefixes", - "optional": false, - "rule": { - "is": "array_length", - "value": 0 + "value": "NotSupported" } } ], "refusal": null }, { - "id": "operations/s3-express/list-order-delimited", + "id": "operations/s3-express/list-truncated-without-token", "profile": "s3-express", "lane": "core", - "purpose": "Report the entries and the common prefixes in the order a directory bucket sends them, without sorting them", + "purpose": "Report an error when a truncated page carries no continuation token; do not stop early or list from the start again", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], + "origin": "constructed", "call": { - "delimiter": "/", - "op": "list_page", - "prefix": "object-tests/order/" + "op": "list", + "page_size": 2, + "prefix": "object-tests/board/" }, "exchanges": [ { @@ -147814,15 +190342,15 @@ "optional": false, "rule": { "is": "equal", - "value": "object-tests/order/" + "value": "object-tests/board/" } }, { - "at": "/query/delimiter", + "at": "/query/max-keys", "optional": false, "rule": { "is": "equal", - "value": "/" + "value": "2" } }, { @@ -147865,7 +190393,7 @@ }, "body": { "encoding": "utf8", - "data": "\nfixtureobject-tests/order/81000falseCRC64NVME"fixture-67e7081fe36a"object-tests/order/a2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-e93bd77ca678"object-tests/order/é2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-b6a492ea4100"object-tests/order/a02024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-3a908dcdb129"object-tests/order/a.txt2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-a19aa03709bc"object-tests/order/A2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-62a88dc05318"object-tests/order/a-b2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-58bd4a8a6eb3"object-tests/order/b2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECT/object-tests/order/a/" + "data": "\nfixtureobject-tests/board/22trueCRC64NVME"fixture-626f61720000"object-tests/board/a.txt2024-01-01T00:00:00.000Z8EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-626f61720001"object-tests/board/nested/c.txt2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECT" } } }, @@ -147908,15 +190436,23 @@ "optional": false, "rule": { "is": "equal", - "value": "object-tests/order/" + "value": "object-tests/board/" } }, { - "at": "/query/delimiter", + "at": "/query/max-keys", "optional": false, "rule": { "is": "equal", - "value": "/" + "value": "2" + } + }, + { + "at": "/query/encoding-type", + "optional": false, + "rule": { + "is": "equal", + "value": "url" } }, { @@ -147942,14 +190478,6 @@ "is": "matches", "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } - }, - { - "at": "/query/encoding-type", - "optional": false, - "rule": { - "is": "equal", - "value": "url" - } } ], "allow_headers": [ @@ -147967,7 +190495,7 @@ }, "body": { "encoding": "utf8", - "data": "\nfixtureobject-tests/order/81000urlfalseCRC64NVME"fixture-67e7081fe36a"object-tests/order/a2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-e93bd77ca678"object-tests/order/%C3%A92024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-b6a492ea4100"object-tests/order/a02024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-3a908dcdb129"object-tests/order/a.txt2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-a19aa03709bc"object-tests/order/A2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-62a88dc05318"object-tests/order/a-b2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-58bd4a8a6eb3"object-tests/order/b2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECT/object-tests/order/a/" + "data": "\nfixtureobject-tests/board/22urltrueCRC64NVME"fixture-626f61720000"object-tests/board/a.txt2024-01-01T00:00:00.000Z8EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-626f61720001"object-tests/board/nested/c.txt2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECT" } } } @@ -147980,454 +190508,25 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/entries/0/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/order/a" - } - }, - { - "at": "/value/entries/0/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/0/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-67e7081fe36a\"" - } - }, - { - "at": "/value/entries/0/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/0/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/0/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/1/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/order/é" - } - }, - { - "at": "/value/entries/1/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/1/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-e93bd77ca678\"" - } - }, - { - "at": "/value/entries/1/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/1/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/1/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/2/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/order/a0" - } - }, - { - "at": "/value/entries/2/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/2/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-b6a492ea4100\"" - } - }, - { - "at": "/value/entries/2/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/2/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/2/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/3/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/order/a.txt" - } - }, - { - "at": "/value/entries/3/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/3/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-3a908dcdb129\"" - } - }, - { - "at": "/value/entries/3/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/3/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/3/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/4/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/order/A" - } - }, - { - "at": "/value/entries/4/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/4/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-a19aa03709bc\"" - } - }, - { - "at": "/value/entries/4/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/4/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/4/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/5/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/order/a-b" - } - }, - { - "at": "/value/entries/5/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/5/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-62a88dc05318\"" - } - }, - { - "at": "/value/entries/5/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/5/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/5/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/6/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/order/b" - } - }, - { - "at": "/value/entries/6/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/6/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-58bd4a8a6eb3\"" - } - }, - { - "at": "/value/entries/6/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/6/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/6/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/prefixes/0", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/order/a/" - } - }, - { - "at": "/value/continuation_token", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/value/entries", - "optional": false, - "rule": { - "is": "array_length", - "value": 7 - } - }, - { - "at": "/value/prefixes", - "optional": false, - "rule": { - "is": "array_length", - "value": 1 + "value": "error" } } ], "refusal": null }, { - "id": "operations/s3-express/list-order", + "id": "operations/s3-express/list-encoding-ignored", "profile": "s3-express", "lane": "core", - "purpose": "Report the entries in the order a directory bucket sends them, which is not sorted, without sorting them again", + "purpose": "Read the keys as sent when a service ignores encoding-type=url and the page has no EncodingType; a % that begins no escape is text, as in URL percent-decoding", "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + "https://github.com/rclone/rclone/tree/master/backend/s3/provider", + "https://url.spec.whatwg.org/#percent-decode" ], + "origin": "constructed", "call": { "op": "list_page", - "prefix": "object-tests/order/" + "prefix": "object-tests/percent/" }, "exchanges": [ { @@ -148544,7 +190643,7 @@ "optional": false, "rule": { "is": "equal", - "value": "object-tests/order/" + "value": "object-tests/percent/" } }, { @@ -148587,7 +190686,7 @@ }, "body": { "encoding": "utf8", - "data": "\nfixtureobject-tests/order/81000falseCRC64NVME"fixture-67e7081fe36a"object-tests/order/a2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-e93bd77ca678"object-tests/order/é2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-b6a492ea4100"object-tests/order/a02024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-3a908dcdb129"object-tests/order/a.txt2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-a19aa03709bc"object-tests/order/A2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-bdef091a4e21"object-tests/order/a/b2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-62a88dc05318"object-tests/order/a-b2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-58bd4a8a6eb3"object-tests/order/b2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECT" + "data": "\nfixtureobject-tests/percent/31000falseCRC64NVME"fixture-706572000000"object-tests/percent/%zz.txt2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-706572000001"object-tests/percent/100%-off.txt2024-01-01T00:00:00.000Z2EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-706572000002"object-tests/percent/50%2024-01-01T00:00:00.000Z3EXPRESS_ONEZONEFULL_OBJECT" } } }, @@ -148630,7 +190729,15 @@ "optional": false, "rule": { "is": "equal", - "value": "object-tests/order/" + "value": "object-tests/percent/" + } + }, + { + "at": "/query/encoding-type", + "optional": false, + "rule": { + "is": "equal", + "value": "url" } }, { @@ -148656,14 +190763,6 @@ "is": "matches", "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } - }, - { - "at": "/query/encoding-type", - "optional": false, - "rule": { - "is": "equal", - "value": "url" - } } ], "allow_headers": [ @@ -148681,7 +190780,7 @@ }, "body": { "encoding": "utf8", - "data": "\nfixtureobject-tests/order/81000urlfalseCRC64NVME"fixture-67e7081fe36a"object-tests/order/a2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-e93bd77ca678"object-tests/order/%C3%A92024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-b6a492ea4100"object-tests/order/a02024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-3a908dcdb129"object-tests/order/a.txt2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-a19aa03709bc"object-tests/order/A2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-bdef091a4e21"object-tests/order/a/b2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-62a88dc05318"object-tests/order/a-b2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-58bd4a8a6eb3"object-tests/order/b2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECT" + "data": "\nfixtureobject-tests/percent/31000falseCRC64NVME"fixture-706572000000"object-tests/percent/%zz.txt2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-706572000001"object-tests/percent/100%-off.txt2024-01-01T00:00:00.000Z2EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-706572000002"object-tests/percent/50%2024-01-01T00:00:00.000Z3EXPRESS_ONEZONEFULL_OBJECT" } } } @@ -148702,7 +190801,7 @@ "optional": false, "rule": { "is": "equal", - "value": "object-tests/order/a" + "value": "object-tests/percent/%zz.txt" } }, { @@ -148718,7 +190817,7 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-67e7081fe36a\"" + "value": "\"fixture-706572000000\"" } }, { @@ -148759,7 +190858,7 @@ "optional": false, "rule": { "is": "equal", - "value": "object-tests/order/é" + "value": "object-tests/percent/100%-off.txt" } }, { @@ -148767,7 +190866,7 @@ "optional": false, "rule": { "is": "equal", - "value": 1 + "value": 2 } }, { @@ -148775,7 +190874,7 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-e93bd77ca678\"" + "value": "\"fixture-706572000001\"" } }, { @@ -148816,7 +190915,7 @@ "optional": false, "rule": { "is": "equal", - "value": "object-tests/order/a0" + "value": "object-tests/percent/50%" } }, { @@ -148824,7 +190923,7 @@ "optional": false, "rule": { "is": "equal", - "value": 1 + "value": 3 } }, { @@ -148832,7 +190931,7 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-b6a492ea4100\"" + "value": "\"fixture-706572000002\"" } }, { @@ -148869,288 +190968,19 @@ } }, { - "at": "/value/entries/3/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/order/a.txt" - } - }, - { - "at": "/value/entries/3/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/3/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-3a908dcdb129\"" - } - }, - { - "at": "/value/entries/3/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/3/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/3/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/4/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/order/A" - } - }, - { - "at": "/value/entries/4/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/4/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-a19aa03709bc\"" - } - }, - { - "at": "/value/entries/4/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/4/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/4/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/5/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/order/a/b" - } - }, - { - "at": "/value/entries/5/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/5/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-bdef091a4e21\"" - } - }, - { - "at": "/value/entries/5/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/5/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/5/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/6/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/order/a-b" - } - }, - { - "at": "/value/entries/6/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/6/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-62a88dc05318\"" - } - }, - { - "at": "/value/entries/6/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/6/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/6/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/7/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/order/b" - } - }, - { - "at": "/value/entries/7/size", + "at": "/value/entries", "optional": false, "rule": { - "is": "equal", - "value": 1 + "is": "array_length", + "value": 3 } }, { - "at": "/value/entries/7/etag", + "at": "/value/prefixes", "optional": false, "rule": { - "is": "equal", - "value": "\"fixture-58bd4a8a6eb3\"" - } - }, - { - "at": "/value/entries/7/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/7/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/7/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] + "is": "array_length", + "value": 0 } }, { @@ -149160,38 +190990,22 @@ "is": "equal", "value": "" } - }, - { - "at": "/value/entries", - "optional": false, - "rule": { - "is": "array_length", - "value": 8 - } - }, - { - "at": "/value/prefixes", - "optional": false, - "rule": { - "is": "array_length", - "value": 0 - } } ], "refusal": null }, { - "id": "operations/s3-express/list-other-delimiter", + "id": "operations/s3-express/put-created-empty", "profile": "s3-express", "lane": "core", - "purpose": "Report the 400 InvalidRequest that a directory bucket answers to a delimiter other than /, or refuse it before sending", + "purpose": "put created empty", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "delimiter": "-", - "op": "list_page", - "prefix": "object-tests/board/" + "body_base64": "", + "key": "object-tests/write/empty.bin", + "op": "put" }, "exchanges": [ { @@ -149276,141 +191090,23 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/query/list-type", - "optional": false, - "rule": { - "is": "equal", - "value": "2" - } - }, - { - "at": "/query/prefix", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/board/" - } - }, - { - "at": "/query/delimiter", - "optional": false, - "rule": { - "is": "equal", - "value": "-" - } - }, - { - "at": "/headers/host", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" - } - }, - { - "at": "/headers/x-amz-s3session-token", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-session-token" - } - }, - { - "at": "/headers/authorization", - "optional": false, - "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" - } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 400, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - } - }, - "body": { - "encoding": "utf8", - "data": "\nInvalidRequestFixture error" - }, - "framing": "chunked" - } - }, - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/query/list-type", - "optional": false, - "rule": { - "is": "equal", - "value": "2" + "value": "PUT" } }, { - "at": "/query/prefix", + "at": "/path", "optional": false, "rule": { "is": "equal", - "value": "object-tests/board/" + "value": "/object-tests/write/empty.bin" } }, { - "at": "/query/delimiter", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "-" + "value": "" } }, { @@ -149436,14 +191132,6 @@ "is": "matches", "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } - }, - { - "at": "/query/encoding-type", - "optional": false, - "rule": { - "is": "equal", - "value": "url" - } } ], "allow_headers": [ @@ -149451,16 +191139,17 @@ ], "allow_query": [], "response": { - "status": 400, + "status": 200, "headers": { - "content-type": "application/xml", "date": { "from": "now" - } + }, + "etag": "\"fixture-de1997e62b9b\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nInvalidRequestThis bucket only supports '/' as a delimiter01a36c7dc10001a08269f29d0c1a80c2547f97e2NIAczpdqY" + "encoding": "base64", + "data": "" }, "framing": "chunked" } @@ -149474,80 +191163,43 @@ "optional": false, "rule": { "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 400 - } - }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "equal", - "value": "InvalidRequest" - } - } - ], - "refusal": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "refused" - } - }, - { - "at": "/kind", - "optional": false, - "rule": { - "is": "matches", - "pattern": ".+" + "value": "ok" } }, { - "at": "/parameter", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": "delimiter" - } - }, - { - "at": "/status", - "optional": true, - "rule": { - "is": "equal", - "value": 400 + "value": "\"fixture-de1997e62b9b\"" } }, { - "at": "/code", + "at": "/value/version", "optional": true, "rule": { - "is": "equal", - "value": "InvalidRequest" + "is": "one_of", + "values": [ + null, + "" + ] } } - ] + ], + "refusal": null }, { - "id": "operations/s3-express/list-page", + "id": "operations/s3-express/put-created", "profile": "s3-express", "lane": "core", - "purpose": "List a prefix with ListObjectsV2 (list-type=2), and report each entry's key, size and ETag, quotes included", + "purpose": "put created", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "op": "list_page", - "prefix": "object-tests/board/" + "body_base64": "MDEyMzQ1Njc4OQ==", + "key": "object-tests/write/object.txt", + "op": "put" }, "exchanges": [ { @@ -149632,7 +191284,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -149640,7 +191292,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/" + "value": "/object-tests/write/object.txt" } }, { @@ -149648,23 +191300,7 @@ "optional": false, "rule": { "is": "equal", - "value": "" - } - }, - { - "at": "/query/list-type", - "optional": false, - "rule": { - "is": "equal", - "value": "2" - } - }, - { - "at": "/query/prefix", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/board/" + "value": "MDEyMzQ1Njc4OQ==" } }, { @@ -149699,18 +191335,69 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", "date": { "from": "now" }, + "etag": "\"fixture-68e2c5df0cb2\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nfixtureobject-tests/board/31000falseCRC64NVME"fixture-7d1b875717fa"object-tests/board/z.txt2024-01-01T00:00:00.000Z2EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-d9b959b4d7a6"object-tests/board/nested/c.txt2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-ca40e4206a8d"object-tests/board/a.txt2024-01-01T00:00:00.000Z8EXPRESS_ONEZONEFULL_OBJECT" - } + "encoding": "base64", + "data": "" + }, + "framing": "chunked" } - }, + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-68e2c5df0cb2\"" + } + }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + } + ], + "refusal": null + }, + { + "id": "operations/s3-express/put-created-key-question", + "profile": "s3-express", + "lane": "core", + "purpose": "put created, with the key \"question?mark.txt\"", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "body_base64": "MDEyMzQ1Njc4OQ==", + "key": "object-tests/keys/question?mark.txt", + "op": "put" + }, + "exchanges": [ + { + "alternatives": [ { "request": [ { @@ -149730,7 +191417,7 @@ } }, { - "at": "/body_base64", + "at": "/query/session", "optional": false, "rule": { "is": "equal", @@ -149738,19 +191425,76 @@ } }, { - "at": "/query/list-type", + "at": "/headers/host", "optional": false, "rule": { "is": "equal", - "value": "2" + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" } }, { - "at": "/query/prefix", + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "absent" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml" + }, + "body": { + "encoding": "utf8", + "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" + }, + "body_time": { + "text": "SESSION_EXPIRATION", + "offset_seconds": 300 + } + } + } + ] + }, + { + "alternatives": [ + { + "request": [ + { + "at": "/method", "optional": false, "rule": { "is": "equal", - "value": "object-tests/board/" + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/object-tests/keys/question?mark.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MDEyMzQ1Njc4OQ==" } }, { @@ -149776,14 +191520,6 @@ "is": "matches", "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } - }, - { - "at": "/query/encoding-type", - "optional": false, - "rule": { - "is": "equal", - "value": "url" - } } ], "allow_headers": [ @@ -149793,16 +191529,17 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", "date": { "from": "now" }, + "etag": "\"fixture-68e2c5df0cb2\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nfixtureobject-tests/board/31000urlfalseCRC64NVME"fixture-7d1b875717fa"object-tests/board/z.txt2024-01-01T00:00:00.000Z2EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-d9b959b4d7a6"object-tests/board/nested/c.txt2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-ca40e4206a8d"object-tests/board/a.txt2024-01-01T00:00:00.000Z8EXPRESS_ONEZONEFULL_OBJECT" - } + "encoding": "base64", + "data": "" + }, + "framing": "chunked" } } ] @@ -149818,156 +191555,15 @@ } }, { - "at": "/value/entries/0/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/board/z.txt" - } - }, - { - "at": "/value/entries/0/size", - "optional": false, - "rule": { - "is": "equal", - "value": 2 - } - }, - { - "at": "/value/entries/0/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-7d1b875717fa\"" - } - }, - { - "at": "/value/entries/0/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/0/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/0/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/1/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/board/nested/c.txt" - } - }, - { - "at": "/value/entries/1/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/1/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-d9b959b4d7a6\"" - } - }, - { - "at": "/value/entries/1/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/1/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/1/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/2/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/board/a.txt" - } - }, - { - "at": "/value/entries/2/size", - "optional": false, - "rule": { - "is": "equal", - "value": 8 - } - }, - { - "at": "/value/entries/2/etag", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-ca40e4206a8d\"" - } - }, - { - "at": "/value/entries/2/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "value": "\"fixture-68e2c5df0cb2\"" } }, { - "at": "/value/entries/2/version", + "at": "/value/version", "optional": true, "rule": { "is": "one_of", @@ -149976,56 +191572,22 @@ "" ] } - }, - { - "at": "/value/entries/2/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/continuation_token", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/value/entries", - "optional": false, - "rule": { - "is": "array_length", - "value": 3 - } - }, - { - "at": "/value/prefixes", - "optional": false, - "rule": { - "is": "array_length", - "value": 0 - } } ], "refusal": null }, { - "id": "operations/s3-express/list-prefix-without-slash", + "id": "operations/s3-express/put-created-key-hash", "profile": "s3-express", "lane": "core", - "purpose": "Report the 400 InvalidRequest that a directory bucket answers to a prefix not ending in /, or refuse it before sending", + "purpose": "put created, with the key \"hash#tag.txt\"", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "op": "list_page", - "prefix": "object-tests/boa" + "body_base64": "MDEyMzQ1Njc4OQ==", + "key": "object-tests/keys/hash#tag.txt", + "op": "put" }, "exchanges": [ { @@ -150110,7 +191672,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -150118,7 +191680,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/" + "value": "/object-tests/keys/hash#tag.txt" } }, { @@ -150126,23 +191688,7 @@ "optional": false, "rule": { "is": "equal", - "value": "" - } - }, - { - "at": "/query/list-type", - "optional": false, - "rule": { - "is": "equal", - "value": "2" - } - }, - { - "at": "/query/prefix", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/boa" + "value": "MDEyMzQ1Njc4OQ==" } }, { @@ -150175,20 +191721,71 @@ ], "allow_query": [], "response": { - "status": 400, + "status": 200, "headers": { - "content-type": "application/xml", "date": { "from": "now" - } + }, + "etag": "\"fixture-68e2c5df0cb2\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nInvalidRequestFixture error" + "encoding": "base64", + "data": "" }, "framing": "chunked" } - }, + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-68e2c5df0cb2\"" + } + }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + } + ], + "refusal": null + }, + { + "id": "operations/s3-express/put-created-key-percent", + "profile": "s3-express", + "lane": "core", + "purpose": "put created, with the key \"percent%20.txt\"", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "body_base64": "MDEyMzQ1Njc4OQ==", + "key": "object-tests/keys/percent%20.txt", + "op": "put" + }, + "exchanges": [ + { + "alternatives": [ { "request": [ { @@ -150208,7 +191805,7 @@ } }, { - "at": "/body_base64", + "at": "/query/session", "optional": false, "rule": { "is": "equal", @@ -150216,19 +191813,76 @@ } }, { - "at": "/query/list-type", + "at": "/headers/host", "optional": false, "rule": { "is": "equal", - "value": "2" + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" } }, { - "at": "/query/prefix", + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "absent" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml" + }, + "body": { + "encoding": "utf8", + "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" + }, + "body_time": { + "text": "SESSION_EXPIRATION", + "offset_seconds": 300 + } + } + } + ] + }, + { + "alternatives": [ + { + "request": [ + { + "at": "/method", "optional": false, "rule": { "is": "equal", - "value": "object-tests/boa" + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/object-tests/keys/percent%20.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MDEyMzQ1Njc4OQ==" } }, { @@ -150254,14 +191908,6 @@ "is": "matches", "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } - }, - { - "at": "/query/encoding-type", - "optional": false, - "rule": { - "is": "equal", - "value": "url" - } } ], "allow_headers": [ @@ -150269,16 +191915,17 @@ ], "allow_query": [], "response": { - "status": 400, + "status": 200, "headers": { - "content-type": "application/xml", "date": { "from": "now" - } + }, + "etag": "\"fixture-68e2c5df0cb2\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nInvalidRequestThis bucket does not support a prefix that does not end in a delimiter. Specify a prefix path ending with a delimiter and try again.0183be19920001a08269f26d0c1a43b807f6c3286pF5i69Tlzo" + "encoding": "base64", + "data": "" }, "framing": "chunked" } @@ -150292,81 +191939,43 @@ "optional": false, "rule": { "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 400 - } - }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "equal", - "value": "InvalidRequest" - } - } - ], - "refusal": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "refused" - } - }, - { - "at": "/kind", - "optional": false, - "rule": { - "is": "matches", - "pattern": ".+" + "value": "ok" } }, { - "at": "/parameter", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": "prefix" - } - }, - { - "at": "/status", - "optional": true, - "rule": { - "is": "equal", - "value": 400 + "value": "\"fixture-68e2c5df0cb2\"" } }, { - "at": "/code", + "at": "/value/version", "optional": true, "rule": { - "is": "equal", - "value": "InvalidRequest" + "is": "one_of", + "values": [ + null, + "" + ] } } - ] + ], + "refusal": null }, { - "id": "operations/s3-express/list-separator-keys-delimited", + "id": "operations/s3-express/put-created-key-plus", "profile": "s3-express", "lane": "core", - "purpose": "Group each key at the first delimiter after the prefix, even where the key repeats it or ends with it", + "purpose": "put created, with the key \"plus+plus.txt\"", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "delimiter": "/", - "op": "list_page", - "prefix": "object-tests/separators/" + "body_base64": "MDEyMzQ1Njc4OQ==", + "key": "object-tests/keys/plus+plus.txt", + "op": "put" }, "exchanges": [ { @@ -150451,7 +192060,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -150459,7 +192068,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/" + "value": "/object-tests/keys/plus+plus.txt" } }, { @@ -150467,31 +192076,7 @@ "optional": false, "rule": { "is": "equal", - "value": "" - } - }, - { - "at": "/query/list-type", - "optional": false, - "rule": { - "is": "equal", - "value": "2" - } - }, - { - "at": "/query/prefix", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/separators/" - } - }, - { - "at": "/query/delimiter", - "optional": false, - "rule": { - "is": "equal", - "value": "/" + "value": "MDEyMzQ1Njc4OQ==" } }, { @@ -150526,18 +192111,69 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", "date": { "from": "now" }, + "etag": "\"fixture-68e2c5df0cb2\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nfixtureobject-tests/separators/61000falseCRC64NVME"fixture-42aa4973e21e"object-tests/separators/..leading2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-9282c60ce573"object-tests/separators/dot.2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECT/object-tests/separators/space /object-tests/separators/a.b/object-tests/separators/trailing/object-tests/separators/double/" - } + "encoding": "base64", + "data": "" + }, + "framing": "chunked" } - }, + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-68e2c5df0cb2\"" + } + }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + } + ], + "refusal": null + }, + { + "id": "operations/s3-express/put-created-key-space", + "profile": "s3-express", + "lane": "core", + "purpose": "put created, with the key \"space name.txt\"", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "body_base64": "MDEyMzQ1Njc4OQ==", + "key": "object-tests/keys/space name.txt", + "op": "put" + }, + "exchanges": [ + { + "alternatives": [ { "request": [ { @@ -150557,7 +192193,7 @@ } }, { - "at": "/body_base64", + "at": "/query/session", "optional": false, "rule": { "is": "equal", @@ -150565,27 +192201,76 @@ } }, { - "at": "/query/list-type", + "at": "/headers/host", "optional": false, "rule": { "is": "equal", - "value": "2" + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" } }, { - "at": "/query/prefix", + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "absent" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml" + }, + "body": { + "encoding": "utf8", + "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" + }, + "body_time": { + "text": "SESSION_EXPIRATION", + "offset_seconds": 300 + } + } + } + ] + }, + { + "alternatives": [ + { + "request": [ + { + "at": "/method", "optional": false, "rule": { "is": "equal", - "value": "object-tests/separators/" + "value": "PUT" } }, { - "at": "/query/delimiter", + "at": "/path", "optional": false, "rule": { "is": "equal", - "value": "/" + "value": "/object-tests/keys/space name.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MDEyMzQ1Njc4OQ==" } }, { @@ -150611,14 +192296,6 @@ "is": "matches", "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } - }, - { - "at": "/query/encoding-type", - "optional": false, - "rule": { - "is": "equal", - "value": "url" - } } ], "allow_headers": [ @@ -150628,214 +192305,65 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", "date": { "from": "now" }, + "etag": "\"fixture-68e2c5df0cb2\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nfixtureobject-tests/separators/61000urlfalseCRC64NVME"fixture-42aa4973e21e"object-tests/separators/..leading2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-9282c60ce573"object-tests/separators/dot.2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECT/object-tests/separators/space+/object-tests/separators/a.b/object-tests/separators/trailing/object-tests/separators/double/" - } + "encoding": "base64", + "data": "" + }, + "framing": "chunked" } } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/entries/0/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/separators/..leading" - } - }, - { - "at": "/value/entries/0/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/0/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-42aa4973e21e\"" - } - }, - { - "at": "/value/entries/0/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/0/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/0/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/1/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/separators/dot." - } - }, - { - "at": "/value/entries/1/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/1/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-9282c60ce573\"" - } - }, - { - "at": "/value/entries/1/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/1/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/1/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/prefixes/0", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/separators/space /" - } - }, - { - "at": "/value/prefixes/1", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/separators/a.b/" - } - }, - { - "at": "/value/prefixes/2", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/separators/trailing/" - } - }, - { - "at": "/value/prefixes/3", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/separators/double/" - } - }, + ] + } + ], + "expect": [ { - "at": "/value/continuation_token", + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "ok" } }, { - "at": "/value/entries", + "at": "/value/etag", "optional": false, "rule": { - "is": "array_length", - "value": 2 + "is": "equal", + "value": "\"fixture-68e2c5df0cb2\"" } }, { - "at": "/value/prefixes", - "optional": false, + "at": "/value/version", + "optional": true, "rule": { - "is": "array_length", - "value": 4 + "is": "one_of", + "values": [ + null, + "" + ] } } ], "refusal": null }, { - "id": "operations/s3-express/list-separator-keys", + "id": "operations/s3-express/put-created-key-non-ascii", "profile": "s3-express", "lane": "core", - "purpose": "Report keys with leading dots, repeated slashes, a space and a trailing slash exactly as stored", + "purpose": "put created, with the key \"café/雪.txt\"", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "op": "list_page", - "prefix": "object-tests/separators/" + "body_base64": "MDEyMzQ1Njc4OQ==", + "key": "object-tests/keys/café/雪.txt", + "op": "put" }, "exchanges": [ { @@ -150920,7 +192448,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -150928,7 +192456,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/" + "value": "/object-tests/keys/café/雪.txt" } }, { @@ -150936,23 +192464,7 @@ "optional": false, "rule": { "is": "equal", - "value": "" - } - }, - { - "at": "/query/list-type", - "optional": false, - "rule": { - "is": "equal", - "value": "2" - } - }, - { - "at": "/query/prefix", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/separators/" + "value": "MDEyMzQ1Njc4OQ==" } }, { @@ -150987,18 +192499,69 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", "date": { "from": "now" }, + "etag": "\"fixture-68e2c5df0cb2\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nfixtureobject-tests/separators/61000falseCRC64NVME"fixture-42aa4973e21e"object-tests/separators/..leading2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-42eb96253921"object-tests/separators/space /x2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-9282c60ce573"object-tests/separators/dot.2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-3103883be81f"object-tests/separators/a.b/c2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-9122241c6748"object-tests/separators/trailing/2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-86940355381a"object-tests/separators/double//slash2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECT" - } + "encoding": "base64", + "data": "" + }, + "framing": "chunked" } - }, + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-68e2c5df0cb2\"" + } + }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + } + ], + "refusal": null + }, + { + "id": "operations/s3-express/put-created-key-double-slash", + "profile": "s3-express", + "lane": "core", + "purpose": "put created, with the key \"double//slash.txt\"", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "body_base64": "MDEyMzQ1Njc4OQ==", + "key": "object-tests/keys/double//slash.txt", + "op": "put" + }, + "exchanges": [ + { + "alternatives": [ { "request": [ { @@ -151018,7 +192581,7 @@ } }, { - "at": "/body_base64", + "at": "/query/session", "optional": false, "rule": { "is": "equal", @@ -151026,19 +192589,76 @@ } }, { - "at": "/query/list-type", + "at": "/headers/host", "optional": false, "rule": { "is": "equal", - "value": "2" + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" } }, { - "at": "/query/prefix", + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "absent" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml" + }, + "body": { + "encoding": "utf8", + "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" + }, + "body_time": { + "text": "SESSION_EXPIRATION", + "offset_seconds": 300 + } + } + } + ] + }, + { + "alternatives": [ + { + "request": [ + { + "at": "/method", "optional": false, "rule": { "is": "equal", - "value": "object-tests/separators/" + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/object-tests/keys/double//slash.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "MDEyMzQ1Njc4OQ==" } }, { @@ -151064,14 +192684,6 @@ "is": "matches", "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } - }, - { - "at": "/query/encoding-type", - "optional": false, - "rule": { - "is": "equal", - "value": "url" - } } ], "allow_headers": [ @@ -151081,16 +192693,17 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", "date": { "from": "now" }, + "etag": "\"fixture-68e2c5df0cb2\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nfixtureobject-tests/separators/61000urlfalseCRC64NVME"fixture-42aa4973e21e"object-tests/separators/..leading2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-42eb96253921"object-tests/separators/space+/x2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-9282c60ce573"object-tests/separators/dot.2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-3103883be81f"object-tests/separators/a.b/c2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-9122241c6748"object-tests/separators/trailing/2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-86940355381a"object-tests/separators/double//slash2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECT" - } + "encoding": "base64", + "data": "" + }, + "framing": "chunked" } } ] @@ -151106,327 +192719,15 @@ } }, { - "at": "/value/entries/0/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/separators/..leading" - } - }, - { - "at": "/value/entries/0/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/0/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-42aa4973e21e\"" - } - }, - { - "at": "/value/entries/0/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/0/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/0/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/1/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/separators/space /x" - } - }, - { - "at": "/value/entries/1/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/1/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-42eb96253921\"" - } - }, - { - "at": "/value/entries/1/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/1/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/1/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/2/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/separators/dot." - } - }, - { - "at": "/value/entries/2/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/2/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-9282c60ce573\"" - } - }, - { - "at": "/value/entries/2/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/2/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/2/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/3/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/separators/a.b/c" - } - }, - { - "at": "/value/entries/3/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/3/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-3103883be81f\"" - } - }, - { - "at": "/value/entries/3/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/3/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/3/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/4/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/separators/trailing/" - } - }, - { - "at": "/value/entries/4/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/4/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-9122241c6748\"" - } - }, - { - "at": "/value/entries/4/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/4/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/4/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/5/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/separators/double//slash" - } - }, - { - "at": "/value/entries/5/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/5/etag", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-86940355381a\"" - } - }, - { - "at": "/value/entries/5/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "value": "\"fixture-68e2c5df0cb2\"" } }, { - "at": "/value/entries/5/version", + "at": "/value/version", "optional": true, "rule": { "is": "one_of", @@ -151435,57 +192736,22 @@ "" ] } - }, - { - "at": "/value/entries/5/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/continuation_token", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/value/entries", - "optional": false, - "rule": { - "is": "array_length", - "value": 6 - } - }, - { - "at": "/value/prefixes", - "optional": false, - "rule": { - "is": "array_length", - "value": 0 - } } ], "refusal": null }, { - "id": "operations/s3-express/list-all-pages", + "id": "operations/s3-express/put-created-key-trailing-slash", "profile": "s3-express", "lane": "core", - "purpose": "Follow each page's continuation token until a page is not truncated", + "purpose": "put created, with the key \"trailing-slash/\"", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "op": "list", - "page_size": 1, - "prefix": "object-tests/board/" + "body_base64": "MDEyMzQ1Njc4OQ==", + "key": "object-tests/keys/trailing-slash/", + "op": "put" }, "exchanges": [ { @@ -151570,7 +192836,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -151578,7 +192844,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/" + "value": "/object-tests/keys/trailing-slash/" } }, { @@ -151586,31 +192852,7 @@ "optional": false, "rule": { "is": "equal", - "value": "" - } - }, - { - "at": "/query/list-type", - "optional": false, - "rule": { - "is": "equal", - "value": "2" - } - }, - { - "at": "/query/prefix", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/board/" - } - }, - { - "at": "/query/max-keys", - "optional": false, - "rule": { - "is": "equal", - "value": "1" + "value": "MDEyMzQ1Njc4OQ==" } }, { @@ -151645,18 +192887,69 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", "date": { "from": "now" }, + "etag": "\"fixture-68e2c5df0cb2\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nfixtureobject-tests/board/fixture-marker+/a11ba9e5001=11trueCRC64NVME"fixture-626f61720000"object-tests/board/a.txt2024-01-01T00:00:00.000Z8EXPRESS_ONEZONEFULL_OBJECT" - } + "encoding": "base64", + "data": "" + }, + "framing": "chunked" } - }, + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-68e2c5df0cb2\"" + } + }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + } + ], + "refusal": null + }, + { + "id": "operations/s3-express/copy-missing-source", + "profile": "s3-express", + "lane": "core", + "purpose": "Refuse a copy whose source does not exist", + "sources": [ + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html" + ], + "call": { + "key": "object-tests/copy/target.txt", + "op": "copy", + "source_key": "object-tests/copy/absent.txt" + }, + "exchanges": [ + { + "alternatives": [ { "request": [ { @@ -151664,7 +192957,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -151672,7 +192965,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/" + "value": "/object-tests/copy/target.txt" } }, { @@ -151684,51 +192977,88 @@ } }, { - "at": "/query/list-type", + "at": "/headers/x-amz-copy-source", "optional": false, "rule": { - "is": "equal", - "value": "2" + "is": "matches", + "pattern": "/?fixture[^/]*/object-tests/copy/absent\\.txt" } }, { - "at": "/query/prefix", + "at": "/headers/host", "optional": false, "rule": { "is": "equal", - "value": "object-tests/board/" + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" } }, { - "at": "/query/max-keys", + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "absent" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 404, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + } + }, + "body": { + "encoding": "utf8", + "data": "\nNoSuchKeyFixture error" + }, + "framing": "chunked" + } + }, + { + "request": [ + { + "at": "/method", "optional": false, "rule": { "is": "equal", - "value": "1" + "value": "HEAD" } }, { - "at": "/query/encoding-type", + "at": "/path", "optional": false, "rule": { "is": "equal", - "value": "url" + "value": "/object-tests/copy/absent.txt" } }, { - "at": "/headers/host", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + "value": "" } }, { - "at": "/headers/x-amz-s3session-token", + "at": "/headers/host", "optional": false, "rule": { "is": "equal", - "value": "fixture-session-token" + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" } }, { @@ -151736,7 +193066,14 @@ "optional": false, "rule": { "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "absent" } } ], @@ -151745,22 +193082,65 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 404, "headers": { - "content-type": "application/xml", "date": { "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { - "encoding": "utf8", - "data": "\nfixtureobject-tests/board/fixture-marker+/a11ba9e5001=11urltrueCRC64NVME"fixture-626f61720000"object-tests/board/a.txt2024-01-01T00:00:00.000Z8EXPRESS_ONEZONEFULL_OBJECT" + "encoding": "empty" } } } ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 404 + } }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "one_of", + "values": [ + "NoSuchKey", + "" + ] + } + } + ], + "refusal": null + }, + { + "id": "operations/s3-express/copy", + "profile": "s3-express", + "lane": "core", + "purpose": "Copy an object to another key in the same bucket", + "sources": [ + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html" + ], + "call": { + "key": "object-tests/copy/target.txt", + "op": "copy", + "source_key": "object-tests/copy/source.txt" + }, + "exchanges": [ { "alternatives": [ { @@ -151770,7 +193150,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -151778,7 +193158,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/" + "value": "/object-tests/copy/target.txt" } }, { @@ -151790,35 +193170,11 @@ } }, { - "at": "/query/list-type", - "optional": false, - "rule": { - "is": "equal", - "value": "2" - } - }, - { - "at": "/query/prefix", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/board/" - } - }, - { - "at": "/query/max-keys", - "optional": false, - "rule": { - "is": "equal", - "value": "1" - } - }, - { - "at": "/query/continuation-token", + "at": "/headers/x-amz-copy-source", "optional": false, "rule": { - "is": "equal", - "value": "fixture-marker+/a11ba9e5001=" + "is": "matches", + "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" } }, { @@ -151830,19 +193186,18 @@ } }, { - "at": "/headers/x-amz-s3session-token", + "at": "/headers/authorization", "optional": false, "rule": { - "is": "equal", - "value": "fixture-session-token" + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } }, { - "at": "/headers/authorization", + "at": "/headers/x-amz-s3session-token", "optional": false, "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + "is": "absent" } } ], @@ -151856,13 +193211,13 @@ "content-type": "application/xml", "date": { "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { "encoding": "utf8", - "data": "\nfixtureobject-tests/board/fixture-marker+/a11ba9e5001=fixture-marker+/a11ba9e5002=11trueCRC64NVME"fixture-626f61720001"object-tests/board/nested/c.txt2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECT" - } + "data": "\n2024-01-01T00:00:00.000Z"fixture-etag"" + }, + "framing": "chunked" } }, { @@ -151872,7 +193227,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "HEAD" } }, { @@ -151880,7 +193235,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/" + "value": "/object-tests/copy/source.txt" } }, { @@ -151892,43 +193247,206 @@ } }, { - "at": "/query/list-type", + "at": "/headers/host", "optional": false, "rule": { "is": "equal", - "value": "2" + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" } }, { - "at": "/query/prefix", + "at": "/headers/authorization", "optional": false, "rule": { - "is": "equal", - "value": "object-tests/board/" + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } }, { - "at": "/query/max-keys", + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "absent" + } + } + ], + "then": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/object-tests/copy/target.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/x-amz-copy-source", + "optional": false, + "rule": { + "is": "matches", + "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" + } + }, + { + "at": "/headers/host", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "absent" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + } + }, + "body": { + "encoding": "utf8", + "data": "\n2024-01-01T00:00:00.000Z"fixture-etag"" + }, + "framing": "chunked" + } + } + ] + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-length": "5", + "date": { + "from": "now" + }, + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + }, + "body": { + "encoding": "empty" + } + } + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-etag\"" + } + } + ], + "refusal": null + }, + { + "id": "operations/s3-express/copy-200-internal-error", + "profile": "s3-express", + "lane": "core", + "purpose": "Report a copy answered 200 with an InternalError in the body as an error, never as a success. A client may retry up to 5 times first, and need not retry", + "sources": [ + "https://repost.aws/knowledge-center/s3-resolve-200-internalerror", + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html", + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html" + ], + "origin": "transient", + "derived_from": "operations/s3-express/copy", + "call": { + "key": "object-tests/copy/target.txt", + "op": "copy", + "source_key": "object-tests/copy/source.txt" + }, + "exchanges": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", "optional": false, "rule": { "is": "equal", - "value": "1" + "value": "PUT" } }, { - "at": "/query/continuation-token", + "at": "/path", "optional": false, "rule": { "is": "equal", - "value": "fixture-marker+/a11ba9e5001=" + "value": "/object-tests/copy/target.txt" } }, { - "at": "/query/encoding-type", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "url" + "value": "" + } + }, + { + "at": "/headers/x-amz-copy-source", + "optional": false, + "rule": { + "is": "matches", + "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" } }, { @@ -151940,19 +193458,18 @@ } }, { - "at": "/headers/x-amz-s3session-token", + "at": "/headers/authorization", "optional": false, "rule": { - "is": "equal", - "value": "fixture-session-token" + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } }, { - "at": "/headers/authorization", + "at": "/headers/x-amz-s3session-token", "optional": false, "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + "is": "absent" } } ], @@ -151966,19 +193483,15 @@ "content-type": "application/xml", "date": { "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { "encoding": "utf8", - "data": "\nfixtureobject-tests/board/fixture-marker+/a11ba9e5001=fixture-marker+/a11ba9e5002=11urltrueCRC64NVME"fixture-626f61720001"object-tests/board/nested/c.txt2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECT" - } + "data": "\nInternalErrorWe encountered an internal error. Please try again.fixturefixture" + }, + "framing": "chunked" } - } - ] - }, - { - "alternatives": [ + }, { "request": [ { @@ -151986,7 +193499,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "HEAD" } }, { @@ -151994,7 +193507,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/" + "value": "/object-tests/copy/source.txt" } }, { @@ -152005,38 +193518,6 @@ "value": "" } }, - { - "at": "/query/list-type", - "optional": false, - "rule": { - "is": "equal", - "value": "2" - } - }, - { - "at": "/query/prefix", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/board/" - } - }, - { - "at": "/query/max-keys", - "optional": false, - "rule": { - "is": "equal", - "value": "1" - } - }, - { - "at": "/query/continuation-token", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-marker+/a11ba9e5002=" - } - }, { "at": "/headers/host", "optional": false, @@ -152046,22 +193527,104 @@ } }, { - "at": "/headers/x-amz-s3session-token", + "at": "/headers/authorization", "optional": false, "rule": { - "is": "equal", - "value": "fixture-session-token" + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } }, { - "at": "/headers/authorization", + "at": "/headers/x-amz-s3session-token", "optional": false, "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + "is": "absent" } } ], + "then": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/object-tests/copy/target.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/x-amz-copy-source", + "optional": false, + "rule": { + "is": "matches", + "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" + } + }, + { + "at": "/headers/host", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "absent" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + } + }, + "body": { + "encoding": "utf8", + "data": "\nInternalErrorWe encountered an internal error. Please try again.fixturefixture" + }, + "framing": "chunked" + } + } + ] + } + ], "allow_headers": [ "content-type" ], @@ -152069,18 +193632,22 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", + "content-length": "5", "date": { "from": "now" }, + "etag": "\"fixture-etag\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nfixtureobject-tests/board/fixture-marker+/a11ba9e5002=11falseCRC64NVME"fixture-626f61720002"object-tests/board/z.txt2024-01-01T00:00:00.000Z2EXPRESS_ONEZONEFULL_OBJECT" + "encoding": "empty" } } - }, + } + ] + }, + { + "alternatives": [ { "request": [ { @@ -152088,7 +193655,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -152096,7 +193663,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/" + "value": "/object-tests/copy/target.txt" } }, { @@ -152108,43 +193675,11 @@ } }, { - "at": "/query/list-type", - "optional": false, - "rule": { - "is": "equal", - "value": "2" - } - }, - { - "at": "/query/prefix", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/board/" - } - }, - { - "at": "/query/max-keys", - "optional": false, - "rule": { - "is": "equal", - "value": "1" - } - }, - { - "at": "/query/continuation-token", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-marker+/a11ba9e5002=" - } - }, - { - "at": "/query/encoding-type", + "at": "/headers/x-amz-copy-source", "optional": false, "rule": { - "is": "equal", - "value": "url" + "is": "matches", + "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" } }, { @@ -152156,19 +193691,18 @@ } }, { - "at": "/headers/x-amz-s3session-token", + "at": "/headers/authorization", "optional": false, "rule": { - "is": "equal", - "value": "fixture-session-token" + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } }, { - "at": "/headers/authorization", + "at": "/headers/x-amz-s3session-token", "optional": false, "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + "is": "absent" } } ], @@ -152182,55 +193716,18 @@ "content-type": "application/xml", "date": { "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { "encoding": "utf8", - "data": "\nfixtureobject-tests/board/fixture-marker+/a11ba9e5002=11urlfalseCRC64NVME"fixture-626f61720002"object-tests/board/z.txt2024-01-01T00:00:00.000Z2EXPRESS_ONEZONEFULL_OBJECT" - } + "data": "\nInternalErrorWe encountered an internal error. Please try again.fixturefixture" + }, + "framing": "chunked" } } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } + ], + "optional": true }, - { - "at": "/value/keys", - "optional": false, - "rule": { - "is": "equal", - "value": [ - "object-tests/board/a.txt", - "object-tests/board/nested/c.txt", - "object-tests/board/z.txt" - ] - } - } - ], - "refusal": null - }, - { - "id": "operations/s3-express/list-bucket-missing", - "profile": "s3-express", - "lane": "core", - "purpose": "Report the NoSuchBucket error that CreateSession answers for a missing directory bucket, and send nothing more", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "op": "list_page", - "prefix": "" - }, - "exchanges": [ { "alternatives": [ { @@ -152240,7 +193737,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -152248,17 +193745,25 @@ "optional": false, "rule": { "is": "equal", - "value": "/" + "value": "/object-tests/copy/target.txt" } }, { - "at": "/query/session", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", "value": "" } }, + { + "at": "/headers/x-amz-copy-source", + "optional": false, + "rule": { + "is": "matches", + "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" + } + }, { "at": "/headers/host", "optional": false, @@ -152288,7 +193793,7 @@ ], "allow_query": [], "response": { - "status": 404, + "status": 200, "headers": { "content-type": "application/xml", "date": { @@ -152297,55 +193802,14 @@ }, "body": { "encoding": "utf8", - "data": "\nNoSuchBucketFixture error" + "data": "\nInternalErrorWe encountered an internal error. Please try again.fixturefixture" }, "framing": "chunked" } } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 404 - } + ], + "optional": true }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "equal", - "value": "NoSuchBucket" - } - } - ], - "refusal": null - }, - { - "id": "operations/s3-express/list-entry-properties", - "profile": "s3-express", - "lane": "core", - "purpose": "Report each listed object's last-modified time as RFC 3339 in UTC, and its storage class", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "op": "list_page", - "prefix": "object-tests/properties/" - }, - "exchanges": [ { "alternatives": [ { @@ -152355,7 +193819,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -152363,17 +193827,25 @@ "optional": false, "rule": { "is": "equal", - "value": "/" + "value": "/object-tests/copy/target.txt" } }, { - "at": "/query/session", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", "value": "" } }, + { + "at": "/headers/x-amz-copy-source", + "optional": false, + "rule": { + "is": "matches", + "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" + } + }, { "at": "/headers/host", "optional": false, @@ -152405,19 +193877,20 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml" + "content-type": "application/xml", + "date": { + "from": "now" + } }, "body": { "encoding": "utf8", - "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" + "data": "\nInternalErrorWe encountered an internal error. Please try again.fixturefixture" }, - "body_time": { - "text": "SESSION_EXPIRATION", - "offset_seconds": 300 - } + "framing": "chunked" } } - ] + ], + "optional": true }, { "alternatives": [ @@ -152428,7 +193901,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -152436,7 +193909,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/" + "value": "/object-tests/copy/target.txt" } }, { @@ -152448,19 +193921,19 @@ } }, { - "at": "/headers/host", + "at": "/headers/x-amz-copy-source", "optional": false, "rule": { - "is": "equal", - "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + "is": "matches", + "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" } }, { - "at": "/headers/x-amz-s3session-token", + "at": "/headers/host", "optional": false, "rule": { "is": "equal", - "value": "fixture-session-token" + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" } }, { @@ -152468,23 +193941,14 @@ "optional": false, "rule": { "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" - } - }, - { - "at": "/query/list-type", - "optional": false, - "rule": { - "is": "equal", - "value": "2" + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } }, { - "at": "/query/prefix", + "at": "/headers/x-amz-s3session-token", "optional": false, "rule": { - "is": "equal", - "value": "object-tests/properties/" + "is": "absent" } } ], @@ -152498,15 +193962,20 @@ "content-type": "application/xml", "date": { "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { "encoding": "utf8", - "data": "\nfixtureobject-tests/properties/11000falseobject-tests/properties/a.txt2024-01-02T03:04:05.000Z"fixture-5070726f0000"CRC64NVMEFULL_OBJECT2EXPRESS_ONEZONE" - } + "data": "\nInternalErrorWe encountered an internal error. Please try again.fixturefixture" + }, + "framing": "chunked" } - }, + } + ], + "optional": true + }, + { + "alternatives": [ { "request": [ { @@ -152514,7 +193983,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -152522,7 +193991,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/" + "value": "/object-tests/copy/target.txt" } }, { @@ -152534,19 +194003,19 @@ } }, { - "at": "/headers/host", + "at": "/headers/x-amz-copy-source", "optional": false, "rule": { - "is": "equal", - "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + "is": "matches", + "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" } }, { - "at": "/headers/x-amz-s3session-token", + "at": "/headers/host", "optional": false, "rule": { "is": "equal", - "value": "fixture-session-token" + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" } }, { @@ -152554,31 +194023,14 @@ "optional": false, "rule": { "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" - } - }, - { - "at": "/query/list-type", - "optional": false, - "rule": { - "is": "equal", - "value": "2" - } - }, - { - "at": "/query/prefix", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/properties/" + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } }, { - "at": "/query/encoding-type", + "at": "/headers/x-amz-s3session-token", "optional": false, "rule": { - "is": "equal", - "value": "url" + "is": "absent" } } ], @@ -152592,16 +194044,17 @@ "content-type": "application/xml", "date": { "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { "encoding": "utf8", - "data": "\nfixtureobject-tests/properties/11000urlfalseobject-tests/properties/a.txt2024-01-02T03:04:05.000Z"fixture-5070726f0000"CRC64NVMEFULL_OBJECT2EXPRESS_ONEZONE" - } + "data": "\nInternalErrorWe encountered an internal error. Please try again.fixturefixture" + }, + "framing": "chunked" } } - ] + ], + "optional": true } ], "expect": [ @@ -152610,121 +194063,36 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/entries/0/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/properties/a.txt" - } - }, - { - "at": "/value/entries/0/size", - "optional": false, - "rule": { - "is": "equal", - "value": 2 - } - }, - { - "at": "/value/entries/0/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-5070726f0000\"" - } - }, - { - "at": "/value/entries/0/last_modified", - "optional": false, - "rule": { - "is": "equal", - "value": "2024-01-02T03:04:05Z" - } - }, - { - "at": "/value/entries/0/storage_class", - "optional": false, - "rule": { - "is": "equal", - "value": "EXPRESS_ONEZONE" - } - }, - { - "at": "/value/entries/0/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/0/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/0/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries", - "optional": false, - "rule": { - "is": "array_length", - "value": 1 - } - }, - { - "at": "/value/prefixes", - "optional": false, - "rule": { - "is": "array_length", - "value": 0 + "value": "error" } }, { - "at": "/value/continuation_token", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "InternalError" } } ], "refusal": null }, { - "id": "operations/s3-express/list-checksum-algorithm", + "id": "operations/s3-express/copy-replace-metadata", "profile": "s3-express", "lane": "core", - "purpose": "Report each listed object's checksum algorithm as one name; S3 keeps one checksum per object, the one a write sent or else CRC64NVME, and lists one ChecksumAlgorithm", + "purpose": "Copy an object with new metadata and a new content type. S3 keeps the source's unless x-amz-metadata-directive is REPLACE, so a client that sets either must send it", "sources": [ - "https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html", - "https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html" + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html" ], "call": { - "op": "list_page", - "prefix": "object-tests/checksum-listing/" + "content_type": "text/plain", + "key": "object-tests/copy/target.txt", + "metadata": { + "colour": "blue" + }, + "op": "copy", + "source_key": "object-tests/copy/source.txt" }, "exchanges": [ { @@ -152736,7 +194104,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -152744,17 +194112,25 @@ "optional": false, "rule": { "is": "equal", - "value": "/" + "value": "/object-tests/copy/target.txt" } }, { - "at": "/query/session", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", "value": "" } }, + { + "at": "/headers/x-amz-copy-source", + "optional": false, + "rule": { + "is": "matches", + "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" + } + }, { "at": "/headers/host", "optional": false, @@ -152777,95 +194153,29 @@ "rule": { "is": "absent" } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-type": "application/xml" - }, - "body": { - "encoding": "utf8", - "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" - }, - "body_time": { - "text": "SESSION_EXPIRATION", - "offset_seconds": 300 - } - } - } - ] - }, - { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/query/list-type", - "optional": false, - "rule": { - "is": "equal", - "value": "2" - } }, { - "at": "/query/prefix", + "at": "/headers/x-amz-metadata-directive", "optional": false, "rule": { "is": "equal", - "value": "object-tests/checksum-listing/" + "value": "REPLACE" } }, { - "at": "/headers/host", + "at": "/headers/x-amz-meta-colour", "optional": false, "rule": { "is": "equal", - "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + "value": "blue" } }, { - "at": "/headers/x-amz-s3session-token", + "at": "/headers/content-type", "optional": false, "rule": { "is": "equal", - "value": "fixture-session-token" - } - }, - { - "at": "/headers/authorization", - "optional": false, - "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + "value": "text/plain" } } ], @@ -152879,13 +194189,13 @@ "content-type": "application/xml", "date": { "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { "encoding": "utf8", - "data": "\nfixtureobject-tests/checksum-listing/21000falseCRC32"fixture-636b736c0000"object-tests/checksum-listing/crc32.txt2024-01-01T00:00:00.000Z3EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-636b736c0001"object-tests/checksum-listing/none.txt2024-01-01T00:00:00.000Z4EXPRESS_ONEZONEFULL_OBJECT" - } + "data": "\n2024-01-01T00:00:00.000Z"fixture-etag"" + }, + "framing": "chunked" } }, { @@ -152895,7 +194205,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "HEAD" } }, { @@ -152903,7 +194213,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/" + "value": "/object-tests/copy/source.txt" } }, { @@ -152914,30 +194224,6 @@ "value": "" } }, - { - "at": "/query/list-type", - "optional": false, - "rule": { - "is": "equal", - "value": "2" - } - }, - { - "at": "/query/prefix", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/checksum-listing/" - } - }, - { - "at": "/query/encoding-type", - "optional": false, - "rule": { - "is": "equal", - "value": "url" - } - }, { "at": "/headers/host", "optional": false, @@ -152947,22 +194233,128 @@ } }, { - "at": "/headers/x-amz-s3session-token", + "at": "/headers/authorization", "optional": false, "rule": { - "is": "equal", - "value": "fixture-session-token" + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } }, { - "at": "/headers/authorization", + "at": "/headers/x-amz-s3session-token", "optional": false, "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + "is": "absent" } } ], + "then": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/object-tests/copy/target.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/x-amz-copy-source", + "optional": false, + "rule": { + "is": "matches", + "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" + } + }, + { + "at": "/headers/host", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "absent" + } + }, + { + "at": "/headers/x-amz-metadata-directive", + "optional": false, + "rule": { + "is": "equal", + "value": "REPLACE" + } + }, + { + "at": "/headers/x-amz-meta-colour", + "optional": false, + "rule": { + "is": "equal", + "value": "blue" + } + }, + { + "at": "/headers/content-type", + "optional": false, + "rule": { + "is": "equal", + "value": "text/plain" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + } + }, + "body": { + "encoding": "utf8", + "data": "\n2024-01-01T00:00:00.000Z"fixture-etag"" + }, + "framing": "chunked" + } + } + ] + } + ], "allow_headers": [ "content-type" ], @@ -152970,15 +194362,15 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", + "content-length": "5", "date": { "from": "now" }, + "etag": "\"fixture-etag\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nfixtureobject-tests/checksum-listing/21000urlfalseCRC32"fixture-636b736c0000"object-tests/checksum-listing/crc32.txt2024-01-01T00:00:00.000Z3EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-636b736c0001"object-tests/checksum-listing/none.txt2024-01-01T00:00:00.000Z4EXPRESS_ONEZONEFULL_OBJECT" + "encoding": "empty" } } } @@ -152993,176 +194385,23 @@ "is": "equal", "value": "ok" } - }, - { - "at": "/value/entries/0/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/checksum-listing/crc32.txt" - } - }, - { - "at": "/value/entries/0/size", - "optional": false, - "rule": { - "is": "equal", - "value": 3 - } - }, - { - "at": "/value/entries/0/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-636b736c0000\"" - } - }, - { - "at": "/value/entries/0/checksum_algorithm", - "optional": false, - "rule": { - "is": "equal", - "value": "CRC32" - } - }, - { - "at": "/value/entries/0/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/0/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/0/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/1/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/checksum-listing/none.txt" - } - }, - { - "at": "/value/entries/1/size", - "optional": false, - "rule": { - "is": "equal", - "value": 4 - } - }, - { - "at": "/value/entries/1/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-636b736c0001\"" - } - }, - { - "at": "/value/entries/1/checksum_algorithm", - "optional": false, - "rule": { - "is": "equal", - "value": "CRC64NVME" - } - }, - { - "at": "/value/entries/1/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/1/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/1/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries", - "optional": false, - "rule": { - "is": "array_length", - "value": 2 - } - }, - { - "at": "/value/prefixes", - "optional": false, - "rule": { - "is": "array_length", - "value": 0 - } - }, - { - "at": "/value/continuation_token", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } } ], "refusal": null }, { - "id": "operations/s3-express/list-fetch-owner", + "id": "operations/s3-express/copy-source-if-match", "profile": "s3-express", "lane": "core", - "purpose": "Ask for owners with fetch-owner=true, and report each listed object's owner ID", + "purpose": "Copy an object only if the source still has this ETag, named in x-amz-copy-source-if-match", "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html" ], "call": { - "fetch_owner": true, - "op": "list_page", - "prefix": "object-tests/owner/" + "key": "object-tests/copy/target.txt", + "op": "copy", + "source_if_match": "\"fixture-etag\"", + "source_key": "object-tests/copy/source.txt" }, "exchanges": [ { @@ -153174,7 +194413,92 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/object-tests/copy/target.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/x-amz-copy-source", + "optional": false, + "rule": { + "is": "matches", + "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" + } + }, + { + "at": "/headers/host", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "absent" + } + }, + { + "at": "/headers/x-amz-copy-source-if-match", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-etag\"" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + } + }, + "body": { + "encoding": "utf8", + "data": "\n2024-01-01T00:00:00.000Z"fixture-etag"" + }, + "framing": "chunked" + } + }, + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "HEAD" } }, { @@ -153182,11 +194506,11 @@ "optional": false, "rule": { "is": "equal", - "value": "/" + "value": "/object-tests/copy/source.txt" } }, { - "at": "/query/session", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", @@ -153217,6 +194541,97 @@ } } ], + "then": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/object-tests/copy/target.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/x-amz-copy-source", + "optional": false, + "rule": { + "is": "matches", + "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" + } + }, + { + "at": "/headers/host", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "absent" + } + }, + { + "at": "/headers/x-amz-copy-source-if-match", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-etag\"" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + } + }, + "body": { + "encoding": "utf8", + "data": "\n2024-01-01T00:00:00.000Z"fixture-etag"" + }, + "framing": "chunked" + } + } + ] + } + ], "allow_headers": [ "content-type" ], @@ -153224,20 +194639,48 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml" + "content-length": "5", + "date": { + "from": "now" + }, + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" - }, - "body_time": { - "text": "SESSION_EXPIRATION", - "offset_seconds": 300 + "encoding": "empty" } } } ] - }, + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + } + ], + "refusal": null + }, + { + "id": "operations/s3-express/copy-source-if-match-failed", + "profile": "s3-express", + "lane": "core", + "purpose": "Report a copy whose source does not have the ETag in x-amz-copy-source-if-match as a failed condition. S3 answers 412 PreconditionFailed and writes nothing", + "sources": [ + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html" + ], + "call": { + "key": "object-tests/copy/target.txt", + "op": "copy", + "source_if_match": "\"fixture-0123456789ab\"", + "source_key": "object-tests/copy/source.txt" + }, + "exchanges": [ { "alternatives": [ { @@ -153247,7 +194690,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -153255,7 +194698,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/" + "value": "/object-tests/copy/target.txt" } }, { @@ -153267,19 +194710,19 @@ } }, { - "at": "/headers/host", + "at": "/headers/x-amz-copy-source", "optional": false, "rule": { - "is": "equal", - "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + "is": "matches", + "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" } }, { - "at": "/headers/x-amz-s3session-token", + "at": "/headers/host", "optional": false, "rule": { "is": "equal", - "value": "fixture-session-token" + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" } }, { @@ -153287,31 +194730,22 @@ "optional": false, "rule": { "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" - } - }, - { - "at": "/query/list-type", - "optional": false, - "rule": { - "is": "equal", - "value": "2" + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } }, { - "at": "/query/prefix", + "at": "/headers/x-amz-s3session-token", "optional": false, "rule": { - "is": "equal", - "value": "object-tests/owner/" + "is": "absent" } }, { - "at": "/query/fetch-owner", + "at": "/headers/x-amz-copy-source-if-match", "optional": false, "rule": { "is": "equal", - "value": "true" + "value": "\"fixture-0123456789ab\"" } } ], @@ -153320,18 +194754,18 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 412, "headers": { "content-type": "application/xml", "date": { "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { "encoding": "utf8", - "data": "\nfixtureobject-tests/owner/11000falseobject-tests/owner/a.txt2024-01-01T00:00:00.000Z"fixture-6f776e650000"CRC64NVMEFULL_OBJECT1fixture-owner-idEXPRESS_ONEZONE" - } + "data": "\nPreconditionFailedFixture error" + }, + "framing": "chunked" } }, { @@ -153341,7 +194775,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "HEAD" } }, { @@ -153349,7 +194783,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/" + "value": "/object-tests/copy/source.txt" } }, { @@ -153368,53 +194802,111 @@ "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" } }, - { - "at": "/headers/x-amz-s3session-token", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-session-token" - } - }, { "at": "/headers/authorization", "optional": false, "rule": { "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" - } - }, - { - "at": "/query/list-type", - "optional": false, - "rule": { - "is": "equal", - "value": "2" - } - }, - { - "at": "/query/prefix", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/owner/" + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } }, { - "at": "/query/fetch-owner", + "at": "/headers/x-amz-s3session-token", "optional": false, "rule": { - "is": "equal", - "value": "true" + "is": "absent" } - }, + } + ], + "then": [ { - "at": "/query/encoding-type", - "optional": false, - "rule": { - "is": "equal", - "value": "url" - } + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/object-tests/copy/target.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/x-amz-copy-source", + "optional": false, + "rule": { + "is": "matches", + "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" + } + }, + { + "at": "/headers/host", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "absent" + } + }, + { + "at": "/headers/x-amz-copy-source-if-match", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-0123456789ab\"" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 412, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + } + }, + "body": { + "encoding": "utf8", + "data": "\nPreconditionFailedFixture error" + }, + "framing": "chunked" + } + } + ] } ], "allow_headers": [ @@ -153424,15 +194916,15 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", + "content-length": "5", "date": { "from": "now" }, + "etag": "\"fixture-etag\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nfixtureobject-tests/owner/11000urlfalseobject-tests/owner/a.txt2024-01-01T00:00:00.000Z"fixture-6f776e650000"CRC64NVMEFULL_OBJECT1fixture-owner-idEXPRESS_ONEZONE" + "encoding": "empty" } } } @@ -153445,112 +194937,41 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/entries/0/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/owner/a.txt" - } - }, - { - "at": "/value/entries/0/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/0/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-6f776e650000\"" + "value": "error" } }, { - "at": "/value/entries/0/owner_id", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "fixture-owner-id" - } - }, - { - "at": "/value/entries/0/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/0/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/0/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries", - "optional": false, - "rule": { - "is": "array_length", - "value": 1 - } - }, - { - "at": "/value/prefixes", - "optional": false, - "rule": { - "is": "array_length", - "value": 0 + "value": 412 } }, { - "at": "/value/continuation_token", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "PreconditionFailed" } } ], "refusal": null }, { - "id": "operations/s3-express/list-over-1000", + "id": "operations/s3-express/copy-source-if-none-match-failed", "profile": "s3-express", "lane": "core", - "purpose": "List more keys than the service's default page of 1,000 by following the continuation token", + "purpose": "Report a copy whose source has the ETag in x-amz-copy-source-if-none-match as a failed condition. A copy answers 412 PreconditionFailed where a read answers 304", "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html" ], "call": { - "op": "list", - "prefix": "object-tests/many/" + "key": "object-tests/copy/target.txt", + "op": "copy", + "source_if_none_match": "\"fixture-etag\"", + "source_key": "object-tests/copy/source.txt" }, "exchanges": [ { @@ -153562,7 +194983,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -153570,17 +194991,25 @@ "optional": false, "rule": { "is": "equal", - "value": "/" + "value": "/object-tests/copy/target.txt" } }, { - "at": "/query/session", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", "value": "" } }, + { + "at": "/headers/x-amz-copy-source", + "optional": false, + "rule": { + "is": "matches", + "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" + } + }, { "at": "/headers/host", "optional": false, @@ -153603,6 +195032,14 @@ "rule": { "is": "absent" } + }, + { + "at": "/headers/x-amz-copy-source-if-none-match", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-etag\"" + } } ], "allow_headers": [ @@ -153610,24 +195047,20 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 412, "headers": { - "content-type": "application/xml" + "content-type": "application/xml", + "date": { + "from": "now" + } }, "body": { "encoding": "utf8", - "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" + "data": "\nPreconditionFailedFixture error" }, - "body_time": { - "text": "SESSION_EXPIRATION", - "offset_seconds": 300 - } + "framing": "chunked" } - } - ] - }, - { - "alternatives": [ + }, { "request": [ { @@ -153635,7 +195068,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "HEAD" } }, { @@ -153643,7 +195076,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/" + "value": "/object-tests/copy/source.txt" } }, { @@ -153654,22 +195087,6 @@ "value": "" } }, - { - "at": "/query/list-type", - "optional": false, - "rule": { - "is": "equal", - "value": "2" - } - }, - { - "at": "/query/prefix", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/many/" - } - }, { "at": "/headers/host", "optional": false, @@ -153679,22 +195096,112 @@ } }, { - "at": "/headers/x-amz-s3session-token", + "at": "/headers/authorization", "optional": false, "rule": { - "is": "equal", - "value": "fixture-session-token" + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } }, { - "at": "/headers/authorization", + "at": "/headers/x-amz-s3session-token", "optional": false, "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + "is": "absent" } } ], + "then": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/object-tests/copy/target.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/x-amz-copy-source", + "optional": false, + "rule": { + "is": "matches", + "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" + } + }, + { + "at": "/headers/host", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "absent" + } + }, + { + "at": "/headers/x-amz-copy-source-if-none-match", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-etag\"" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 412, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + } + }, + "body": { + "encoding": "utf8", + "data": "\nPreconditionFailedFixture error" + }, + "framing": "chunked" + } + } + ] + } + ], "allow_headers": [ "content-type" ], @@ -153702,18 +195209,66 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", + "content-length": "5", "date": { "from": "now" }, + "etag": "\"fixture-etag\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nfixtureobject-tests/many/fixture-marker+/3a4e1000=10001000trueCRC64NVME"fixture-6d610000"object-tests/many/00002024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610001"object-tests/many/00012024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610002"object-tests/many/00022024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610003"object-tests/many/00032024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610004"object-tests/many/00042024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610005"object-tests/many/00052024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610006"object-tests/many/00062024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610007"object-tests/many/00072024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610008"object-tests/many/00082024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610009"object-tests/many/00092024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61000a"object-tests/many/00102024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61000b"object-tests/many/00112024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61000c"object-tests/many/00122024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61000d"object-tests/many/00132024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61000e"object-tests/many/00142024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61000f"object-tests/many/00152024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610010"object-tests/many/00162024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610011"object-tests/many/00172024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610012"object-tests/many/00182024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610013"object-tests/many/00192024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610014"object-tests/many/00202024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610015"object-tests/many/00212024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610016"object-tests/many/00222024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610017"object-tests/many/00232024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610018"object-tests/many/00242024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610019"object-tests/many/00252024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61001a"object-tests/many/00262024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61001b"object-tests/many/00272024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61001c"object-tests/many/00282024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61001d"object-tests/many/00292024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61001e"object-tests/many/00302024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61001f"object-tests/many/00312024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610020"object-tests/many/00322024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610021"object-tests/many/00332024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610022"object-tests/many/00342024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610023"object-tests/many/00352024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610024"object-tests/many/00362024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610025"object-tests/many/00372024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610026"object-tests/many/00382024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610027"object-tests/many/00392024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610028"object-tests/many/00402024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610029"object-tests/many/00412024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61002a"object-tests/many/00422024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61002b"object-tests/many/00432024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61002c"object-tests/many/00442024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61002d"object-tests/many/00452024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61002e"object-tests/many/00462024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61002f"object-tests/many/00472024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610030"object-tests/many/00482024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610031"object-tests/many/00492024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610032"object-tests/many/00502024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610033"object-tests/many/00512024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610034"object-tests/many/00522024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610035"object-tests/many/00532024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610036"object-tests/many/00542024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610037"object-tests/many/00552024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610038"object-tests/many/00562024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610039"object-tests/many/00572024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61003a"object-tests/many/00582024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61003b"object-tests/many/00592024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61003c"object-tests/many/00602024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61003d"object-tests/many/00612024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61003e"object-tests/many/00622024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61003f"object-tests/many/00632024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610040"object-tests/many/00642024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610041"object-tests/many/00652024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610042"object-tests/many/00662024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610043"object-tests/many/00672024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610044"object-tests/many/00682024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610045"object-tests/many/00692024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610046"object-tests/many/00702024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610047"object-tests/many/00712024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610048"object-tests/many/00722024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610049"object-tests/many/00732024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61004a"object-tests/many/00742024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61004b"object-tests/many/00752024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61004c"object-tests/many/00762024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61004d"object-tests/many/00772024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61004e"object-tests/many/00782024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61004f"object-tests/many/00792024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610050"object-tests/many/00802024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610051"object-tests/many/00812024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610052"object-tests/many/00822024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610053"object-tests/many/00832024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610054"object-tests/many/00842024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610055"object-tests/many/00852024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610056"object-tests/many/00862024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610057"object-tests/many/00872024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610058"object-tests/many/00882024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610059"object-tests/many/00892024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61005a"object-tests/many/00902024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61005b"object-tests/many/00912024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61005c"object-tests/many/00922024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61005d"object-tests/many/00932024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61005e"object-tests/many/00942024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61005f"object-tests/many/00952024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610060"object-tests/many/00962024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610061"object-tests/many/00972024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610062"object-tests/many/00982024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610063"object-tests/many/00992024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610064"object-tests/many/01002024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610065"object-tests/many/01012024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610066"object-tests/many/01022024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610067"object-tests/many/01032024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610068"object-tests/many/01042024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610069"object-tests/many/01052024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61006a"object-tests/many/01062024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61006b"object-tests/many/01072024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61006c"object-tests/many/01082024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61006d"object-tests/many/01092024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61006e"object-tests/many/01102024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61006f"object-tests/many/01112024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610070"object-tests/many/01122024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610071"object-tests/many/01132024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610072"object-tests/many/01142024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610073"object-tests/many/01152024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610074"object-tests/many/01162024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610075"object-tests/many/01172024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610076"object-tests/many/01182024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610077"object-tests/many/01192024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610078"object-tests/many/01202024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610079"object-tests/many/01212024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61007a"object-tests/many/01222024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61007b"object-tests/many/01232024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61007c"object-tests/many/01242024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61007d"object-tests/many/01252024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61007e"object-tests/many/01262024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61007f"object-tests/many/01272024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610080"object-tests/many/01282024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610081"object-tests/many/01292024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610082"object-tests/many/01302024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610083"object-tests/many/01312024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610084"object-tests/many/01322024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610085"object-tests/many/01332024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610086"object-tests/many/01342024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610087"object-tests/many/01352024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610088"object-tests/many/01362024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610089"object-tests/many/01372024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61008a"object-tests/many/01382024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61008b"object-tests/many/01392024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61008c"object-tests/many/01402024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61008d"object-tests/many/01412024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61008e"object-tests/many/01422024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61008f"object-tests/many/01432024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610090"object-tests/many/01442024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610091"object-tests/many/01452024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610092"object-tests/many/01462024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610093"object-tests/many/01472024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610094"object-tests/many/01482024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610095"object-tests/many/01492024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610096"object-tests/many/01502024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610097"object-tests/many/01512024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610098"object-tests/many/01522024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610099"object-tests/many/01532024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61009a"object-tests/many/01542024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61009b"object-tests/many/01552024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61009c"object-tests/many/01562024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61009d"object-tests/many/01572024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61009e"object-tests/many/01582024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61009f"object-tests/many/01592024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100a0"object-tests/many/01602024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100a1"object-tests/many/01612024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100a2"object-tests/many/01622024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100a3"object-tests/many/01632024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100a4"object-tests/many/01642024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100a5"object-tests/many/01652024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100a6"object-tests/many/01662024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100a7"object-tests/many/01672024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100a8"object-tests/many/01682024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100a9"object-tests/many/01692024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100aa"object-tests/many/01702024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100ab"object-tests/many/01712024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100ac"object-tests/many/01722024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100ad"object-tests/many/01732024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100ae"object-tests/many/01742024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100af"object-tests/many/01752024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100b0"object-tests/many/01762024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100b1"object-tests/many/01772024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100b2"object-tests/many/01782024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100b3"object-tests/many/01792024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100b4"object-tests/many/01802024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100b5"object-tests/many/01812024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100b6"object-tests/many/01822024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100b7"object-tests/many/01832024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100b8"object-tests/many/01842024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100b9"object-tests/many/01852024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100ba"object-tests/many/01862024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100bb"object-tests/many/01872024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100bc"object-tests/many/01882024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100bd"object-tests/many/01892024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100be"object-tests/many/01902024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100bf"object-tests/many/01912024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100c0"object-tests/many/01922024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100c1"object-tests/many/01932024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100c2"object-tests/many/01942024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100c3"object-tests/many/01952024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100c4"object-tests/many/01962024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100c5"object-tests/many/01972024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100c6"object-tests/many/01982024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100c7"object-tests/many/01992024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100c8"object-tests/many/02002024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100c9"object-tests/many/02012024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100ca"object-tests/many/02022024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100cb"object-tests/many/02032024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100cc"object-tests/many/02042024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100cd"object-tests/many/02052024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100ce"object-tests/many/02062024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100cf"object-tests/many/02072024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100d0"object-tests/many/02082024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100d1"object-tests/many/02092024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100d2"object-tests/many/02102024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100d3"object-tests/many/02112024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100d4"object-tests/many/02122024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100d5"object-tests/many/02132024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100d6"object-tests/many/02142024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100d7"object-tests/many/02152024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100d8"object-tests/many/02162024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100d9"object-tests/many/02172024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100da"object-tests/many/02182024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100db"object-tests/many/02192024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100dc"object-tests/many/02202024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100dd"object-tests/many/02212024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100de"object-tests/many/02222024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100df"object-tests/many/02232024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100e0"object-tests/many/02242024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100e1"object-tests/many/02252024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100e2"object-tests/many/02262024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100e3"object-tests/many/02272024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100e4"object-tests/many/02282024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100e5"object-tests/many/02292024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100e6"object-tests/many/02302024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100e7"object-tests/many/02312024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100e8"object-tests/many/02322024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100e9"object-tests/many/02332024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100ea"object-tests/many/02342024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100eb"object-tests/many/02352024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100ec"object-tests/many/02362024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100ed"object-tests/many/02372024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100ee"object-tests/many/02382024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100ef"object-tests/many/02392024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100f0"object-tests/many/02402024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100f1"object-tests/many/02412024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100f2"object-tests/many/02422024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100f3"object-tests/many/02432024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100f4"object-tests/many/02442024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100f5"object-tests/many/02452024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100f6"object-tests/many/02462024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100f7"object-tests/many/02472024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100f8"object-tests/many/02482024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100f9"object-tests/many/02492024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100fa"object-tests/many/02502024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100fb"object-tests/many/02512024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100fc"object-tests/many/02522024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100fd"object-tests/many/02532024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100fe"object-tests/many/02542024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100ff"object-tests/many/02552024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610100"object-tests/many/02562024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610101"object-tests/many/02572024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610102"object-tests/many/02582024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610103"object-tests/many/02592024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610104"object-tests/many/02602024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610105"object-tests/many/02612024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610106"object-tests/many/02622024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610107"object-tests/many/02632024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610108"object-tests/many/02642024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610109"object-tests/many/02652024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61010a"object-tests/many/02662024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61010b"object-tests/many/02672024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61010c"object-tests/many/02682024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61010d"object-tests/many/02692024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61010e"object-tests/many/02702024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61010f"object-tests/many/02712024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610110"object-tests/many/02722024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610111"object-tests/many/02732024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610112"object-tests/many/02742024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610113"object-tests/many/02752024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610114"object-tests/many/02762024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610115"object-tests/many/02772024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610116"object-tests/many/02782024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610117"object-tests/many/02792024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610118"object-tests/many/02802024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610119"object-tests/many/02812024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61011a"object-tests/many/02822024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61011b"object-tests/many/02832024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61011c"object-tests/many/02842024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61011d"object-tests/many/02852024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61011e"object-tests/many/02862024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61011f"object-tests/many/02872024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610120"object-tests/many/02882024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610121"object-tests/many/02892024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610122"object-tests/many/02902024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610123"object-tests/many/02912024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610124"object-tests/many/02922024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610125"object-tests/many/02932024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610126"object-tests/many/02942024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610127"object-tests/many/02952024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610128"object-tests/many/02962024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610129"object-tests/many/02972024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61012a"object-tests/many/02982024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61012b"object-tests/many/02992024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61012c"object-tests/many/03002024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61012d"object-tests/many/03012024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61012e"object-tests/many/03022024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61012f"object-tests/many/03032024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610130"object-tests/many/03042024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610131"object-tests/many/03052024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610132"object-tests/many/03062024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610133"object-tests/many/03072024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610134"object-tests/many/03082024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610135"object-tests/many/03092024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610136"object-tests/many/03102024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610137"object-tests/many/03112024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610138"object-tests/many/03122024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610139"object-tests/many/03132024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61013a"object-tests/many/03142024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61013b"object-tests/many/03152024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61013c"object-tests/many/03162024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61013d"object-tests/many/03172024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61013e"object-tests/many/03182024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61013f"object-tests/many/03192024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610140"object-tests/many/03202024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610141"object-tests/many/03212024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610142"object-tests/many/03222024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610143"object-tests/many/03232024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610144"object-tests/many/03242024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610145"object-tests/many/03252024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610146"object-tests/many/03262024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610147"object-tests/many/03272024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610148"object-tests/many/03282024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610149"object-tests/many/03292024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61014a"object-tests/many/03302024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61014b"object-tests/many/03312024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61014c"object-tests/many/03322024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61014d"object-tests/many/03332024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61014e"object-tests/many/03342024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61014f"object-tests/many/03352024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610150"object-tests/many/03362024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610151"object-tests/many/03372024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610152"object-tests/many/03382024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610153"object-tests/many/03392024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610154"object-tests/many/03402024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610155"object-tests/many/03412024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610156"object-tests/many/03422024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610157"object-tests/many/03432024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610158"object-tests/many/03442024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610159"object-tests/many/03452024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61015a"object-tests/many/03462024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61015b"object-tests/many/03472024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61015c"object-tests/many/03482024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61015d"object-tests/many/03492024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61015e"object-tests/many/03502024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61015f"object-tests/many/03512024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610160"object-tests/many/03522024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610161"object-tests/many/03532024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610162"object-tests/many/03542024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610163"object-tests/many/03552024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610164"object-tests/many/03562024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610165"object-tests/many/03572024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610166"object-tests/many/03582024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610167"object-tests/many/03592024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610168"object-tests/many/03602024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610169"object-tests/many/03612024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61016a"object-tests/many/03622024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61016b"object-tests/many/03632024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61016c"object-tests/many/03642024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61016d"object-tests/many/03652024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61016e"object-tests/many/03662024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61016f"object-tests/many/03672024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610170"object-tests/many/03682024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610171"object-tests/many/03692024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610172"object-tests/many/03702024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610173"object-tests/many/03712024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610174"object-tests/many/03722024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610175"object-tests/many/03732024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610176"object-tests/many/03742024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610177"object-tests/many/03752024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610178"object-tests/many/03762024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610179"object-tests/many/03772024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61017a"object-tests/many/03782024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61017b"object-tests/many/03792024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61017c"object-tests/many/03802024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61017d"object-tests/many/03812024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61017e"object-tests/many/03822024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61017f"object-tests/many/03832024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610180"object-tests/many/03842024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610181"object-tests/many/03852024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610182"object-tests/many/03862024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610183"object-tests/many/03872024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610184"object-tests/many/03882024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610185"object-tests/many/03892024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610186"object-tests/many/03902024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610187"object-tests/many/03912024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610188"object-tests/many/03922024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610189"object-tests/many/03932024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61018a"object-tests/many/03942024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61018b"object-tests/many/03952024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61018c"object-tests/many/03962024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61018d"object-tests/many/03972024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61018e"object-tests/many/03982024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61018f"object-tests/many/03992024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610190"object-tests/many/04002024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610191"object-tests/many/04012024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610192"object-tests/many/04022024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610193"object-tests/many/04032024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610194"object-tests/many/04042024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610195"object-tests/many/04052024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610196"object-tests/many/04062024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610197"object-tests/many/04072024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610198"object-tests/many/04082024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610199"object-tests/many/04092024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61019a"object-tests/many/04102024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61019b"object-tests/many/04112024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61019c"object-tests/many/04122024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61019d"object-tests/many/04132024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61019e"object-tests/many/04142024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61019f"object-tests/many/04152024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101a0"object-tests/many/04162024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101a1"object-tests/many/04172024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101a2"object-tests/many/04182024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101a3"object-tests/many/04192024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101a4"object-tests/many/04202024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101a5"object-tests/many/04212024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101a6"object-tests/many/04222024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101a7"object-tests/many/04232024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101a8"object-tests/many/04242024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101a9"object-tests/many/04252024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101aa"object-tests/many/04262024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101ab"object-tests/many/04272024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101ac"object-tests/many/04282024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101ad"object-tests/many/04292024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101ae"object-tests/many/04302024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101af"object-tests/many/04312024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101b0"object-tests/many/04322024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101b1"object-tests/many/04332024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101b2"object-tests/many/04342024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101b3"object-tests/many/04352024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101b4"object-tests/many/04362024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101b5"object-tests/many/04372024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101b6"object-tests/many/04382024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101b7"object-tests/many/04392024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101b8"object-tests/many/04402024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101b9"object-tests/many/04412024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101ba"object-tests/many/04422024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101bb"object-tests/many/04432024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101bc"object-tests/many/04442024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101bd"object-tests/many/04452024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101be"object-tests/many/04462024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101bf"object-tests/many/04472024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101c0"object-tests/many/04482024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101c1"object-tests/many/04492024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101c2"object-tests/many/04502024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101c3"object-tests/many/04512024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101c4"object-tests/many/04522024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101c5"object-tests/many/04532024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101c6"object-tests/many/04542024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101c7"object-tests/many/04552024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101c8"object-tests/many/04562024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101c9"object-tests/many/04572024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101ca"object-tests/many/04582024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101cb"object-tests/many/04592024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101cc"object-tests/many/04602024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101cd"object-tests/many/04612024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101ce"object-tests/many/04622024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101cf"object-tests/many/04632024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101d0"object-tests/many/04642024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101d1"object-tests/many/04652024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101d2"object-tests/many/04662024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101d3"object-tests/many/04672024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101d4"object-tests/many/04682024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101d5"object-tests/many/04692024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101d6"object-tests/many/04702024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101d7"object-tests/many/04712024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101d8"object-tests/many/04722024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101d9"object-tests/many/04732024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101da"object-tests/many/04742024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101db"object-tests/many/04752024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101dc"object-tests/many/04762024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101dd"object-tests/many/04772024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101de"object-tests/many/04782024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101df"object-tests/many/04792024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101e0"object-tests/many/04802024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101e1"object-tests/many/04812024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101e2"object-tests/many/04822024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101e3"object-tests/many/04832024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101e4"object-tests/many/04842024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101e5"object-tests/many/04852024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101e6"object-tests/many/04862024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101e7"object-tests/many/04872024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101e8"object-tests/many/04882024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101e9"object-tests/many/04892024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101ea"object-tests/many/04902024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101eb"object-tests/many/04912024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101ec"object-tests/many/04922024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101ed"object-tests/many/04932024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101ee"object-tests/many/04942024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101ef"object-tests/many/04952024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101f0"object-tests/many/04962024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101f1"object-tests/many/04972024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101f2"object-tests/many/04982024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101f3"object-tests/many/04992024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101f4"object-tests/many/05002024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101f5"object-tests/many/05012024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101f6"object-tests/many/05022024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101f7"object-tests/many/05032024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101f8"object-tests/many/05042024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101f9"object-tests/many/05052024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101fa"object-tests/many/05062024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101fb"object-tests/many/05072024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101fc"object-tests/many/05082024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101fd"object-tests/many/05092024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101fe"object-tests/many/05102024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101ff"object-tests/many/05112024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610200"object-tests/many/05122024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610201"object-tests/many/05132024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610202"object-tests/many/05142024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610203"object-tests/many/05152024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610204"object-tests/many/05162024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610205"object-tests/many/05172024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610206"object-tests/many/05182024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610207"object-tests/many/05192024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610208"object-tests/many/05202024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610209"object-tests/many/05212024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61020a"object-tests/many/05222024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61020b"object-tests/many/05232024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61020c"object-tests/many/05242024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61020d"object-tests/many/05252024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61020e"object-tests/many/05262024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61020f"object-tests/many/05272024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610210"object-tests/many/05282024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610211"object-tests/many/05292024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610212"object-tests/many/05302024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610213"object-tests/many/05312024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610214"object-tests/many/05322024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610215"object-tests/many/05332024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610216"object-tests/many/05342024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610217"object-tests/many/05352024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610218"object-tests/many/05362024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610219"object-tests/many/05372024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61021a"object-tests/many/05382024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61021b"object-tests/many/05392024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61021c"object-tests/many/05402024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61021d"object-tests/many/05412024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61021e"object-tests/many/05422024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61021f"object-tests/many/05432024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610220"object-tests/many/05442024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610221"object-tests/many/05452024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610222"object-tests/many/05462024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610223"object-tests/many/05472024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610224"object-tests/many/05482024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610225"object-tests/many/05492024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610226"object-tests/many/05502024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610227"object-tests/many/05512024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610228"object-tests/many/05522024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610229"object-tests/many/05532024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61022a"object-tests/many/05542024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61022b"object-tests/many/05552024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61022c"object-tests/many/05562024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61022d"object-tests/many/05572024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61022e"object-tests/many/05582024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61022f"object-tests/many/05592024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610230"object-tests/many/05602024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610231"object-tests/many/05612024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610232"object-tests/many/05622024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610233"object-tests/many/05632024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610234"object-tests/many/05642024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610235"object-tests/many/05652024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610236"object-tests/many/05662024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610237"object-tests/many/05672024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610238"object-tests/many/05682024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610239"object-tests/many/05692024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61023a"object-tests/many/05702024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61023b"object-tests/many/05712024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61023c"object-tests/many/05722024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61023d"object-tests/many/05732024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61023e"object-tests/many/05742024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61023f"object-tests/many/05752024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610240"object-tests/many/05762024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610241"object-tests/many/05772024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610242"object-tests/many/05782024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610243"object-tests/many/05792024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610244"object-tests/many/05802024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610245"object-tests/many/05812024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610246"object-tests/many/05822024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610247"object-tests/many/05832024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610248"object-tests/many/05842024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610249"object-tests/many/05852024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61024a"object-tests/many/05862024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61024b"object-tests/many/05872024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61024c"object-tests/many/05882024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61024d"object-tests/many/05892024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61024e"object-tests/many/05902024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61024f"object-tests/many/05912024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610250"object-tests/many/05922024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610251"object-tests/many/05932024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610252"object-tests/many/05942024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610253"object-tests/many/05952024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610254"object-tests/many/05962024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610255"object-tests/many/05972024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610256"object-tests/many/05982024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610257"object-tests/many/05992024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610258"object-tests/many/06002024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610259"object-tests/many/06012024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61025a"object-tests/many/06022024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61025b"object-tests/many/06032024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61025c"object-tests/many/06042024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61025d"object-tests/many/06052024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61025e"object-tests/many/06062024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61025f"object-tests/many/06072024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610260"object-tests/many/06082024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610261"object-tests/many/06092024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610262"object-tests/many/06102024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610263"object-tests/many/06112024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610264"object-tests/many/06122024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610265"object-tests/many/06132024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610266"object-tests/many/06142024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610267"object-tests/many/06152024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610268"object-tests/many/06162024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610269"object-tests/many/06172024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61026a"object-tests/many/06182024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61026b"object-tests/many/06192024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61026c"object-tests/many/06202024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61026d"object-tests/many/06212024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61026e"object-tests/many/06222024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61026f"object-tests/many/06232024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610270"object-tests/many/06242024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610271"object-tests/many/06252024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610272"object-tests/many/06262024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610273"object-tests/many/06272024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610274"object-tests/many/06282024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610275"object-tests/many/06292024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610276"object-tests/many/06302024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610277"object-tests/many/06312024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610278"object-tests/many/06322024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610279"object-tests/many/06332024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61027a"object-tests/many/06342024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61027b"object-tests/many/06352024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61027c"object-tests/many/06362024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61027d"object-tests/many/06372024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61027e"object-tests/many/06382024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61027f"object-tests/many/06392024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610280"object-tests/many/06402024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610281"object-tests/many/06412024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610282"object-tests/many/06422024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610283"object-tests/many/06432024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610284"object-tests/many/06442024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610285"object-tests/many/06452024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610286"object-tests/many/06462024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610287"object-tests/many/06472024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610288"object-tests/many/06482024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610289"object-tests/many/06492024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61028a"object-tests/many/06502024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61028b"object-tests/many/06512024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61028c"object-tests/many/06522024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61028d"object-tests/many/06532024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61028e"object-tests/many/06542024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61028f"object-tests/many/06552024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610290"object-tests/many/06562024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610291"object-tests/many/06572024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610292"object-tests/many/06582024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610293"object-tests/many/06592024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610294"object-tests/many/06602024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610295"object-tests/many/06612024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610296"object-tests/many/06622024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610297"object-tests/many/06632024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610298"object-tests/many/06642024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610299"object-tests/many/06652024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61029a"object-tests/many/06662024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61029b"object-tests/many/06672024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61029c"object-tests/many/06682024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61029d"object-tests/many/06692024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61029e"object-tests/many/06702024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61029f"object-tests/many/06712024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102a0"object-tests/many/06722024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102a1"object-tests/many/06732024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102a2"object-tests/many/06742024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102a3"object-tests/many/06752024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102a4"object-tests/many/06762024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102a5"object-tests/many/06772024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102a6"object-tests/many/06782024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102a7"object-tests/many/06792024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102a8"object-tests/many/06802024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102a9"object-tests/many/06812024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102aa"object-tests/many/06822024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102ab"object-tests/many/06832024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102ac"object-tests/many/06842024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102ad"object-tests/many/06852024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102ae"object-tests/many/06862024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102af"object-tests/many/06872024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102b0"object-tests/many/06882024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102b1"object-tests/many/06892024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102b2"object-tests/many/06902024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102b3"object-tests/many/06912024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102b4"object-tests/many/06922024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102b5"object-tests/many/06932024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102b6"object-tests/many/06942024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102b7"object-tests/many/06952024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102b8"object-tests/many/06962024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102b9"object-tests/many/06972024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102ba"object-tests/many/06982024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102bb"object-tests/many/06992024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102bc"object-tests/many/07002024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102bd"object-tests/many/07012024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102be"object-tests/many/07022024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102bf"object-tests/many/07032024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102c0"object-tests/many/07042024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102c1"object-tests/many/07052024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102c2"object-tests/many/07062024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102c3"object-tests/many/07072024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102c4"object-tests/many/07082024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102c5"object-tests/many/07092024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102c6"object-tests/many/07102024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102c7"object-tests/many/07112024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102c8"object-tests/many/07122024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102c9"object-tests/many/07132024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102ca"object-tests/many/07142024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102cb"object-tests/many/07152024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102cc"object-tests/many/07162024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102cd"object-tests/many/07172024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102ce"object-tests/many/07182024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102cf"object-tests/many/07192024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102d0"object-tests/many/07202024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102d1"object-tests/many/07212024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102d2"object-tests/many/07222024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102d3"object-tests/many/07232024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102d4"object-tests/many/07242024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102d5"object-tests/many/07252024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102d6"object-tests/many/07262024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102d7"object-tests/many/07272024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102d8"object-tests/many/07282024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102d9"object-tests/many/07292024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102da"object-tests/many/07302024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102db"object-tests/many/07312024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102dc"object-tests/many/07322024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102dd"object-tests/many/07332024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102de"object-tests/many/07342024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102df"object-tests/many/07352024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102e0"object-tests/many/07362024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102e1"object-tests/many/07372024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102e2"object-tests/many/07382024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102e3"object-tests/many/07392024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102e4"object-tests/many/07402024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102e5"object-tests/many/07412024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102e6"object-tests/many/07422024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102e7"object-tests/many/07432024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102e8"object-tests/many/07442024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102e9"object-tests/many/07452024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102ea"object-tests/many/07462024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102eb"object-tests/many/07472024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102ec"object-tests/many/07482024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102ed"object-tests/many/07492024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102ee"object-tests/many/07502024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102ef"object-tests/many/07512024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102f0"object-tests/many/07522024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102f1"object-tests/many/07532024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102f2"object-tests/many/07542024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102f3"object-tests/many/07552024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102f4"object-tests/many/07562024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102f5"object-tests/many/07572024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102f6"object-tests/many/07582024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102f7"object-tests/many/07592024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102f8"object-tests/many/07602024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102f9"object-tests/many/07612024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102fa"object-tests/many/07622024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102fb"object-tests/many/07632024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102fc"object-tests/many/07642024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102fd"object-tests/many/07652024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102fe"object-tests/many/07662024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102ff"object-tests/many/07672024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610300"object-tests/many/07682024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610301"object-tests/many/07692024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610302"object-tests/many/07702024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610303"object-tests/many/07712024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610304"object-tests/many/07722024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610305"object-tests/many/07732024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610306"object-tests/many/07742024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610307"object-tests/many/07752024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610308"object-tests/many/07762024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610309"object-tests/many/07772024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61030a"object-tests/many/07782024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61030b"object-tests/many/07792024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61030c"object-tests/many/07802024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61030d"object-tests/many/07812024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61030e"object-tests/many/07822024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61030f"object-tests/many/07832024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610310"object-tests/many/07842024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610311"object-tests/many/07852024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610312"object-tests/many/07862024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610313"object-tests/many/07872024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610314"object-tests/many/07882024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610315"object-tests/many/07892024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610316"object-tests/many/07902024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610317"object-tests/many/07912024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610318"object-tests/many/07922024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610319"object-tests/many/07932024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61031a"object-tests/many/07942024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61031b"object-tests/many/07952024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61031c"object-tests/many/07962024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61031d"object-tests/many/07972024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61031e"object-tests/many/07982024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61031f"object-tests/many/07992024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610320"object-tests/many/08002024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610321"object-tests/many/08012024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610322"object-tests/many/08022024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610323"object-tests/many/08032024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610324"object-tests/many/08042024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610325"object-tests/many/08052024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610326"object-tests/many/08062024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610327"object-tests/many/08072024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610328"object-tests/many/08082024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610329"object-tests/many/08092024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61032a"object-tests/many/08102024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61032b"object-tests/many/08112024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61032c"object-tests/many/08122024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61032d"object-tests/many/08132024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61032e"object-tests/many/08142024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61032f"object-tests/many/08152024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610330"object-tests/many/08162024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610331"object-tests/many/08172024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610332"object-tests/many/08182024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610333"object-tests/many/08192024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610334"object-tests/many/08202024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610335"object-tests/many/08212024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610336"object-tests/many/08222024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610337"object-tests/many/08232024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610338"object-tests/many/08242024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610339"object-tests/many/08252024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61033a"object-tests/many/08262024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61033b"object-tests/many/08272024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61033c"object-tests/many/08282024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61033d"object-tests/many/08292024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61033e"object-tests/many/08302024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61033f"object-tests/many/08312024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610340"object-tests/many/08322024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610341"object-tests/many/08332024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610342"object-tests/many/08342024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610343"object-tests/many/08352024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610344"object-tests/many/08362024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610345"object-tests/many/08372024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610346"object-tests/many/08382024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610347"object-tests/many/08392024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610348"object-tests/many/08402024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610349"object-tests/many/08412024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61034a"object-tests/many/08422024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61034b"object-tests/many/08432024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61034c"object-tests/many/08442024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61034d"object-tests/many/08452024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61034e"object-tests/many/08462024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61034f"object-tests/many/08472024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610350"object-tests/many/08482024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610351"object-tests/many/08492024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610352"object-tests/many/08502024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610353"object-tests/many/08512024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610354"object-tests/many/08522024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610355"object-tests/many/08532024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610356"object-tests/many/08542024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610357"object-tests/many/08552024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610358"object-tests/many/08562024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610359"object-tests/many/08572024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61035a"object-tests/many/08582024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61035b"object-tests/many/08592024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61035c"object-tests/many/08602024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61035d"object-tests/many/08612024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61035e"object-tests/many/08622024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61035f"object-tests/many/08632024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610360"object-tests/many/08642024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610361"object-tests/many/08652024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610362"object-tests/many/08662024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610363"object-tests/many/08672024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610364"object-tests/many/08682024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610365"object-tests/many/08692024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610366"object-tests/many/08702024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610367"object-tests/many/08712024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610368"object-tests/many/08722024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610369"object-tests/many/08732024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61036a"object-tests/many/08742024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61036b"object-tests/many/08752024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61036c"object-tests/many/08762024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61036d"object-tests/many/08772024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61036e"object-tests/many/08782024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61036f"object-tests/many/08792024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610370"object-tests/many/08802024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610371"object-tests/many/08812024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610372"object-tests/many/08822024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610373"object-tests/many/08832024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610374"object-tests/many/08842024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610375"object-tests/many/08852024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610376"object-tests/many/08862024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610377"object-tests/many/08872024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610378"object-tests/many/08882024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610379"object-tests/many/08892024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61037a"object-tests/many/08902024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61037b"object-tests/many/08912024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61037c"object-tests/many/08922024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61037d"object-tests/many/08932024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61037e"object-tests/many/08942024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61037f"object-tests/many/08952024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610380"object-tests/many/08962024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610381"object-tests/many/08972024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610382"object-tests/many/08982024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610383"object-tests/many/08992024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610384"object-tests/many/09002024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610385"object-tests/many/09012024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610386"object-tests/many/09022024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610387"object-tests/many/09032024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610388"object-tests/many/09042024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610389"object-tests/many/09052024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61038a"object-tests/many/09062024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61038b"object-tests/many/09072024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61038c"object-tests/many/09082024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61038d"object-tests/many/09092024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61038e"object-tests/many/09102024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61038f"object-tests/many/09112024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610390"object-tests/many/09122024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610391"object-tests/many/09132024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610392"object-tests/many/09142024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610393"object-tests/many/09152024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610394"object-tests/many/09162024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610395"object-tests/many/09172024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610396"object-tests/many/09182024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610397"object-tests/many/09192024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610398"object-tests/many/09202024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610399"object-tests/many/09212024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61039a"object-tests/many/09222024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61039b"object-tests/many/09232024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61039c"object-tests/many/09242024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61039d"object-tests/many/09252024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61039e"object-tests/many/09262024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61039f"object-tests/many/09272024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103a0"object-tests/many/09282024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103a1"object-tests/many/09292024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103a2"object-tests/many/09302024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103a3"object-tests/many/09312024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103a4"object-tests/many/09322024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103a5"object-tests/many/09332024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103a6"object-tests/many/09342024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103a7"object-tests/many/09352024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103a8"object-tests/many/09362024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103a9"object-tests/many/09372024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103aa"object-tests/many/09382024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103ab"object-tests/many/09392024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103ac"object-tests/many/09402024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103ad"object-tests/many/09412024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103ae"object-tests/many/09422024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103af"object-tests/many/09432024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103b0"object-tests/many/09442024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103b1"object-tests/many/09452024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103b2"object-tests/many/09462024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103b3"object-tests/many/09472024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103b4"object-tests/many/09482024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103b5"object-tests/many/09492024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103b6"object-tests/many/09502024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103b7"object-tests/many/09512024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103b8"object-tests/many/09522024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103b9"object-tests/many/09532024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103ba"object-tests/many/09542024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103bb"object-tests/many/09552024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103bc"object-tests/many/09562024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103bd"object-tests/many/09572024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103be"object-tests/many/09582024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103bf"object-tests/many/09592024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103c0"object-tests/many/09602024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103c1"object-tests/many/09612024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103c2"object-tests/many/09622024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103c3"object-tests/many/09632024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103c4"object-tests/many/09642024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103c5"object-tests/many/09652024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103c6"object-tests/many/09662024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103c7"object-tests/many/09672024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103c8"object-tests/many/09682024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103c9"object-tests/many/09692024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103ca"object-tests/many/09702024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103cb"object-tests/many/09712024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103cc"object-tests/many/09722024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103cd"object-tests/many/09732024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103ce"object-tests/many/09742024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103cf"object-tests/many/09752024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103d0"object-tests/many/09762024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103d1"object-tests/many/09772024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103d2"object-tests/many/09782024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103d3"object-tests/many/09792024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103d4"object-tests/many/09802024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103d5"object-tests/many/09812024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103d6"object-tests/many/09822024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103d7"object-tests/many/09832024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103d8"object-tests/many/09842024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103d9"object-tests/many/09852024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103da"object-tests/many/09862024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103db"object-tests/many/09872024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103dc"object-tests/many/09882024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103dd"object-tests/many/09892024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103de"object-tests/many/09902024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103df"object-tests/many/09912024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103e0"object-tests/many/09922024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103e1"object-tests/many/09932024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103e2"object-tests/many/09942024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103e3"object-tests/many/09952024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103e4"object-tests/many/09962024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103e5"object-tests/many/09972024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103e6"object-tests/many/09982024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103e7"object-tests/many/09992024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECT" + "encoding": "empty" } } - }, + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 412 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "PreconditionFailed" + } + } + ], + "refusal": null + }, + { + "id": "operations/s3-express/copy-source-if-modified-since", + "profile": "s3-express", + "lane": "core", + "purpose": "Copy an object only if the source changed after a time, named in x-amz-copy-source-if-modified-since as an HTTP date", + "sources": [ + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html" + ], + "call": { + "key": "object-tests/copy/target.txt", + "op": "copy", + "source_if_modified_since": "Mon, 01 Jan 2024 00:00:00 GMT", + "source_key": "object-tests/copy/source.txt" + }, + "exchanges": [ + { + "alternatives": [ { "request": [ { @@ -153721,7 +195276,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -153729,7 +195284,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/" + "value": "/object-tests/copy/target.txt" } }, { @@ -153741,51 +195296,42 @@ } }, { - "at": "/query/list-type", - "optional": false, - "rule": { - "is": "equal", - "value": "2" - } - }, - { - "at": "/query/prefix", + "at": "/headers/x-amz-copy-source", "optional": false, "rule": { - "is": "equal", - "value": "object-tests/many/" + "is": "matches", + "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" } }, { - "at": "/query/encoding-type", + "at": "/headers/host", "optional": false, "rule": { "is": "equal", - "value": "url" + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" } }, { - "at": "/headers/host", + "at": "/headers/authorization", "optional": false, "rule": { - "is": "equal", - "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } }, { "at": "/headers/x-amz-s3session-token", "optional": false, "rule": { - "is": "equal", - "value": "fixture-session-token" + "is": "absent" } }, { - "at": "/headers/authorization", + "at": "/headers/x-amz-copy-source-if-modified-since", "optional": false, "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + "is": "equal", + "value": "Mon, 01 Jan 2024 00:00:00 GMT" } } ], @@ -153799,19 +195345,15 @@ "content-type": "application/xml", "date": { "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { "encoding": "utf8", - "data": "\nfixtureobject-tests/many/fixture-marker+/3a4e1000=10001000urltrueCRC64NVME"fixture-6d610000"object-tests/many/00002024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610001"object-tests/many/00012024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610002"object-tests/many/00022024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610003"object-tests/many/00032024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610004"object-tests/many/00042024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610005"object-tests/many/00052024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610006"object-tests/many/00062024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610007"object-tests/many/00072024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610008"object-tests/many/00082024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610009"object-tests/many/00092024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61000a"object-tests/many/00102024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61000b"object-tests/many/00112024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61000c"object-tests/many/00122024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61000d"object-tests/many/00132024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61000e"object-tests/many/00142024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61000f"object-tests/many/00152024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610010"object-tests/many/00162024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610011"object-tests/many/00172024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610012"object-tests/many/00182024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610013"object-tests/many/00192024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610014"object-tests/many/00202024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610015"object-tests/many/00212024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610016"object-tests/many/00222024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610017"object-tests/many/00232024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610018"object-tests/many/00242024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610019"object-tests/many/00252024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61001a"object-tests/many/00262024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61001b"object-tests/many/00272024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61001c"object-tests/many/00282024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61001d"object-tests/many/00292024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61001e"object-tests/many/00302024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61001f"object-tests/many/00312024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610020"object-tests/many/00322024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610021"object-tests/many/00332024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610022"object-tests/many/00342024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610023"object-tests/many/00352024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610024"object-tests/many/00362024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610025"object-tests/many/00372024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610026"object-tests/many/00382024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610027"object-tests/many/00392024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610028"object-tests/many/00402024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610029"object-tests/many/00412024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61002a"object-tests/many/00422024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61002b"object-tests/many/00432024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61002c"object-tests/many/00442024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61002d"object-tests/many/00452024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61002e"object-tests/many/00462024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61002f"object-tests/many/00472024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610030"object-tests/many/00482024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610031"object-tests/many/00492024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610032"object-tests/many/00502024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610033"object-tests/many/00512024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610034"object-tests/many/00522024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610035"object-tests/many/00532024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610036"object-tests/many/00542024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610037"object-tests/many/00552024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610038"object-tests/many/00562024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610039"object-tests/many/00572024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61003a"object-tests/many/00582024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61003b"object-tests/many/00592024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61003c"object-tests/many/00602024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61003d"object-tests/many/00612024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61003e"object-tests/many/00622024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61003f"object-tests/many/00632024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610040"object-tests/many/00642024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610041"object-tests/many/00652024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610042"object-tests/many/00662024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610043"object-tests/many/00672024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610044"object-tests/many/00682024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610045"object-tests/many/00692024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610046"object-tests/many/00702024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610047"object-tests/many/00712024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610048"object-tests/many/00722024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610049"object-tests/many/00732024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61004a"object-tests/many/00742024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61004b"object-tests/many/00752024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61004c"object-tests/many/00762024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61004d"object-tests/many/00772024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61004e"object-tests/many/00782024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61004f"object-tests/many/00792024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610050"object-tests/many/00802024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610051"object-tests/many/00812024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610052"object-tests/many/00822024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610053"object-tests/many/00832024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610054"object-tests/many/00842024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610055"object-tests/many/00852024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610056"object-tests/many/00862024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610057"object-tests/many/00872024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610058"object-tests/many/00882024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610059"object-tests/many/00892024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61005a"object-tests/many/00902024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61005b"object-tests/many/00912024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61005c"object-tests/many/00922024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61005d"object-tests/many/00932024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61005e"object-tests/many/00942024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61005f"object-tests/many/00952024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610060"object-tests/many/00962024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610061"object-tests/many/00972024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610062"object-tests/many/00982024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610063"object-tests/many/00992024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610064"object-tests/many/01002024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610065"object-tests/many/01012024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610066"object-tests/many/01022024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610067"object-tests/many/01032024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610068"object-tests/many/01042024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610069"object-tests/many/01052024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61006a"object-tests/many/01062024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61006b"object-tests/many/01072024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61006c"object-tests/many/01082024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61006d"object-tests/many/01092024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61006e"object-tests/many/01102024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61006f"object-tests/many/01112024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610070"object-tests/many/01122024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610071"object-tests/many/01132024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610072"object-tests/many/01142024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610073"object-tests/many/01152024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610074"object-tests/many/01162024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610075"object-tests/many/01172024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610076"object-tests/many/01182024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610077"object-tests/many/01192024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610078"object-tests/many/01202024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610079"object-tests/many/01212024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61007a"object-tests/many/01222024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61007b"object-tests/many/01232024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61007c"object-tests/many/01242024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61007d"object-tests/many/01252024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61007e"object-tests/many/01262024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61007f"object-tests/many/01272024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610080"object-tests/many/01282024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610081"object-tests/many/01292024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610082"object-tests/many/01302024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610083"object-tests/many/01312024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610084"object-tests/many/01322024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610085"object-tests/many/01332024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610086"object-tests/many/01342024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610087"object-tests/many/01352024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610088"object-tests/many/01362024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610089"object-tests/many/01372024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61008a"object-tests/many/01382024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61008b"object-tests/many/01392024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61008c"object-tests/many/01402024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61008d"object-tests/many/01412024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61008e"object-tests/many/01422024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61008f"object-tests/many/01432024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610090"object-tests/many/01442024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610091"object-tests/many/01452024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610092"object-tests/many/01462024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610093"object-tests/many/01472024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610094"object-tests/many/01482024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610095"object-tests/many/01492024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610096"object-tests/many/01502024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610097"object-tests/many/01512024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610098"object-tests/many/01522024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610099"object-tests/many/01532024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61009a"object-tests/many/01542024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61009b"object-tests/many/01552024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61009c"object-tests/many/01562024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61009d"object-tests/many/01572024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61009e"object-tests/many/01582024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61009f"object-tests/many/01592024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100a0"object-tests/many/01602024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100a1"object-tests/many/01612024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100a2"object-tests/many/01622024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100a3"object-tests/many/01632024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100a4"object-tests/many/01642024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100a5"object-tests/many/01652024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100a6"object-tests/many/01662024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100a7"object-tests/many/01672024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100a8"object-tests/many/01682024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100a9"object-tests/many/01692024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100aa"object-tests/many/01702024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100ab"object-tests/many/01712024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100ac"object-tests/many/01722024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100ad"object-tests/many/01732024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100ae"object-tests/many/01742024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100af"object-tests/many/01752024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100b0"object-tests/many/01762024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100b1"object-tests/many/01772024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100b2"object-tests/many/01782024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100b3"object-tests/many/01792024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100b4"object-tests/many/01802024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100b5"object-tests/many/01812024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100b6"object-tests/many/01822024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100b7"object-tests/many/01832024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100b8"object-tests/many/01842024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100b9"object-tests/many/01852024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100ba"object-tests/many/01862024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100bb"object-tests/many/01872024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100bc"object-tests/many/01882024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100bd"object-tests/many/01892024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100be"object-tests/many/01902024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100bf"object-tests/many/01912024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100c0"object-tests/many/01922024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100c1"object-tests/many/01932024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100c2"object-tests/many/01942024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100c3"object-tests/many/01952024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100c4"object-tests/many/01962024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100c5"object-tests/many/01972024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100c6"object-tests/many/01982024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100c7"object-tests/many/01992024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100c8"object-tests/many/02002024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100c9"object-tests/many/02012024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100ca"object-tests/many/02022024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100cb"object-tests/many/02032024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100cc"object-tests/many/02042024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100cd"object-tests/many/02052024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100ce"object-tests/many/02062024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100cf"object-tests/many/02072024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100d0"object-tests/many/02082024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100d1"object-tests/many/02092024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100d2"object-tests/many/02102024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100d3"object-tests/many/02112024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100d4"object-tests/many/02122024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100d5"object-tests/many/02132024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100d6"object-tests/many/02142024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100d7"object-tests/many/02152024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100d8"object-tests/many/02162024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100d9"object-tests/many/02172024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100da"object-tests/many/02182024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100db"object-tests/many/02192024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100dc"object-tests/many/02202024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100dd"object-tests/many/02212024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100de"object-tests/many/02222024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100df"object-tests/many/02232024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100e0"object-tests/many/02242024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100e1"object-tests/many/02252024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100e2"object-tests/many/02262024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100e3"object-tests/many/02272024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100e4"object-tests/many/02282024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100e5"object-tests/many/02292024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100e6"object-tests/many/02302024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100e7"object-tests/many/02312024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100e8"object-tests/many/02322024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100e9"object-tests/many/02332024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100ea"object-tests/many/02342024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100eb"object-tests/many/02352024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100ec"object-tests/many/02362024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100ed"object-tests/many/02372024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100ee"object-tests/many/02382024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100ef"object-tests/many/02392024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100f0"object-tests/many/02402024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100f1"object-tests/many/02412024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100f2"object-tests/many/02422024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100f3"object-tests/many/02432024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100f4"object-tests/many/02442024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100f5"object-tests/many/02452024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100f6"object-tests/many/02462024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100f7"object-tests/many/02472024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100f8"object-tests/many/02482024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100f9"object-tests/many/02492024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100fa"object-tests/many/02502024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100fb"object-tests/many/02512024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100fc"object-tests/many/02522024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100fd"object-tests/many/02532024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100fe"object-tests/many/02542024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6100ff"object-tests/many/02552024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610100"object-tests/many/02562024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610101"object-tests/many/02572024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610102"object-tests/many/02582024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610103"object-tests/many/02592024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610104"object-tests/many/02602024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610105"object-tests/many/02612024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610106"object-tests/many/02622024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610107"object-tests/many/02632024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610108"object-tests/many/02642024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610109"object-tests/many/02652024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61010a"object-tests/many/02662024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61010b"object-tests/many/02672024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61010c"object-tests/many/02682024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61010d"object-tests/many/02692024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61010e"object-tests/many/02702024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61010f"object-tests/many/02712024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610110"object-tests/many/02722024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610111"object-tests/many/02732024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610112"object-tests/many/02742024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610113"object-tests/many/02752024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610114"object-tests/many/02762024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610115"object-tests/many/02772024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610116"object-tests/many/02782024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610117"object-tests/many/02792024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610118"object-tests/many/02802024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610119"object-tests/many/02812024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61011a"object-tests/many/02822024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61011b"object-tests/many/02832024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61011c"object-tests/many/02842024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61011d"object-tests/many/02852024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61011e"object-tests/many/02862024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61011f"object-tests/many/02872024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610120"object-tests/many/02882024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610121"object-tests/many/02892024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610122"object-tests/many/02902024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610123"object-tests/many/02912024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610124"object-tests/many/02922024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610125"object-tests/many/02932024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610126"object-tests/many/02942024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610127"object-tests/many/02952024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610128"object-tests/many/02962024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610129"object-tests/many/02972024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61012a"object-tests/many/02982024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61012b"object-tests/many/02992024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61012c"object-tests/many/03002024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61012d"object-tests/many/03012024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61012e"object-tests/many/03022024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61012f"object-tests/many/03032024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610130"object-tests/many/03042024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610131"object-tests/many/03052024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610132"object-tests/many/03062024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610133"object-tests/many/03072024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610134"object-tests/many/03082024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610135"object-tests/many/03092024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610136"object-tests/many/03102024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610137"object-tests/many/03112024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610138"object-tests/many/03122024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610139"object-tests/many/03132024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61013a"object-tests/many/03142024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61013b"object-tests/many/03152024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61013c"object-tests/many/03162024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61013d"object-tests/many/03172024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61013e"object-tests/many/03182024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61013f"object-tests/many/03192024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610140"object-tests/many/03202024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610141"object-tests/many/03212024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610142"object-tests/many/03222024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610143"object-tests/many/03232024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610144"object-tests/many/03242024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610145"object-tests/many/03252024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610146"object-tests/many/03262024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610147"object-tests/many/03272024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610148"object-tests/many/03282024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610149"object-tests/many/03292024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61014a"object-tests/many/03302024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61014b"object-tests/many/03312024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61014c"object-tests/many/03322024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61014d"object-tests/many/03332024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61014e"object-tests/many/03342024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61014f"object-tests/many/03352024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610150"object-tests/many/03362024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610151"object-tests/many/03372024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610152"object-tests/many/03382024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610153"object-tests/many/03392024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610154"object-tests/many/03402024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610155"object-tests/many/03412024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610156"object-tests/many/03422024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610157"object-tests/many/03432024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610158"object-tests/many/03442024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610159"object-tests/many/03452024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61015a"object-tests/many/03462024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61015b"object-tests/many/03472024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61015c"object-tests/many/03482024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61015d"object-tests/many/03492024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61015e"object-tests/many/03502024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61015f"object-tests/many/03512024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610160"object-tests/many/03522024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610161"object-tests/many/03532024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610162"object-tests/many/03542024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610163"object-tests/many/03552024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610164"object-tests/many/03562024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610165"object-tests/many/03572024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610166"object-tests/many/03582024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610167"object-tests/many/03592024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610168"object-tests/many/03602024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610169"object-tests/many/03612024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61016a"object-tests/many/03622024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61016b"object-tests/many/03632024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61016c"object-tests/many/03642024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61016d"object-tests/many/03652024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61016e"object-tests/many/03662024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61016f"object-tests/many/03672024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610170"object-tests/many/03682024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610171"object-tests/many/03692024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610172"object-tests/many/03702024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610173"object-tests/many/03712024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610174"object-tests/many/03722024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610175"object-tests/many/03732024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610176"object-tests/many/03742024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610177"object-tests/many/03752024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610178"object-tests/many/03762024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610179"object-tests/many/03772024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61017a"object-tests/many/03782024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61017b"object-tests/many/03792024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61017c"object-tests/many/03802024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61017d"object-tests/many/03812024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61017e"object-tests/many/03822024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61017f"object-tests/many/03832024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610180"object-tests/many/03842024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610181"object-tests/many/03852024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610182"object-tests/many/03862024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610183"object-tests/many/03872024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610184"object-tests/many/03882024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610185"object-tests/many/03892024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610186"object-tests/many/03902024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610187"object-tests/many/03912024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610188"object-tests/many/03922024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610189"object-tests/many/03932024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61018a"object-tests/many/03942024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61018b"object-tests/many/03952024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61018c"object-tests/many/03962024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61018d"object-tests/many/03972024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61018e"object-tests/many/03982024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61018f"object-tests/many/03992024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610190"object-tests/many/04002024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610191"object-tests/many/04012024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610192"object-tests/many/04022024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610193"object-tests/many/04032024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610194"object-tests/many/04042024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610195"object-tests/many/04052024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610196"object-tests/many/04062024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610197"object-tests/many/04072024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610198"object-tests/many/04082024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610199"object-tests/many/04092024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61019a"object-tests/many/04102024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61019b"object-tests/many/04112024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61019c"object-tests/many/04122024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61019d"object-tests/many/04132024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61019e"object-tests/many/04142024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61019f"object-tests/many/04152024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101a0"object-tests/many/04162024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101a1"object-tests/many/04172024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101a2"object-tests/many/04182024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101a3"object-tests/many/04192024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101a4"object-tests/many/04202024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101a5"object-tests/many/04212024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101a6"object-tests/many/04222024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101a7"object-tests/many/04232024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101a8"object-tests/many/04242024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101a9"object-tests/many/04252024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101aa"object-tests/many/04262024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101ab"object-tests/many/04272024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101ac"object-tests/many/04282024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101ad"object-tests/many/04292024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101ae"object-tests/many/04302024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101af"object-tests/many/04312024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101b0"object-tests/many/04322024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101b1"object-tests/many/04332024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101b2"object-tests/many/04342024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101b3"object-tests/many/04352024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101b4"object-tests/many/04362024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101b5"object-tests/many/04372024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101b6"object-tests/many/04382024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101b7"object-tests/many/04392024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101b8"object-tests/many/04402024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101b9"object-tests/many/04412024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101ba"object-tests/many/04422024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101bb"object-tests/many/04432024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101bc"object-tests/many/04442024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101bd"object-tests/many/04452024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101be"object-tests/many/04462024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101bf"object-tests/many/04472024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101c0"object-tests/many/04482024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101c1"object-tests/many/04492024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101c2"object-tests/many/04502024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101c3"object-tests/many/04512024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101c4"object-tests/many/04522024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101c5"object-tests/many/04532024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101c6"object-tests/many/04542024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101c7"object-tests/many/04552024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101c8"object-tests/many/04562024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101c9"object-tests/many/04572024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101ca"object-tests/many/04582024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101cb"object-tests/many/04592024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101cc"object-tests/many/04602024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101cd"object-tests/many/04612024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101ce"object-tests/many/04622024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101cf"object-tests/many/04632024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101d0"object-tests/many/04642024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101d1"object-tests/many/04652024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101d2"object-tests/many/04662024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101d3"object-tests/many/04672024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101d4"object-tests/many/04682024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101d5"object-tests/many/04692024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101d6"object-tests/many/04702024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101d7"object-tests/many/04712024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101d8"object-tests/many/04722024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101d9"object-tests/many/04732024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101da"object-tests/many/04742024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101db"object-tests/many/04752024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101dc"object-tests/many/04762024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101dd"object-tests/many/04772024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101de"object-tests/many/04782024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101df"object-tests/many/04792024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101e0"object-tests/many/04802024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101e1"object-tests/many/04812024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101e2"object-tests/many/04822024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101e3"object-tests/many/04832024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101e4"object-tests/many/04842024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101e5"object-tests/many/04852024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101e6"object-tests/many/04862024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101e7"object-tests/many/04872024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101e8"object-tests/many/04882024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101e9"object-tests/many/04892024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101ea"object-tests/many/04902024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101eb"object-tests/many/04912024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101ec"object-tests/many/04922024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101ed"object-tests/many/04932024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101ee"object-tests/many/04942024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101ef"object-tests/many/04952024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101f0"object-tests/many/04962024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101f1"object-tests/many/04972024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101f2"object-tests/many/04982024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101f3"object-tests/many/04992024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101f4"object-tests/many/05002024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101f5"object-tests/many/05012024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101f6"object-tests/many/05022024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101f7"object-tests/many/05032024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101f8"object-tests/many/05042024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101f9"object-tests/many/05052024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101fa"object-tests/many/05062024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101fb"object-tests/many/05072024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101fc"object-tests/many/05082024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101fd"object-tests/many/05092024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101fe"object-tests/many/05102024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6101ff"object-tests/many/05112024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610200"object-tests/many/05122024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610201"object-tests/many/05132024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610202"object-tests/many/05142024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610203"object-tests/many/05152024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610204"object-tests/many/05162024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610205"object-tests/many/05172024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610206"object-tests/many/05182024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610207"object-tests/many/05192024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610208"object-tests/many/05202024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610209"object-tests/many/05212024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61020a"object-tests/many/05222024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61020b"object-tests/many/05232024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61020c"object-tests/many/05242024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61020d"object-tests/many/05252024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61020e"object-tests/many/05262024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61020f"object-tests/many/05272024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610210"object-tests/many/05282024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610211"object-tests/many/05292024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610212"object-tests/many/05302024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610213"object-tests/many/05312024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610214"object-tests/many/05322024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610215"object-tests/many/05332024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610216"object-tests/many/05342024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610217"object-tests/many/05352024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610218"object-tests/many/05362024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610219"object-tests/many/05372024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61021a"object-tests/many/05382024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61021b"object-tests/many/05392024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61021c"object-tests/many/05402024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61021d"object-tests/many/05412024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61021e"object-tests/many/05422024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61021f"object-tests/many/05432024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610220"object-tests/many/05442024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610221"object-tests/many/05452024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610222"object-tests/many/05462024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610223"object-tests/many/05472024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610224"object-tests/many/05482024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610225"object-tests/many/05492024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610226"object-tests/many/05502024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610227"object-tests/many/05512024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610228"object-tests/many/05522024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610229"object-tests/many/05532024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61022a"object-tests/many/05542024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61022b"object-tests/many/05552024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61022c"object-tests/many/05562024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61022d"object-tests/many/05572024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61022e"object-tests/many/05582024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61022f"object-tests/many/05592024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610230"object-tests/many/05602024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610231"object-tests/many/05612024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610232"object-tests/many/05622024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610233"object-tests/many/05632024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610234"object-tests/many/05642024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610235"object-tests/many/05652024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610236"object-tests/many/05662024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610237"object-tests/many/05672024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610238"object-tests/many/05682024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610239"object-tests/many/05692024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61023a"object-tests/many/05702024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61023b"object-tests/many/05712024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61023c"object-tests/many/05722024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61023d"object-tests/many/05732024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61023e"object-tests/many/05742024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61023f"object-tests/many/05752024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610240"object-tests/many/05762024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610241"object-tests/many/05772024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610242"object-tests/many/05782024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610243"object-tests/many/05792024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610244"object-tests/many/05802024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610245"object-tests/many/05812024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610246"object-tests/many/05822024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610247"object-tests/many/05832024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610248"object-tests/many/05842024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610249"object-tests/many/05852024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61024a"object-tests/many/05862024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61024b"object-tests/many/05872024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61024c"object-tests/many/05882024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61024d"object-tests/many/05892024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61024e"object-tests/many/05902024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61024f"object-tests/many/05912024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610250"object-tests/many/05922024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610251"object-tests/many/05932024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610252"object-tests/many/05942024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610253"object-tests/many/05952024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610254"object-tests/many/05962024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610255"object-tests/many/05972024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610256"object-tests/many/05982024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610257"object-tests/many/05992024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610258"object-tests/many/06002024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610259"object-tests/many/06012024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61025a"object-tests/many/06022024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61025b"object-tests/many/06032024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61025c"object-tests/many/06042024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61025d"object-tests/many/06052024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61025e"object-tests/many/06062024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61025f"object-tests/many/06072024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610260"object-tests/many/06082024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610261"object-tests/many/06092024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610262"object-tests/many/06102024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610263"object-tests/many/06112024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610264"object-tests/many/06122024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610265"object-tests/many/06132024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610266"object-tests/many/06142024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610267"object-tests/many/06152024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610268"object-tests/many/06162024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610269"object-tests/many/06172024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61026a"object-tests/many/06182024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61026b"object-tests/many/06192024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61026c"object-tests/many/06202024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61026d"object-tests/many/06212024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61026e"object-tests/many/06222024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61026f"object-tests/many/06232024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610270"object-tests/many/06242024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610271"object-tests/many/06252024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610272"object-tests/many/06262024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610273"object-tests/many/06272024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610274"object-tests/many/06282024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610275"object-tests/many/06292024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610276"object-tests/many/06302024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610277"object-tests/many/06312024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610278"object-tests/many/06322024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610279"object-tests/many/06332024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61027a"object-tests/many/06342024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61027b"object-tests/many/06352024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61027c"object-tests/many/06362024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61027d"object-tests/many/06372024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61027e"object-tests/many/06382024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61027f"object-tests/many/06392024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610280"object-tests/many/06402024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610281"object-tests/many/06412024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610282"object-tests/many/06422024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610283"object-tests/many/06432024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610284"object-tests/many/06442024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610285"object-tests/many/06452024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610286"object-tests/many/06462024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610287"object-tests/many/06472024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610288"object-tests/many/06482024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610289"object-tests/many/06492024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61028a"object-tests/many/06502024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61028b"object-tests/many/06512024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61028c"object-tests/many/06522024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61028d"object-tests/many/06532024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61028e"object-tests/many/06542024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61028f"object-tests/many/06552024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610290"object-tests/many/06562024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610291"object-tests/many/06572024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610292"object-tests/many/06582024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610293"object-tests/many/06592024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610294"object-tests/many/06602024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610295"object-tests/many/06612024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610296"object-tests/many/06622024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610297"object-tests/many/06632024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610298"object-tests/many/06642024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610299"object-tests/many/06652024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61029a"object-tests/many/06662024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61029b"object-tests/many/06672024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61029c"object-tests/many/06682024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61029d"object-tests/many/06692024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61029e"object-tests/many/06702024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61029f"object-tests/many/06712024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102a0"object-tests/many/06722024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102a1"object-tests/many/06732024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102a2"object-tests/many/06742024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102a3"object-tests/many/06752024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102a4"object-tests/many/06762024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102a5"object-tests/many/06772024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102a6"object-tests/many/06782024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102a7"object-tests/many/06792024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102a8"object-tests/many/06802024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102a9"object-tests/many/06812024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102aa"object-tests/many/06822024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102ab"object-tests/many/06832024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102ac"object-tests/many/06842024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102ad"object-tests/many/06852024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102ae"object-tests/many/06862024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102af"object-tests/many/06872024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102b0"object-tests/many/06882024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102b1"object-tests/many/06892024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102b2"object-tests/many/06902024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102b3"object-tests/many/06912024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102b4"object-tests/many/06922024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102b5"object-tests/many/06932024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102b6"object-tests/many/06942024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102b7"object-tests/many/06952024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102b8"object-tests/many/06962024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102b9"object-tests/many/06972024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102ba"object-tests/many/06982024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102bb"object-tests/many/06992024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102bc"object-tests/many/07002024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102bd"object-tests/many/07012024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102be"object-tests/many/07022024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102bf"object-tests/many/07032024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102c0"object-tests/many/07042024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102c1"object-tests/many/07052024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102c2"object-tests/many/07062024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102c3"object-tests/many/07072024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102c4"object-tests/many/07082024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102c5"object-tests/many/07092024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102c6"object-tests/many/07102024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102c7"object-tests/many/07112024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102c8"object-tests/many/07122024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102c9"object-tests/many/07132024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102ca"object-tests/many/07142024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102cb"object-tests/many/07152024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102cc"object-tests/many/07162024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102cd"object-tests/many/07172024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102ce"object-tests/many/07182024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102cf"object-tests/many/07192024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102d0"object-tests/many/07202024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102d1"object-tests/many/07212024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102d2"object-tests/many/07222024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102d3"object-tests/many/07232024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102d4"object-tests/many/07242024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102d5"object-tests/many/07252024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102d6"object-tests/many/07262024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102d7"object-tests/many/07272024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102d8"object-tests/many/07282024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102d9"object-tests/many/07292024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102da"object-tests/many/07302024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102db"object-tests/many/07312024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102dc"object-tests/many/07322024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102dd"object-tests/many/07332024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102de"object-tests/many/07342024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102df"object-tests/many/07352024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102e0"object-tests/many/07362024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102e1"object-tests/many/07372024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102e2"object-tests/many/07382024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102e3"object-tests/many/07392024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102e4"object-tests/many/07402024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102e5"object-tests/many/07412024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102e6"object-tests/many/07422024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102e7"object-tests/many/07432024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102e8"object-tests/many/07442024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102e9"object-tests/many/07452024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102ea"object-tests/many/07462024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102eb"object-tests/many/07472024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102ec"object-tests/many/07482024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102ed"object-tests/many/07492024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102ee"object-tests/many/07502024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102ef"object-tests/many/07512024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102f0"object-tests/many/07522024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102f1"object-tests/many/07532024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102f2"object-tests/many/07542024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102f3"object-tests/many/07552024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102f4"object-tests/many/07562024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102f5"object-tests/many/07572024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102f6"object-tests/many/07582024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102f7"object-tests/many/07592024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102f8"object-tests/many/07602024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102f9"object-tests/many/07612024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102fa"object-tests/many/07622024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102fb"object-tests/many/07632024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102fc"object-tests/many/07642024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102fd"object-tests/many/07652024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102fe"object-tests/many/07662024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6102ff"object-tests/many/07672024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610300"object-tests/many/07682024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610301"object-tests/many/07692024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610302"object-tests/many/07702024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610303"object-tests/many/07712024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610304"object-tests/many/07722024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610305"object-tests/many/07732024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610306"object-tests/many/07742024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610307"object-tests/many/07752024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610308"object-tests/many/07762024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610309"object-tests/many/07772024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61030a"object-tests/many/07782024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61030b"object-tests/many/07792024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61030c"object-tests/many/07802024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61030d"object-tests/many/07812024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61030e"object-tests/many/07822024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61030f"object-tests/many/07832024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610310"object-tests/many/07842024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610311"object-tests/many/07852024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610312"object-tests/many/07862024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610313"object-tests/many/07872024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610314"object-tests/many/07882024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610315"object-tests/many/07892024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610316"object-tests/many/07902024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610317"object-tests/many/07912024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610318"object-tests/many/07922024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610319"object-tests/many/07932024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61031a"object-tests/many/07942024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61031b"object-tests/many/07952024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61031c"object-tests/many/07962024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61031d"object-tests/many/07972024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61031e"object-tests/many/07982024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61031f"object-tests/many/07992024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610320"object-tests/many/08002024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610321"object-tests/many/08012024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610322"object-tests/many/08022024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610323"object-tests/many/08032024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610324"object-tests/many/08042024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610325"object-tests/many/08052024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610326"object-tests/many/08062024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610327"object-tests/many/08072024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610328"object-tests/many/08082024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610329"object-tests/many/08092024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61032a"object-tests/many/08102024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61032b"object-tests/many/08112024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61032c"object-tests/many/08122024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61032d"object-tests/many/08132024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61032e"object-tests/many/08142024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61032f"object-tests/many/08152024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610330"object-tests/many/08162024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610331"object-tests/many/08172024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610332"object-tests/many/08182024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610333"object-tests/many/08192024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610334"object-tests/many/08202024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610335"object-tests/many/08212024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610336"object-tests/many/08222024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610337"object-tests/many/08232024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610338"object-tests/many/08242024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610339"object-tests/many/08252024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61033a"object-tests/many/08262024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61033b"object-tests/many/08272024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61033c"object-tests/many/08282024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61033d"object-tests/many/08292024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61033e"object-tests/many/08302024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61033f"object-tests/many/08312024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610340"object-tests/many/08322024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610341"object-tests/many/08332024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610342"object-tests/many/08342024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610343"object-tests/many/08352024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610344"object-tests/many/08362024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610345"object-tests/many/08372024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610346"object-tests/many/08382024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610347"object-tests/many/08392024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610348"object-tests/many/08402024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610349"object-tests/many/08412024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61034a"object-tests/many/08422024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61034b"object-tests/many/08432024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61034c"object-tests/many/08442024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61034d"object-tests/many/08452024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61034e"object-tests/many/08462024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61034f"object-tests/many/08472024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610350"object-tests/many/08482024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610351"object-tests/many/08492024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610352"object-tests/many/08502024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610353"object-tests/many/08512024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610354"object-tests/many/08522024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610355"object-tests/many/08532024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610356"object-tests/many/08542024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610357"object-tests/many/08552024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610358"object-tests/many/08562024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610359"object-tests/many/08572024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61035a"object-tests/many/08582024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61035b"object-tests/many/08592024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61035c"object-tests/many/08602024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61035d"object-tests/many/08612024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61035e"object-tests/many/08622024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61035f"object-tests/many/08632024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610360"object-tests/many/08642024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610361"object-tests/many/08652024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610362"object-tests/many/08662024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610363"object-tests/many/08672024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610364"object-tests/many/08682024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610365"object-tests/many/08692024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610366"object-tests/many/08702024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610367"object-tests/many/08712024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610368"object-tests/many/08722024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610369"object-tests/many/08732024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61036a"object-tests/many/08742024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61036b"object-tests/many/08752024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61036c"object-tests/many/08762024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61036d"object-tests/many/08772024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61036e"object-tests/many/08782024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61036f"object-tests/many/08792024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610370"object-tests/many/08802024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610371"object-tests/many/08812024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610372"object-tests/many/08822024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610373"object-tests/many/08832024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610374"object-tests/many/08842024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610375"object-tests/many/08852024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610376"object-tests/many/08862024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610377"object-tests/many/08872024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610378"object-tests/many/08882024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610379"object-tests/many/08892024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61037a"object-tests/many/08902024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61037b"object-tests/many/08912024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61037c"object-tests/many/08922024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61037d"object-tests/many/08932024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61037e"object-tests/many/08942024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61037f"object-tests/many/08952024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610380"object-tests/many/08962024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610381"object-tests/many/08972024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610382"object-tests/many/08982024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610383"object-tests/many/08992024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610384"object-tests/many/09002024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610385"object-tests/many/09012024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610386"object-tests/many/09022024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610387"object-tests/many/09032024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610388"object-tests/many/09042024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610389"object-tests/many/09052024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61038a"object-tests/many/09062024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61038b"object-tests/many/09072024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61038c"object-tests/many/09082024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61038d"object-tests/many/09092024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61038e"object-tests/many/09102024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61038f"object-tests/many/09112024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610390"object-tests/many/09122024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610391"object-tests/many/09132024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610392"object-tests/many/09142024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610393"object-tests/many/09152024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610394"object-tests/many/09162024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610395"object-tests/many/09172024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610396"object-tests/many/09182024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610397"object-tests/many/09192024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610398"object-tests/many/09202024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d610399"object-tests/many/09212024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61039a"object-tests/many/09222024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61039b"object-tests/many/09232024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61039c"object-tests/many/09242024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61039d"object-tests/many/09252024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61039e"object-tests/many/09262024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d61039f"object-tests/many/09272024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103a0"object-tests/many/09282024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103a1"object-tests/many/09292024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103a2"object-tests/many/09302024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103a3"object-tests/many/09312024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103a4"object-tests/many/09322024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103a5"object-tests/many/09332024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103a6"object-tests/many/09342024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103a7"object-tests/many/09352024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103a8"object-tests/many/09362024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103a9"object-tests/many/09372024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103aa"object-tests/many/09382024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103ab"object-tests/many/09392024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103ac"object-tests/many/09402024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103ad"object-tests/many/09412024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103ae"object-tests/many/09422024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103af"object-tests/many/09432024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103b0"object-tests/many/09442024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103b1"object-tests/many/09452024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103b2"object-tests/many/09462024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103b3"object-tests/many/09472024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103b4"object-tests/many/09482024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103b5"object-tests/many/09492024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103b6"object-tests/many/09502024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103b7"object-tests/many/09512024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103b8"object-tests/many/09522024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103b9"object-tests/many/09532024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103ba"object-tests/many/09542024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103bb"object-tests/many/09552024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103bc"object-tests/many/09562024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103bd"object-tests/many/09572024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103be"object-tests/many/09582024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103bf"object-tests/many/09592024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103c0"object-tests/many/09602024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103c1"object-tests/many/09612024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103c2"object-tests/many/09622024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103c3"object-tests/many/09632024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103c4"object-tests/many/09642024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103c5"object-tests/many/09652024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103c6"object-tests/many/09662024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103c7"object-tests/many/09672024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103c8"object-tests/many/09682024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103c9"object-tests/many/09692024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103ca"object-tests/many/09702024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103cb"object-tests/many/09712024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103cc"object-tests/many/09722024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103cd"object-tests/many/09732024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103ce"object-tests/many/09742024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103cf"object-tests/many/09752024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103d0"object-tests/many/09762024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103d1"object-tests/many/09772024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103d2"object-tests/many/09782024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103d3"object-tests/many/09792024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103d4"object-tests/many/09802024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103d5"object-tests/many/09812024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103d6"object-tests/many/09822024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103d7"object-tests/many/09832024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103d8"object-tests/many/09842024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103d9"object-tests/many/09852024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103da"object-tests/many/09862024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103db"object-tests/many/09872024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103dc"object-tests/many/09882024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103dd"object-tests/many/09892024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103de"object-tests/many/09902024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103df"object-tests/many/09912024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103e0"object-tests/many/09922024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103e1"object-tests/many/09932024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103e2"object-tests/many/09942024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103e3"object-tests/many/09952024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103e4"object-tests/many/09962024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103e5"object-tests/many/09972024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103e6"object-tests/many/09982024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-6d6103e7"object-tests/many/09992024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECT" - } + "data": "\n2024-01-01T00:00:00.000Z"fixture-etag"" + }, + "framing": "chunked" } - } - ] - }, - { - "alternatives": [ + }, { "request": [ { @@ -153819,7 +195361,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "HEAD" } }, { @@ -153827,7 +195369,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/" + "value": "/object-tests/copy/source.txt" } }, { @@ -153838,30 +195380,6 @@ "value": "" } }, - { - "at": "/query/list-type", - "optional": false, - "rule": { - "is": "equal", - "value": "2" - } - }, - { - "at": "/query/prefix", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/many/" - } - }, - { - "at": "/query/continuation-token", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-marker+/3a4e1000=" - } - }, { "at": "/headers/host", "optional": false, @@ -153871,22 +195389,112 @@ } }, { - "at": "/headers/x-amz-s3session-token", + "at": "/headers/authorization", "optional": false, "rule": { - "is": "equal", - "value": "fixture-session-token" + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } }, { - "at": "/headers/authorization", + "at": "/headers/x-amz-s3session-token", "optional": false, "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + "is": "absent" } } ], + "then": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/object-tests/copy/target.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/x-amz-copy-source", + "optional": false, + "rule": { + "is": "matches", + "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" + } + }, + { + "at": "/headers/host", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "absent" + } + }, + { + "at": "/headers/x-amz-copy-source-if-modified-since", + "optional": false, + "rule": { + "is": "equal", + "value": "Mon, 01 Jan 2024 00:00:00 GMT" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + } + }, + "body": { + "encoding": "utf8", + "data": "\n2024-01-01T00:00:00.000Z"fixture-etag"" + }, + "framing": "chunked" + } + } + ] + } + ], "allow_headers": [ "content-type" ], @@ -153894,18 +195502,50 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", + "content-length": "5", "date": { "from": "now" }, + "etag": "\"fixture-etag\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nfixtureobject-tests/many/fixture-marker+/3a4e1000=11000falseCRC64NVME"fixture-6d6103e8"object-tests/many/10002024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECT" + "encoding": "empty" } } - }, + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + } + ], + "refusal": null + }, + { + "id": "operations/s3-express/copy-source-if-unmodified-since-failed", + "profile": "s3-express", + "lane": "core", + "purpose": "Report a copy whose source changed after the time in x-amz-copy-source-if-unmodified-since as a failed condition, 412 PreconditionFailed", + "sources": [ + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html" + ], + "call": { + "key": "object-tests/copy/target.txt", + "op": "copy", + "source_if_unmodified_since": "Mon, 01 Jan 2024 00:00:00 GMT", + "source_key": "object-tests/copy/source.txt" + }, + "exchanges": [ + { + "alternatives": [ { "request": [ { @@ -153913,7 +195553,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -153921,7 +195561,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/" + "value": "/object-tests/copy/target.txt" } }, { @@ -153933,51 +195573,96 @@ } }, { - "at": "/query/list-type", + "at": "/headers/x-amz-copy-source", + "optional": false, + "rule": { + "is": "matches", + "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" + } + }, + { + "at": "/headers/host", "optional": false, "rule": { "is": "equal", - "value": "2" + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" } }, { - "at": "/query/prefix", + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "absent" + } + }, + { + "at": "/headers/x-amz-copy-source-if-unmodified-since", "optional": false, "rule": { "is": "equal", - "value": "object-tests/many/" + "value": "Mon, 01 Jan 2024 00:00:00 GMT" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 412, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" } }, + "body": { + "encoding": "utf8", + "data": "\nPreconditionFailedFixture error" + }, + "framing": "chunked" + } + }, + { + "request": [ { - "at": "/query/continuation-token", + "at": "/method", "optional": false, "rule": { "is": "equal", - "value": "fixture-marker+/3a4e1000=" + "value": "HEAD" } }, { - "at": "/query/encoding-type", + "at": "/path", "optional": false, "rule": { "is": "equal", - "value": "url" + "value": "/object-tests/copy/source.txt" } }, { - "at": "/headers/host", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + "value": "" } }, { - "at": "/headers/x-amz-s3session-token", + "at": "/headers/host", "optional": false, "rule": { "is": "equal", - "value": "fixture-session-token" + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" } }, { @@ -153985,10 +195670,108 @@ "optional": false, "rule": { "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "absent" } } ], + "then": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/object-tests/copy/target.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/x-amz-copy-source", + "optional": false, + "rule": { + "is": "matches", + "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" + } + }, + { + "at": "/headers/host", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "absent" + } + }, + { + "at": "/headers/x-amz-copy-source-if-unmodified-since", + "optional": false, + "rule": { + "is": "equal", + "value": "Mon, 01 Jan 2024 00:00:00 GMT" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 412, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + } + }, + "body": { + "encoding": "utf8", + "data": "\nPreconditionFailedFixture error" + }, + "framing": "chunked" + } + } + ] + } + ], "allow_headers": [ "content-type" ], @@ -153996,1055 +195779,61 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", + "content-length": "5", "date": { "from": "now" }, + "etag": "\"fixture-etag\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nfixtureobject-tests/many/fixture-marker+/3a4e1000=11000urlfalseCRC64NVME"fixture-6d6103e8"object-tests/many/10002024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECT" + "encoding": "empty" } } } ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/keys", - "optional": false, - "rule": { - "is": "equal", - "value": [ - "object-tests/many/0000", - "object-tests/many/0001", - "object-tests/many/0002", - "object-tests/many/0003", - "object-tests/many/0004", - "object-tests/many/0005", - "object-tests/many/0006", - "object-tests/many/0007", - "object-tests/many/0008", - "object-tests/many/0009", - "object-tests/many/0010", - "object-tests/many/0011", - "object-tests/many/0012", - "object-tests/many/0013", - "object-tests/many/0014", - "object-tests/many/0015", - "object-tests/many/0016", - "object-tests/many/0017", - "object-tests/many/0018", - "object-tests/many/0019", - "object-tests/many/0020", - "object-tests/many/0021", - "object-tests/many/0022", - "object-tests/many/0023", - "object-tests/many/0024", - "object-tests/many/0025", - "object-tests/many/0026", - "object-tests/many/0027", - "object-tests/many/0028", - "object-tests/many/0029", - "object-tests/many/0030", - "object-tests/many/0031", - "object-tests/many/0032", - "object-tests/many/0033", - "object-tests/many/0034", - "object-tests/many/0035", - "object-tests/many/0036", - "object-tests/many/0037", - "object-tests/many/0038", - "object-tests/many/0039", - "object-tests/many/0040", - "object-tests/many/0041", - "object-tests/many/0042", - "object-tests/many/0043", - "object-tests/many/0044", - "object-tests/many/0045", - "object-tests/many/0046", - "object-tests/many/0047", - "object-tests/many/0048", - "object-tests/many/0049", - "object-tests/many/0050", - "object-tests/many/0051", - "object-tests/many/0052", - "object-tests/many/0053", - "object-tests/many/0054", - "object-tests/many/0055", - "object-tests/many/0056", - "object-tests/many/0057", - "object-tests/many/0058", - "object-tests/many/0059", - "object-tests/many/0060", - "object-tests/many/0061", - "object-tests/many/0062", - "object-tests/many/0063", - "object-tests/many/0064", - "object-tests/many/0065", - "object-tests/many/0066", - "object-tests/many/0067", - "object-tests/many/0068", - "object-tests/many/0069", - "object-tests/many/0070", - "object-tests/many/0071", - "object-tests/many/0072", - "object-tests/many/0073", - "object-tests/many/0074", - "object-tests/many/0075", - "object-tests/many/0076", - "object-tests/many/0077", - "object-tests/many/0078", - "object-tests/many/0079", - "object-tests/many/0080", - "object-tests/many/0081", - "object-tests/many/0082", - "object-tests/many/0083", - "object-tests/many/0084", - "object-tests/many/0085", - "object-tests/many/0086", - "object-tests/many/0087", - "object-tests/many/0088", - "object-tests/many/0089", - "object-tests/many/0090", - "object-tests/many/0091", - "object-tests/many/0092", - "object-tests/many/0093", - "object-tests/many/0094", - "object-tests/many/0095", - "object-tests/many/0096", - "object-tests/many/0097", - "object-tests/many/0098", - "object-tests/many/0099", - "object-tests/many/0100", - "object-tests/many/0101", - "object-tests/many/0102", - "object-tests/many/0103", - "object-tests/many/0104", - "object-tests/many/0105", - "object-tests/many/0106", - "object-tests/many/0107", - "object-tests/many/0108", - "object-tests/many/0109", - "object-tests/many/0110", - "object-tests/many/0111", - "object-tests/many/0112", - "object-tests/many/0113", - "object-tests/many/0114", - "object-tests/many/0115", - "object-tests/many/0116", - "object-tests/many/0117", - "object-tests/many/0118", - "object-tests/many/0119", - "object-tests/many/0120", - "object-tests/many/0121", - "object-tests/many/0122", - "object-tests/many/0123", - "object-tests/many/0124", - "object-tests/many/0125", - "object-tests/many/0126", - "object-tests/many/0127", - "object-tests/many/0128", - "object-tests/many/0129", - "object-tests/many/0130", - "object-tests/many/0131", - "object-tests/many/0132", - "object-tests/many/0133", - "object-tests/many/0134", - "object-tests/many/0135", - "object-tests/many/0136", - "object-tests/many/0137", - "object-tests/many/0138", - "object-tests/many/0139", - "object-tests/many/0140", - "object-tests/many/0141", - "object-tests/many/0142", - "object-tests/many/0143", - "object-tests/many/0144", - "object-tests/many/0145", - "object-tests/many/0146", - "object-tests/many/0147", - "object-tests/many/0148", - "object-tests/many/0149", - "object-tests/many/0150", - "object-tests/many/0151", - "object-tests/many/0152", - "object-tests/many/0153", - "object-tests/many/0154", - "object-tests/many/0155", - "object-tests/many/0156", - "object-tests/many/0157", - "object-tests/many/0158", - "object-tests/many/0159", - "object-tests/many/0160", - "object-tests/many/0161", - "object-tests/many/0162", - "object-tests/many/0163", - "object-tests/many/0164", - "object-tests/many/0165", - "object-tests/many/0166", - "object-tests/many/0167", - "object-tests/many/0168", - "object-tests/many/0169", - "object-tests/many/0170", - "object-tests/many/0171", - "object-tests/many/0172", - "object-tests/many/0173", - "object-tests/many/0174", - "object-tests/many/0175", - "object-tests/many/0176", - "object-tests/many/0177", - "object-tests/many/0178", - "object-tests/many/0179", - "object-tests/many/0180", - "object-tests/many/0181", - "object-tests/many/0182", - "object-tests/many/0183", - "object-tests/many/0184", - "object-tests/many/0185", - "object-tests/many/0186", - "object-tests/many/0187", - "object-tests/many/0188", - "object-tests/many/0189", - "object-tests/many/0190", - "object-tests/many/0191", - "object-tests/many/0192", - "object-tests/many/0193", - "object-tests/many/0194", - "object-tests/many/0195", - "object-tests/many/0196", - "object-tests/many/0197", - "object-tests/many/0198", - "object-tests/many/0199", - "object-tests/many/0200", - "object-tests/many/0201", - "object-tests/many/0202", - "object-tests/many/0203", - "object-tests/many/0204", - "object-tests/many/0205", - "object-tests/many/0206", - "object-tests/many/0207", - "object-tests/many/0208", - "object-tests/many/0209", - "object-tests/many/0210", - "object-tests/many/0211", - "object-tests/many/0212", - "object-tests/many/0213", - "object-tests/many/0214", - "object-tests/many/0215", - "object-tests/many/0216", - "object-tests/many/0217", - "object-tests/many/0218", - "object-tests/many/0219", - "object-tests/many/0220", - "object-tests/many/0221", - "object-tests/many/0222", - "object-tests/many/0223", - "object-tests/many/0224", - "object-tests/many/0225", - "object-tests/many/0226", - "object-tests/many/0227", - "object-tests/many/0228", - "object-tests/many/0229", - "object-tests/many/0230", - "object-tests/many/0231", - "object-tests/many/0232", - "object-tests/many/0233", - "object-tests/many/0234", - "object-tests/many/0235", - "object-tests/many/0236", - "object-tests/many/0237", - "object-tests/many/0238", - "object-tests/many/0239", - "object-tests/many/0240", - "object-tests/many/0241", - "object-tests/many/0242", - "object-tests/many/0243", - "object-tests/many/0244", - "object-tests/many/0245", - "object-tests/many/0246", - "object-tests/many/0247", - "object-tests/many/0248", - "object-tests/many/0249", - "object-tests/many/0250", - "object-tests/many/0251", - "object-tests/many/0252", - "object-tests/many/0253", - "object-tests/many/0254", - "object-tests/many/0255", - "object-tests/many/0256", - "object-tests/many/0257", - "object-tests/many/0258", - "object-tests/many/0259", - "object-tests/many/0260", - "object-tests/many/0261", - "object-tests/many/0262", - "object-tests/many/0263", - "object-tests/many/0264", - "object-tests/many/0265", - "object-tests/many/0266", - "object-tests/many/0267", - "object-tests/many/0268", - "object-tests/many/0269", - "object-tests/many/0270", - "object-tests/many/0271", - "object-tests/many/0272", - "object-tests/many/0273", - "object-tests/many/0274", - "object-tests/many/0275", - "object-tests/many/0276", - "object-tests/many/0277", - "object-tests/many/0278", - "object-tests/many/0279", - "object-tests/many/0280", - "object-tests/many/0281", - "object-tests/many/0282", - "object-tests/many/0283", - "object-tests/many/0284", - "object-tests/many/0285", - "object-tests/many/0286", - "object-tests/many/0287", - "object-tests/many/0288", - "object-tests/many/0289", - "object-tests/many/0290", - "object-tests/many/0291", - "object-tests/many/0292", - "object-tests/many/0293", - "object-tests/many/0294", - "object-tests/many/0295", - "object-tests/many/0296", - "object-tests/many/0297", - "object-tests/many/0298", - "object-tests/many/0299", - "object-tests/many/0300", - "object-tests/many/0301", - "object-tests/many/0302", - "object-tests/many/0303", - "object-tests/many/0304", - "object-tests/many/0305", - "object-tests/many/0306", - "object-tests/many/0307", - "object-tests/many/0308", - "object-tests/many/0309", - "object-tests/many/0310", - "object-tests/many/0311", - "object-tests/many/0312", - "object-tests/many/0313", - "object-tests/many/0314", - "object-tests/many/0315", - "object-tests/many/0316", - "object-tests/many/0317", - "object-tests/many/0318", - "object-tests/many/0319", - "object-tests/many/0320", - "object-tests/many/0321", - "object-tests/many/0322", - "object-tests/many/0323", - "object-tests/many/0324", - "object-tests/many/0325", - "object-tests/many/0326", - "object-tests/many/0327", - "object-tests/many/0328", - "object-tests/many/0329", - "object-tests/many/0330", - "object-tests/many/0331", - "object-tests/many/0332", - "object-tests/many/0333", - "object-tests/many/0334", - "object-tests/many/0335", - "object-tests/many/0336", - "object-tests/many/0337", - "object-tests/many/0338", - "object-tests/many/0339", - "object-tests/many/0340", - "object-tests/many/0341", - "object-tests/many/0342", - "object-tests/many/0343", - "object-tests/many/0344", - "object-tests/many/0345", - "object-tests/many/0346", - "object-tests/many/0347", - "object-tests/many/0348", - "object-tests/many/0349", - "object-tests/many/0350", - "object-tests/many/0351", - "object-tests/many/0352", - "object-tests/many/0353", - "object-tests/many/0354", - "object-tests/many/0355", - "object-tests/many/0356", - "object-tests/many/0357", - "object-tests/many/0358", - "object-tests/many/0359", - "object-tests/many/0360", - "object-tests/many/0361", - "object-tests/many/0362", - "object-tests/many/0363", - "object-tests/many/0364", - "object-tests/many/0365", - "object-tests/many/0366", - "object-tests/many/0367", - "object-tests/many/0368", - "object-tests/many/0369", - "object-tests/many/0370", - "object-tests/many/0371", - "object-tests/many/0372", - "object-tests/many/0373", - "object-tests/many/0374", - "object-tests/many/0375", - "object-tests/many/0376", - "object-tests/many/0377", - "object-tests/many/0378", - "object-tests/many/0379", - "object-tests/many/0380", - "object-tests/many/0381", - "object-tests/many/0382", - "object-tests/many/0383", - "object-tests/many/0384", - "object-tests/many/0385", - "object-tests/many/0386", - "object-tests/many/0387", - "object-tests/many/0388", - "object-tests/many/0389", - "object-tests/many/0390", - "object-tests/many/0391", - "object-tests/many/0392", - "object-tests/many/0393", - "object-tests/many/0394", - "object-tests/many/0395", - "object-tests/many/0396", - "object-tests/many/0397", - "object-tests/many/0398", - "object-tests/many/0399", - "object-tests/many/0400", - "object-tests/many/0401", - "object-tests/many/0402", - "object-tests/many/0403", - "object-tests/many/0404", - "object-tests/many/0405", - "object-tests/many/0406", - "object-tests/many/0407", - "object-tests/many/0408", - "object-tests/many/0409", - "object-tests/many/0410", - "object-tests/many/0411", - "object-tests/many/0412", - "object-tests/many/0413", - "object-tests/many/0414", - "object-tests/many/0415", - "object-tests/many/0416", - "object-tests/many/0417", - "object-tests/many/0418", - "object-tests/many/0419", - "object-tests/many/0420", - "object-tests/many/0421", - "object-tests/many/0422", - "object-tests/many/0423", - "object-tests/many/0424", - "object-tests/many/0425", - "object-tests/many/0426", - "object-tests/many/0427", - "object-tests/many/0428", - "object-tests/many/0429", - "object-tests/many/0430", - "object-tests/many/0431", - "object-tests/many/0432", - "object-tests/many/0433", - "object-tests/many/0434", - "object-tests/many/0435", - "object-tests/many/0436", - "object-tests/many/0437", - "object-tests/many/0438", - "object-tests/many/0439", - "object-tests/many/0440", - "object-tests/many/0441", - "object-tests/many/0442", - "object-tests/many/0443", - "object-tests/many/0444", - "object-tests/many/0445", - "object-tests/many/0446", - "object-tests/many/0447", - "object-tests/many/0448", - "object-tests/many/0449", - "object-tests/many/0450", - "object-tests/many/0451", - "object-tests/many/0452", - "object-tests/many/0453", - "object-tests/many/0454", - "object-tests/many/0455", - "object-tests/many/0456", - "object-tests/many/0457", - "object-tests/many/0458", - "object-tests/many/0459", - "object-tests/many/0460", - "object-tests/many/0461", - "object-tests/many/0462", - "object-tests/many/0463", - "object-tests/many/0464", - "object-tests/many/0465", - "object-tests/many/0466", - "object-tests/many/0467", - "object-tests/many/0468", - "object-tests/many/0469", - "object-tests/many/0470", - "object-tests/many/0471", - "object-tests/many/0472", - "object-tests/many/0473", - "object-tests/many/0474", - "object-tests/many/0475", - "object-tests/many/0476", - "object-tests/many/0477", - "object-tests/many/0478", - "object-tests/many/0479", - "object-tests/many/0480", - "object-tests/many/0481", - "object-tests/many/0482", - "object-tests/many/0483", - "object-tests/many/0484", - "object-tests/many/0485", - "object-tests/many/0486", - "object-tests/many/0487", - "object-tests/many/0488", - "object-tests/many/0489", - "object-tests/many/0490", - "object-tests/many/0491", - "object-tests/many/0492", - "object-tests/many/0493", - "object-tests/many/0494", - "object-tests/many/0495", - "object-tests/many/0496", - "object-tests/many/0497", - "object-tests/many/0498", - "object-tests/many/0499", - "object-tests/many/0500", - "object-tests/many/0501", - "object-tests/many/0502", - "object-tests/many/0503", - "object-tests/many/0504", - "object-tests/many/0505", - "object-tests/many/0506", - "object-tests/many/0507", - "object-tests/many/0508", - "object-tests/many/0509", - "object-tests/many/0510", - "object-tests/many/0511", - "object-tests/many/0512", - "object-tests/many/0513", - "object-tests/many/0514", - "object-tests/many/0515", - "object-tests/many/0516", - "object-tests/many/0517", - "object-tests/many/0518", - "object-tests/many/0519", - "object-tests/many/0520", - "object-tests/many/0521", - "object-tests/many/0522", - "object-tests/many/0523", - "object-tests/many/0524", - "object-tests/many/0525", - "object-tests/many/0526", - "object-tests/many/0527", - "object-tests/many/0528", - "object-tests/many/0529", - "object-tests/many/0530", - "object-tests/many/0531", - "object-tests/many/0532", - "object-tests/many/0533", - "object-tests/many/0534", - "object-tests/many/0535", - "object-tests/many/0536", - "object-tests/many/0537", - "object-tests/many/0538", - "object-tests/many/0539", - "object-tests/many/0540", - "object-tests/many/0541", - "object-tests/many/0542", - "object-tests/many/0543", - "object-tests/many/0544", - "object-tests/many/0545", - "object-tests/many/0546", - "object-tests/many/0547", - "object-tests/many/0548", - "object-tests/many/0549", - "object-tests/many/0550", - "object-tests/many/0551", - "object-tests/many/0552", - "object-tests/many/0553", - "object-tests/many/0554", - "object-tests/many/0555", - "object-tests/many/0556", - "object-tests/many/0557", - "object-tests/many/0558", - "object-tests/many/0559", - "object-tests/many/0560", - "object-tests/many/0561", - "object-tests/many/0562", - "object-tests/many/0563", - "object-tests/many/0564", - "object-tests/many/0565", - "object-tests/many/0566", - "object-tests/many/0567", - "object-tests/many/0568", - "object-tests/many/0569", - "object-tests/many/0570", - "object-tests/many/0571", - "object-tests/many/0572", - "object-tests/many/0573", - "object-tests/many/0574", - "object-tests/many/0575", - "object-tests/many/0576", - "object-tests/many/0577", - "object-tests/many/0578", - "object-tests/many/0579", - "object-tests/many/0580", - "object-tests/many/0581", - "object-tests/many/0582", - "object-tests/many/0583", - "object-tests/many/0584", - "object-tests/many/0585", - "object-tests/many/0586", - "object-tests/many/0587", - "object-tests/many/0588", - "object-tests/many/0589", - "object-tests/many/0590", - "object-tests/many/0591", - "object-tests/many/0592", - "object-tests/many/0593", - "object-tests/many/0594", - "object-tests/many/0595", - "object-tests/many/0596", - "object-tests/many/0597", - "object-tests/many/0598", - "object-tests/many/0599", - "object-tests/many/0600", - "object-tests/many/0601", - "object-tests/many/0602", - "object-tests/many/0603", - "object-tests/many/0604", - "object-tests/many/0605", - "object-tests/many/0606", - "object-tests/many/0607", - "object-tests/many/0608", - "object-tests/many/0609", - "object-tests/many/0610", - "object-tests/many/0611", - "object-tests/many/0612", - "object-tests/many/0613", - "object-tests/many/0614", - "object-tests/many/0615", - "object-tests/many/0616", - "object-tests/many/0617", - "object-tests/many/0618", - "object-tests/many/0619", - "object-tests/many/0620", - "object-tests/many/0621", - "object-tests/many/0622", - "object-tests/many/0623", - "object-tests/many/0624", - "object-tests/many/0625", - "object-tests/many/0626", - "object-tests/many/0627", - "object-tests/many/0628", - "object-tests/many/0629", - "object-tests/many/0630", - "object-tests/many/0631", - "object-tests/many/0632", - "object-tests/many/0633", - "object-tests/many/0634", - "object-tests/many/0635", - "object-tests/many/0636", - "object-tests/many/0637", - "object-tests/many/0638", - "object-tests/many/0639", - "object-tests/many/0640", - "object-tests/many/0641", - "object-tests/many/0642", - "object-tests/many/0643", - "object-tests/many/0644", - "object-tests/many/0645", - "object-tests/many/0646", - "object-tests/many/0647", - "object-tests/many/0648", - "object-tests/many/0649", - "object-tests/many/0650", - "object-tests/many/0651", - "object-tests/many/0652", - "object-tests/many/0653", - "object-tests/many/0654", - "object-tests/many/0655", - "object-tests/many/0656", - "object-tests/many/0657", - "object-tests/many/0658", - "object-tests/many/0659", - "object-tests/many/0660", - "object-tests/many/0661", - "object-tests/many/0662", - "object-tests/many/0663", - "object-tests/many/0664", - "object-tests/many/0665", - "object-tests/many/0666", - "object-tests/many/0667", - "object-tests/many/0668", - "object-tests/many/0669", - "object-tests/many/0670", - "object-tests/many/0671", - "object-tests/many/0672", - "object-tests/many/0673", - "object-tests/many/0674", - "object-tests/many/0675", - "object-tests/many/0676", - "object-tests/many/0677", - "object-tests/many/0678", - "object-tests/many/0679", - "object-tests/many/0680", - "object-tests/many/0681", - "object-tests/many/0682", - "object-tests/many/0683", - "object-tests/many/0684", - "object-tests/many/0685", - "object-tests/many/0686", - "object-tests/many/0687", - "object-tests/many/0688", - "object-tests/many/0689", - "object-tests/many/0690", - "object-tests/many/0691", - "object-tests/many/0692", - "object-tests/many/0693", - "object-tests/many/0694", - "object-tests/many/0695", - "object-tests/many/0696", - "object-tests/many/0697", - "object-tests/many/0698", - "object-tests/many/0699", - "object-tests/many/0700", - "object-tests/many/0701", - "object-tests/many/0702", - "object-tests/many/0703", - "object-tests/many/0704", - "object-tests/many/0705", - "object-tests/many/0706", - "object-tests/many/0707", - "object-tests/many/0708", - "object-tests/many/0709", - "object-tests/many/0710", - "object-tests/many/0711", - "object-tests/many/0712", - "object-tests/many/0713", - "object-tests/many/0714", - "object-tests/many/0715", - "object-tests/many/0716", - "object-tests/many/0717", - "object-tests/many/0718", - "object-tests/many/0719", - "object-tests/many/0720", - "object-tests/many/0721", - "object-tests/many/0722", - "object-tests/many/0723", - "object-tests/many/0724", - "object-tests/many/0725", - "object-tests/many/0726", - "object-tests/many/0727", - "object-tests/many/0728", - "object-tests/many/0729", - "object-tests/many/0730", - "object-tests/many/0731", - "object-tests/many/0732", - "object-tests/many/0733", - "object-tests/many/0734", - "object-tests/many/0735", - "object-tests/many/0736", - "object-tests/many/0737", - "object-tests/many/0738", - "object-tests/many/0739", - "object-tests/many/0740", - "object-tests/many/0741", - "object-tests/many/0742", - "object-tests/many/0743", - "object-tests/many/0744", - "object-tests/many/0745", - "object-tests/many/0746", - "object-tests/many/0747", - "object-tests/many/0748", - "object-tests/many/0749", - "object-tests/many/0750", - "object-tests/many/0751", - "object-tests/many/0752", - "object-tests/many/0753", - "object-tests/many/0754", - "object-tests/many/0755", - "object-tests/many/0756", - "object-tests/many/0757", - "object-tests/many/0758", - "object-tests/many/0759", - "object-tests/many/0760", - "object-tests/many/0761", - "object-tests/many/0762", - "object-tests/many/0763", - "object-tests/many/0764", - "object-tests/many/0765", - "object-tests/many/0766", - "object-tests/many/0767", - "object-tests/many/0768", - "object-tests/many/0769", - "object-tests/many/0770", - "object-tests/many/0771", - "object-tests/many/0772", - "object-tests/many/0773", - "object-tests/many/0774", - "object-tests/many/0775", - "object-tests/many/0776", - "object-tests/many/0777", - "object-tests/many/0778", - "object-tests/many/0779", - "object-tests/many/0780", - "object-tests/many/0781", - "object-tests/many/0782", - "object-tests/many/0783", - "object-tests/many/0784", - "object-tests/many/0785", - "object-tests/many/0786", - "object-tests/many/0787", - "object-tests/many/0788", - "object-tests/many/0789", - "object-tests/many/0790", - "object-tests/many/0791", - "object-tests/many/0792", - "object-tests/many/0793", - "object-tests/many/0794", - "object-tests/many/0795", - "object-tests/many/0796", - "object-tests/many/0797", - "object-tests/many/0798", - "object-tests/many/0799", - "object-tests/many/0800", - "object-tests/many/0801", - "object-tests/many/0802", - "object-tests/many/0803", - "object-tests/many/0804", - "object-tests/many/0805", - "object-tests/many/0806", - "object-tests/many/0807", - "object-tests/many/0808", - "object-tests/many/0809", - "object-tests/many/0810", - "object-tests/many/0811", - "object-tests/many/0812", - "object-tests/many/0813", - "object-tests/many/0814", - "object-tests/many/0815", - "object-tests/many/0816", - "object-tests/many/0817", - "object-tests/many/0818", - "object-tests/many/0819", - "object-tests/many/0820", - "object-tests/many/0821", - "object-tests/many/0822", - "object-tests/many/0823", - "object-tests/many/0824", - "object-tests/many/0825", - "object-tests/many/0826", - "object-tests/many/0827", - "object-tests/many/0828", - "object-tests/many/0829", - "object-tests/many/0830", - "object-tests/many/0831", - "object-tests/many/0832", - "object-tests/many/0833", - "object-tests/many/0834", - "object-tests/many/0835", - "object-tests/many/0836", - "object-tests/many/0837", - "object-tests/many/0838", - "object-tests/many/0839", - "object-tests/many/0840", - "object-tests/many/0841", - "object-tests/many/0842", - "object-tests/many/0843", - "object-tests/many/0844", - "object-tests/many/0845", - "object-tests/many/0846", - "object-tests/many/0847", - "object-tests/many/0848", - "object-tests/many/0849", - "object-tests/many/0850", - "object-tests/many/0851", - "object-tests/many/0852", - "object-tests/many/0853", - "object-tests/many/0854", - "object-tests/many/0855", - "object-tests/many/0856", - "object-tests/many/0857", - "object-tests/many/0858", - "object-tests/many/0859", - "object-tests/many/0860", - "object-tests/many/0861", - "object-tests/many/0862", - "object-tests/many/0863", - "object-tests/many/0864", - "object-tests/many/0865", - "object-tests/many/0866", - "object-tests/many/0867", - "object-tests/many/0868", - "object-tests/many/0869", - "object-tests/many/0870", - "object-tests/many/0871", - "object-tests/many/0872", - "object-tests/many/0873", - "object-tests/many/0874", - "object-tests/many/0875", - "object-tests/many/0876", - "object-tests/many/0877", - "object-tests/many/0878", - "object-tests/many/0879", - "object-tests/many/0880", - "object-tests/many/0881", - "object-tests/many/0882", - "object-tests/many/0883", - "object-tests/many/0884", - "object-tests/many/0885", - "object-tests/many/0886", - "object-tests/many/0887", - "object-tests/many/0888", - "object-tests/many/0889", - "object-tests/many/0890", - "object-tests/many/0891", - "object-tests/many/0892", - "object-tests/many/0893", - "object-tests/many/0894", - "object-tests/many/0895", - "object-tests/many/0896", - "object-tests/many/0897", - "object-tests/many/0898", - "object-tests/many/0899", - "object-tests/many/0900", - "object-tests/many/0901", - "object-tests/many/0902", - "object-tests/many/0903", - "object-tests/many/0904", - "object-tests/many/0905", - "object-tests/many/0906", - "object-tests/many/0907", - "object-tests/many/0908", - "object-tests/many/0909", - "object-tests/many/0910", - "object-tests/many/0911", - "object-tests/many/0912", - "object-tests/many/0913", - "object-tests/many/0914", - "object-tests/many/0915", - "object-tests/many/0916", - "object-tests/many/0917", - "object-tests/many/0918", - "object-tests/many/0919", - "object-tests/many/0920", - "object-tests/many/0921", - "object-tests/many/0922", - "object-tests/many/0923", - "object-tests/many/0924", - "object-tests/many/0925", - "object-tests/many/0926", - "object-tests/many/0927", - "object-tests/many/0928", - "object-tests/many/0929", - "object-tests/many/0930", - "object-tests/many/0931", - "object-tests/many/0932", - "object-tests/many/0933", - "object-tests/many/0934", - "object-tests/many/0935", - "object-tests/many/0936", - "object-tests/many/0937", - "object-tests/many/0938", - "object-tests/many/0939", - "object-tests/many/0940", - "object-tests/many/0941", - "object-tests/many/0942", - "object-tests/many/0943", - "object-tests/many/0944", - "object-tests/many/0945", - "object-tests/many/0946", - "object-tests/many/0947", - "object-tests/many/0948", - "object-tests/many/0949", - "object-tests/many/0950", - "object-tests/many/0951", - "object-tests/many/0952", - "object-tests/many/0953", - "object-tests/many/0954", - "object-tests/many/0955", - "object-tests/many/0956", - "object-tests/many/0957", - "object-tests/many/0958", - "object-tests/many/0959", - "object-tests/many/0960", - "object-tests/many/0961", - "object-tests/many/0962", - "object-tests/many/0963", - "object-tests/many/0964", - "object-tests/many/0965", - "object-tests/many/0966", - "object-tests/many/0967", - "object-tests/many/0968", - "object-tests/many/0969", - "object-tests/many/0970", - "object-tests/many/0971", - "object-tests/many/0972", - "object-tests/many/0973", - "object-tests/many/0974", - "object-tests/many/0975", - "object-tests/many/0976", - "object-tests/many/0977", - "object-tests/many/0978", - "object-tests/many/0979", - "object-tests/many/0980", - "object-tests/many/0981", - "object-tests/many/0982", - "object-tests/many/0983", - "object-tests/many/0984", - "object-tests/many/0985", - "object-tests/many/0986", - "object-tests/many/0987", - "object-tests/many/0988", - "object-tests/many/0989", - "object-tests/many/0990", - "object-tests/many/0991", - "object-tests/many/0992", - "object-tests/many/0993", - "object-tests/many/0994", - "object-tests/many/0995", - "object-tests/many/0996", - "object-tests/many/0997", - "object-tests/many/0998", - "object-tests/many/0999", - "object-tests/many/1000" - ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 412 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "PreconditionFailed" } } ], "refusal": null }, { - "id": "operations/s3-express/list-prefix-special-characters", + "id": "operations/s3-express/copy-source-key-encoded", "profile": "s3-express", "lane": "core", - "purpose": "Percent-encode the prefix in the query, a space as %20 and a plus as %2B, and decode the common prefixes of a URL-encoded listing as well as the keys", + "purpose": "Copy from a key with a space, +, %, é, ? and #. x-amz-copy-source percent-encodes every byte of the key outside letters, digits, -._~ and /", "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html" ], "call": { - "delimiter": "/", - "op": "list_page", - "prefix": "object-tests/odd a+b&c=d%é/" + "key": "object-tests/copy/target.txt", + "op": "copy", + "source_key": "object-tests/copy/a b+c%é?#.txt" }, "exchanges": [ { @@ -155056,7 +195845,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -155064,17 +195853,25 @@ "optional": false, "rule": { "is": "equal", - "value": "/" + "value": "/object-tests/copy/target.txt" } }, { - "at": "/query/session", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", "value": "" } }, + { + "at": "/headers/x-amz-copy-source", + "optional": false, + "rule": { + "is": "matches", + "pattern": "/?fixture[^/]*/object-tests/copy/a%20b%2[Bb]c%25%[Cc]3%[Aa]9%3[Ff]%23\\.txt" + } + }, { "at": "/headers/host", "optional": false, @@ -155106,22 +195903,18 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml" + "content-type": "application/xml", + "date": { + "from": "now" + } }, "body": { "encoding": "utf8", - "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" + "data": "\n2024-01-01T00:00:00.000Z"fixture-etag"" }, - "body_time": { - "text": "SESSION_EXPIRATION", - "offset_seconds": 300 - } + "framing": "chunked" } - } - ] - }, - { - "alternatives": [ + }, { "request": [ { @@ -155129,7 +195922,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "HEAD" } }, { @@ -155137,7 +195930,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/" + "value": "/object-tests/copy/a b+c%é?#.txt" } }, { @@ -155156,45 +195949,103 @@ "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" } }, - { - "at": "/headers/x-amz-s3session-token", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-session-token" - } - }, { "at": "/headers/authorization", "optional": false, "rule": { "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" - } - }, - { - "at": "/query/list-type", - "optional": false, - "rule": { - "is": "equal", - "value": "2" + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } }, { - "at": "/query/prefix", + "at": "/headers/x-amz-s3session-token", "optional": false, "rule": { - "is": "equal", - "value": "object-tests/odd a+b&c=d%é/" + "is": "absent" } - }, + } + ], + "then": [ { - "at": "/query/delimiter", - "optional": false, - "rule": { - "is": "equal", - "value": "/" - } + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/object-tests/copy/target.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/x-amz-copy-source", + "optional": false, + "rule": { + "is": "matches", + "pattern": "/?fixture[^/]*/object-tests/copy/a%20b%2[Bb]c%25%[Cc]3%[Aa]9%3[Ff]%23\\.txt" + } + }, + { + "at": "/headers/host", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "absent" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + } + }, + "body": { + "encoding": "utf8", + "data": "\n2024-01-01T00:00:00.000Z"fixture-etag"" + }, + "framing": "chunked" + } + } + ] } ], "allow_headers": [ @@ -155204,18 +196055,49 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", + "content-length": "5", "date": { "from": "now" }, + "etag": "\"fixture-etag\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nfixtureobject-tests/odd a+b&c=d%é/21000/falseobject-tests/odd a+b&c=d%é/x.txt2024-01-01T00:00:00.000Z"fixture-6f6464200000"CRC64NVMEFULL_OBJECT1EXPRESS_ONEZONEobject-tests/odd a+b&c=d%é/sub dir+/" + "encoding": "empty" } } - }, + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + } + ], + "refusal": null + }, + { + "id": "operations/s3-express/copy-onto-itself", + "profile": "s3-express", + "lane": "core", + "purpose": "Copy an object onto itself without changing it. A directory bucket accepts it, where a general-purpose bucket answers 400 InvalidRequest", + "sources": [ + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html" + ], + "call": { + "key": "object-tests/copy/source.txt", + "op": "copy", + "source_key": "object-tests/copy/source.txt" + }, + "exchanges": [ + { + "alternatives": [ { "request": [ { @@ -155223,7 +196105,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -155231,7 +196113,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/" + "value": "/object-tests/copy/source.txt" } }, { @@ -155243,19 +196125,19 @@ } }, { - "at": "/headers/host", + "at": "/headers/x-amz-copy-source", "optional": false, "rule": { - "is": "equal", - "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + "is": "matches", + "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" } }, { - "at": "/headers/x-amz-s3session-token", + "at": "/headers/host", "optional": false, "rule": { "is": "equal", - "value": "fixture-session-token" + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" } }, { @@ -155263,42 +196145,169 @@ "optional": false, "rule": { "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } }, { - "at": "/query/list-type", + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "absent" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + } + }, + "body": { + "encoding": "utf8", + "data": "\n2024-01-01T00:00:00.000Z"fixture-etag"" + }, + "framing": "chunked" + } + }, + { + "request": [ + { + "at": "/method", "optional": false, "rule": { "is": "equal", - "value": "2" + "value": "HEAD" } }, { - "at": "/query/prefix", + "at": "/path", "optional": false, "rule": { "is": "equal", - "value": "object-tests/odd a+b&c=d%é/" + "value": "/object-tests/copy/source.txt" } }, { - "at": "/query/delimiter", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "/" + "value": "" } }, { - "at": "/query/encoding-type", + "at": "/headers/host", "optional": false, "rule": { "is": "equal", - "value": "url" + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "absent" } } ], + "then": [ + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/object-tests/copy/source.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/x-amz-copy-source", + "optional": false, + "rule": { + "is": "matches", + "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" + } + }, + { + "at": "/headers/host", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "absent" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + } + }, + "body": { + "encoding": "utf8", + "data": "\n2024-01-01T00:00:00.000Z"fixture-etag"" + }, + "framing": "chunked" + } + } + ] + } + ], "allow_headers": [ "content-type" ], @@ -155306,15 +196315,15 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", + "content-length": "5", "date": { "from": "now" }, + "etag": "\"fixture-etag\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nfixtureobject-tests/odd+a%2Bb%26c%3Dd%25%C3%A9/21000/urlfalseobject-tests/odd+a%2Bb%26c%3Dd%25%C3%A9/x.txt2024-01-01T00:00:00.000Z"fixture-6f6464200000"CRC64NVMEFULL_OBJECT1EXPRESS_ONEZONEobject-tests/odd+a%2Bb%26c%3Dd%25%C3%A9/sub+dir%2B/" + "encoding": "empty" } } } @@ -155329,111 +196338,25 @@ "is": "equal", "value": "ok" } - }, - { - "at": "/value/entries/0/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/odd a+b&c=d%é/x.txt" - } - }, - { - "at": "/value/entries/0/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/0/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-6f6464200000\"" - } - }, - { - "at": "/value/entries/0/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/0/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/0/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries", - "optional": false, - "rule": { - "is": "array_length", - "value": 1 - } - }, - { - "at": "/value/prefixes/0", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/odd a+b&c=d%é/sub dir+/" - } - }, - { - "at": "/value/prefixes", - "optional": false, - "rule": { - "is": "array_length", - "value": 1 - } - }, - { - "at": "/value/continuation_token", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } } ], "refusal": null }, { - "id": "operations/s3-express/list-start-after", + "id": "operations/s3-express/copy-onto-itself-replace-metadata", "profile": "s3-express", "lane": "core", - "purpose": "Report the NotSupported error that a directory bucket answers to start-after", + "purpose": "Copy an object onto itself to replace its metadata, which S3 accepts with x-amz-metadata-directive: REPLACE", "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html" ], "call": { - "op": "list_page", - "prefix": "object-tests/board/", - "start_after": "object-tests/board/a.txt" + "key": "object-tests/copy/source.txt", + "metadata": { + "colour": "blue" + }, + "op": "copy", + "source_key": "object-tests/copy/source.txt" }, "exchanges": [ { @@ -155445,7 +196368,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -155453,17 +196376,25 @@ "optional": false, "rule": { "is": "equal", - "value": "/" + "value": "/object-tests/copy/source.txt" } }, { - "at": "/query/session", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", "value": "" } }, + { + "at": "/headers/x-amz-copy-source", + "optional": false, + "rule": { + "is": "matches", + "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" + } + }, { "at": "/headers/host", "optional": false, @@ -155486,6 +196417,22 @@ "rule": { "is": "absent" } + }, + { + "at": "/headers/x-amz-metadata-directive", + "optional": false, + "rule": { + "is": "equal", + "value": "REPLACE" + } + }, + { + "at": "/headers/x-amz-meta-colour", + "optional": false, + "rule": { + "is": "equal", + "value": "blue" + } } ], "allow_headers": [ @@ -155495,22 +196442,18 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml" + "content-type": "application/xml", + "date": { + "from": "now" + } }, "body": { "encoding": "utf8", - "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" + "data": "\n2024-01-01T00:00:00.000Z"fixture-etag"" }, - "body_time": { - "text": "SESSION_EXPIRATION", - "offset_seconds": 300 - } + "framing": "chunked" } - } - ] - }, - { - "alternatives": [ + }, { "request": [ { @@ -155518,7 +196461,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "HEAD" } }, { @@ -155526,7 +196469,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/" + "value": "/object-tests/copy/source.txt" } }, { @@ -155545,45 +196488,119 @@ "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" } }, - { - "at": "/headers/x-amz-s3session-token", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-session-token" - } - }, { "at": "/headers/authorization", "optional": false, "rule": { "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" - } - }, - { - "at": "/query/list-type", - "optional": false, - "rule": { - "is": "equal", - "value": "2" + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } }, { - "at": "/query/prefix", + "at": "/headers/x-amz-s3session-token", "optional": false, "rule": { - "is": "equal", - "value": "object-tests/board/" + "is": "absent" } - }, + } + ], + "then": [ { - "at": "/query/start-after", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/board/a.txt" - } + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/object-tests/copy/source.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/headers/x-amz-copy-source", + "optional": false, + "rule": { + "is": "matches", + "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" + } + }, + { + "at": "/headers/host", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "absent" + } + }, + { + "at": "/headers/x-amz-metadata-directive", + "optional": false, + "rule": { + "is": "equal", + "value": "REPLACE" + } + }, + { + "at": "/headers/x-amz-meta-colour", + "optional": false, + "rule": { + "is": "equal", + "value": "blue" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + } + }, + "body": { + "encoding": "utf8", + "data": "\n2024-01-01T00:00:00.000Z"fixture-etag"" + }, + "framing": "chunked" + } + } + ] } ], "allow_headers": [ @@ -155591,20 +196608,55 @@ ], "allow_query": [], "response": { - "status": 501, + "status": 200, "headers": { - "content-type": "application/xml", + "content-length": "5", "date": { "from": "now" - } + }, + "etag": "\"fixture-etag\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nNotSupportedFixture error" - }, - "framing": "chunked" + "encoding": "empty" + } } - }, + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + } + ], + "refusal": null + }, + { + "id": "operations/s3-express/put-with-md5", + "profile": "s3-express", + "lane": "core", + "purpose": "Report the 501 NotImplemented that a directory bucket answers to Content-MD5, matching or not", + "sources": [ + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html" + ], + "call": { + "body_base64": "aGVsbG8=", + "checksum": { + "algorithm": "md5", + "value_base64": "XUFAKrxLKna5cZ2REBfFkg==" + }, + "key": "object", + "op": "put" + }, + "exchanges": [ + { + "alternatives": [ { "request": [ { @@ -155624,7 +196676,7 @@ } }, { - "at": "/body_base64", + "at": "/query/session", "optional": false, "rule": { "is": "equal", @@ -155639,52 +196691,101 @@ "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" } }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + } + }, { "at": "/headers/x-amz-s3session-token", "optional": false, + "rule": { + "is": "absent" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml" + }, + "body": { + "encoding": "utf8", + "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" + }, + "body_time": { + "text": "SESSION_EXPIRATION", + "offset_seconds": 300 + } + } + } + ] + }, + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, "rule": { "is": "equal", - "value": "fixture-session-token" + "value": "PUT" } }, { - "at": "/headers/authorization", + "at": "/path", "optional": false, "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + "is": "equal", + "value": "/object" } }, { - "at": "/query/list-type", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "2" + "value": "aGVsbG8=" } }, { - "at": "/query/prefix", + "at": "/headers/content-md5", "optional": false, "rule": { "is": "equal", - "value": "object-tests/board/" + "value": "XUFAKrxLKna5cZ2REBfFkg==" } }, { - "at": "/query/start-after", + "at": "/headers/host", "optional": false, "rule": { "is": "equal", - "value": "object-tests/board/a.txt" + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" } }, { - "at": "/query/encoding-type", + "at": "/headers/x-amz-s3session-token", "optional": false, "rule": { "is": "equal", - "value": "url" + "value": "fixture-session-token" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } } ], @@ -155702,7 +196803,7 @@ }, "body": { "encoding": "utf8", - "data": "\nNotSupportedFixture error" + "data": "\nNotImplementedThis bucket does not support Content Md5 header.fixturefixture" }, "framing": "chunked" } @@ -155732,25 +196833,28 @@ "optional": false, "rule": { "is": "equal", - "value": "NotSupported" + "value": "NotImplemented" } } ], "refusal": null }, { - "id": "operations/s3-express/list-truncated-without-token", + "id": "operations/s3-express/put-md5-mismatch", "profile": "s3-express", "lane": "core", - "purpose": "Report an error when a truncated page carries no continuation token; do not stop early or list from the start again", + "purpose": "Report the 501 NotImplemented that a directory bucket answers to Content-MD5, matching or not", "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html" ], - "origin": "constructed", "call": { - "op": "list", - "page_size": 2, - "prefix": "object-tests/board/" + "body_base64": "aGVsbG8=", + "checksum": { + "algorithm": "md5", + "value_base64": "K9opmNmw7hl9oUKgRH9nJQ==" + }, + "key": "object", + "op": "put" }, "exchanges": [ { @@ -155835,7 +196939,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -155843,7 +196947,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/" + "value": "/object" } }, { @@ -155851,31 +196955,15 @@ "optional": false, "rule": { "is": "equal", - "value": "" - } - }, - { - "at": "/query/list-type", - "optional": false, - "rule": { - "is": "equal", - "value": "2" - } - }, - { - "at": "/query/prefix", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/board/" + "value": "aGVsbG8=" } }, { - "at": "/query/max-keys", + "at": "/headers/content-md5", "optional": false, "rule": { "is": "equal", - "value": "2" + "value": "K9opmNmw7hl9oUKgRH9nJQ==" } }, { @@ -155908,20 +196996,71 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 501, "headers": { "content-type": "application/xml", "date": { "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { "encoding": "utf8", - "data": "\nfixtureobject-tests/board/22trueCRC64NVME"fixture-626f61720000"object-tests/board/a.txt2024-01-01T00:00:00.000Z8EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-626f61720001"object-tests/board/nested/c.txt2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECT" - } + "data": "\nNotImplementedThis bucket does not support Content Md5 header.fixturefixture" + }, + "framing": "chunked" } - }, + } + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 501 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "NotImplemented" + } + } + ], + "refusal": null + }, + { + "id": "operations/s3-express/put-with-crc32", + "profile": "s3-express", + "lane": "core", + "purpose": "Send an additional checksum in its x-amz-checksum- header; S3 stores it as the object's one checksum, in place of the CRC64NVME it adds to a write without one", + "sources": [ + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html" + ], + "call": { + "body_base64": "Y2hlY2tzdW0K", + "checksum": { + "algorithm": "crc32", + "value_base64": "ItMTFg==" + }, + "key": "object-tests/checksums/crc32.txt", + "op": "put" + }, + "exchanges": [ + { + "alternatives": [ { "request": [ { @@ -155941,7 +197080,7 @@ } }, { - "at": "/body_base64", + "at": "/query/session", "optional": false, "rule": { "is": "equal", @@ -155949,35 +197088,92 @@ } }, { - "at": "/query/list-type", + "at": "/headers/host", "optional": false, "rule": { "is": "equal", - "value": "2" + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" } }, { - "at": "/query/prefix", + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "absent" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml" + }, + "body": { + "encoding": "utf8", + "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" + }, + "body_time": { + "text": "SESSION_EXPIRATION", + "offset_seconds": 300 + } + } + } + ] + }, + { + "alternatives": [ + { + "request": [ + { + "at": "/method", "optional": false, "rule": { "is": "equal", - "value": "object-tests/board/" + "value": "PUT" } }, { - "at": "/query/max-keys", + "at": "/path", "optional": false, "rule": { "is": "equal", - "value": "2" + "value": "/object-tests/checksums/crc32.txt" } }, { - "at": "/query/encoding-type", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", - "value": "url" + "value": "Y2hlY2tzdW0K" + } + }, + { + "at": "/headers/x-amz-checksum-crc32", + "optional": false, + "rule": { + "is": "equal", + "value": "ItMTFg==" + } + }, + { + "at": "/headers/x-amz-sdk-checksum-algorithm", + "optional": true, + "rule": { + "is": "equal", + "value": "CRC32" } }, { @@ -156012,16 +197208,18 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", "date": { "from": "now" }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + "etag": "\"fixture-636b73750000\"", + "x-amz-checksum-crc32": "ItMTFg==", + "x-amz-checksum-type": "FULL_OBJECT" }, "body": { - "encoding": "utf8", - "data": "\nfixtureobject-tests/board/22urltrueCRC64NVME"fixture-626f61720000"object-tests/board/a.txt2024-01-01T00:00:00.000Z8EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-626f61720001"object-tests/board/nested/c.txt2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECT" - } + "encoding": "base64", + "data": "" + }, + "framing": "chunked" } } ] @@ -156033,25 +197231,46 @@ "optional": false, "rule": { "is": "equal", - "value": "error" + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-636b73750000\"" + } + }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] } } ], "refusal": null }, { - "id": "operations/s3-express/list-encoding-ignored", + "id": "operations/s3-express/put-computing-sha256", "profile": "s3-express", "lane": "core", - "purpose": "Read the keys as sent when a service ignores encoding-type=url and the page has no EncodingType; a % that begins no escape is text, as in URL percent-decoding", + "purpose": "Compute the SHA256 checksum of the body and send it, base64 of its big-endian bytes, in x-amz-checksum-sha256 or in a trailer of an aws-chunked body", "sources": [ - "https://github.com/rclone/rclone/tree/master/backend/s3/provider", - "https://url.spec.whatwg.org/#percent-decode" + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html" ], - "origin": "constructed", "call": { - "op": "list_page", - "prefix": "object-tests/percent/" + "body_base64": "Y2hlY2tzdW0K", + "checksum": { + "algorithm": "sha256" + }, + "key": "object-tests/checksums/sha256.txt", + "op": "put" }, "exchanges": [ { @@ -156136,7 +197355,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -156144,7 +197363,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/" + "value": "/object-tests/checksums/sha256.txt" } }, { @@ -156152,23 +197371,15 @@ "optional": false, "rule": { "is": "equal", - "value": "" - } - }, - { - "at": "/query/list-type", - "optional": false, - "rule": { - "is": "equal", - "value": "2" + "value": "Y2hlY2tzdW0K" } }, { - "at": "/query/prefix", - "optional": false, + "at": "/headers/x-amz-sdk-checksum-algorithm", + "optional": true, "rule": { "is": "equal", - "value": "object-tests/percent/" + "value": "SHA256" } }, { @@ -156194,6 +197405,14 @@ "is": "matches", "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } + }, + { + "at": "/headers/x-amz-checksum-sha256", + "optional": false, + "rule": { + "is": "equal", + "value": "YBWjp+qyV9PYdCTLkYJ9WLevegiRR86bT46jxfweu9I=" + } } ], "allow_headers": [ @@ -156203,16 +197422,18 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", "date": { "from": "now" }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + "etag": "\"fixture-636b73750000\"", + "x-amz-checksum-crc32": "ItMTFg==", + "x-amz-checksum-type": "FULL_OBJECT" }, "body": { - "encoding": "utf8", - "data": "\nfixtureobject-tests/percent/31000falseCRC64NVME"fixture-706572000000"object-tests/percent/%zz.txt2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-706572000001"object-tests/percent/100%-off.txt2024-01-01T00:00:00.000Z2EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-706572000002"object-tests/percent/50%2024-01-01T00:00:00.000Z3EXPRESS_ONEZONEFULL_OBJECT" - } + "encoding": "base64", + "data": "" + }, + "framing": "chunked" } }, { @@ -156222,7 +197443,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -156230,7 +197451,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/" + "value": "/object-tests/checksums/sha256.txt" } }, { @@ -156238,55 +197459,71 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "OQ0KY2hlY2tzdW0KDQowDQp4LWFtei1jaGVja3N1bS1zaGEyNTY6WUJXanArcXlWOVBZZENUTGtZSjlXTGV2ZWdpUlI4NmJUNDZqeGZ3ZXU5ST0NCg0K" } }, { - "at": "/query/list-type", + "at": "/headers/x-amz-sdk-checksum-algorithm", + "optional": true, + "rule": { + "is": "equal", + "value": "SHA256" + } + }, + { + "at": "/headers/host", "optional": false, "rule": { "is": "equal", - "value": "2" + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" } }, { - "at": "/query/prefix", + "at": "/headers/x-amz-s3session-token", "optional": false, "rule": { "is": "equal", - "value": "object-tests/percent/" + "value": "fixture-session-token" } }, { - "at": "/query/encoding-type", + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + } + }, + { + "at": "/headers/x-amz-content-sha256", "optional": false, "rule": { "is": "equal", - "value": "url" + "value": "STREAMING-UNSIGNED-PAYLOAD-TRAILER" } }, { - "at": "/headers/host", + "at": "/headers/content-encoding", "optional": false, "rule": { "is": "equal", - "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + "value": "aws-chunked" } }, { - "at": "/headers/x-amz-s3session-token", + "at": "/headers/x-amz-decoded-content-length", "optional": false, "rule": { "is": "equal", - "value": "fixture-session-token" + "value": "9" } }, { - "at": "/headers/authorization", + "at": "/headers/x-amz-trailer", "optional": false, "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + "is": "equal", + "value": "x-amz-checksum-sha256" } } ], @@ -156297,16 +197534,18 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", "date": { "from": "now" }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + "etag": "\"fixture-636b73750000\"", + "x-amz-checksum-crc32": "ItMTFg==", + "x-amz-checksum-type": "FULL_OBJECT" }, "body": { - "encoding": "utf8", - "data": "\nfixtureobject-tests/percent/31000falseCRC64NVME"fixture-706572000000"object-tests/percent/%zz.txt2024-01-01T00:00:00.000Z1EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-706572000001"object-tests/percent/100%-off.txt2024-01-01T00:00:00.000Z2EXPRESS_ONEZONEFULL_OBJECTCRC64NVME"fixture-706572000002"object-tests/percent/50%2024-01-01T00:00:00.000Z3EXPRESS_ONEZONEFULL_OBJECT" - } + "encoding": "base64", + "data": "" + }, + "framing": "chunked" } } ] @@ -156322,156 +197561,15 @@ } }, { - "at": "/value/entries/0/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/percent/%zz.txt" - } - }, - { - "at": "/value/entries/0/size", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/entries/0/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-706572000000\"" - } - }, - { - "at": "/value/entries/0/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/0/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/0/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/1/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/percent/100%-off.txt" - } - }, - { - "at": "/value/entries/1/size", - "optional": false, - "rule": { - "is": "equal", - "value": 2 - } - }, - { - "at": "/value/entries/1/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-706572000001\"" - } - }, - { - "at": "/value/entries/1/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/1/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - }, - { - "at": "/value/entries/1/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries/2/key", - "optional": false, - "rule": { - "is": "equal", - "value": "object-tests/percent/50%" - } - }, - { - "at": "/value/entries/2/size", - "optional": false, - "rule": { - "is": "equal", - "value": 3 - } - }, - { - "at": "/value/entries/2/etag", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-706572000002\"" - } - }, - { - "at": "/value/entries/2/snapshot", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "value": "\"fixture-636b73750000\"" } }, { - "at": "/value/entries/2/version", + "at": "/value/version", "optional": true, "rule": { "is": "one_of", @@ -156480,56 +197578,25 @@ "" ] } - }, - { - "at": "/value/entries/2/is_current_version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - false - ] - } - }, - { - "at": "/value/entries", - "optional": false, - "rule": { - "is": "array_length", - "value": 3 - } - }, - { - "at": "/value/prefixes", - "optional": false, - "rule": { - "is": "array_length", - "value": 0 - } - }, - { - "at": "/value/continuation_token", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } } ], "refusal": null }, { - "id": "operations/s3-express/put-created-empty", + "id": "operations/s3-express/put-with-sha256", "profile": "s3-express", "lane": "core", - "purpose": "put created empty", + "purpose": "Send a SHA256 checksum that the caller gives, in x-amz-checksum-sha256", "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html" ], "call": { - "body_base64": "", - "key": "object-tests/write/empty.bin", + "body_base64": "Y2hlY2tzdW0K", + "checksum": { + "algorithm": "sha256", + "value_base64": "YBWjp+qyV9PYdCTLkYJ9WLevegiRR86bT46jxfweu9I=" + }, + "key": "object-tests/checksums/sha256.txt", "op": "put" }, "exchanges": [ @@ -156623,7 +197690,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/write/empty.bin" + "value": "/object-tests/checksums/sha256.txt" } }, { @@ -156631,7 +197698,15 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "Y2hlY2tzdW0K" + } + }, + { + "at": "/headers/x-amz-sdk-checksum-algorithm", + "optional": true, + "rule": { + "is": "equal", + "value": "SHA256" } }, { @@ -156657,6 +197732,14 @@ "is": "matches", "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } + }, + { + "at": "/headers/x-amz-checksum-sha256", + "optional": false, + "rule": { + "is": "equal", + "value": "YBWjp+qyV9PYdCTLkYJ9WLevegiRR86bT46jxfweu9I=" + } } ], "allow_headers": [ @@ -156669,8 +197752,9 @@ "date": { "from": "now" }, - "etag": "\"fixture-de1997e62b9b\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + "etag": "\"fixture-636b73750000\"", + "x-amz-checksum-crc32": "ItMTFg==", + "x-amz-checksum-type": "FULL_OBJECT" }, "body": { "encoding": "base64", @@ -156696,7 +197780,7 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-de1997e62b9b\"" + "value": "\"fixture-636b73750000\"" } }, { @@ -156714,16 +197798,19 @@ "refusal": null }, { - "id": "operations/s3-express/put-created", + "id": "operations/s3-express/put-computing-sha1", "profile": "s3-express", "lane": "core", - "purpose": "put created", + "purpose": "Compute the SHA1 checksum of the body and send it, base64 of its big-endian bytes, in x-amz-checksum-sha1 or in a trailer of an aws-chunked body", "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html" ], "call": { - "body_base64": "MDEyMzQ1Njc4OQ==", - "key": "object-tests/write/object.txt", + "body_base64": "Y2hlY2tzdW0K", + "checksum": { + "algorithm": "sha1" + }, + "key": "object-tests/checksums/sha1.txt", "op": "put" }, "exchanges": [ @@ -156817,7 +197904,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/write/object.txt" + "value": "/object-tests/checksums/sha1.txt" } }, { @@ -156825,7 +197912,15 @@ "optional": false, "rule": { "is": "equal", - "value": "MDEyMzQ1Njc4OQ==" + "value": "Y2hlY2tzdW0K" + } + }, + { + "at": "/headers/x-amz-sdk-checksum-algorithm", + "optional": true, + "rule": { + "is": "equal", + "value": "SHA1" } }, { @@ -156851,6 +197946,14 @@ "is": "matches", "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } + }, + { + "at": "/headers/x-amz-checksum-sha1", + "optional": false, + "rule": { + "is": "equal", + "value": "Ll2vAgHd6waKYtXgjaGGV6ssa+k=" + } } ], "allow_headers": [ @@ -156863,8 +197966,121 @@ "date": { "from": "now" }, - "etag": "\"fixture-68e2c5df0cb2\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + "etag": "\"fixture-636b73750000\"", + "x-amz-checksum-crc32": "ItMTFg==", + "x-amz-checksum-type": "FULL_OBJECT" + }, + "body": { + "encoding": "base64", + "data": "" + }, + "framing": "chunked" + } + }, + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/object-tests/checksums/sha1.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "OQ0KY2hlY2tzdW0KDQowDQp4LWFtei1jaGVja3N1bS1zaGExOkxsMnZBZ0hkNndhS1l0WGdqYUdHVjZzc2Eraz0NCg0K" + } + }, + { + "at": "/headers/x-amz-sdk-checksum-algorithm", + "optional": true, + "rule": { + "is": "equal", + "value": "SHA1" + } + }, + { + "at": "/headers/host", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-session-token" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + } + }, + { + "at": "/headers/x-amz-content-sha256", + "optional": false, + "rule": { + "is": "equal", + "value": "STREAMING-UNSIGNED-PAYLOAD-TRAILER" + } + }, + { + "at": "/headers/content-encoding", + "optional": false, + "rule": { + "is": "equal", + "value": "aws-chunked" + } + }, + { + "at": "/headers/x-amz-decoded-content-length", + "optional": false, + "rule": { + "is": "equal", + "value": "9" + } + }, + { + "at": "/headers/x-amz-trailer", + "optional": false, + "rule": { + "is": "equal", + "value": "x-amz-checksum-sha1" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "date": { + "from": "now" + }, + "etag": "\"fixture-636b73750000\"", + "x-amz-checksum-crc32": "ItMTFg==", + "x-amz-checksum-type": "FULL_OBJECT" }, "body": { "encoding": "base64", @@ -156890,7 +198106,7 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-68e2c5df0cb2\"" + "value": "\"fixture-636b73750000\"" } }, { @@ -156908,16 +198124,20 @@ "refusal": null }, { - "id": "operations/s3-express/put-created-key-question", + "id": "operations/s3-express/put-with-sha1", "profile": "s3-express", "lane": "core", - "purpose": "put created, with the key \"question?mark.txt\"", + "purpose": "Send a SHA1 checksum that the caller gives, in x-amz-checksum-sha1", "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html" ], "call": { - "body_base64": "MDEyMzQ1Njc4OQ==", - "key": "object-tests/keys/question?mark.txt", + "body_base64": "Y2hlY2tzdW0K", + "checksum": { + "algorithm": "sha1", + "value_base64": "Ll2vAgHd6waKYtXgjaGGV6ssa+k=" + }, + "key": "object-tests/checksums/sha1.txt", "op": "put" }, "exchanges": [ @@ -157011,7 +198231,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/keys/question?mark.txt" + "value": "/object-tests/checksums/sha1.txt" } }, { @@ -157019,7 +198239,15 @@ "optional": false, "rule": { "is": "equal", - "value": "MDEyMzQ1Njc4OQ==" + "value": "Y2hlY2tzdW0K" + } + }, + { + "at": "/headers/x-amz-sdk-checksum-algorithm", + "optional": true, + "rule": { + "is": "equal", + "value": "SHA1" } }, { @@ -157045,6 +198273,14 @@ "is": "matches", "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } + }, + { + "at": "/headers/x-amz-checksum-sha1", + "optional": false, + "rule": { + "is": "equal", + "value": "Ll2vAgHd6waKYtXgjaGGV6ssa+k=" + } } ], "allow_headers": [ @@ -157057,8 +198293,9 @@ "date": { "from": "now" }, - "etag": "\"fixture-68e2c5df0cb2\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + "etag": "\"fixture-636b73750000\"", + "x-amz-checksum-crc32": "ItMTFg==", + "x-amz-checksum-type": "FULL_OBJECT" }, "body": { "encoding": "base64", @@ -157084,7 +198321,7 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-68e2c5df0cb2\"" + "value": "\"fixture-636b73750000\"" } }, { @@ -157102,16 +198339,19 @@ "refusal": null }, { - "id": "operations/s3-express/put-created-key-hash", + "id": "operations/s3-express/put-computing-crc64nvme", "profile": "s3-express", "lane": "core", - "purpose": "put created, with the key \"hash#tag.txt\"", + "purpose": "Compute the CRC64NVME checksum of the body and send it, base64 of its big-endian bytes, in x-amz-checksum-crc64nvme or in a trailer of an aws-chunked body", "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html" ], "call": { - "body_base64": "MDEyMzQ1Njc4OQ==", - "key": "object-tests/keys/hash#tag.txt", + "body_base64": "Y2hlY2tzdW0K", + "checksum": { + "algorithm": "crc64nvme" + }, + "key": "object-tests/checksums/crc64nvme.txt", "op": "put" }, "exchanges": [ @@ -157205,7 +198445,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/keys/hash#tag.txt" + "value": "/object-tests/checksums/crc64nvme.txt" } }, { @@ -157213,7 +198453,15 @@ "optional": false, "rule": { "is": "equal", - "value": "MDEyMzQ1Njc4OQ==" + "value": "Y2hlY2tzdW0K" + } + }, + { + "at": "/headers/x-amz-sdk-checksum-algorithm", + "optional": true, + "rule": { + "is": "equal", + "value": "CRC64NVME" } }, { @@ -157239,6 +198487,14 @@ "is": "matches", "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } + }, + { + "at": "/headers/x-amz-checksum-crc64nvme", + "optional": false, + "rule": { + "is": "equal", + "value": "XGkNQVJiTLw=" + } } ], "allow_headers": [ @@ -157251,8 +198507,121 @@ "date": { "from": "now" }, - "etag": "\"fixture-68e2c5df0cb2\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + "etag": "\"fixture-636b73750000\"", + "x-amz-checksum-crc32": "ItMTFg==", + "x-amz-checksum-type": "FULL_OBJECT" + }, + "body": { + "encoding": "base64", + "data": "" + }, + "framing": "chunked" + } + }, + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/object-tests/checksums/crc64nvme.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "OQ0KY2hlY2tzdW0KDQowDQp4LWFtei1jaGVja3N1bS1jcmM2NG52bWU6WEdrTlFWSmlUTHc9DQoNCg==" + } + }, + { + "at": "/headers/x-amz-sdk-checksum-algorithm", + "optional": true, + "rule": { + "is": "equal", + "value": "CRC64NVME" + } + }, + { + "at": "/headers/host", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-session-token" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + } + }, + { + "at": "/headers/x-amz-content-sha256", + "optional": false, + "rule": { + "is": "equal", + "value": "STREAMING-UNSIGNED-PAYLOAD-TRAILER" + } + }, + { + "at": "/headers/content-encoding", + "optional": false, + "rule": { + "is": "equal", + "value": "aws-chunked" + } + }, + { + "at": "/headers/x-amz-decoded-content-length", + "optional": false, + "rule": { + "is": "equal", + "value": "9" + } + }, + { + "at": "/headers/x-amz-trailer", + "optional": false, + "rule": { + "is": "equal", + "value": "x-amz-checksum-crc64nvme" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "date": { + "from": "now" + }, + "etag": "\"fixture-636b73750000\"", + "x-amz-checksum-crc32": "ItMTFg==", + "x-amz-checksum-type": "FULL_OBJECT" }, "body": { "encoding": "base64", @@ -157278,7 +198647,7 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-68e2c5df0cb2\"" + "value": "\"fixture-636b73750000\"" } }, { @@ -157296,16 +198665,20 @@ "refusal": null }, { - "id": "operations/s3-express/put-created-key-percent", + "id": "operations/s3-express/put-with-crc64nvme", "profile": "s3-express", "lane": "core", - "purpose": "put created, with the key \"percent%20.txt\"", + "purpose": "Send a CRC64NVME checksum that the caller gives, in x-amz-checksum-crc64nvme", "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html" ], "call": { - "body_base64": "MDEyMzQ1Njc4OQ==", - "key": "object-tests/keys/percent%20.txt", + "body_base64": "Y2hlY2tzdW0K", + "checksum": { + "algorithm": "crc64nvme", + "value_base64": "XGkNQVJiTLw=" + }, + "key": "object-tests/checksums/crc64nvme.txt", "op": "put" }, "exchanges": [ @@ -157399,7 +198772,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/keys/percent%20.txt" + "value": "/object-tests/checksums/crc64nvme.txt" } }, { @@ -157407,7 +198780,15 @@ "optional": false, "rule": { "is": "equal", - "value": "MDEyMzQ1Njc4OQ==" + "value": "Y2hlY2tzdW0K" + } + }, + { + "at": "/headers/x-amz-sdk-checksum-algorithm", + "optional": true, + "rule": { + "is": "equal", + "value": "CRC64NVME" } }, { @@ -157433,6 +198814,14 @@ "is": "matches", "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } + }, + { + "at": "/headers/x-amz-checksum-crc64nvme", + "optional": false, + "rule": { + "is": "equal", + "value": "XGkNQVJiTLw=" + } } ], "allow_headers": [ @@ -157445,8 +198834,9 @@ "date": { "from": "now" }, - "etag": "\"fixture-68e2c5df0cb2\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + "etag": "\"fixture-636b73750000\"", + "x-amz-checksum-crc32": "ItMTFg==", + "x-amz-checksum-type": "FULL_OBJECT" }, "body": { "encoding": "base64", @@ -157472,7 +198862,7 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-68e2c5df0cb2\"" + "value": "\"fixture-636b73750000\"" } }, { @@ -157490,16 +198880,19 @@ "refusal": null }, { - "id": "operations/s3-express/put-created-key-plus", + "id": "operations/s3-express/put-computing-crc32c", "profile": "s3-express", "lane": "core", - "purpose": "put created, with the key \"plus+plus.txt\"", + "purpose": "Compute the CRC32C checksum of the body and send it, base64 of its big-endian bytes, in x-amz-checksum-crc32c or in a trailer of an aws-chunked body", "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html" ], "call": { - "body_base64": "MDEyMzQ1Njc4OQ==", - "key": "object-tests/keys/plus+plus.txt", + "body_base64": "Y2hlY2tzdW0K", + "checksum": { + "algorithm": "crc32c" + }, + "key": "object-tests/checksums/crc32c.txt", "op": "put" }, "exchanges": [ @@ -157593,7 +198986,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/keys/plus+plus.txt" + "value": "/object-tests/checksums/crc32c.txt" } }, { @@ -157601,7 +198994,15 @@ "optional": false, "rule": { "is": "equal", - "value": "MDEyMzQ1Njc4OQ==" + "value": "Y2hlY2tzdW0K" + } + }, + { + "at": "/headers/x-amz-sdk-checksum-algorithm", + "optional": true, + "rule": { + "is": "equal", + "value": "CRC32C" } }, { @@ -157627,6 +199028,14 @@ "is": "matches", "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } + }, + { + "at": "/headers/x-amz-checksum-crc32c", + "optional": false, + "rule": { + "is": "equal", + "value": "6dErUA==" + } } ], "allow_headers": [ @@ -157639,8 +199048,121 @@ "date": { "from": "now" }, - "etag": "\"fixture-68e2c5df0cb2\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + "etag": "\"fixture-636b73750000\"", + "x-amz-checksum-crc32": "ItMTFg==", + "x-amz-checksum-type": "FULL_OBJECT" + }, + "body": { + "encoding": "base64", + "data": "" + }, + "framing": "chunked" + } + }, + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/object-tests/checksums/crc32c.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "OQ0KY2hlY2tzdW0KDQowDQp4LWFtei1jaGVja3N1bS1jcmMzMmM6NmRFclVBPT0NCg0K" + } + }, + { + "at": "/headers/x-amz-sdk-checksum-algorithm", + "optional": true, + "rule": { + "is": "equal", + "value": "CRC32C" + } + }, + { + "at": "/headers/host", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-session-token" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + } + }, + { + "at": "/headers/x-amz-content-sha256", + "optional": false, + "rule": { + "is": "equal", + "value": "STREAMING-UNSIGNED-PAYLOAD-TRAILER" + } + }, + { + "at": "/headers/content-encoding", + "optional": false, + "rule": { + "is": "equal", + "value": "aws-chunked" + } + }, + { + "at": "/headers/x-amz-decoded-content-length", + "optional": false, + "rule": { + "is": "equal", + "value": "9" + } + }, + { + "at": "/headers/x-amz-trailer", + "optional": false, + "rule": { + "is": "equal", + "value": "x-amz-checksum-crc32c" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "date": { + "from": "now" + }, + "etag": "\"fixture-636b73750000\"", + "x-amz-checksum-crc32": "ItMTFg==", + "x-amz-checksum-type": "FULL_OBJECT" }, "body": { "encoding": "base64", @@ -157666,7 +199188,7 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-68e2c5df0cb2\"" + "value": "\"fixture-636b73750000\"" } }, { @@ -157684,16 +199206,20 @@ "refusal": null }, { - "id": "operations/s3-express/put-created-key-space", + "id": "operations/s3-express/put-with-crc32c", "profile": "s3-express", "lane": "core", - "purpose": "put created, with the key \"space name.txt\"", + "purpose": "Send a CRC32C checksum that the caller gives, in x-amz-checksum-crc32c", "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html" ], "call": { - "body_base64": "MDEyMzQ1Njc4OQ==", - "key": "object-tests/keys/space name.txt", + "body_base64": "Y2hlY2tzdW0K", + "checksum": { + "algorithm": "crc32c", + "value_base64": "6dErUA==" + }, + "key": "object-tests/checksums/crc32c.txt", "op": "put" }, "exchanges": [ @@ -157787,7 +199313,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/keys/space name.txt" + "value": "/object-tests/checksums/crc32c.txt" } }, { @@ -157795,7 +199321,15 @@ "optional": false, "rule": { "is": "equal", - "value": "MDEyMzQ1Njc4OQ==" + "value": "Y2hlY2tzdW0K" + } + }, + { + "at": "/headers/x-amz-sdk-checksum-algorithm", + "optional": true, + "rule": { + "is": "equal", + "value": "CRC32C" } }, { @@ -157821,6 +199355,14 @@ "is": "matches", "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } + }, + { + "at": "/headers/x-amz-checksum-crc32c", + "optional": false, + "rule": { + "is": "equal", + "value": "6dErUA==" + } } ], "allow_headers": [ @@ -157833,8 +199375,9 @@ "date": { "from": "now" }, - "etag": "\"fixture-68e2c5df0cb2\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + "etag": "\"fixture-636b73750000\"", + "x-amz-checksum-crc32": "ItMTFg==", + "x-amz-checksum-type": "FULL_OBJECT" }, "body": { "encoding": "base64", @@ -157860,7 +199403,7 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-68e2c5df0cb2\"" + "value": "\"fixture-636b73750000\"" } }, { @@ -157878,16 +199421,19 @@ "refusal": null }, { - "id": "operations/s3-express/put-created-key-non-ascii", + "id": "operations/s3-express/put-computing-crc32", "profile": "s3-express", "lane": "core", - "purpose": "put created, with the key \"café/雪.txt\"", + "purpose": "Compute the CRC32 checksum of the body and send it, base64 of its big-endian bytes, in x-amz-checksum-crc32 or in a trailer of an aws-chunked body", "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html" ], "call": { - "body_base64": "MDEyMzQ1Njc4OQ==", - "key": "object-tests/keys/café/雪.txt", + "body_base64": "Y2hlY2tzdW0K", + "checksum": { + "algorithm": "crc32" + }, + "key": "object-tests/checksums/crc32.txt", "op": "put" }, "exchanges": [ @@ -157981,7 +199527,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/keys/café/雪.txt" + "value": "/object-tests/checksums/crc32.txt" } }, { @@ -157989,7 +199535,15 @@ "optional": false, "rule": { "is": "equal", - "value": "MDEyMzQ1Njc4OQ==" + "value": "Y2hlY2tzdW0K" + } + }, + { + "at": "/headers/x-amz-sdk-checksum-algorithm", + "optional": true, + "rule": { + "is": "equal", + "value": "CRC32" } }, { @@ -158015,6 +199569,14 @@ "is": "matches", "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } + }, + { + "at": "/headers/x-amz-checksum-crc32", + "optional": false, + "rule": { + "is": "equal", + "value": "ItMTFg==" + } } ], "allow_headers": [ @@ -158027,8 +199589,121 @@ "date": { "from": "now" }, - "etag": "\"fixture-68e2c5df0cb2\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + "etag": "\"fixture-636b73750000\"", + "x-amz-checksum-crc32": "ItMTFg==", + "x-amz-checksum-type": "FULL_OBJECT" + }, + "body": { + "encoding": "base64", + "data": "" + }, + "framing": "chunked" + } + }, + { + "request": [ + { + "at": "/method", + "optional": false, + "rule": { + "is": "equal", + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/object-tests/checksums/crc32.txt" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "OQ0KY2hlY2tzdW0KDQowDQp4LWFtei1jaGVja3N1bS1jcmMzMjpJdE1URmc9PQ0KDQo=" + } + }, + { + "at": "/headers/x-amz-sdk-checksum-algorithm", + "optional": true, + "rule": { + "is": "equal", + "value": "CRC32" + } + }, + { + "at": "/headers/host", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-session-token" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + } + }, + { + "at": "/headers/x-amz-content-sha256", + "optional": false, + "rule": { + "is": "equal", + "value": "STREAMING-UNSIGNED-PAYLOAD-TRAILER" + } + }, + { + "at": "/headers/content-encoding", + "optional": false, + "rule": { + "is": "equal", + "value": "aws-chunked" + } + }, + { + "at": "/headers/x-amz-decoded-content-length", + "optional": false, + "rule": { + "is": "equal", + "value": "9" + } + }, + { + "at": "/headers/x-amz-trailer", + "optional": false, + "rule": { + "is": "equal", + "value": "x-amz-checksum-crc32" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "date": { + "from": "now" + }, + "etag": "\"fixture-636b73750000\"", + "x-amz-checksum-crc32": "ItMTFg==", + "x-amz-checksum-type": "FULL_OBJECT" }, "body": { "encoding": "base64", @@ -158054,7 +199729,7 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-68e2c5df0cb2\"" + "value": "\"fixture-636b73750000\"" } }, { @@ -158072,16 +199747,26 @@ "refusal": null }, { - "id": "operations/s3-express/put-created-key-double-slash", + "id": "operations/s3-express/put-two-checksums", "profile": "s3-express", "lane": "core", - "purpose": "put created, with the key \"double//slash.txt\"", + "purpose": "Report S3's refusal of a write with two additional checksums; S3 keeps one checksum per object and answers 400 InvalidRequest to more than one x-amz-checksum- header", "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html" ], "call": { - "body_base64": "MDEyMzQ1Njc4OQ==", - "key": "object-tests/keys/double//slash.txt", + "body_base64": "Y2hlY2tzdW0K", + "checksums": [ + { + "algorithm": "crc32", + "value_base64": "ItMTFg==" + }, + { + "algorithm": "sha256", + "value_base64": "YBWjp+qyV9PYdCTLkYJ9WLevegiRR86bT46jxfweu9I=" + } + ], + "key": "object-tests/checksums/two.txt", "op": "put" }, "exchanges": [ @@ -158175,7 +199860,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/keys/double//slash.txt" + "value": "/object-tests/checksums/two.txt" } }, { @@ -158183,7 +199868,34 @@ "optional": false, "rule": { "is": "equal", - "value": "MDEyMzQ1Njc4OQ==" + "value": "Y2hlY2tzdW0K" + } + }, + { + "at": "/headers/x-amz-checksum-crc32", + "optional": false, + "rule": { + "is": "equal", + "value": "ItMTFg==" + } + }, + { + "at": "/headers/x-amz-checksum-sha256", + "optional": false, + "rule": { + "is": "equal", + "value": "YBWjp+qyV9PYdCTLkYJ9WLevegiRR86bT46jxfweu9I=" + } + }, + { + "at": "/headers/x-amz-sdk-checksum-algorithm", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + "CRC32", + "SHA256" + ] } }, { @@ -158216,17 +199928,16 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 400, "headers": { + "content-type": "application/xml", "date": { "from": "now" - }, - "etag": "\"fixture-68e2c5df0cb2\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { - "encoding": "base64", - "data": "" + "encoding": "utf8", + "data": "\nInvalidRequestExpecting a single x-amz-checksum- header. Multiple checksum Types are not allowed.fixturefixture" }, "framing": "chunked" } @@ -158240,42 +199951,81 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "error" } }, { - "at": "/value/etag", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-68e2c5df0cb2\"" + "value": 400 } }, { - "at": "/value/version", - "optional": true, + "at": "/code", + "optional": false, "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "is": "equal", + "value": "InvalidRequest" } } ], - "refusal": null + "refusal": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "refused" + } + }, + { + "at": "/kind", + "optional": false, + "rule": { + "is": "matches", + "pattern": ".+" + } + }, + { + "at": "/parameter", + "optional": false, + "rule": { + "is": "equal", + "value": "checksums" + } + }, + { + "at": "/status", + "optional": true, + "rule": { + "is": "equal", + "value": 400 + } + }, + { + "at": "/code", + "optional": true, + "rule": { + "is": "equal", + "value": "InvalidRequest" + } + } + ] }, { - "id": "operations/s3-express/put-created-key-trailing-slash", + "id": "operations/s3-express/put-internal-error", "profile": "s3-express", "lane": "core", - "purpose": "put created, with the key \"trailing-slash/\"", + "purpose": "Report a 500 InternalError answer as an error, after at most 5 retries", "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + "https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html" ], + "origin": "transient", "call": { "body_base64": "MDEyMzQ1Njc4OQ==", - "key": "object-tests/keys/trailing-slash/", + "key": "object-tests/write/object.txt", "op": "put" }, "exchanges": [ @@ -158369,7 +200119,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/keys/trailing-slash/" + "value": "/object-tests/write/object.txt" } }, { @@ -158410,69 +200160,22 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 500, "headers": { + "content-type": "application/xml", "date": { "from": "now" - }, - "etag": "\"fixture-68e2c5df0cb2\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { - "encoding": "base64", - "data": "" - }, - "framing": "chunked" - } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-68e2c5df0cb2\"" - } + "encoding": "utf8", + "data": "\nInternalErrorWe encountered an internal error. Please try again.fixture" + }, + "framing": "chunked" + } + } + ] }, - { - "at": "/value/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - } - ], - "refusal": null - }, - { - "id": "operations/s3-express/copy-missing-source", - "profile": "s3-express", - "lane": "core", - "purpose": "Refuse a copy whose source does not exist", - "sources": [ - "https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html" - ], - "call": { - "key": "object-tests/copy/target.txt", - "op": "copy", - "source_key": "object-tests/copy/absent.txt" - }, - "exchanges": [ { "alternatives": [ { @@ -158490,7 +200193,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/copy/target.txt" + "value": "/object-tests/write/object.txt" } }, { @@ -158498,15 +200201,7 @@ "optional": false, "rule": { "is": "equal", - "value": "" - } - }, - { - "at": "/headers/x-amz-copy-source", - "optional": false, - "rule": { - "is": "matches", - "pattern": "/?fixture[^/]*/object-tests/copy/absent\\.txt" + "value": "MDEyMzQ1Njc4OQ==" } }, { @@ -158518,18 +200213,19 @@ } }, { - "at": "/headers/authorization", + "at": "/headers/x-amz-s3session-token", "optional": false, "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + "is": "equal", + "value": "fixture-session-token" } }, { - "at": "/headers/x-amz-s3session-token", + "at": "/headers/authorization", "optional": false, "rule": { - "is": "absent" + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } } ], @@ -158538,7 +200234,7 @@ ], "allow_query": [], "response": { - "status": 404, + "status": 500, "headers": { "content-type": "application/xml", "date": { @@ -158547,11 +200243,16 @@ }, "body": { "encoding": "utf8", - "data": "\nNoSuchKeyFixture error" + "data": "\nInternalErrorWe encountered an internal error. Please try again.fixture" }, "framing": "chunked" } - }, + } + ], + "optional": true + }, + { + "alternatives": [ { "request": [ { @@ -158559,7 +200260,7 @@ "optional": false, "rule": { "is": "equal", - "value": "HEAD" + "value": "PUT" } }, { @@ -158567,7 +200268,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/copy/absent.txt" + "value": "/object-tests/write/object.txt" } }, { @@ -158575,7 +200276,7 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "MDEyMzQ1Njc4OQ==" } }, { @@ -158587,18 +200288,19 @@ } }, { - "at": "/headers/authorization", + "at": "/headers/x-amz-s3session-token", "optional": false, "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + "is": "equal", + "value": "fixture-session-token" } }, { - "at": "/headers/x-amz-s3session-token", + "at": "/headers/authorization", "optional": false, "rule": { - "is": "absent" + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } } ], @@ -158607,65 +200309,23 @@ ], "allow_query": [], "response": { - "status": 404, + "status": 500, "headers": { + "content-type": "application/xml", "date": { "from": "now" } }, "body": { - "encoding": "empty" - } + "encoding": "utf8", + "data": "\nInternalErrorWe encountered an internal error. Please try again.fixture" + }, + "framing": "chunked" } } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 404 - } + ], + "optional": true }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "one_of", - "values": [ - "NoSuchKey", - "" - ] - } - } - ], - "refusal": null - }, - { - "id": "operations/s3-express/copy", - "profile": "s3-express", - "lane": "core", - "purpose": "Copy an object to another key in the same bucket", - "sources": [ - "https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html" - ], - "call": { - "key": "object-tests/copy/target.txt", - "op": "copy", - "source_key": "object-tests/copy/source.txt" - }, - "exchanges": [ { "alternatives": [ { @@ -158683,7 +200343,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/copy/target.txt" + "value": "/object-tests/write/object.txt" } }, { @@ -158691,15 +200351,7 @@ "optional": false, "rule": { "is": "equal", - "value": "" - } - }, - { - "at": "/headers/x-amz-copy-source", - "optional": false, - "rule": { - "is": "matches", - "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" + "value": "MDEyMzQ1Njc4OQ==" } }, { @@ -158711,18 +200363,19 @@ } }, { - "at": "/headers/authorization", + "at": "/headers/x-amz-s3session-token", "optional": false, "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + "is": "equal", + "value": "fixture-session-token" } }, { - "at": "/headers/x-amz-s3session-token", + "at": "/headers/authorization", "optional": false, "rule": { - "is": "absent" + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } } ], @@ -158731,7 +200384,7 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 500, "headers": { "content-type": "application/xml", "date": { @@ -158740,11 +200393,16 @@ }, "body": { "encoding": "utf8", - "data": "\n2024-01-01T00:00:00.000Z"fixture-etag"" + "data": "\nInternalErrorWe encountered an internal error. Please try again.fixture" }, "framing": "chunked" } - }, + } + ], + "optional": true + }, + { + "alternatives": [ { "request": [ { @@ -158752,7 +200410,7 @@ "optional": false, "rule": { "is": "equal", - "value": "HEAD" + "value": "PUT" } }, { @@ -158760,7 +200418,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/copy/source.txt" + "value": "/object-tests/write/object.txt" } }, { @@ -158768,7 +200426,7 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "MDEyMzQ1Njc4OQ==" } }, { @@ -158780,163 +200438,44 @@ } }, { - "at": "/headers/authorization", + "at": "/headers/x-amz-s3session-token", "optional": false, "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + "is": "equal", + "value": "fixture-session-token" } }, { - "at": "/headers/x-amz-s3session-token", + "at": "/headers/authorization", "optional": false, "rule": { - "is": "absent" + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } } ], - "then": [ - { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "PUT" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/object-tests/copy/target.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/headers/x-amz-copy-source", - "optional": false, - "rule": { - "is": "matches", - "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" - } - }, - { - "at": "/headers/host", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" - } - }, - { - "at": "/headers/authorization", - "optional": false, - "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" - } - }, - { - "at": "/headers/x-amz-s3session-token", - "optional": false, - "rule": { - "is": "absent" - } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - } - }, - "body": { - "encoding": "utf8", - "data": "\n2024-01-01T00:00:00.000Z"fixture-etag"" - }, - "framing": "chunked" - } - } - ] - } - ], "allow_headers": [ "content-type" ], "allow_query": [], "response": { - "status": 200, + "status": 500, "headers": { - "content-length": "5", + "content-type": "application/xml", "date": { "from": "now" - }, - "etag": "\"fixture-etag\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { - "encoding": "empty" - } + "encoding": "utf8", + "data": "\nInternalErrorWe encountered an internal error. Please try again.fixture" + }, + "framing": "chunked" } } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } + ], + "optional": true }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-etag\"" - } - } - ], - "refusal": null - }, - { - "id": "operations/s3-express/copy-200-internal-error", - "profile": "s3-express", - "lane": "core", - "purpose": "Report a copy answered 200 with an InternalError in the body as an error, never as a success. A client may retry up to 5 times first, and need not retry", - "sources": [ - "https://repost.aws/knowledge-center/s3-resolve-200-internalerror", - "https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html", - "https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html" - ], - "origin": "transient", - "call": { - "key": "object-tests/copy/target.txt", - "op": "copy", - "source_key": "object-tests/copy/source.txt" - }, - "exchanges": [ { "alternatives": [ { @@ -158954,7 +200493,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/copy/target.txt" + "value": "/object-tests/write/object.txt" } }, { @@ -158962,15 +200501,7 @@ "optional": false, "rule": { "is": "equal", - "value": "" - } - }, - { - "at": "/headers/x-amz-copy-source", - "optional": false, - "rule": { - "is": "matches", - "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" + "value": "MDEyMzQ1Njc4OQ==" } }, { @@ -158982,18 +200513,19 @@ } }, { - "at": "/headers/authorization", + "at": "/headers/x-amz-s3session-token", "optional": false, "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + "is": "equal", + "value": "fixture-session-token" } }, { - "at": "/headers/x-amz-s3session-token", + "at": "/headers/authorization", "optional": false, "rule": { - "is": "absent" + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } } ], @@ -159002,7 +200534,7 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 500, "headers": { "content-type": "application/xml", "date": { @@ -159011,11 +200543,60 @@ }, "body": { "encoding": "utf8", - "data": "\nInternalErrorWe encountered an internal error. Please try again.fixturefixture" + "data": "\nInternalErrorWe encountered an internal error. Please try again.fixture" }, "framing": "chunked" } - }, + } + ], + "optional": true + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 500 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "InternalError" + } + } + ], + "refusal": null + }, + { + "id": "operations/s3-express/put-content-encoding-gzip", + "profile": "s3-express", + "lane": "core", + "purpose": "Report the refusal of Content-Encoding: gzip by a directory bucket", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "body_base64": "H4sIAAAAAAACA0vOzy0oSi0uTk1RyM9TKCgtKsgvTuUCAAHVPIcWAAAA", + "content_encoding": "gzip", + "key": "object-tests/write/object.txt", + "op": "put" + }, + "exchanges": [ + { + "alternatives": [ { "request": [ { @@ -159023,7 +200604,7 @@ "optional": false, "rule": { "is": "equal", - "value": "HEAD" + "value": "GET" } }, { @@ -159031,11 +200612,11 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/copy/source.txt" + "value": "/" } }, { - "at": "/body_base64", + "at": "/query/session", "optional": false, "rule": { "is": "equal", @@ -159066,89 +200647,6 @@ } } ], - "then": [ - { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "PUT" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/object-tests/copy/target.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/headers/x-amz-copy-source", - "optional": false, - "rule": { - "is": "matches", - "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" - } - }, - { - "at": "/headers/host", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" - } - }, - { - "at": "/headers/authorization", - "optional": false, - "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" - } - }, - { - "at": "/headers/x-amz-s3session-token", - "optional": false, - "rule": { - "is": "absent" - } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - } - }, - "body": { - "encoding": "utf8", - "data": "\nInternalErrorWe encountered an internal error. Please try again.fixturefixture" - }, - "framing": "chunked" - } - } - ] - } - ], "allow_headers": [ "content-type" ], @@ -159156,15 +200654,15 @@ "response": { "status": 200, "headers": { - "content-length": "5", - "date": { - "from": "now" - }, - "etag": "\"fixture-etag\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + "content-type": "application/xml" }, "body": { - "encoding": "empty" + "encoding": "utf8", + "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" + }, + "body_time": { + "text": "SESSION_EXPIRATION", + "offset_seconds": 300 } } } @@ -159187,7 +200685,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/copy/target.txt" + "value": "/object-tests/write/object.txt" } }, { @@ -159195,23 +200693,23 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "H4sIAAAAAAACA0vOzy0oSi0uTk1RyM9TKCgtKsgvTuUCAAHVPIcWAAAA" } }, { - "at": "/headers/x-amz-copy-source", + "at": "/headers/host", "optional": false, "rule": { - "is": "matches", - "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" + "is": "equal", + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" } }, { - "at": "/headers/host", + "at": "/headers/x-amz-s3session-token", "optional": false, "rule": { "is": "equal", - "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + "value": "fixture-session-token" } }, { @@ -159219,14 +200717,15 @@ "optional": false, "rule": { "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } }, { - "at": "/headers/x-amz-s3session-token", + "at": "/headers/content-encoding", "optional": false, "rule": { - "is": "absent" + "is": "equal", + "value": "gzip" } } ], @@ -159235,7 +200734,7 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 415, "headers": { "content-type": "application/xml", "date": { @@ -159244,14 +200743,60 @@ }, "body": { "encoding": "utf8", - "data": "\nInternalErrorWe encountered an internal error. Please try again.fixturefixture" + "data": "\nUnsupportedMediaTypeThis bucket does not support content-encoding: gzip. Only AWS-CHUNKED is supported.fixture" }, "framing": "chunked" } } - ], - "optional": true + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 415 + } }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "UnsupportedMediaType" + } + } + ], + "refusal": null + }, + { + "id": "operations/s3-express/put-content-properties", + "profile": "s3-express", + "lane": "core", + "purpose": "Store Content-Type, Content-Language, Content-Disposition and Cache-Control with a write", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "body_base64": "MDEyMzQ1Njc4OQ==", + "cache_control": "max-age=3600", + "content_disposition": "attachment; filename=\"report.txt\"", + "content_language": "nl-NL", + "content_type": "text/plain; charset=utf-8", + "key": "object-tests/write/object.txt", + "op": "put" + }, + "exchanges": [ { "alternatives": [ { @@ -159261,7 +200806,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -159269,25 +200814,17 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/copy/target.txt" + "value": "/" } }, { - "at": "/body_base64", + "at": "/query/session", "optional": false, "rule": { "is": "equal", "value": "" } }, - { - "at": "/headers/x-amz-copy-source", - "optional": false, - "rule": { - "is": "matches", - "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" - } - }, { "at": "/headers/host", "optional": false, @@ -159319,20 +200856,19 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - } + "content-type": "application/xml" }, "body": { "encoding": "utf8", - "data": "\nInternalErrorWe encountered an internal error. Please try again.fixturefixture" + "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" }, - "framing": "chunked" + "body_time": { + "text": "SESSION_EXPIRATION", + "offset_seconds": 300 + } } } - ], - "optional": true + ] }, { "alternatives": [ @@ -159351,7 +200887,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/copy/target.txt" + "value": "/object-tests/write/object.txt" } }, { @@ -159359,23 +200895,23 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "MDEyMzQ1Njc4OQ==" } }, { - "at": "/headers/x-amz-copy-source", + "at": "/headers/host", "optional": false, "rule": { - "is": "matches", - "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" + "is": "equal", + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" } }, { - "at": "/headers/host", + "at": "/headers/x-amz-s3session-token", "optional": false, "rule": { "is": "equal", - "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + "value": "fixture-session-token" } }, { @@ -159383,14 +200919,39 @@ "optional": false, "rule": { "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } }, { - "at": "/headers/x-amz-s3session-token", + "at": "/headers/content-type", "optional": false, "rule": { - "is": "absent" + "is": "equal", + "value": "text/plain; charset=utf-8" + } + }, + { + "at": "/headers/content-language", + "optional": false, + "rule": { + "is": "equal", + "value": "nl-NL" + } + }, + { + "at": "/headers/content-disposition", + "optional": false, + "rule": { + "is": "equal", + "value": "attachment; filename=\"report.txt\"" + } + }, + { + "at": "/headers/cache-control", + "optional": false, + "rule": { + "is": "equal", + "value": "max-age=3600" } } ], @@ -159401,21 +200962,68 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", "date": { "from": "now" - } + }, + "etag": "\"fixture-68e2c5df0cb2\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nInternalErrorWe encountered an internal error. Please try again.fixturefixture" + "encoding": "base64", + "data": "" }, "framing": "chunked" } } - ], - "optional": true + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-68e2c5df0cb2\"" + } }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + } + ], + "refusal": null + }, + { + "id": "operations/s3-express/put-content-type-non-ascii", + "profile": "s3-express", + "lane": "core", + "purpose": "Report a Content-Type with a parameter outside ASCII as an error, or refuse it. A directory bucket refuses a header byte outside ASCII with 400 InvalidRequest, and no encoding of a Content-Type parameter is one every reader decodes", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "body_base64": "MDEyMzQ1Njc4OQ==", + "content_type": "text/plain; name=\"été.txt\"", + "key": "object-tests/write/object.txt", + "op": "put" + }, + "exchanges": [ { "alternatives": [ { @@ -159425,7 +201033,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -159433,25 +201041,17 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/copy/target.txt" + "value": "/" } }, { - "at": "/body_base64", + "at": "/query/session", "optional": false, "rule": { "is": "equal", "value": "" } }, - { - "at": "/headers/x-amz-copy-source", - "optional": false, - "rule": { - "is": "matches", - "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" - } - }, { "at": "/headers/host", "optional": false, @@ -159483,20 +201083,19 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - } + "content-type": "application/xml" }, "body": { "encoding": "utf8", - "data": "\nInternalErrorWe encountered an internal error. Please try again.fixturefixture" + "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" }, - "framing": "chunked" + "body_time": { + "text": "SESSION_EXPIRATION", + "offset_seconds": 300 + } } } - ], - "optional": true + ] }, { "alternatives": [ @@ -159515,7 +201114,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/copy/target.txt" + "value": "/object-tests/write/object.txt" } }, { @@ -159523,23 +201122,23 @@ "optional": false, "rule": { "is": "equal", - "value": "" + "value": "MDEyMzQ1Njc4OQ==" } }, { - "at": "/headers/x-amz-copy-source", + "at": "/headers/host", "optional": false, "rule": { - "is": "matches", - "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" + "is": "equal", + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" } }, { - "at": "/headers/host", + "at": "/headers/x-amz-s3session-token", "optional": false, "rule": { "is": "equal", - "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + "value": "fixture-session-token" } }, { @@ -159547,14 +201146,15 @@ "optional": false, "rule": { "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } }, { - "at": "/headers/x-amz-s3session-token", + "at": "/headers/content-type", "optional": false, "rule": { - "is": "absent" + "is": "equal", + "value": "text/plain; name=\"été.txt\"" } } ], @@ -159563,7 +201163,7 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 400, "headers": { "content-type": "application/xml", "date": { @@ -159572,13 +201172,12 @@ }, "body": { "encoding": "utf8", - "data": "\nInternalErrorWe encountered an internal error. Please try again.fixturefixture" + "data": "\nInvalidRequestFixture error" }, "framing": "chunked" } } - ], - "optional": true + ] } ], "expect": [ @@ -159590,32 +201189,78 @@ "value": "error" } }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 400 + } + }, { "at": "/code", "optional": false, "rule": { "is": "equal", - "value": "InternalError" + "value": "InvalidRequest" } } ], - "refusal": null + "refusal": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "refused" + } + }, + { + "at": "/kind", + "optional": false, + "rule": { + "is": "matches", + "pattern": ".+" + } + }, + { + "at": "/parameter", + "optional": false, + "rule": { + "is": "equal", + "value": "content_type" + } + }, + { + "at": "/status", + "optional": true, + "rule": { + "is": "equal", + "value": 400 + } + }, + { + "at": "/code", + "optional": true, + "rule": { + "is": "equal", + "value": "InvalidRequest" + } + } + ] }, { - "id": "operations/s3-express/put-with-md5", + "id": "operations/s3-express/put-content-disposition-non-ascii", "profile": "s3-express", "lane": "core", - "purpose": "Report the 501 NotImplemented that a directory bucket answers to Content-MD5, matching or not", + "purpose": "Write a Content-Disposition whose filename is outside ASCII. A directory bucket refuses a header byte outside ASCII with 400 InvalidRequest, so send an RFC 6266 filename*, which any reader decodes, or refuse the value", "sources": [ - "https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "body_base64": "aGVsbG8=", - "checksum": { - "algorithm": "md5", - "value_base64": "XUFAKrxLKna5cZ2REBfFkg==" - }, - "key": "object", + "body_base64": "MDEyMzQ1Njc4OQ==", + "content_disposition": "attachment; filename=\"été.txt\"", + "key": "object-tests/write/object.txt", "op": "put" }, "exchanges": [ @@ -159709,7 +201354,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object" + "value": "/object-tests/write/object.txt" } }, { @@ -159717,15 +201362,7 @@ "optional": false, "rule": { "is": "equal", - "value": "aGVsbG8=" - } - }, - { - "at": "/headers/content-md5", - "optional": false, - "rule": { - "is": "equal", - "value": "XUFAKrxLKna5cZ2REBfFkg==" + "value": "MDEyMzQ1Njc4OQ==" } }, { @@ -159751,6 +201388,14 @@ "is": "matches", "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } + }, + { + "at": "/headers/content-disposition", + "optional": false, + "rule": { + "is": "equal", + "value": "attachment; filename*=UTF-8''%C3%A9t%C3%A9.txt" + } } ], "allow_headers": [ @@ -159758,16 +201403,17 @@ ], "allow_query": [], "response": { - "status": 501, + "status": 200, "headers": { - "content-type": "application/xml", "date": { "from": "now" - } + }, + "etag": "\"fixture-68e2c5df0cb2\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nNotImplementedThis bucket does not support Content Md5 header.fixturefixture" + "encoding": "base64", + "data": "" }, "framing": "chunked" } @@ -159781,43 +201427,84 @@ "optional": false, "rule": { "is": "equal", - "value": "error" + "value": "ok" } }, { - "at": "/status", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": 501 + "value": "\"fixture-68e2c5df0cb2\"" } }, { - "at": "/code", + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + } + ], + "refusal": [ + { + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "NotImplemented" + "value": "refused" + } + }, + { + "at": "/kind", + "optional": false, + "rule": { + "is": "matches", + "pattern": ".+" + } + }, + { + "at": "/parameter", + "optional": false, + "rule": { + "is": "equal", + "value": "content_disposition" + } + }, + { + "at": "/status", + "optional": true, + "rule": { + "is": "equal", + "value": 400 + } + }, + { + "at": "/code", + "optional": true, + "rule": { + "is": "equal", + "value": "InvalidRequest" } } - ], - "refusal": null + ] }, { - "id": "operations/s3-express/put-md5-mismatch", + "id": "operations/s3-express/put-content-type-edge-spaces", "profile": "s3-express", "lane": "core", - "purpose": "Report the 501 NotImplemented that a directory bucket answers to Content-MD5, matching or not", + "purpose": "Write a content type with spaces at either end, which HTTP drops, so the service stores it trimmed. A client may refuse it", "sources": [ - "https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "body_base64": "aGVsbG8=", - "checksum": { - "algorithm": "md5", - "value_base64": "K9opmNmw7hl9oUKgRH9nJQ==" - }, - "key": "object", + "body_base64": "MDEyMzQ1Njc4OQ==", + "content_type": " text/plain ", + "key": "object-tests/write/object.txt", "op": "put" }, "exchanges": [ @@ -159911,7 +201598,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object" + "value": "/object-tests/write/object.txt" } }, { @@ -159919,15 +201606,7 @@ "optional": false, "rule": { "is": "equal", - "value": "aGVsbG8=" - } - }, - { - "at": "/headers/content-md5", - "optional": false, - "rule": { - "is": "equal", - "value": "K9opmNmw7hl9oUKgRH9nJQ==" + "value": "MDEyMzQ1Njc4OQ==" } }, { @@ -159953,6 +201632,14 @@ "is": "matches", "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } + }, + { + "at": "/headers/content-type", + "optional": false, + "rule": { + "is": "equal", + "value": "text/plain" + } } ], "allow_headers": [ @@ -159960,16 +201647,17 @@ ], "allow_query": [], "response": { - "status": 501, + "status": 200, "headers": { - "content-type": "application/xml", "date": { "from": "now" - } + }, + "etag": "\"fixture-68e2c5df0cb2\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nNotImplementedThis bucket does not support Content Md5 header.fixturefixture" + "encoding": "base64", + "data": "" }, "framing": "chunked" } @@ -159983,43 +201671,68 @@ "optional": false, "rule": { "is": "equal", - "value": "error" + "value": "ok" } }, { - "at": "/status", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": 501 + "value": "\"fixture-68e2c5df0cb2\"" } }, { - "at": "/code", + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + } + ], + "refusal": [ + { + "at": "/outcome", "optional": false, "rule": { "is": "equal", - "value": "NotImplemented" + "value": "refused" + } + }, + { + "at": "/kind", + "optional": false, + "rule": { + "is": "matches", + "pattern": ".+" + } + }, + { + "at": "/parameter", + "optional": false, + "rule": { + "is": "equal", + "value": "content_type" } } - ], - "refusal": null + ] }, { - "id": "operations/s3-express/put-with-crc32", + "id": "operations/s3-express/put-if-match-current", "profile": "s3-express", "lane": "core", - "purpose": "Send an additional checksum in its x-amz-checksum- header; S3 stores it as the object's one checksum, in place of the CRC64NVME it adds to a write without one", + "purpose": "put if match current", "sources": [ - "https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "body_base64": "Y2hlY2tzdW0K", - "checksum": { - "algorithm": "crc32", - "value_base64": "ItMTFg==" - }, - "key": "object-tests/checksums/crc32.txt", + "body_base64": "cmVwbGFjZWQ=", + "if_match": "\"fixture-68e2c5df0cb2\"", + "key": "object-tests/write/object.txt", "op": "put" }, "exchanges": [ @@ -160113,7 +201826,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/checksums/crc32.txt" + "value": "/object-tests/write/object.txt" } }, { @@ -160121,23 +201834,15 @@ "optional": false, "rule": { "is": "equal", - "value": "Y2hlY2tzdW0K" + "value": "cmVwbGFjZWQ=" } }, { - "at": "/headers/x-amz-checksum-crc32", + "at": "/headers/if-match", "optional": false, "rule": { "is": "equal", - "value": "ItMTFg==" - } - }, - { - "at": "/headers/x-amz-sdk-checksum-algorithm", - "optional": true, - "rule": { - "is": "equal", - "value": "CRC32" + "value": "\"fixture-68e2c5df0cb2\"" } }, { @@ -160175,9 +201880,8 @@ "date": { "from": "now" }, - "etag": "\"fixture-636b73750000\"", - "x-amz-checksum-crc32": "ItMTFg==", - "x-amz-checksum-type": "FULL_OBJECT" + "etag": "\"fixture-b4f27b379d0b\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "base64", @@ -160203,7 +201907,7 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-636b73750000\"" + "value": "\"fixture-b4f27b379d0b\"" } }, { @@ -160221,26 +201925,17 @@ "refusal": null }, { - "id": "operations/s3-express/put-two-checksums", + "id": "operations/s3-express/put-if-none-match-missing", "profile": "s3-express", "lane": "core", - "purpose": "Report S3's refusal of a write with two additional checksums; S3 keeps one checksum per object and answers 400 InvalidRequest to more than one x-amz-checksum- header", + "purpose": "put if none match missing", "sources": [ - "https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "body_base64": "Y2hlY2tzdW0K", - "checksums": [ - { - "algorithm": "crc32", - "value_base64": "ItMTFg==" - }, - { - "algorithm": "sha256", - "value_base64": "YBWjp+qyV9PYdCTLkYJ9WLevegiRR86bT46jxfweu9I=" - } - ], - "key": "object-tests/checksums/two.txt", + "body_base64": "ZnJlc2g=", + "if_none_match": "*", + "key": "object-tests/write/fresh.txt", "op": "put" }, "exchanges": [ @@ -160334,7 +202029,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/checksums/two.txt" + "value": "/object-tests/write/fresh.txt" } }, { @@ -160342,34 +202037,15 @@ "optional": false, "rule": { "is": "equal", - "value": "Y2hlY2tzdW0K" - } - }, - { - "at": "/headers/x-amz-checksum-crc32", - "optional": false, - "rule": { - "is": "equal", - "value": "ItMTFg==" + "value": "ZnJlc2g=" } }, { - "at": "/headers/x-amz-checksum-sha256", + "at": "/headers/if-none-match", "optional": false, "rule": { "is": "equal", - "value": "YBWjp+qyV9PYdCTLkYJ9WLevegiRR86bT46jxfweu9I=" - } - }, - { - "at": "/headers/x-amz-sdk-checksum-algorithm", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - "CRC32", - "SHA256" - ] + "value": "*" } }, { @@ -160402,16 +202078,17 @@ ], "allow_query": [], "response": { - "status": 400, + "status": 200, "headers": { - "content-type": "application/xml", "date": { "from": "now" - } + }, + "etag": "\"fixture-fb6dd447625d\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nInvalidRequestExpecting a single x-amz-checksum- header. Multiple checksum Types are not allowed.fixturefixture" + "encoding": "base64", + "data": "" }, "framing": "chunked" } @@ -160425,81 +202102,42 @@ "optional": false, "rule": { "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 400 - } - }, - { - "at": "/code", - "optional": false, - "rule": { - "is": "equal", - "value": "InvalidRequest" - } - } - ], - "refusal": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "refused" - } - }, - { - "at": "/kind", - "optional": false, - "rule": { - "is": "matches", - "pattern": ".+" + "value": "ok" } }, { - "at": "/parameter", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": "checksums" - } - }, - { - "at": "/status", - "optional": true, - "rule": { - "is": "equal", - "value": 400 + "value": "\"fixture-fb6dd447625d\"" } }, { - "at": "/code", + "at": "/value/version", "optional": true, "rule": { - "is": "equal", - "value": "InvalidRequest" + "is": "one_of", + "values": [ + null, + "" + ] } } - ] + ], + "refusal": null }, { - "id": "operations/s3-express/put-internal-error", + "id": "operations/s3-express/put-key-1024", "profile": "s3-express", "lane": "core", - "purpose": "Report a 500 InternalError answer as an error, after at most 5 retries", + "purpose": "put key 1024", "sources": [ - "https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html" + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], - "origin": "transient", "call": { - "body_base64": "MDEyMzQ1Njc4OQ==", - "key": "object-tests/write/object.txt", + "body_base64": "MQ==", + "key": "object-tests/long/kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", "op": "put" }, "exchanges": [ @@ -160593,7 +202231,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/write/object.txt" + "value": "/object-tests/long/kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk" } }, { @@ -160601,7 +202239,7 @@ "optional": false, "rule": { "is": "equal", - "value": "MDEyMzQ1Njc4OQ==" + "value": "MQ==" } }, { @@ -160634,22 +202272,69 @@ ], "allow_query": [], "response": { - "status": 500, + "status": 200, "headers": { - "content-type": "application/xml", "date": { "from": "now" - } + }, + "etag": "\"fixture-ab08da38e9fe\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nInternalErrorWe encountered an internal error. Please try again.fixture" + "encoding": "base64", + "data": "" }, "framing": "chunked" } } ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-ab08da38e9fe\"" + } + }, + { + "at": "/value/version", + "optional": true, + "rule": { + "is": "one_of", + "values": [ + null, + "" + ] + } + } + ], + "refusal": null + }, + { + "id": "operations/s3-express/put-key-1025", + "profile": "s3-express", + "lane": "core", + "purpose": "put key 1025", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "body_base64": "MQ==", + "key": "object-tests/long/kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", + "op": "put" + }, + "exchanges": [ { "alternatives": [ { @@ -160659,7 +202344,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -160667,15 +202352,15 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/write/object.txt" + "value": "/" } }, { - "at": "/body_base64", + "at": "/query/session", "optional": false, "rule": { "is": "equal", - "value": "MDEyMzQ1Njc4OQ==" + "value": "" } }, { @@ -160686,95 +202371,19 @@ "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" } }, - { - "at": "/headers/x-amz-s3session-token", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-session-token" - } - }, { "at": "/headers/authorization", "optional": false, "rule": { "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" - } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 500, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - } - }, - "body": { - "encoding": "utf8", - "data": "\nInternalErrorWe encountered an internal error. Please try again.fixture" - }, - "framing": "chunked" - } - } - ], - "optional": true - }, - { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "PUT" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/object-tests/write/object.txt" - } - }, - { - "at": "/body_base64", - "optional": false, - "rule": { - "is": "equal", - "value": "MDEyMzQ1Njc4OQ==" - } - }, - { - "at": "/headers/host", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } }, { "at": "/headers/x-amz-s3session-token", "optional": false, "rule": { - "is": "equal", - "value": "fixture-session-token" - } - }, - { - "at": "/headers/authorization", - "optional": false, - "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + "is": "absent" } } ], @@ -160783,22 +202392,21 @@ ], "allow_query": [], "response": { - "status": 500, + "status": 200, "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - } + "content-type": "application/xml" }, "body": { "encoding": "utf8", - "data": "\nInternalErrorWe encountered an internal error. Please try again.fixture" + "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" }, - "framing": "chunked" + "body_time": { + "text": "SESSION_EXPIRATION", + "offset_seconds": 300 + } } } - ], - "optional": true + ] }, { "alternatives": [ @@ -160817,7 +202425,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/write/object.txt" + "value": "/object-tests/long/kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk" } }, { @@ -160825,7 +202433,7 @@ "optional": false, "rule": { "is": "equal", - "value": "MDEyMzQ1Njc4OQ==" + "value": "MQ==" } }, { @@ -160858,7 +202466,7 @@ ], "allow_query": [], "response": { - "status": 500, + "status": 400, "headers": { "content-type": "application/xml", "date": { @@ -160867,14 +202475,98 @@ }, "body": { "encoding": "utf8", - "data": "\nInternalErrorWe encountered an internal error. Please try again.fixture" + "data": "\nKeyTooLongErrorFixture error" }, "framing": "chunked" } } - ], - "optional": true + ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "error" + } + }, + { + "at": "/status", + "optional": false, + "rule": { + "is": "equal", + "value": 400 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "KeyTooLongError" + } + } + ], + "refusal": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "refused" + } + }, + { + "at": "/kind", + "optional": false, + "rule": { + "is": "matches", + "pattern": ".+" + } + }, + { + "at": "/parameter", + "optional": false, + "rule": { + "is": "equal", + "value": "key" + } + }, + { + "at": "/status", + "optional": true, + "rule": { + "is": "equal", + "value": 400 + } }, + { + "at": "/code", + "optional": true, + "rule": { + "is": "equal", + "value": "KeyTooLongError" + } + } + ] + }, + { + "id": "operations/s3-express/put-lost-the-race-to-create", + "profile": "s3-express", + "lane": "core", + "purpose": "put lost the race to create", + "sources": [ + "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + ], + "call": { + "body_base64": "YW5vdGhlciBvYmplY3Q=", + "if_none_match": "*", + "key": "object-tests/write/object.txt", + "op": "put" + }, + "exchanges": [ { "alternatives": [ { @@ -160884,7 +202576,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -160892,15 +202584,15 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/write/object.txt" + "value": "/" } }, { - "at": "/body_base64", + "at": "/query/session", "optional": false, "rule": { "is": "equal", - "value": "MDEyMzQ1Njc4OQ==" + "value": "" } }, { @@ -160912,19 +202604,18 @@ } }, { - "at": "/headers/x-amz-s3session-token", + "at": "/headers/authorization", "optional": false, "rule": { - "is": "equal", - "value": "fixture-session-token" + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } }, { - "at": "/headers/authorization", + "at": "/headers/x-amz-s3session-token", "optional": false, "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + "is": "absent" } } ], @@ -160933,22 +202624,21 @@ ], "allow_query": [], "response": { - "status": 500, + "status": 200, "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - } + "content-type": "application/xml" }, "body": { "encoding": "utf8", - "data": "\nInternalErrorWe encountered an internal error. Please try again.fixture" + "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" }, - "framing": "chunked" + "body_time": { + "text": "SESSION_EXPIRATION", + "offset_seconds": 300 + } } } - ], - "optional": true + ] }, { "alternatives": [ @@ -160975,7 +202665,15 @@ "optional": false, "rule": { "is": "equal", - "value": "MDEyMzQ1Njc4OQ==" + "value": "YW5vdGhlciBvYmplY3Q=" + } + }, + { + "at": "/headers/if-none-match", + "optional": false, + "rule": { + "is": "equal", + "value": "*" } }, { @@ -161008,7 +202706,7 @@ ], "allow_query": [], "response": { - "status": 500, + "status": 412, "headers": { "content-type": "application/xml", "date": { @@ -161017,13 +202715,12 @@ }, "body": { "encoding": "utf8", - "data": "\nInternalErrorWe encountered an internal error. Please try again.fixture" + "data": "\nPreconditionFailedFixture error" }, "framing": "chunked" } } - ], - "optional": true + ] } ], "expect": [ @@ -161040,7 +202737,7 @@ "optional": false, "rule": { "is": "equal", - "value": 500 + "value": 412 } }, { @@ -161048,24 +202745,26 @@ "optional": false, "rule": { "is": "equal", - "value": "InternalError" + "value": "PreconditionFailed" } } ], "refusal": null }, { - "id": "operations/s3-express/put-content-encoding-gzip", + "id": "operations/s3-express/put-metadata-empty-value", "profile": "s3-express", "lane": "core", - "purpose": "Report the refusal of Content-Encoding: gzip by a directory bucket", + "purpose": "put metadata empty value", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "body_base64": "H4sIAAAAAAACA0vOzy0oSi0uTk1RyM9TKCgtKsgvTuUCAAHVPIcWAAAA", - "content_encoding": "gzip", - "key": "object-tests/write/object.txt", + "body_base64": "MQ==", + "key": "object-tests/metadata/empty-value.txt", + "metadata": { + "empty": "" + }, "op": "put" }, "exchanges": [ @@ -161159,7 +202858,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/write/object.txt" + "value": "/object-tests/metadata/empty-value.txt" } }, { @@ -161167,7 +202866,15 @@ "optional": false, "rule": { "is": "equal", - "value": "H4sIAAAAAAACA0vOzy0oSi0uTk1RyM9TKCgtKsgvTuUCAAHVPIcWAAAA" + "value": "MQ==" + } + }, + { + "at": "/headers/x-amz-meta-empty", + "optional": false, + "rule": { + "is": "equal", + "value": "" } }, { @@ -161193,14 +202900,6 @@ "is": "matches", "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } - }, - { - "at": "/headers/content-encoding", - "optional": false, - "rule": { - "is": "equal", - "value": "gzip" - } } ], "allow_headers": [ @@ -161208,16 +202907,17 @@ ], "allow_query": [], "response": { - "status": 415, + "status": 200, "headers": { - "content-type": "application/xml", "date": { "from": "now" - } + }, + "etag": "\"fixture-e6096f6fd1ec\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nUnsupportedMediaTypeThis bucket does not support content-encoding: gzip. Only AWS-CHUNKED is supported.fixture" + "encoding": "base64", + "data": "" }, "framing": "chunked" } @@ -161231,43 +202931,45 @@ "optional": false, "rule": { "is": "equal", - "value": "error" + "value": "ok" } }, { - "at": "/status", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": 415 + "value": "\"fixture-e6096f6fd1ec\"" } }, { - "at": "/code", - "optional": false, + "at": "/value/version", + "optional": true, "rule": { - "is": "equal", - "value": "UnsupportedMediaType" + "is": "one_of", + "values": [ + null, + "" + ] } } ], "refusal": null }, { - "id": "operations/s3-express/put-content-properties", + "id": "operations/s3-express/put-metadata-hyphen-name", "profile": "s3-express", "lane": "core", - "purpose": "Store Content-Type, Content-Language, Content-Disposition and Cache-Control with a write", + "purpose": "put metadata hyphen name", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "body_base64": "MDEyMzQ1Njc4OQ==", - "cache_control": "max-age=3600", - "content_disposition": "attachment; filename=\"report.txt\"", - "content_language": "nl-NL", - "content_type": "text/plain; charset=utf-8", - "key": "object-tests/write/object.txt", + "body_base64": "MQ==", + "key": "object-tests/metadata/hyphen-name.txt", + "metadata": { + "not-valid": "1" + }, "op": "put" }, "exchanges": [ @@ -161361,7 +203063,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/write/object.txt" + "value": "/object-tests/metadata/hyphen-name.txt" } }, { @@ -161369,7 +203071,15 @@ "optional": false, "rule": { "is": "equal", - "value": "MDEyMzQ1Njc4OQ==" + "value": "MQ==" + } + }, + { + "at": "/headers/x-amz-meta-not-valid", + "optional": false, + "rule": { + "is": "equal", + "value": "1" } }, { @@ -161395,38 +203105,6 @@ "is": "matches", "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } - }, - { - "at": "/headers/content-type", - "optional": false, - "rule": { - "is": "equal", - "value": "text/plain; charset=utf-8" - } - }, - { - "at": "/headers/content-language", - "optional": false, - "rule": { - "is": "equal", - "value": "nl-NL" - } - }, - { - "at": "/headers/content-disposition", - "optional": false, - "rule": { - "is": "equal", - "value": "attachment; filename=\"report.txt\"" - } - }, - { - "at": "/headers/cache-control", - "optional": false, - "rule": { - "is": "equal", - "value": "max-age=3600" - } } ], "allow_headers": [ @@ -161439,7 +203117,7 @@ "date": { "from": "now" }, - "etag": "\"fixture-68e2c5df0cb2\"", + "etag": "\"fixture-adae183ea4af\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { @@ -161466,7 +203144,7 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-68e2c5df0cb2\"" + "value": "\"fixture-adae183ea4af\"" } }, { @@ -161484,17 +203162,20 @@ "refusal": null }, { - "id": "operations/s3-express/put-if-match-current", + "id": "operations/s3-express/put-metadata-names-differ-in-case", "profile": "s3-express", "lane": "core", - "purpose": "put if match current", + "purpose": "S3 matches a metadata name without case. A directory bucket refuses two names that differ only in case.", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "body_base64": "cmVwbGFjZWQ=", - "if_match": "\"fixture-68e2c5df0cb2\"", - "key": "object-tests/write/object.txt", + "body_base64": "MQ==", + "key": "object-tests/metadata/names-differ-in-case.txt", + "metadata": { + "DUP": "two", + "dup": "one" + }, "op": "put" }, "exchanges": [ @@ -161588,7 +203269,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/write/object.txt" + "value": "/object-tests/metadata/names-differ-in-case.txt" } }, { @@ -161596,15 +203277,24 @@ "optional": false, "rule": { "is": "equal", - "value": "cmVwbGFjZWQ=" + "value": "MQ==" } }, { - "at": "/headers/if-match", + "at": "/headers/x-amz-meta-dup", "optional": false, "rule": { - "is": "equal", - "value": "\"fixture-68e2c5df0cb2\"" + "is": "one_of", + "values": [ + [ + "one", + "two" + ], + [ + "two", + "one" + ] + ] } }, { @@ -161637,17 +203327,16 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 400, "headers": { + "content-type": "application/xml", "date": { "from": "now" - }, - "etag": "\"fixture-b4f27b379d0b\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { - "encoding": "base64", - "data": "" + "encoding": "utf8", + "data": "\nInvalidArgumentFixture error" }, "framing": "chunked" } @@ -161661,43 +203350,83 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "error" } }, { - "at": "/value/etag", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-b4f27b379d0b\"" + "value": 400 } }, { - "at": "/value/version", - "optional": true, + "at": "/code", + "optional": false, "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "is": "equal", + "value": "InvalidArgument" } } ], - "refusal": null + "refusal": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "refused" + } + }, + { + "at": "/kind", + "optional": false, + "rule": { + "is": "matches", + "pattern": ".+" + } + }, + { + "at": "/parameter", + "optional": false, + "rule": { + "is": "equal", + "value": "metadata" + } + }, + { + "at": "/status", + "optional": true, + "rule": { + "is": "equal", + "value": 400 + } + }, + { + "at": "/code", + "optional": true, + "rule": { + "is": "equal", + "value": "InvalidArgument" + } + } + ] }, { - "id": "operations/s3-express/put-if-none-match-missing", + "id": "operations/s3-express/put-metadata-punctuation-name", "profile": "s3-express", "lane": "core", - "purpose": "put if none match missing", + "purpose": "S3 stores a name that holds any character of an HTTP token, and one that starts with a digit.", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "body_base64": "ZnJlc2g=", - "if_none_match": "*", - "key": "object-tests/write/fresh.txt", + "body_base64": "MQ==", + "key": "object-tests/metadata/punctuation-name.txt", + "metadata": { + "1a!#$%&'*+.^_`|~b": "1" + }, "op": "put" }, "exchanges": [ @@ -161791,7 +203520,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/write/fresh.txt" + "value": "/object-tests/metadata/punctuation-name.txt" } }, { @@ -161799,15 +203528,15 @@ "optional": false, "rule": { "is": "equal", - "value": "ZnJlc2g=" + "value": "MQ==" } }, { - "at": "/headers/if-none-match", + "at": "/headers/x-amz-meta-1a!#$%&'*+.^_`|~0b", "optional": false, "rule": { "is": "equal", - "value": "*" + "value": "1" } }, { @@ -161845,7 +203574,7 @@ "date": { "from": "now" }, - "etag": "\"fixture-fb6dd447625d\"", + "etag": "\"fixture-adae183ea4af\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { @@ -161872,7 +203601,7 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-fb6dd447625d\"" + "value": "\"fixture-adae183ea4af\"" } }, { @@ -161890,16 +203619,19 @@ "refusal": null }, { - "id": "operations/s3-express/put-key-1024", + "id": "operations/s3-express/put-metadata-non-ascii-value", "profile": "s3-express", "lane": "core", - "purpose": "put key 1024", + "purpose": "A directory bucket refuses a header byte outside ASCII, and stores an RFC 2047 encoded word as it came. Send é as an encoded word, or refuse the value if the client keeps metadata to ASCII.", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { "body_base64": "MQ==", - "key": "object-tests/long/kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", + "key": "object-tests/metadata/non-ascii.txt", + "metadata": { + "value": "café" + }, "op": "put" }, "exchanges": [ @@ -161993,7 +203725,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/long/kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk" + "value": "/object-tests/metadata/non-ascii.txt" } }, { @@ -162004,6 +203736,14 @@ "value": "MQ==" } }, + { + "at": "/headers/x-amz-meta-value", + "optional": false, + "rule": { + "is": "matches", + "pattern": "=\\?(?i:utf-8)\\?(?:(?i:q)\\?caf=(?i:c3)=(?i:a9)|(?i:b)\\?Y2Fmw6k=)\\?=" + } + }, { "at": "/headers/host", "optional": false, @@ -162039,7 +203779,7 @@ "date": { "from": "now" }, - "etag": "\"fixture-ab08da38e9fe\"", + "etag": "\"fixture-ee657e36119d\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { @@ -162066,7 +203806,7 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-ab08da38e9fe\"" + "value": "\"fixture-ee657e36119d\"" } }, { @@ -162081,19 +203821,63 @@ } } ], - "refusal": null + "refusal": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "refused" + } + }, + { + "at": "/kind", + "optional": false, + "rule": { + "is": "matches", + "pattern": ".+" + } + }, + { + "at": "/parameter", + "optional": false, + "rule": { + "is": "equal", + "value": "metadata" + } + }, + { + "at": "/status", + "optional": true, + "rule": { + "is": "equal", + "value": 400 + } + }, + { + "at": "/code", + "optional": true, + "rule": { + "is": "equal", + "value": "InvalidRequest" + } + } + ] }, { - "id": "operations/s3-express/put-key-1025", + "id": "operations/s3-express/put-metadata-value-edge-whitespace", "profile": "s3-express", "lane": "core", - "purpose": "put key 1025", + "purpose": "HTTP drops spaces and tabs at either end of a header value, so S3 would store a. Send the value as an RFC 2047 encoded word, which a read decodes again, or refuse it.", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { "body_base64": "MQ==", - "key": "object-tests/long/kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", + "key": "object-tests/metadata/value-edge-whitespace.txt", + "metadata": { + "value": "\ta " + }, "op": "put" }, "exchanges": [ @@ -162187,7 +203971,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/long/kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk" + "value": "/object-tests/metadata/value-edge-whitespace.txt" } }, { @@ -162198,6 +203982,14 @@ "value": "MQ==" } }, + { + "at": "/headers/x-amz-meta-value", + "optional": false, + "rule": { + "is": "matches", + "pattern": "=\\?(?i:utf-8)\\?(?:(?i:q)\\?=(?i:09)a(?:_|=(?i:20))|(?i:b)\\?CWEg)\\?=" + } + }, { "at": "/headers/host", "optional": false, @@ -162228,16 +204020,17 @@ ], "allow_query": [], "response": { - "status": 400, + "status": 200, "headers": { - "content-type": "application/xml", "date": { "from": "now" - } + }, + "etag": "\"fixture-ee657e36119d\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nKeyTooLongErrorFixture error" + "encoding": "base64", + "data": "" }, "framing": "chunked" } @@ -162251,23 +204044,26 @@ "optional": false, "rule": { "is": "equal", - "value": "error" + "value": "ok" } }, { - "at": "/status", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": 400 + "value": "\"fixture-ee657e36119d\"" } }, { - "at": "/code", - "optional": false, + "at": "/value/version", + "optional": true, "rule": { - "is": "equal", - "value": "KeyTooLongError" + "is": "one_of", + "values": [ + null, + "" + ] } } ], @@ -162293,39 +204089,25 @@ "optional": false, "rule": { "is": "equal", - "value": "key" - } - }, - { - "at": "/status", - "optional": true, - "rule": { - "is": "equal", - "value": 400 - } - }, - { - "at": "/code", - "optional": true, - "rule": { - "is": "equal", - "value": "KeyTooLongError" + "value": "metadata" } } ] }, { - "id": "operations/s3-express/put-lost-the-race-to-create", + "id": "operations/s3-express/put-metadata-value-encoded-word-text", "profile": "s3-express", "lane": "core", - "purpose": "put lost the race to create", + "purpose": "A general-purpose bucket reads each space-separated token that starts with =? and ends with ?= as an RFC 2047 encoded word: it decodes it, or answers 400 or 500 when it cannot. A directory bucket stores such a token as it is sent. A client that decodes on a read sends the value wrapped in an encoded word of its own; one that keeps metadata to ASCII sends it as it is.", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "body_base64": "YW5vdGhlciBvYmplY3Q=", - "if_none_match": "*", - "key": "object-tests/write/object.txt", + "body_base64": "MQ==", + "key": "object-tests/metadata/value-encoded-word-text.txt", + "metadata": { + "value": "=?UTF-8?Q?caf=C3=A9?=" + }, "op": "put" }, "exchanges": [ @@ -162419,7 +204201,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/write/object.txt" + "value": "/object-tests/metadata/value-encoded-word-text.txt" } }, { @@ -162427,15 +204209,15 @@ "optional": false, "rule": { "is": "equal", - "value": "YW5vdGhlciBvYmplY3Q=" + "value": "MQ==" } }, { - "at": "/headers/if-none-match", + "at": "/headers/x-amz-meta-value", "optional": false, "rule": { - "is": "equal", - "value": "*" + "is": "matches", + "pattern": "=\\?UTF-8\\?Q\\?caf=C3=A9\\?=|=\\?(?i:utf-8)\\?(?:(?i:q)\\?=(?i:3d)=(?i:3f)UTF-8=(?i:3f)Q=(?i:3f)caf=(?i:3d)C3=(?i:3d)A9=(?i:3f)=(?i:3d)|(?i:b)\\?PT9VVEYtOD9RP2NhZj1DMz1BOT89)\\?=" } }, { @@ -162468,16 +204250,17 @@ ], "allow_query": [], "response": { - "status": 412, + "status": 200, "headers": { - "content-type": "application/xml", "date": { "from": "now" - } + }, + "etag": "\"fixture-ee657e36119d\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nPreconditionFailedFixture error" + "encoding": "base64", + "data": "" }, "framing": "chunked" } @@ -162491,41 +204274,44 @@ "optional": false, "rule": { "is": "equal", - "value": "error" + "value": "ok" } }, { - "at": "/status", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": 412 + "value": "\"fixture-ee657e36119d\"" } }, { - "at": "/code", - "optional": false, + "at": "/value/version", + "optional": true, "rule": { - "is": "equal", - "value": "PreconditionFailed" + "is": "one_of", + "values": [ + null, + "" + ] } } ], "refusal": null }, { - "id": "operations/s3-express/put-metadata-empty-value", + "id": "operations/s3-express/put-metadata-value-not-an-encoded-word", "profile": "s3-express", "lane": "core", - "purpose": "put metadata empty value", + "purpose": "A general-purpose bucket reads each space-separated token that starts with =? and ends with ?= as an RFC 2047 encoded word: it decodes it, or answers 400 or 500 when it cannot. Neither a=?b?=c nor x=?UTF-8?Q?caf=C3=A9?=y is such a token, so S3 stores this value as it is sent, and a read returns it. Send it as it is, or wrapped in an encoded word; do not refuse it.", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { "body_base64": "MQ==", - "key": "object-tests/metadata/empty-value.txt", + "key": "object-tests/metadata/value-not-an-encoded-word.txt", "metadata": { - "empty": "" + "value": "a=?b?=c x=?UTF-8?Q?caf=C3=A9?=y" }, "op": "put" }, @@ -162620,7 +204406,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/metadata/empty-value.txt" + "value": "/object-tests/metadata/value-not-an-encoded-word.txt" } }, { @@ -162632,11 +204418,11 @@ } }, { - "at": "/headers/x-amz-meta-empty", + "at": "/headers/x-amz-meta-value", "optional": false, "rule": { - "is": "equal", - "value": "" + "is": "matches", + "pattern": "a=\\?b\\?=c x=\\?UTF-8\\?Q\\?caf=C3=A9\\?=y|=\\?(?i:utf-8)\\?(?:(?i:q)\\?a=(?i:3d)=(?i:3f)b=(?i:3f)=(?i:3d)c(?:_|=(?i:20))x=(?i:3d)=(?i:3f)UTF-8=(?i:3f)Q=(?i:3f)caf=(?i:3d)C3=(?i:3d)A9=(?i:3f)=(?i:3d)y|(?i:b)\\?YT0/Yj89YyB4PT9VVEYtOD9RP2NhZj1DMz1BOT89eQ==)\\?=" } }, { @@ -162674,7 +204460,7 @@ "date": { "from": "now" }, - "etag": "\"fixture-e6096f6fd1ec\"", + "etag": "\"fixture-ee657e36119d\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { @@ -162701,7 +204487,7 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-e6096f6fd1ec\"" + "value": "\"fixture-ee657e36119d\"" } }, { @@ -162719,18 +204505,18 @@ "refusal": null }, { - "id": "operations/s3-express/put-metadata-hyphen-name", + "id": "operations/s3-express/put-metadata-value-control-characters", "profile": "s3-express", "lane": "core", - "purpose": "put metadata hyphen name", + "purpose": "A control character other than a tab is no valid HTTP field value. Send the value as an RFC 2047 encoded word, which S3 stores and a read decodes again, or refuse it.", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { "body_base64": "MQ==", - "key": "object-tests/metadata/hyphen-name.txt", + "key": "object-tests/metadata/value-control-characters.txt", "metadata": { - "not-valid": "1" + "value": "a\u0000bc" }, "op": "put" }, @@ -162825,7 +204611,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/metadata/hyphen-name.txt" + "value": "/object-tests/metadata/value-control-characters.txt" } }, { @@ -162837,11 +204623,11 @@ } }, { - "at": "/headers/x-amz-meta-not-valid", + "at": "/headers/x-amz-meta-value", "optional": false, "rule": { - "is": "equal", - "value": "1" + "is": "matches", + "pattern": "=\\?(?i:utf-8)\\?(?:(?i:q)\\?a=(?i:00)b=(?i:7f)c|(?i:b)\\?YQBif2M=)\\?=" } }, { @@ -162879,7 +204665,7 @@ "date": { "from": "now" }, - "etag": "\"fixture-adae183ea4af\"", + "etag": "\"fixture-ee657e36119d\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { @@ -162906,7 +204692,7 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-adae183ea4af\"" + "value": "\"fixture-ee657e36119d\"" } }, { @@ -162921,22 +204707,46 @@ } } ], - "refusal": null + "refusal": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "refused" + } + }, + { + "at": "/kind", + "optional": false, + "rule": { + "is": "matches", + "pattern": ".+" + } + }, + { + "at": "/parameter", + "optional": false, + "rule": { + "is": "equal", + "value": "metadata" + } + } + ] }, { - "id": "operations/s3-express/put-metadata-names-differ-in-case", + "id": "operations/s3-express/put-metadata-value-line-break", "profile": "s3-express", "lane": "core", - "purpose": "S3 matches a metadata name without case. A directory bucket refuses two names that differ only in case.", + "purpose": "CR and LF are no valid HTTP field value. A directory bucket stores an RFC 2047 encoded word as sent, so send the value as one, which a read decodes again, or refuse it.", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { "body_base64": "MQ==", - "key": "object-tests/metadata/names-differ-in-case.txt", + "key": "object-tests/metadata/value-line-break.txt", "metadata": { - "DUP": "two", - "dup": "one" + "value": "a\r\nb" }, "op": "put" }, @@ -163031,7 +204841,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/metadata/names-differ-in-case.txt" + "value": "/object-tests/metadata/value-line-break.txt" } }, { @@ -163043,20 +204853,11 @@ } }, { - "at": "/headers/x-amz-meta-dup", + "at": "/headers/x-amz-meta-value", "optional": false, "rule": { - "is": "one_of", - "values": [ - [ - "one", - "two" - ], - [ - "two", - "one" - ] - ] + "is": "matches", + "pattern": "=\\?(?i:utf-8)\\?(?:(?i:q)\\?a=(?i:0d)=(?i:0a)b|(?i:b)\\?YQ0KYg==)\\?=" } }, { @@ -163089,16 +204890,17 @@ ], "allow_query": [], "response": { - "status": 400, + "status": 200, "headers": { - "content-type": "application/xml", "date": { "from": "now" - } + }, + "etag": "\"fixture-ee657e36119d\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nInvalidArgumentFixture error" + "encoding": "base64", + "data": "" }, "framing": "chunked" } @@ -163112,23 +204914,26 @@ "optional": false, "rule": { "is": "equal", - "value": "error" + "value": "ok" } }, { - "at": "/status", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": 400 + "value": "\"fixture-ee657e36119d\"" } }, { - "at": "/code", - "optional": false, + "at": "/value/version", + "optional": true, "rule": { - "is": "equal", - "value": "InvalidArgument" + "is": "one_of", + "values": [ + null, + "" + ] } } ], @@ -163156,38 +204961,22 @@ "is": "equal", "value": "metadata" } - }, - { - "at": "/status", - "optional": true, - "rule": { - "is": "equal", - "value": 400 - } - }, - { - "at": "/code", - "optional": true, - "rule": { - "is": "equal", - "value": "InvalidArgument" - } } ] }, { - "id": "operations/s3-express/put-metadata-punctuation-name", + "id": "operations/s3-express/put-metadata-value-with-tab", "profile": "s3-express", "lane": "core", - "purpose": "S3 stores a name that holds any character of an HTTP token, and one that starts with a digit.", + "purpose": "S3 stores a tab inside a value as it is sent. Send it raw, or inside an RFC 2047 encoded word.", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { "body_base64": "MQ==", - "key": "object-tests/metadata/punctuation-name.txt", + "key": "object-tests/metadata/value-with-tab.txt", "metadata": { - "1a!#$%&'*+.^_`|~b": "1" + "value": "a\tb" }, "op": "put" }, @@ -163282,7 +205071,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/metadata/punctuation-name.txt" + "value": "/object-tests/metadata/value-with-tab.txt" } }, { @@ -163294,11 +205083,11 @@ } }, { - "at": "/headers/x-amz-meta-1a!#$%&'*+.^_`|~0b", + "at": "/headers/x-amz-meta-value", "optional": false, "rule": { - "is": "equal", - "value": "1" + "is": "matches", + "pattern": "a\tb|=\\?(?i:utf-8)\\?(?:(?i:q)\\?a=(?i:09)b|(?i:b)\\?YQli)\\?=" } }, { @@ -163336,7 +205125,7 @@ "date": { "from": "now" }, - "etag": "\"fixture-adae183ea4af\"", + "etag": "\"fixture-ee657e36119d\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { @@ -163363,7 +205152,7 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-adae183ea4af\"" + "value": "\"fixture-ee657e36119d\"" } }, { @@ -163381,18 +205170,18 @@ "refusal": null }, { - "id": "operations/s3-express/put-metadata-non-ascii-value", + "id": "operations/s3-express/put-metadata-outside-latin-1", "profile": "s3-express", "lane": "core", - "purpose": "A directory bucket refuses a header byte outside ASCII, and stores an RFC 2047 encoded word as it came. Send é as an encoded word, or refuse the value if the client keeps metadata to ASCII.", + "purpose": "A directory bucket refuses the UTF-8 bytes of 雪. Send it as an RFC 2047 encoded word, or refuse the value if the client keeps metadata to ASCII.", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { "body_base64": "MQ==", - "key": "object-tests/metadata/non-ascii.txt", + "key": "object-tests/metadata/outside-latin-1.txt", "metadata": { - "value": "café" + "value": "雪" }, "op": "put" }, @@ -163487,7 +205276,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/metadata/non-ascii.txt" + "value": "/object-tests/metadata/outside-latin-1.txt" } }, { @@ -163503,7 +205292,7 @@ "optional": false, "rule": { "is": "matches", - "pattern": "=\\?(?i:utf-8)\\?(?:(?i:q)\\?caf=(?i:c3)=(?i:a9)|(?i:b)\\?Y2Fmw6k=)\\?=" + "pattern": "=\\?(?i:utf-8)\\?(?:(?i:q)\\?=(?i:e9)=(?i:9b)=(?i:aa)|(?i:b)\\?6Zuq)\\?=" } }, { @@ -163627,19 +205416,16 @@ ] }, { - "id": "operations/s3-express/put-metadata-value-edge-whitespace", + "id": "operations/s3-express/put-metadata-replaced", "profile": "s3-express", "lane": "core", - "purpose": "HTTP drops spaces and tabs at either end of a header value, so S3 would store a. Send the value as an RFC 2047 encoded word, which a read decodes again, or refuse it.", + "purpose": "put metadata replaced", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "body_base64": "MQ==", - "key": "object-tests/metadata/value-edge-whitespace.txt", - "metadata": { - "value": "\ta " - }, + "body_base64": "Mg==", + "key": "object-tests/metadata/replaced.txt", "op": "put" }, "exchanges": [ @@ -163733,7 +205519,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/metadata/value-edge-whitespace.txt" + "value": "/object-tests/metadata/replaced.txt" } }, { @@ -163741,15 +205527,7 @@ "optional": false, "rule": { "is": "equal", - "value": "MQ==" - } - }, - { - "at": "/headers/x-amz-meta-value", - "optional": false, - "rule": { - "is": "matches", - "pattern": "=\\?(?i:utf-8)\\?(?:(?i:q)\\?=(?i:09)a(?:_|=(?i:20))|(?i:b)\\?CWEg)\\?=" + "value": "Mg==" } }, { @@ -163787,7 +205565,7 @@ "date": { "from": "now" }, - "etag": "\"fixture-ee657e36119d\"", + "etag": "\"fixture-8ff37996a1a3\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { @@ -163814,7 +205592,7 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-ee657e36119d\"" + "value": "\"fixture-8ff37996a1a3\"" } }, { @@ -163829,46 +205607,22 @@ } } ], - "refusal": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "refused" - } - }, - { - "at": "/kind", - "optional": false, - "rule": { - "is": "matches", - "pattern": ".+" - } - }, - { - "at": "/parameter", - "optional": false, - "rule": { - "is": "equal", - "value": "metadata" - } - } - ] + "refusal": null }, { - "id": "operations/s3-express/put-metadata-value-encoded-word-text", + "id": "operations/s3-express/put-metadata", "profile": "s3-express", "lane": "core", - "purpose": "A general-purpose bucket reads each space-separated token that starts with =? and ends with ?= as an RFC 2047 encoded word: it decodes it, or answers 400 or 500 when it cannot. A directory bucket stores such a token as it is sent. A client that decodes on a read sends the value wrapped in an encoded word of its own; one that keeps metadata to ASCII sends it as it is.", + "purpose": "put metadata", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { "body_base64": "MQ==", - "key": "object-tests/metadata/value-encoded-word-text.txt", + "key": "object-tests/metadata/object.txt", "metadata": { - "value": "=?UTF-8?Q?caf=C3=A9?=" + "name": "value", + "second": "2" }, "op": "put" }, @@ -163963,7 +205717,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/metadata/value-encoded-word-text.txt" + "value": "/object-tests/metadata/object.txt" } }, { @@ -163975,11 +205729,19 @@ } }, { - "at": "/headers/x-amz-meta-value", + "at": "/headers/x-amz-meta-name", "optional": false, "rule": { - "is": "matches", - "pattern": "=\\?UTF-8\\?Q\\?caf=C3=A9\\?=|=\\?(?i:utf-8)\\?(?:(?i:q)\\?=(?i:3d)=(?i:3f)UTF-8=(?i:3f)Q=(?i:3f)caf=(?i:3d)C3=(?i:3d)A9=(?i:3f)=(?i:3d)|(?i:b)\\?PT9VVEYtOD9RP2NhZj1DMz1BOT89)\\?=" + "is": "equal", + "value": "value" + } + }, + { + "at": "/headers/x-amz-meta-second", + "optional": false, + "rule": { + "is": "equal", + "value": "2" } }, { @@ -164062,19 +205824,16 @@ "refusal": null }, { - "id": "operations/s3-express/put-metadata-value-not-an-encoded-word", + "id": "operations/s3-express/put-overwrite", "profile": "s3-express", "lane": "core", - "purpose": "A general-purpose bucket reads each space-separated token that starts with =? and ends with ?= as an RFC 2047 encoded word: it decodes it, or answers 400 or 500 when it cannot. Neither a=?b?=c nor x=?UTF-8?Q?caf=C3=A9?=y is such a token, so S3 stores this value as it is sent, and a read returns it. Send it as it is, or wrapped in an encoded word; do not refuse it.", + "purpose": "put overwrite", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "body_base64": "MQ==", - "key": "object-tests/metadata/value-not-an-encoded-word.txt", - "metadata": { - "value": "a=?b?=c x=?UTF-8?Q?caf=C3=A9?=y" - }, + "body_base64": "b3ZlcndyaXR0ZW4=", + "key": "object-tests/write/object.txt", "op": "put" }, "exchanges": [ @@ -164168,7 +205927,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/metadata/value-not-an-encoded-word.txt" + "value": "/object-tests/write/object.txt" } }, { @@ -164176,15 +205935,7 @@ "optional": false, "rule": { "is": "equal", - "value": "MQ==" - } - }, - { - "at": "/headers/x-amz-meta-value", - "optional": false, - "rule": { - "is": "matches", - "pattern": "a=\\?b\\?=c x=\\?UTF-8\\?Q\\?caf=C3=A9\\?=y|=\\?(?i:utf-8)\\?(?:(?i:q)\\?a=(?i:3d)=(?i:3f)b=(?i:3f)=(?i:3d)c(?:_|=(?i:20))x=(?i:3d)=(?i:3f)UTF-8=(?i:3f)Q=(?i:3f)caf=(?i:3d)C3=(?i:3d)A9=(?i:3f)=(?i:3d)y|(?i:b)\\?YT0/Yj89YyB4PT9VVEYtOD9RP2NhZj1DMz1BOT89eQ==)\\?=" + "value": "b3ZlcndyaXR0ZW4=" } }, { @@ -164222,7 +205973,7 @@ "date": { "from": "now" }, - "etag": "\"fixture-ee657e36119d\"", + "etag": "\"fixture-411516c7564c\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { @@ -164249,7 +206000,7 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-ee657e36119d\"" + "value": "\"fixture-411516c7564c\"" } }, { @@ -164267,19 +206018,17 @@ "refusal": null }, { - "id": "operations/s3-express/put-metadata-value-control-characters", + "id": "operations/s3-express/put-precondition-failed", "profile": "s3-express", "lane": "core", - "purpose": "A control character other than a tab is no valid HTTP field value. Send the value as an RFC 2047 encoded word, which S3 stores and a read decodes again, or refuse it.", + "purpose": "put precondition failed", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "body_base64": "MQ==", - "key": "object-tests/metadata/value-control-characters.txt", - "metadata": { - "value": "a\u0000bc" - }, + "body_base64": "YW5vdGhlciBvYmplY3Q=", + "if_match": "\"fixture-db71b2c0257c\"", + "key": "object-tests/write/object.txt", "op": "put" }, "exchanges": [ @@ -164373,7 +206122,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/metadata/value-control-characters.txt" + "value": "/object-tests/write/object.txt" } }, { @@ -164381,15 +206130,15 @@ "optional": false, "rule": { "is": "equal", - "value": "MQ==" + "value": "YW5vdGhlciBvYmplY3Q=" } }, { - "at": "/headers/x-amz-meta-value", + "at": "/headers/if-match", "optional": false, "rule": { - "is": "matches", - "pattern": "=\\?(?i:utf-8)\\?(?:(?i:q)\\?a=(?i:00)b=(?i:7f)c|(?i:b)\\?YQBif2M=)\\?=" + "is": "equal", + "value": "\"fixture-db71b2c0257c\"" } }, { @@ -164422,17 +206171,16 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 412, "headers": { + "content-type": "application/xml", "date": { "from": "now" - }, - "etag": "\"fixture-ee657e36119d\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { - "encoding": "base64", - "data": "" + "encoding": "utf8", + "data": "\nPreconditionFailedFixture error" }, "framing": "chunked" } @@ -164446,71 +206194,42 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-ee657e36119d\"" + "value": "error" } }, { - "at": "/value/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - } - ], - "refusal": [ - { - "at": "/outcome", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "refused" - } - }, - { - "at": "/kind", - "optional": false, - "rule": { - "is": "matches", - "pattern": ".+" + "value": 412 } }, { - "at": "/parameter", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": "metadata" + "value": "PreconditionFailed" } } - ] + ], + "refusal": null }, { - "id": "operations/s3-express/put-metadata-value-line-break", + "id": "operations/s3-express/stage-after-abort", "profile": "s3-express", "lane": "core", - "purpose": "CR and LF are no valid HTTP field value. A directory bucket stores an RFC 2047 encoded word as sent, so send the value as one, which a read decodes again, or refuse it.", + "purpose": "stage after abort", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "body_base64": "MQ==", - "key": "object-tests/metadata/value-line-break.txt", - "metadata": { - "value": "a\r\nb" - }, - "op": "put" + "body_base64": "eA==", + "key": "object-tests/multipart/aborted.bin", + "op": "s3.upload_part", + "part_number": 2, + "upload_id": "fixture-upload+/4bef2cd6d025=" }, "exchanges": [ { @@ -164603,7 +206322,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/metadata/value-line-break.txt" + "value": "/object-tests/multipart/aborted.bin" } }, { @@ -164611,15 +206330,23 @@ "optional": false, "rule": { "is": "equal", - "value": "MQ==" + "value": "eA==" } }, { - "at": "/headers/x-amz-meta-value", + "at": "/query/partNumber", "optional": false, "rule": { - "is": "matches", - "pattern": "=\\?(?i:utf-8)\\?(?:(?i:q)\\?a=(?i:0d)=(?i:0a)b|(?i:b)\\?YQ0KYg==)\\?=" + "is": "equal", + "value": "2" + } + }, + { + "at": "/query/uploadId", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-upload+/4bef2cd6d025=" } }, { @@ -164652,17 +206379,16 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 404, "headers": { + "content-type": "application/xml", "date": { "from": "now" - }, - "etag": "\"fixture-ee657e36119d\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { - "encoding": "base64", - "data": "" + "encoding": "utf8", + "data": "\nNoSuchUploadFixture error" }, "framing": "chunked" } @@ -164676,71 +206402,42 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-ee657e36119d\"" + "value": "error" } }, { - "at": "/value/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - } - ], - "refusal": [ - { - "at": "/outcome", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "refused" - } - }, - { - "at": "/kind", - "optional": false, - "rule": { - "is": "matches", - "pattern": ".+" + "value": 404 } }, { - "at": "/parameter", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": "metadata" + "value": "NoSuchUpload" } } - ] + ], + "refusal": null }, { - "id": "operations/s3-express/put-metadata-value-with-tab", + "id": "operations/s3-express/stage-last", "profile": "s3-express", "lane": "core", - "purpose": "S3 stores a tab inside a value as it is sent. Send it raw, or inside an RFC 2047 encoded word.", + "purpose": "stage last", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "body_base64": "MQ==", - "key": "object-tests/metadata/value-with-tab.txt", - "metadata": { - "value": "a\tb" - }, - "op": "put" + "body_base64": "c2Vjb25k", + "key": "object-tests/multipart/object.bin", + "op": "s3.upload_part", + "part_number": 2, + "upload_id": "fixture-upload+/c60fb1e2e00d=" }, "exchanges": [ { @@ -164833,7 +206530,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/metadata/value-with-tab.txt" + "value": "/object-tests/multipart/object.bin" } }, { @@ -164841,15 +206538,23 @@ "optional": false, "rule": { "is": "equal", - "value": "MQ==" + "value": "c2Vjb25k" } }, { - "at": "/headers/x-amz-meta-value", + "at": "/query/partNumber", "optional": false, "rule": { - "is": "matches", - "pattern": "a\tb|=\\?(?i:utf-8)\\?(?:(?i:q)\\?a=(?i:09)b|(?i:b)\\?YQli)\\?=" + "is": "equal", + "value": "2" + } + }, + { + "at": "/query/uploadId", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-upload+/c60fb1e2e00d=" } }, { @@ -164887,7 +206592,7 @@ "date": { "from": "now" }, - "etag": "\"fixture-ee657e36119d\"", + "etag": "\"fixture-ec2738a0b15a\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { @@ -164914,38 +206619,26 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-ee657e36119d\"" - } - }, - { - "at": "/value/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "value": "\"fixture-ec2738a0b15a\"" } } ], "refusal": null }, { - "id": "operations/s3-express/put-metadata-outside-latin-1", + "id": "operations/s3-express/stage-part-10000", "profile": "s3-express", "lane": "core", - "purpose": "A directory bucket refuses the UTF-8 bytes of 雪. Send it as an RFC 2047 encoded word, or refuse the value if the client keeps metadata to ASCII.", + "purpose": "Part numbers run from 1 to 10,000. Stage part 10,000; only 0 and 10,001 may be refused.", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "body_base64": "MQ==", - "key": "object-tests/metadata/outside-latin-1.txt", - "metadata": { - "value": "雪" - }, - "op": "put" + "body_base64": "c2Vjb25k", + "key": "object-tests/multipart/object.bin", + "op": "s3.upload_part", + "part_number": 10000, + "upload_id": "fixture-upload+/c60fb1e2e00d=" }, "exchanges": [ { @@ -165038,7 +206731,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/metadata/outside-latin-1.txt" + "value": "/object-tests/multipart/object.bin" } }, { @@ -165046,15 +206739,23 @@ "optional": false, "rule": { "is": "equal", - "value": "MQ==" + "value": "c2Vjb25k" } }, { - "at": "/headers/x-amz-meta-value", + "at": "/query/partNumber", "optional": false, "rule": { - "is": "matches", - "pattern": "=\\?(?i:utf-8)\\?(?:(?i:q)\\?=(?i:e9)=(?i:9b)=(?i:aa)|(?i:b)\\?6Zuq)\\?=" + "is": "equal", + "value": "10000" + } + }, + { + "at": "/query/uploadId", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-upload+/c60fb1e2e00d=" } }, { @@ -165092,7 +206793,7 @@ "date": { "from": "now" }, - "etag": "\"fixture-ee657e36119d\"", + "etag": "\"fixture-ec2738a0b15a\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { @@ -165119,76 +206820,26 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-ee657e36119d\"" - } - }, - { - "at": "/value/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "value": "\"fixture-ec2738a0b15a\"" } } ], - "refusal": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "refused" - } - }, - { - "at": "/kind", - "optional": false, - "rule": { - "is": "matches", - "pattern": ".+" - } - }, - { - "at": "/parameter", - "optional": false, - "rule": { - "is": "equal", - "value": "metadata" - } - }, - { - "at": "/status", - "optional": true, - "rule": { - "is": "equal", - "value": 400 - } - }, - { - "at": "/code", - "optional": true, - "rule": { - "is": "equal", - "value": "InvalidRequest" - } - } - ] + "refusal": null }, { - "id": "operations/s3-express/put-metadata-replaced", + "id": "operations/s3-express/stage-part-10001", "profile": "s3-express", "lane": "core", - "purpose": "put metadata replaced", + "purpose": "stage part 10001", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "body_base64": "Mg==", - "key": "object-tests/metadata/replaced.txt", - "op": "put" + "body_base64": "eA==", + "key": "object-tests/multipart/object.bin", + "op": "s3.upload_part", + "part_number": 10001, + "upload_id": "fixture-upload+/c60fb1e2e00d=" }, "exchanges": [ { @@ -165281,7 +206932,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/metadata/replaced.txt" + "value": "/object-tests/multipart/object.bin" } }, { @@ -165289,7 +206940,23 @@ "optional": false, "rule": { "is": "equal", - "value": "Mg==" + "value": "eA==" + } + }, + { + "at": "/query/partNumber", + "optional": false, + "rule": { + "is": "equal", + "value": "10001" + } + }, + { + "at": "/query/uploadId", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-upload+/c60fb1e2e00d=" } }, { @@ -165322,17 +206989,16 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 400, "headers": { + "content-type": "application/xml", "date": { "from": "now" - }, - "etag": "\"fixture-8ff37996a1a3\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { - "encoding": "base64", - "data": "" + "encoding": "utf8", + "data": "\nInvalidArgumentFixture error" }, "framing": "chunked" } @@ -165346,47 +207012,83 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "error" } }, { - "at": "/value/etag", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-8ff37996a1a3\"" + "value": 400 } }, { - "at": "/value/version", - "optional": true, + "at": "/code", + "optional": false, "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "is": "equal", + "value": "InvalidArgument" } } ], - "refusal": null + "refusal": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "refused" + } + }, + { + "at": "/kind", + "optional": false, + "rule": { + "is": "matches", + "pattern": ".+" + } + }, + { + "at": "/parameter", + "optional": false, + "rule": { + "is": "equal", + "value": "part_number" + } + }, + { + "at": "/status", + "optional": true, + "rule": { + "is": "equal", + "value": 400 + } + }, + { + "at": "/code", + "optional": true, + "rule": { + "is": "equal", + "value": "InvalidArgument" + } + } + ] }, { - "id": "operations/s3-express/put-metadata", + "id": "operations/s3-express/stage-part-zero", "profile": "s3-express", "lane": "core", - "purpose": "put metadata", + "purpose": "stage part zero", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "body_base64": "MQ==", - "key": "object-tests/metadata/object.txt", - "metadata": { - "name": "value", - "second": "2" - }, - "op": "put" + "body_base64": "eA==", + "key": "object-tests/multipart/object.bin", + "op": "s3.upload_part", + "part_number": 0, + "upload_id": "fixture-upload+/c60fb1e2e00d=" }, "exchanges": [ { @@ -165479,7 +207181,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/metadata/object.txt" + "value": "/object-tests/multipart/object.bin" } }, { @@ -165487,23 +207189,23 @@ "optional": false, "rule": { "is": "equal", - "value": "MQ==" + "value": "eA==" } }, { - "at": "/headers/x-amz-meta-name", + "at": "/query/partNumber", "optional": false, "rule": { "is": "equal", - "value": "value" + "value": "0" } }, { - "at": "/headers/x-amz-meta-second", + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "2" + "value": "fixture-upload+/c60fb1e2e00d=" } }, { @@ -165536,17 +207238,16 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 400, "headers": { + "content-type": "application/xml", "date": { "from": "now" - }, - "etag": "\"fixture-ee657e36119d\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { - "encoding": "base64", - "data": "" + "encoding": "utf8", + "data": "\nInvalidArgumentFixture error" }, "framing": "chunked" } @@ -165560,43 +207261,83 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "error" } }, { - "at": "/value/etag", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-ee657e36119d\"" + "value": 400 } }, { - "at": "/value/version", - "optional": true, + "at": "/code", + "optional": false, "rule": { - "is": "one_of", - "values": [ - null, - "" - ] + "is": "equal", + "value": "InvalidArgument" } } ], - "refusal": null + "refusal": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "refused" + } + }, + { + "at": "/kind", + "optional": false, + "rule": { + "is": "matches", + "pattern": ".+" + } + }, + { + "at": "/parameter", + "optional": false, + "rule": { + "is": "equal", + "value": "part_number" + } + }, + { + "at": "/status", + "optional": true, + "rule": { + "is": "equal", + "value": 400 + } + }, + { + "at": "/code", + "optional": true, + "rule": { + "is": "equal", + "value": "InvalidArgument" + } + } + ] }, { - "id": "operations/s3-express/put-overwrite", + "id": "operations/s3-express/stage-unknown-upload", "profile": "s3-express", "lane": "core", - "purpose": "put overwrite", + "purpose": "stage unknown upload", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "body_base64": "b3ZlcndyaXR0ZW4=", - "key": "object-tests/write/object.txt", - "op": "put" + "body_base64": "eA==", + "key": "object-tests/multipart/object.bin", + "op": "s3.upload_part", + "part_number": 1, + "upload_id": "fixture-upload+/4d0d5ccc4993=" }, "exchanges": [ { @@ -165689,7 +207430,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/write/object.txt" + "value": "/object-tests/multipart/object.bin" } }, { @@ -165697,210 +207438,23 @@ "optional": false, "rule": { "is": "equal", - "value": "b3ZlcndyaXR0ZW4=" - } - }, - { - "at": "/headers/host", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" - } - }, - { - "at": "/headers/x-amz-s3session-token", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture-session-token" - } - }, - { - "at": "/headers/authorization", - "optional": false, - "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" - } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "date": { - "from": "now" - }, - "etag": "\"fixture-411516c7564c\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" - }, - "body": { - "encoding": "base64", - "data": "" - }, - "framing": "chunked" - } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-411516c7564c\"" - } - }, - { - "at": "/value/version", - "optional": true, - "rule": { - "is": "one_of", - "values": [ - null, - "" - ] - } - } - ], - "refusal": null - }, - { - "id": "operations/s3-express/put-precondition-failed", - "profile": "s3-express", - "lane": "core", - "purpose": "put precondition failed", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "body_base64": "YW5vdGhlciBvYmplY3Q=", - "if_match": "\"fixture-db71b2c0257c\"", - "key": "object-tests/write/object.txt", - "op": "put" - }, - "exchanges": [ - { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/" - } - }, - { - "at": "/query/session", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/headers/host", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" - } - }, - { - "at": "/headers/authorization", - "optional": false, - "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" - } - }, - { - "at": "/headers/x-amz-s3session-token", - "optional": false, - "rule": { - "is": "absent" - } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-type": "application/xml" - }, - "body": { - "encoding": "utf8", - "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" - }, - "body_time": { - "text": "SESSION_EXPIRATION", - "offset_seconds": 300 - } - } - } - ] - }, - { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "PUT" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/object-tests/write/object.txt" + "value": "eA==" } }, { - "at": "/body_base64", + "at": "/query/partNumber", "optional": false, "rule": { "is": "equal", - "value": "YW5vdGhlciBvYmplY3Q=" + "value": "1" } }, { - "at": "/headers/if-match", + "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-db71b2c0257c\"" + "value": "fixture-upload+/4d0d5ccc4993=" } }, { @@ -165933,7 +207487,7 @@ ], "allow_query": [], "response": { - "status": 412, + "status": 404, "headers": { "content-type": "application/xml", "date": { @@ -165942,7 +207496,7 @@ }, "body": { "encoding": "utf8", - "data": "\nPreconditionFailedFixture error" + "data": "\nNoSuchUploadFixture error" }, "framing": "chunked" } @@ -165964,7 +207518,7 @@ "optional": false, "rule": { "is": "equal", - "value": 412 + "value": 404 } }, { @@ -165972,26 +207526,26 @@ "optional": false, "rule": { "is": "equal", - "value": "PreconditionFailed" + "value": "NoSuchUpload" } } ], "refusal": null }, { - "id": "operations/s3-express/stage-after-abort", + "id": "operations/s3-express/stage", "profile": "s3-express", "lane": "core", - "purpose": "stage after abort", + "purpose": "stage", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "body_base64": "eA==", - "key": "object-tests/multipart/aborted.bin", + "body_base64": "cGFydA==", + "key": "object-tests/multipart/object.bin", "op": "s3.upload_part", - "part_number": 2, - "upload_id": "fixture-upload+/4bef2cd6d025=" + "part_number": 1, + "upload_id": "fixture-upload+/c60fb1e2e00d=" }, "exchanges": [ { @@ -166084,7 +207638,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/multipart/aborted.bin" + "value": "/object-tests/multipart/object.bin" } }, { @@ -166092,7 +207646,7 @@ "optional": false, "rule": { "is": "equal", - "value": "eA==" + "value": "cGFydA==" } }, { @@ -166100,7 +207654,7 @@ "optional": false, "rule": { "is": "equal", - "value": "2" + "value": "1" } }, { @@ -166108,7 +207662,7 @@ "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/4bef2cd6d025=" + "value": "fixture-upload+/c60fb1e2e00d=" } }, { @@ -166141,16 +207695,17 @@ ], "allow_query": [], "response": { - "status": 404, + "status": 200, "headers": { - "content-type": "application/xml", "date": { "from": "now" - } + }, + "etag": "\"fixture-9aff617fcdf8\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nNoSuchUploadFixture error" + "encoding": "base64", + "data": "" }, "framing": "chunked" } @@ -166164,41 +207719,33 @@ "optional": false, "rule": { "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 404 + "value": "ok" } }, { - "at": "/code", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": "NoSuchUpload" + "value": "\"fixture-9aff617fcdf8\"" } } ], "refusal": null }, { - "id": "operations/s3-express/stage-last", + "id": "operations/s3-express/stage-key-question", "profile": "s3-express", "lane": "core", - "purpose": "stage last", + "purpose": "stage, with the key \"question?mark.txt\"", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "body_base64": "c2Vjb25k", - "key": "object-tests/multipart/object.bin", + "body_base64": "cGFydA==", + "key": "object-tests/keys/question?mark.txt", "op": "s3.upload_part", - "part_number": 2, + "part_number": 1, "upload_id": "fixture-upload+/c60fb1e2e00d=" }, "exchanges": [ @@ -166292,7 +207839,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/multipart/object.bin" + "value": "/object-tests/keys/question?mark.txt" } }, { @@ -166300,7 +207847,7 @@ "optional": false, "rule": { "is": "equal", - "value": "c2Vjb25k" + "value": "cGFydA==" } }, { @@ -166308,7 +207855,7 @@ "optional": false, "rule": { "is": "equal", - "value": "2" + "value": "1" } }, { @@ -166354,7 +207901,7 @@ "date": { "from": "now" }, - "etag": "\"fixture-ec2738a0b15a\"", + "etag": "\"fixture-9aff617fcdf8\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { @@ -166381,25 +207928,25 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-ec2738a0b15a\"" + "value": "\"fixture-9aff617fcdf8\"" } } ], "refusal": null }, { - "id": "operations/s3-express/stage-part-10000", + "id": "operations/s3-express/stage-key-hash", "profile": "s3-express", "lane": "core", - "purpose": "Part numbers run from 1 to 10,000. Stage part 10,000; only 0 and 10,001 may be refused.", + "purpose": "stage, with the key \"hash#tag.txt\"", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "body_base64": "c2Vjb25k", - "key": "object-tests/multipart/object.bin", + "body_base64": "cGFydA==", + "key": "object-tests/keys/hash#tag.txt", "op": "s3.upload_part", - "part_number": 10000, + "part_number": 1, "upload_id": "fixture-upload+/c60fb1e2e00d=" }, "exchanges": [ @@ -166493,7 +208040,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/multipart/object.bin" + "value": "/object-tests/keys/hash#tag.txt" } }, { @@ -166501,7 +208048,7 @@ "optional": false, "rule": { "is": "equal", - "value": "c2Vjb25k" + "value": "cGFydA==" } }, { @@ -166509,7 +208056,7 @@ "optional": false, "rule": { "is": "equal", - "value": "10000" + "value": "1" } }, { @@ -166555,7 +208102,7 @@ "date": { "from": "now" }, - "etag": "\"fixture-ec2738a0b15a\"", + "etag": "\"fixture-9aff617fcdf8\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { @@ -166582,25 +208129,25 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-ec2738a0b15a\"" + "value": "\"fixture-9aff617fcdf8\"" } } ], "refusal": null }, { - "id": "operations/s3-express/stage-part-10001", + "id": "operations/s3-express/stage-key-percent", "profile": "s3-express", "lane": "core", - "purpose": "stage part 10001", + "purpose": "stage, with the key \"percent%20.txt\"", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "body_base64": "eA==", - "key": "object-tests/multipart/object.bin", + "body_base64": "cGFydA==", + "key": "object-tests/keys/percent%20.txt", "op": "s3.upload_part", - "part_number": 10001, + "part_number": 1, "upload_id": "fixture-upload+/c60fb1e2e00d=" }, "exchanges": [ @@ -166694,7 +208241,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/multipart/object.bin" + "value": "/object-tests/keys/percent%20.txt" } }, { @@ -166702,7 +208249,7 @@ "optional": false, "rule": { "is": "equal", - "value": "eA==" + "value": "cGFydA==" } }, { @@ -166710,7 +208257,7 @@ "optional": false, "rule": { "is": "equal", - "value": "10001" + "value": "1" } }, { @@ -166751,16 +208298,17 @@ ], "allow_query": [], "response": { - "status": 400, + "status": 200, "headers": { - "content-type": "application/xml", "date": { "from": "now" - } + }, + "etag": "\"fixture-9aff617fcdf8\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nInvalidArgumentFixture error" + "encoding": "base64", + "data": "" }, "framing": "chunked" } @@ -166774,82 +208322,33 @@ "optional": false, "rule": { "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 400 + "value": "ok" } }, { - "at": "/code", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": "InvalidArgument" + "value": "\"fixture-9aff617fcdf8\"" } } ], - "refusal": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "refused" - } - }, - { - "at": "/kind", - "optional": false, - "rule": { - "is": "matches", - "pattern": ".+" - } - }, - { - "at": "/parameter", - "optional": false, - "rule": { - "is": "equal", - "value": "part_number" - } - }, - { - "at": "/status", - "optional": true, - "rule": { - "is": "equal", - "value": 400 - } - }, - { - "at": "/code", - "optional": true, - "rule": { - "is": "equal", - "value": "InvalidArgument" - } - } - ] + "refusal": null }, { - "id": "operations/s3-express/stage-part-zero", + "id": "operations/s3-express/stage-key-plus", "profile": "s3-express", "lane": "core", - "purpose": "stage part zero", + "purpose": "stage, with the key \"plus+plus.txt\"", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "body_base64": "eA==", - "key": "object-tests/multipart/object.bin", + "body_base64": "cGFydA==", + "key": "object-tests/keys/plus+plus.txt", "op": "s3.upload_part", - "part_number": 0, + "part_number": 1, "upload_id": "fixture-upload+/c60fb1e2e00d=" }, "exchanges": [ @@ -166943,7 +208442,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/multipart/object.bin" + "value": "/object-tests/keys/plus+plus.txt" } }, { @@ -166951,7 +208450,7 @@ "optional": false, "rule": { "is": "equal", - "value": "eA==" + "value": "cGFydA==" } }, { @@ -166959,7 +208458,7 @@ "optional": false, "rule": { "is": "equal", - "value": "0" + "value": "1" } }, { @@ -167000,16 +208499,17 @@ ], "allow_query": [], "response": { - "status": 400, + "status": 200, "headers": { - "content-type": "application/xml", "date": { "from": "now" - } + }, + "etag": "\"fixture-9aff617fcdf8\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nInvalidArgumentFixture error" + "encoding": "base64", + "data": "" }, "framing": "chunked" } @@ -167023,83 +208523,34 @@ "optional": false, "rule": { "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 400 + "value": "ok" } }, { - "at": "/code", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": "InvalidArgument" + "value": "\"fixture-9aff617fcdf8\"" } } ], - "refusal": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "refused" - } - }, - { - "at": "/kind", - "optional": false, - "rule": { - "is": "matches", - "pattern": ".+" - } - }, - { - "at": "/parameter", - "optional": false, - "rule": { - "is": "equal", - "value": "part_number" - } - }, - { - "at": "/status", - "optional": true, - "rule": { - "is": "equal", - "value": 400 - } - }, - { - "at": "/code", - "optional": true, - "rule": { - "is": "equal", - "value": "InvalidArgument" - } - } - ] + "refusal": null }, { - "id": "operations/s3-express/stage-unknown-upload", + "id": "operations/s3-express/stage-key-space", "profile": "s3-express", "lane": "core", - "purpose": "stage unknown upload", + "purpose": "stage, with the key \"space name.txt\"", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "body_base64": "eA==", - "key": "object-tests/multipart/object.bin", + "body_base64": "cGFydA==", + "key": "object-tests/keys/space name.txt", "op": "s3.upload_part", "part_number": 1, - "upload_id": "fixture-upload+/4d0d5ccc4993=" + "upload_id": "fixture-upload+/c60fb1e2e00d=" }, "exchanges": [ { @@ -167192,7 +208643,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/multipart/object.bin" + "value": "/object-tests/keys/space name.txt" } }, { @@ -167200,7 +208651,7 @@ "optional": false, "rule": { "is": "equal", - "value": "eA==" + "value": "cGFydA==" } }, { @@ -167216,7 +208667,7 @@ "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/4d0d5ccc4993=" + "value": "fixture-upload+/c60fb1e2e00d=" } }, { @@ -167249,16 +208700,17 @@ ], "allow_query": [], "response": { - "status": 404, + "status": 200, "headers": { - "content-type": "application/xml", "date": { "from": "now" - } + }, + "etag": "\"fixture-9aff617fcdf8\"", + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "utf8", - "data": "\nNoSuchUploadFixture error" + "encoding": "base64", + "data": "" }, "framing": "chunked" } @@ -167272,39 +208724,31 @@ "optional": false, "rule": { "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 404 + "value": "ok" } }, { - "at": "/code", + "at": "/value/etag", "optional": false, "rule": { "is": "equal", - "value": "NoSuchUpload" + "value": "\"fixture-9aff617fcdf8\"" } } ], "refusal": null }, { - "id": "operations/s3-express/stage", + "id": "operations/s3-express/stage-key-non-ascii", "profile": "s3-express", "lane": "core", - "purpose": "stage", + "purpose": "stage, with the key \"café/雪.txt\"", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { "body_base64": "cGFydA==", - "key": "object-tests/multipart/object.bin", + "key": "object-tests/keys/café/雪.txt", "op": "s3.upload_part", "part_number": 1, "upload_id": "fixture-upload+/c60fb1e2e00d=" @@ -167400,7 +208844,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/multipart/object.bin" + "value": "/object-tests/keys/café/雪.txt" } }, { @@ -167496,16 +208940,16 @@ "refusal": null }, { - "id": "operations/s3-express/stage-key-question", + "id": "operations/s3-express/stage-key-double-slash", "profile": "s3-express", "lane": "core", - "purpose": "stage, with the key \"question?mark.txt\"", + "purpose": "stage, with the key \"double//slash.txt\"", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { "body_base64": "cGFydA==", - "key": "object-tests/keys/question?mark.txt", + "key": "object-tests/keys/double//slash.txt", "op": "s3.upload_part", "part_number": 1, "upload_id": "fixture-upload+/c60fb1e2e00d=" @@ -167601,7 +209045,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/keys/question?mark.txt" + "value": "/object-tests/keys/double//slash.txt" } }, { @@ -167697,16 +209141,16 @@ "refusal": null }, { - "id": "operations/s3-express/stage-key-hash", + "id": "operations/s3-express/stage-key-trailing-slash", "profile": "s3-express", "lane": "core", - "purpose": "stage, with the key \"hash#tag.txt\"", + "purpose": "stage, with the key \"trailing-slash/\"", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { "body_base64": "cGFydA==", - "key": "object-tests/keys/hash#tag.txt", + "key": "object-tests/keys/trailing-slash/", "op": "s3.upload_part", "part_number": 1, "upload_id": "fixture-upload+/c60fb1e2e00d=" @@ -167802,7 +209246,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/keys/hash#tag.txt" + "value": "/object-tests/keys/trailing-slash/" } }, { @@ -167898,16 +209342,16 @@ "refusal": null }, { - "id": "operations/s3-express/stage-key-percent", + "id": "operations/s3-express/stage-empty-part", "profile": "s3-express", "lane": "core", - "purpose": "stage, with the key \"percent%20.txt\"", + "purpose": "Stage an empty part, which S3 takes", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "body_base64": "cGFydA==", - "key": "object-tests/keys/percent%20.txt", + "body_base64": "", + "key": "object-tests/multipart/object.bin", "op": "s3.upload_part", "part_number": 1, "upload_id": "fixture-upload+/c60fb1e2e00d=" @@ -168003,7 +209447,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/keys/percent%20.txt" + "value": "/object-tests/multipart/object.bin" } }, { @@ -168011,7 +209455,7 @@ "optional": false, "rule": { "is": "equal", - "value": "cGFydA==" + "value": "" } }, { @@ -168099,18 +209543,18 @@ "refusal": null }, { - "id": "operations/s3-express/stage-key-plus", + "id": "operations/s3-express/stage-copy", "profile": "s3-express", "lane": "core", - "purpose": "stage, with the key \"plus+plus.txt\"", + "purpose": "Copy a whole object into a part of a multipart upload, with UploadPartCopy", "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html" ], "call": { - "body_base64": "cGFydA==", - "key": "object-tests/keys/plus+plus.txt", - "op": "s3.upload_part", + "key": "object-tests/multipart/object.bin", + "op": "s3.upload_part_copy", "part_number": 1, + "source_key": "object-tests/copy/source.txt", "upload_id": "fixture-upload+/c60fb1e2e00d=" }, "exchanges": [ @@ -168123,7 +209567,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -168131,17 +209575,33 @@ "optional": false, "rule": { "is": "equal", - "value": "/" + "value": "/object-tests/multipart/object.bin" } }, { - "at": "/query/session", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", "value": "" } }, + { + "at": "/query/partNumber", + "optional": false, + "rule": { + "is": "equal", + "value": "1" + } + }, + { + "at": "/query/uploadId", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-upload+/c60fb1e2e00d=" + } + }, { "at": "/headers/host", "optional": false, @@ -168150,6 +209610,13 @@ "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" } }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "absent" + } + }, { "at": "/headers/authorization", "optional": false, @@ -168159,10 +209626,11 @@ } }, { - "at": "/headers/x-amz-s3session-token", + "at": "/headers/x-amz-copy-source", "optional": false, "rule": { - "is": "absent" + "is": "matches", + "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" } } ], @@ -168173,20 +209641,61 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml" + "content-type": "application/xml", + "date": { + "from": "now" + } }, "body": { "encoding": "utf8", - "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" + "data": "\n2024-01-01T00:00:00.000Z"fixture-etag"" }, - "body_time": { - "text": "SESSION_EXPIRATION", - "offset_seconds": 300 - } + "framing": "chunked" } } ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } + }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-etag\"" + } + } + ], + "refusal": null + }, + { + "id": "operations/s3-express/stage-copy-range", + "profile": "s3-express", + "lane": "core", + "purpose": "Copy bytes 0 to 2 of an object into a part, named in x-amz-copy-source-range with an inclusive end, as bytes=0-2", + "sources": [ + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html" + ], + "call": { + "key": "object-tests/multipart/object.bin", + "op": "s3.upload_part_copy", + "part_number": 1, + "source_key": "object-tests/copy/source.txt", + "source_range": { + "end": 3, + "start": 0 }, + "upload_id": "fixture-upload+/c60fb1e2e00d=" + }, + "exchanges": [ { "alternatives": [ { @@ -168204,7 +209713,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/keys/plus+plus.txt" + "value": "/object-tests/multipart/object.bin" } }, { @@ -168212,7 +209721,7 @@ "optional": false, "rule": { "is": "equal", - "value": "cGFydA==" + "value": "" } }, { @@ -168243,8 +209752,7 @@ "at": "/headers/x-amz-s3session-token", "optional": false, "rule": { - "is": "equal", - "value": "fixture-session-token" + "is": "absent" } }, { @@ -168252,7 +209760,23 @@ "optional": false, "rule": { "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + } + }, + { + "at": "/headers/x-amz-copy-source", + "optional": false, + "rule": { + "is": "matches", + "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" + } + }, + { + "at": "/headers/x-amz-copy-source-range", + "optional": false, + "rule": { + "is": "equal", + "value": "bytes=0-2" } } ], @@ -168263,15 +209787,14 @@ "response": { "status": 200, "headers": { + "content-type": "application/xml", "date": { "from": "now" - }, - "etag": "\"fixture-9aff617fcdf8\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { - "encoding": "base64", - "data": "" + "encoding": "utf8", + "data": "\n2024-01-01T00:00:00.000Z"fixture-etag"" }, "framing": "chunked" } @@ -168293,25 +209816,29 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-9aff617fcdf8\"" + "value": "\"fixture-etag\"" } } ], "refusal": null }, { - "id": "operations/s3-express/stage-key-space", + "id": "operations/s3-express/stage-copy-range-beyond-source", "profile": "s3-express", "lane": "core", - "purpose": "stage, with the key \"space name.txt\"", + "purpose": "Copy a part whose range ends past the source. A directory bucket accepts it, where a general-purpose bucket answers 400 InvalidArgument", "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html" ], "call": { - "body_base64": "cGFydA==", - "key": "object-tests/keys/space name.txt", - "op": "s3.upload_part", + "key": "object-tests/multipart/object.bin", + "op": "s3.upload_part_copy", "part_number": 1, + "source_key": "object-tests/copy/source.txt", + "source_range": { + "end": 10, + "start": 0 + }, "upload_id": "fixture-upload+/c60fb1e2e00d=" }, "exchanges": [ @@ -168324,7 +209851,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -168332,17 +209859,33 @@ "optional": false, "rule": { "is": "equal", - "value": "/" + "value": "/object-tests/multipart/object.bin" } }, { - "at": "/query/session", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", "value": "" } }, + { + "at": "/query/partNumber", + "optional": false, + "rule": { + "is": "equal", + "value": "1" + } + }, + { + "at": "/query/uploadId", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-upload+/c60fb1e2e00d=" + } + }, { "at": "/headers/host", "optional": false, @@ -168351,6 +209894,13 @@ "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" } }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "absent" + } + }, { "at": "/headers/authorization", "optional": false, @@ -168360,10 +209910,19 @@ } }, { - "at": "/headers/x-amz-s3session-token", + "at": "/headers/x-amz-copy-source", "optional": false, "rule": { - "is": "absent" + "is": "matches", + "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" + } + }, + { + "at": "/headers/x-amz-copy-source-range", + "optional": false, + "rule": { + "is": "equal", + "value": "bytes=0-9" } } ], @@ -168374,20 +209933,60 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml" + "content-type": "application/xml", + "date": { + "from": "now" + } }, "body": { "encoding": "utf8", - "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" + "data": "\n2024-01-01T00:00:00.000Z"fixture-etag"" }, - "body_time": { - "text": "SESSION_EXPIRATION", - "offset_seconds": 300 - } + "framing": "chunked" } } ] + } + ], + "expect": [ + { + "at": "/outcome", + "optional": false, + "rule": { + "is": "equal", + "value": "ok" + } }, + { + "at": "/value/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-etag\"" + } + } + ], + "refusal": null + }, + { + "id": "operations/s3-express/stage-copy-200-internal-error", + "profile": "s3-express", + "lane": "core", + "purpose": "Report a part copy answered 200 with an InternalError in the body as an error, never as a success. A client may retry up to 5 times first, and need not retry", + "sources": [ + "https://repost.aws/knowledge-center/s3-resolve-200-internalerror", + "https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html" + ], + "origin": "transient", + "derived_from": "operations/s3-express/stage-copy", + "call": { + "key": "object-tests/multipart/object.bin", + "op": "s3.upload_part_copy", + "part_number": 1, + "source_key": "object-tests/copy/source.txt", + "upload_id": "fixture-upload+/c60fb1e2e00d=" + }, + "exchanges": [ { "alternatives": [ { @@ -168405,7 +210004,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/keys/space name.txt" + "value": "/object-tests/multipart/object.bin" } }, { @@ -168413,7 +210012,7 @@ "optional": false, "rule": { "is": "equal", - "value": "cGFydA==" + "value": "" } }, { @@ -168444,8 +210043,7 @@ "at": "/headers/x-amz-s3session-token", "optional": false, "rule": { - "is": "equal", - "value": "fixture-session-token" + "is": "absent" } }, { @@ -168453,7 +210051,15 @@ "optional": false, "rule": { "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + } + }, + { + "at": "/headers/x-amz-copy-source", + "optional": false, + "rule": { + "is": "matches", + "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" } } ], @@ -168464,58 +210070,20 @@ "response": { "status": 200, "headers": { + "content-type": "application/xml", "date": { "from": "now" - }, - "etag": "\"fixture-9aff617fcdf8\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { - "encoding": "base64", - "data": "" + "encoding": "utf8", + "data": "\nInternalErrorWe encountered an internal error. Please try again.fixturefixture" }, "framing": "chunked" } } ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-9aff617fcdf8\"" - } - } - ], - "refusal": null - }, - { - "id": "operations/s3-express/stage-key-non-ascii", - "profile": "s3-express", - "lane": "core", - "purpose": "stage, with the key \"café/雪.txt\"", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "body_base64": "cGFydA==", - "key": "object-tests/keys/café/雪.txt", - "op": "s3.upload_part", - "part_number": 1, - "upload_id": "fixture-upload+/c60fb1e2e00d=" - }, - "exchanges": [ { "alternatives": [ { @@ -168525,7 +210093,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -168533,17 +210101,33 @@ "optional": false, "rule": { "is": "equal", - "value": "/" + "value": "/object-tests/multipart/object.bin" } }, { - "at": "/query/session", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", "value": "" } }, + { + "at": "/query/partNumber", + "optional": false, + "rule": { + "is": "equal", + "value": "1" + } + }, + { + "at": "/query/uploadId", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-upload+/c60fb1e2e00d=" + } + }, { "at": "/headers/host", "optional": false, @@ -168552,6 +210136,13 @@ "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" } }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "absent" + } + }, { "at": "/headers/authorization", "optional": false, @@ -168561,10 +210152,11 @@ } }, { - "at": "/headers/x-amz-s3session-token", + "at": "/headers/x-amz-copy-source", "optional": false, "rule": { - "is": "absent" + "is": "matches", + "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" } } ], @@ -168575,19 +210167,20 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml" + "content-type": "application/xml", + "date": { + "from": "now" + } }, "body": { "encoding": "utf8", - "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" + "data": "\nInternalErrorWe encountered an internal error. Please try again.fixturefixture" }, - "body_time": { - "text": "SESSION_EXPIRATION", - "offset_seconds": 300 - } + "framing": "chunked" } } - ] + ], + "optional": true }, { "alternatives": [ @@ -168606,7 +210199,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/keys/café/雪.txt" + "value": "/object-tests/multipart/object.bin" } }, { @@ -168614,7 +210207,7 @@ "optional": false, "rule": { "is": "equal", - "value": "cGFydA==" + "value": "" } }, { @@ -168645,8 +210238,7 @@ "at": "/headers/x-amz-s3session-token", "optional": false, "rule": { - "is": "equal", - "value": "fixture-session-token" + "is": "absent" } }, { @@ -168654,7 +210246,15 @@ "optional": false, "rule": { "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + } + }, + { + "at": "/headers/x-amz-copy-source", + "optional": false, + "rule": { + "is": "matches", + "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" } } ], @@ -168665,58 +210265,21 @@ "response": { "status": 200, "headers": { + "content-type": "application/xml", "date": { "from": "now" - }, - "etag": "\"fixture-9aff617fcdf8\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { - "encoding": "base64", - "data": "" + "encoding": "utf8", + "data": "\nInternalErrorWe encountered an internal error. Please try again.fixturefixture" }, "framing": "chunked" } } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } + ], + "optional": true }, - { - "at": "/value/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-9aff617fcdf8\"" - } - } - ], - "refusal": null - }, - { - "id": "operations/s3-express/stage-key-double-slash", - "profile": "s3-express", - "lane": "core", - "purpose": "stage, with the key \"double//slash.txt\"", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "body_base64": "cGFydA==", - "key": "object-tests/keys/double//slash.txt", - "op": "s3.upload_part", - "part_number": 1, - "upload_id": "fixture-upload+/c60fb1e2e00d=" - }, - "exchanges": [ { "alternatives": [ { @@ -168726,7 +210289,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "PUT" } }, { @@ -168734,17 +210297,33 @@ "optional": false, "rule": { "is": "equal", - "value": "/" + "value": "/object-tests/multipart/object.bin" } }, { - "at": "/query/session", + "at": "/body_base64", "optional": false, "rule": { "is": "equal", "value": "" } }, + { + "at": "/query/partNumber", + "optional": false, + "rule": { + "is": "equal", + "value": "1" + } + }, + { + "at": "/query/uploadId", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-upload+/c60fb1e2e00d=" + } + }, { "at": "/headers/host", "optional": false, @@ -168753,6 +210332,13 @@ "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" } }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "absent" + } + }, { "at": "/headers/authorization", "optional": false, @@ -168762,10 +210348,11 @@ } }, { - "at": "/headers/x-amz-s3session-token", + "at": "/headers/x-amz-copy-source", "optional": false, "rule": { - "is": "absent" + "is": "matches", + "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" } } ], @@ -168776,19 +210363,20 @@ "response": { "status": 200, "headers": { - "content-type": "application/xml" + "content-type": "application/xml", + "date": { + "from": "now" + } }, "body": { "encoding": "utf8", - "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" + "data": "\nInternalErrorWe encountered an internal error. Please try again.fixturefixture" }, - "body_time": { - "text": "SESSION_EXPIRATION", - "offset_seconds": 300 - } + "framing": "chunked" } } - ] + ], + "optional": true }, { "alternatives": [ @@ -168807,7 +210395,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/keys/double//slash.txt" + "value": "/object-tests/multipart/object.bin" } }, { @@ -168815,7 +210403,7 @@ "optional": false, "rule": { "is": "equal", - "value": "cGFydA==" + "value": "" } }, { @@ -168845,9 +210433,106 @@ { "at": "/headers/x-amz-s3session-token", "optional": false, + "rule": { + "is": "absent" + } + }, + { + "at": "/headers/authorization", + "optional": false, + "rule": { + "is": "matches", + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + } + }, + { + "at": "/headers/x-amz-copy-source", + "optional": false, + "rule": { + "is": "matches", + "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" + } + } + ], + "allow_headers": [ + "content-type" + ], + "allow_query": [], + "response": { + "status": 200, + "headers": { + "content-type": "application/xml", + "date": { + "from": "now" + } + }, + "body": { + "encoding": "utf8", + "data": "\nInternalErrorWe encountered an internal error. Please try again.fixturefixture" + }, + "framing": "chunked" + } + } + ], + "optional": true + }, + { + "alternatives": [ + { + "request": [ + { + "at": "/method", + "optional": false, "rule": { "is": "equal", - "value": "fixture-session-token" + "value": "PUT" + } + }, + { + "at": "/path", + "optional": false, + "rule": { + "is": "equal", + "value": "/object-tests/multipart/object.bin" + } + }, + { + "at": "/body_base64", + "optional": false, + "rule": { + "is": "equal", + "value": "" + } + }, + { + "at": "/query/partNumber", + "optional": false, + "rule": { + "is": "equal", + "value": "1" + } + }, + { + "at": "/query/uploadId", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture-upload+/c60fb1e2e00d=" + } + }, + { + "at": "/headers/host", + "optional": false, + "rule": { + "is": "equal", + "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + } + }, + { + "at": "/headers/x-amz-s3session-token", + "optional": false, + "rule": { + "is": "absent" } }, { @@ -168855,7 +210540,15 @@ "optional": false, "rule": { "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + } + }, + { + "at": "/headers/x-amz-copy-source", + "optional": false, + "rule": { + "is": "matches", + "pattern": "/?fixture[^/]*/object-tests/copy/source\\.txt" } } ], @@ -168866,20 +210559,20 @@ "response": { "status": 200, "headers": { + "content-type": "application/xml", "date": { "from": "now" - }, - "etag": "\"fixture-9aff617fcdf8\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { - "encoding": "base64", - "data": "" + "encoding": "utf8", + "data": "\nInternalErrorWe encountered an internal error. Please try again.fixturefixture" }, "framing": "chunked" } } - ] + ], + "optional": true } ], "expect": [ @@ -168888,34 +210581,32 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "error" } }, { - "at": "/value/etag", + "at": "/code", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-9aff617fcdf8\"" + "value": "InternalError" } } ], "refusal": null }, { - "id": "operations/s3-express/stage-key-trailing-slash", + "id": "operations/s3-express/staged-after-abort", "profile": "s3-express", "lane": "core", - "purpose": "stage, with the key \"trailing-slash/\"", + "purpose": "staged after abort", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "body_base64": "cGFydA==", - "key": "object-tests/keys/trailing-slash/", - "op": "s3.upload_part", - "part_number": 1, - "upload_id": "fixture-upload+/c60fb1e2e00d=" + "key": "object-tests/multipart/aborted.bin", + "op": "s3.list_parts", + "upload_id": "fixture-upload+/4bef2cd6d025=" }, "exchanges": [ { @@ -169000,7 +210691,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -169008,7 +210699,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/keys/trailing-slash/" + "value": "/object-tests/multipart/aborted.bin" } }, { @@ -169016,15 +210707,7 @@ "optional": false, "rule": { "is": "equal", - "value": "cGFydA==" - } - }, - { - "at": "/query/partNumber", - "optional": false, - "rule": { - "is": "equal", - "value": "1" + "value": "" } }, { @@ -169032,7 +210715,7 @@ "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/c60fb1e2e00d=" + "value": "fixture-upload+/4bef2cd6d025=" } }, { @@ -169065,17 +210748,16 @@ ], "allow_query": [], "response": { - "status": 200, + "status": 404, "headers": { + "content-type": "application/xml", "date": { "from": "now" - }, - "etag": "\"fixture-9aff617fcdf8\"", - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" + } }, "body": { - "encoding": "base64", - "data": "" + "encoding": "utf8", + "data": "\nNoSuchUploadFixture error" }, "framing": "chunked" } @@ -169089,34 +210771,40 @@ "optional": false, "rule": { "is": "equal", - "value": "ok" + "value": "error" } }, { - "at": "/value/etag", + "at": "/status", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-9aff617fcdf8\"" + "value": 404 + } + }, + { + "at": "/code", + "optional": false, + "rule": { + "is": "equal", + "value": "NoSuchUpload" } } ], "refusal": null }, { - "id": "operations/s3-express/stage-empty-part", + "id": "operations/s3-express/staged-replacement", "profile": "s3-express", "lane": "core", - "purpose": "Stage an empty part, which S3 takes", + "purpose": "staged replacement", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "body_base64": "", - "key": "object-tests/multipart/object.bin", - "op": "s3.upload_part", - "part_number": 1, - "upload_id": "fixture-upload+/c60fb1e2e00d=" + "key": "object-tests/multipart/replaced.bin", + "op": "s3.list_parts", + "upload_id": "fixture-upload+/3cc68ed16e61=" }, "exchanges": [ { @@ -169201,7 +210889,7 @@ "optional": false, "rule": { "is": "equal", - "value": "PUT" + "value": "GET" } }, { @@ -169209,7 +210897,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/multipart/object.bin" + "value": "/object-tests/multipart/replaced.bin" } }, { @@ -169220,20 +210908,12 @@ "value": "" } }, - { - "at": "/query/partNumber", - "optional": false, - "rule": { - "is": "equal", - "value": "1" - } - }, { "at": "/query/uploadId", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/c60fb1e2e00d=" + "value": "fixture-upload+/3cc68ed16e61=" } }, { @@ -169268,17 +210948,16 @@ "response": { "status": 200, "headers": { + "content-type": "application/xml", "date": { "from": "now" }, - "etag": "\"fixture-9aff617fcdf8\"", "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { - "encoding": "base64", - "data": "" - }, - "framing": "chunked" + "encoding": "utf8", + "data": "\nfixtureobject-tests/multipart/replaced.binfixture-upload+/3cc68ed16e61=021000false"fixture-09ac5e35935f"2024-01-01T00:00:00.000Z11"fixture-4500bb3504fa"2024-01-01T00:00:00.000Z26fixture-ownerfixture-ownerEXPRESS_ONEZONE" + } } } ] @@ -169294,28 +210973,76 @@ } }, { - "at": "/value/etag", + "at": "/value/parts/0/number", "optional": false, "rule": { "is": "equal", - "value": "\"fixture-9aff617fcdf8\"" + "value": 1 + } + }, + { + "at": "/value/parts/0/size", + "optional": false, + "rule": { + "is": "equal", + "value": 1 + } + }, + { + "at": "/value/parts/0/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-09ac5e35935f\"" + } + }, + { + "at": "/value/parts/1/number", + "optional": false, + "rule": { + "is": "equal", + "value": 2 + } + }, + { + "at": "/value/parts/1/size", + "optional": false, + "rule": { + "is": "equal", + "value": 6 + } + }, + { + "at": "/value/parts/1/etag", + "optional": false, + "rule": { + "is": "equal", + "value": "\"fixture-4500bb3504fa\"" + } + }, + { + "at": "/value/parts", + "optional": false, + "rule": { + "is": "array_length", + "value": 2 } } ], "refusal": null }, { - "id": "operations/s3-express/staged-after-abort", + "id": "operations/s3-express/staged-unknown-upload", "profile": "s3-express", "lane": "core", - "purpose": "staged after abort", + "purpose": "staged unknown upload", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/multipart/aborted.bin", + "key": "object-tests/multipart/object.bin", "op": "s3.list_parts", - "upload_id": "fixture-upload+/4bef2cd6d025=" + "upload_id": "fixture-upload+/4d0d5ccc4993=" }, "exchanges": [ { @@ -169408,7 +211135,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/multipart/aborted.bin" + "value": "/object-tests/multipart/object.bin" } }, { @@ -169424,7 +211151,7 @@ "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/4bef2cd6d025=" + "value": "fixture-upload+/4d0d5ccc4993=" } }, { @@ -169503,17 +211230,17 @@ "refusal": null }, { - "id": "operations/s3-express/staged-replacement", + "id": "operations/s3-express/staged", "profile": "s3-express", "lane": "core", - "purpose": "staged replacement", + "purpose": "staged", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { - "key": "object-tests/multipart/replaced.bin", + "key": "object-tests/multipart/object.bin", "op": "s3.list_parts", - "upload_id": "fixture-upload+/3cc68ed16e61=" + "upload_id": "fixture-upload+/c60fb1e2e00d=" }, "exchanges": [ { @@ -169606,7 +211333,7 @@ "optional": false, "rule": { "is": "equal", - "value": "/object-tests/multipart/replaced.bin" + "value": "/object-tests/multipart/object.bin" } }, { @@ -169622,7 +211349,7 @@ "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/3cc68ed16e61=" + "value": "fixture-upload+/c60fb1e2e00d=" } }, { @@ -169665,7 +211392,7 @@ }, "body": { "encoding": "utf8", - "data": "\nfixtureobject-tests/multipart/replaced.binfixture-upload+/3cc68ed16e61=021000false"fixture-09ac5e35935f"2024-01-01T00:00:00.000Z11"fixture-4500bb3504fa"2024-01-01T00:00:00.000Z26fixture-ownerfixture-ownerEXPRESS_ONEZONE" + "data": "\nfixtureobject-tests/multipart/object.binfixture-upload+/c60fb1e2e00d=021000false"fixture-9aff617fcdf8"2024-01-01T00:00:00.000Z15242880"fixture-ec2738a0b15a"2024-01-01T00:00:00.000Z26fixture-ownerfixture-ownerEXPRESS_ONEZONE" } } } @@ -169694,7 +211421,7 @@ "optional": false, "rule": { "is": "equal", - "value": 1 + "value": 5242880 } }, { @@ -169702,7 +211429,7 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-09ac5e35935f\"" + "value": "\"fixture-9aff617fcdf8\"" } }, { @@ -169726,7 +211453,7 @@ "optional": false, "rule": { "is": "equal", - "value": "\"fixture-4500bb3504fa\"" + "value": "\"fixture-ec2738a0b15a\"" } }, { @@ -169741,17 +211468,16 @@ "refusal": null }, { - "id": "operations/s3-express/staged-unknown-upload", + "id": "operations/s3-express/start", "profile": "s3-express", "lane": "core", - "purpose": "staged unknown upload", + "purpose": "start", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { "key": "object-tests/multipart/object.bin", - "op": "s3.list_parts", - "upload_id": "fixture-upload+/4d0d5ccc4993=" + "op": "s3.create_multipart" }, "exchanges": [ { @@ -169836,7 +211562,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "POST" } }, { @@ -169856,11 +211582,11 @@ } }, { - "at": "/query/uploadId", + "at": "/query/uploads", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/4d0d5ccc4993=" + "value": "" } }, { @@ -169893,16 +211619,16 @@ ], "allow_query": [], "response": { - "status": 404, + "status": 200, "headers": { - "content-type": "application/xml", "date": { "from": "now" - } + }, + "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" }, "body": { "encoding": "utf8", - "data": "\nNoSuchUploadFixture error" + "data": "fixtureobject-tests/multipart/object.binfixture-upload+/c60fb1e2e00d=" }, "framing": "chunked" } @@ -169916,40 +211642,35 @@ "optional": false, "rule": { "is": "equal", - "value": "error" - } - }, - { - "at": "/status", - "optional": false, - "rule": { - "is": "equal", - "value": 404 + "value": "ok" } }, { - "at": "/code", + "at": "/value/upload_id", "optional": false, "rule": { "is": "equal", - "value": "NoSuchUpload" + "value": "fixture-upload+/c60fb1e2e00d=" } } ], "refusal": null }, { - "id": "operations/s3-express/staged", + "id": "operations/s3-express/start-content-properties", "profile": "s3-express", "lane": "core", - "purpose": "staged", + "purpose": "Start a multipart upload with content properties, which the completed object keeps", "sources": [ "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" ], "call": { + "cache_control": "max-age=3600", + "content_disposition": "attachment; filename=\"report.txt\"", + "content_language": "nl-NL", + "content_type": "text/plain; charset=utf-8", "key": "object-tests/multipart/object.bin", - "op": "s3.list_parts", - "upload_id": "fixture-upload+/c60fb1e2e00d=" + "op": "s3.create_multipart" }, "exchanges": [ { @@ -170034,7 +211755,7 @@ "optional": false, "rule": { "is": "equal", - "value": "GET" + "value": "POST" } }, { @@ -170054,11 +211775,11 @@ } }, { - "at": "/query/uploadId", + "at": "/query/uploads", "optional": false, "rule": { "is": "equal", - "value": "fixture-upload+/c60fb1e2e00d=" + "value": "" } }, { @@ -170084,242 +211805,37 @@ "is": "matches", "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-type": "application/xml", - "date": { - "from": "now" - }, - "last-modified": "Mon, 01 Jan 2024 00:00:00 GMT" - }, - "body": { - "encoding": "utf8", - "data": "\nfixtureobject-tests/multipart/object.binfixture-upload+/c60fb1e2e00d=021000false"fixture-9aff617fcdf8"2024-01-01T00:00:00.000Z15242880"fixture-ec2738a0b15a"2024-01-01T00:00:00.000Z26fixture-ownerfixture-ownerEXPRESS_ONEZONE" - } - } - } - ] - } - ], - "expect": [ - { - "at": "/outcome", - "optional": false, - "rule": { - "is": "equal", - "value": "ok" - } - }, - { - "at": "/value/parts/0/number", - "optional": false, - "rule": { - "is": "equal", - "value": 1 - } - }, - { - "at": "/value/parts/0/size", - "optional": false, - "rule": { - "is": "equal", - "value": 5242880 - } - }, - { - "at": "/value/parts/0/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-9aff617fcdf8\"" - } - }, - { - "at": "/value/parts/1/number", - "optional": false, - "rule": { - "is": "equal", - "value": 2 - } - }, - { - "at": "/value/parts/1/size", - "optional": false, - "rule": { - "is": "equal", - "value": 6 - } - }, - { - "at": "/value/parts/1/etag", - "optional": false, - "rule": { - "is": "equal", - "value": "\"fixture-ec2738a0b15a\"" - } - }, - { - "at": "/value/parts", - "optional": false, - "rule": { - "is": "array_length", - "value": 2 - } - } - ], - "refusal": null - }, - { - "id": "operations/s3-express/start", - "profile": "s3-express", - "lane": "core", - "purpose": "start", - "sources": [ - "aws-sdk-cpp/generated/src/aws-cpp-sdk-s3-crt" - ], - "call": { - "key": "object-tests/multipart/object.bin", - "op": "s3.create_multipart" - }, - "exchanges": [ - { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "GET" - } }, { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/" - } - }, - { - "at": "/query/session", - "optional": false, - "rule": { - "is": "equal", - "value": "" - } - }, - { - "at": "/headers/host", - "optional": false, - "rule": { - "is": "equal", - "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" - } - }, - { - "at": "/headers/authorization", - "optional": false, - "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=offline/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" - } - }, - { - "at": "/headers/x-amz-s3session-token", - "optional": false, - "rule": { - "is": "absent" - } - } - ], - "allow_headers": [ - "content-type" - ], - "allow_query": [], - "response": { - "status": 200, - "headers": { - "content-type": "application/xml" - }, - "body": { - "encoding": "utf8", - "data": "\nfixture-session-tokenfixture-secret-keyfixture-access-keySESSION_EXPIRATION" - }, - "body_time": { - "text": "SESSION_EXPIRATION", - "offset_seconds": 300 - } - } - } - ] - }, - { - "alternatives": [ - { - "request": [ - { - "at": "/method", - "optional": false, - "rule": { - "is": "equal", - "value": "POST" - } - }, - { - "at": "/path", - "optional": false, - "rule": { - "is": "equal", - "value": "/object-tests/multipart/object.bin" - } - }, - { - "at": "/body_base64", + "at": "/headers/content-type", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "text/plain; charset=utf-8" } }, { - "at": "/query/uploads", + "at": "/headers/content-language", "optional": false, "rule": { "is": "equal", - "value": "" + "value": "nl-NL" } }, { - "at": "/headers/host", + "at": "/headers/content-disposition", "optional": false, "rule": { "is": "equal", - "value": "fixture--euc1-az1--x-s3.s3express-euc1-az1.fixture.invalid" + "value": "attachment; filename=\"report.txt\"" } }, { - "at": "/headers/x-amz-s3session-token", + "at": "/headers/cache-control", "optional": false, "rule": { "is": "equal", - "value": "fixture-session-token" - } - }, - { - "at": "/headers/authorization", - "optional": false, - "rule": { - "is": "matches", - "pattern": "AWS4-HMAC-SHA256 Credential=fixture-access-key/[0-9]{8}/eu-central-1/s3express/aws4_request, SignedHeaders=.+, Signature=[a-f0-9]{64}" + "value": "max-age=3600" } } ], diff --git a/src/checks.rs b/src/checks.rs index 51db646..cf270ac 100644 --- a/src/checks.rs +++ b/src/checks.rs @@ -107,6 +107,10 @@ fn rule_matches_value(rule: &Rule, got: Option<&Value>, now: SystemTime) -> bool _ => false, } } + // These hold the request as a whole, and report why they fail through check_assertions. + Rule::BlobBatch { .. } | Rule::BodyChecksum { .. } => { + got.is_some_and(|request| request_rule_failure(rule, request).is_none()) + } Rule::Fresh { format, max_past_seconds, @@ -134,6 +138,19 @@ pub struct Difference { pub because: Option, } +/// Returns why a request fails a rule over the whole request, or nothing if it passes. +fn request_rule_failure(rule: &Rule, request: &Value) -> Option { + match rule { + Rule::BlobBatch { subrequests } => { + crate::request_rules::check_blob_batch(request, subrequests).err() + } + Rule::BodyChecksum { header, algorithm } => { + crate::request_rules::check_body_checksum(request, header, algorithm).err() + } + _ => None, + } +} + pub fn check_assertions(checks: &[Check], value: &Value, now: SystemTime) -> Vec { let mut differences = Vec::new(); for check in checks { @@ -142,11 +159,18 @@ pub fn check_assertions(checks: &[Check], value: &Value, now: SystemTime) -> Vec continue; } if !rule_matches_value(&check.rule, got, now) { + // A rule over the whole request reports the request's own failure, not the request. + let request_failure = + got.and_then(|request| request_rule_failure(&check.rule, request)); differences.push(Difference { at: check.at.clone(), expected: check.rule.clone(), - got: got.cloned(), - because: check.because.clone(), + got: if request_failure.is_some() { + None + } else { + got.cloned() + }, + because: request_failure.or_else(|| check.because.clone()), }); } } diff --git a/src/lib.rs b/src/lib.rs index 3e05686..56daf6a 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -2,6 +2,7 @@ mod checks; mod http_transport; mod request; +mod request_rules; pub mod expected_unsupported; pub mod model; diff --git a/src/model.rs b/src/model.rs index 26bd0ca..5694e9f 100644 --- a/src/model.rs +++ b/src/model.rs @@ -11,6 +11,11 @@ use std::collections::{BTreeMap, BTreeSet}; #[serde(deny_unknown_fields)] pub struct Suite { pub version: u32, + + /// Each case's purpose by its ID, so that a reader can survey a suite before its rules. A + /// generated suite has one; when present, it must name every case with its purpose. + #[serde(default, skip_serializing_if = "BTreeMap::is_empty")] + pub index: BTreeMap, pub profiles: BTreeMap, pub cases: Vec, } @@ -77,6 +82,11 @@ pub struct Case { #[serde(default, skip_serializing_if = "Origin::is_observed")] pub origin: Origin, + /// For a case whose responses are not observed, the recorded case whose responses it + /// edits, so that a reader can tell what a service sent from what was written by hand. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub derived_from: Option, + /// The operation input passed unchanged to the adapter. pub call: Value, @@ -248,6 +258,34 @@ pub enum Rule { Xml { value: String, }, + + /// An Azure Blob Batch request with these subrequests, checked at the request's root. See + /// `request_rules::check_blob_batch` for what it requires. + BlobBatch { + subrequests: Vec, + }, + + /// A header that holds the checksum of the request body, checked at the request's root. + BodyChecksum { + header: String, + algorithm: ChecksumAlgorithm, + }, +} + +/// A subrequest of an Azure Blob Batch, with its path decoded. +#[derive(Clone, Debug, Deserialize, Serialize, PartialEq, Eq)] +#[serde(deny_unknown_fields)] +pub struct BatchSubrequest { + pub method: String, + pub path: String, +} + +#[derive(Clone, Debug, Deserialize, Serialize)] +#[serde(rename_all = "snake_case")] +pub enum ChecksumAlgorithm { + Crc32, + Crc32c, + Crc64nvme, } #[derive(Clone, Debug, Deserialize, Serialize)] @@ -296,6 +334,14 @@ fn validate_checks(checks: &[Check]) -> Result<()> { normalize_xml(value)?; } Rule::OneOf { values } if values.is_empty() => return Err("empty one_of".into()), + Rule::BlobBatch { subrequests } if subrequests.is_empty() || !check.at.is_empty() => { + return Err("a blob batch names its subrequests, at the request's root".into()); + } + Rule::BodyChecksum { header, .. } + if !is_valid_http_header_name(header) || !check.at.is_empty() => + { + return Err("a body checksum names its header, at the request's root".into()); + } _ => {} } } @@ -315,6 +361,14 @@ impl Suite { read_and_validate().map_err(|error| format!("{}: {error}", path.display()).into()) } + /// Returns each case's purpose by its ID, the suite's index. + pub fn case_index(&self) -> BTreeMap { + self.cases + .iter() + .map(|case| (case.id.clone(), case.purpose.clone())) + .collect() + } + pub fn validate(&self) -> Result<()> { if self.version != 1 || self.cases.is_empty() { return Err("expected version 1 and nonempty cases".into()); @@ -329,6 +383,9 @@ impl Suite { compile_full_match_regex(pattern)?; } } + if !self.index.is_empty() && self.index != self.case_index() { + return Err("the index must name every case with its purpose".into()); + } for case in &self.cases { if !case.call.is_object() { return Err(format!("{}: call must be an object", case.id).into()); diff --git a/src/request_rules.rs b/src/request_rules.rs new file mode 100644 index 0000000..0ce1329 --- /dev/null +++ b/src/request_rules.rs @@ -0,0 +1,330 @@ +//! Rules over a whole request that a pattern cannot state well: an Azure Blob Batch body, and a +//! checksum header that must hold the checksum of the body the client sent. +//! +//! Each returns why the request fails, for the report. +use crate::model::{BatchSubrequest, ChecksumAlgorithm}; +use base64::{Engine, engine::general_purpose::STANDARD}; +use serde_json::Value; +use std::collections::BTreeSet; + +fn request_header<'a>(request: &'a Value, name: &str) -> Option<&'a str> { + request["headers"][name].as_str() +} + +fn request_body(request: &Value) -> Result, String> { + let encoded = request["body_base64"] + .as_str() + .ok_or("the request has no body")?; + STANDARD + .decode(encoded) + .map_err(|_| "the request body is not base64".to_owned()) +} + +/// Returns a header's value from lines of `Name: value`, matching the name without case. +fn header_in<'a>(lines: &[&'a str], name: &str) -> Option<&'a str> { + lines.iter().find_map(|line| { + let (line_name, value) = line.split_once(':')?; + line_name + .trim() + .eq_ignore_ascii_case(name) + .then(|| value.trim()) + }) +} + +/// Returns the boundary that a `multipart/mixed` content type names. +fn multipart_boundary(content_type: &str) -> Option<&str> { + let (media_type, parameters) = content_type.split_once(';')?; + if !media_type.trim().eq_ignore_ascii_case("multipart/mixed") { + return None; + } + parameters.split(';').find_map(|parameter| { + let (name, value) = parameter.split_once('=')?; + name.trim() + .eq_ignore_ascii_case("boundary") + .then(|| value.trim().trim_matches('"')) + }) +} + +/// Checks an Azure Blob Batch request: a `multipart/mixed` body whose boundary the content type +/// names, with lines ending in CRLF and a closing boundary. Each part is `application/http` in +/// `binary` transfer encoding with a Content-ID of its own, and holds one subrequest without a +/// body, which names `x-ms-date` and `Authorization`. The subrequests are the expected ones, each +/// once, in any order, with a path or an absolute URL whose path decodes to the expected one. +pub(crate) fn check_blob_batch( + request: &Value, + expected: &[BatchSubrequest], +) -> Result<(), String> { + let content_type = request_header(request, "content-type").ok_or("no Content-Type")?; + let boundary = multipart_boundary(content_type).ok_or_else(|| { + format!("Content-Type {content_type:?} names no multipart/mixed boundary") + })?; + let body = String::from_utf8(request_body(request)?).map_err(|_| "the body is not UTF-8")?; + if body.replace("\r\n", "").contains('\n') { + return Err("a line of the body ends in LF without CR".into()); + } + + let closing = format!("--{boundary}--"); + let without_closing = body + .strip_suffix("\r\n") + .unwrap_or(&body) + .strip_suffix(&closing) + .ok_or_else(|| format!("the body does not end with {closing}"))?; + let delimiter = format!("--{boundary}\r\n"); + let parts: Vec<&str> = without_closing + .strip_prefix(&delimiter) + .ok_or_else(|| format!("the body does not start with --{boundary}"))? + .split(&format!("\r\n{delimiter}")) + .map(|part| part.strip_suffix("\r\n").unwrap_or(part)) + .collect(); + if parts.len() != expected.len() { + return Err(format!( + "{} parts, where {} were expected", + parts.len(), + expected.len() + )); + } + + let mut content_ids = BTreeSet::new(); + let mut sent = Vec::new(); + for (index, part) in parts.iter().enumerate() { + let (part_headers, subrequest) = part + .split_once("\r\n\r\n") + .ok_or_else(|| format!("part {index} has no blank line after its headers"))?; + let part_headers: Vec<&str> = part_headers.split("\r\n").collect(); + if !header_in(&part_headers, "content-type") + .is_some_and(|value| value.eq_ignore_ascii_case("application/http")) + { + return Err(format!( + "part {index} is not Content-Type: application/http" + )); + } + if !header_in(&part_headers, "content-transfer-encoding") + .is_some_and(|value| value.eq_ignore_ascii_case("binary")) + { + return Err(format!( + "part {index} is not Content-Transfer-Encoding: binary" + )); + } + let content_id = header_in(&part_headers, "content-id") + .ok_or_else(|| format!("part {index} has no Content-ID"))?; + if !content_ids.insert(content_id.to_owned()) { + return Err(format!("Content-ID {content_id} appears twice")); + } + + let subrequest = subrequest.strip_suffix("\r\n").unwrap_or(subrequest); + let (subrequest_head, subrequest_body) = subrequest + .split_once("\r\n\r\n") + .unwrap_or((subrequest, "")); + if !subrequest_body.is_empty() { + return Err(format!("the subrequest of part {index} has a body")); + } + let mut lines = subrequest_head.split("\r\n"); + let request_line = lines.next().unwrap_or(""); + let headers: Vec<&str> = lines.collect(); + let mut words = request_line.split(' '); + let (Some(method), Some(target), Some("HTTP/1.1"), None) = + (words.next(), words.next(), words.next(), words.next()) + else { + return Err(format!( + "part {index} starts with {request_line:?}, not METHOD TARGET HTTP/1.1" + )); + }; + for required in ["x-ms-date", "authorization"] { + if header_in(&headers, required).is_none() { + return Err(format!("the subrequest of part {index} has no {required}")); + } + } + if header_in(&headers, "content-length").is_some_and(|length| length != "0") { + return Err(format!("the subrequest of part {index} declares a body")); + } + let path = target + .strip_prefix("https://") + .or_else(|| target.strip_prefix("http://")) + .map(|rest| rest.find('/').map_or("/", |start| &rest[start..])) + .unwrap_or(target); + let path = path.split('?').next().unwrap_or(path); + let decoded = percent_encoding::percent_decode_str(path) + .decode_utf8() + .map_err(|_| format!("the path of part {index} does not decode to UTF-8"))?; + sent.push((method.to_owned(), decoded.into_owned())); + } + + for subrequest in expected { + let position = sent + .iter() + .position(|(method, path)| *method == subrequest.method && *path == subrequest.path) + .ok_or_else(|| format!("no subrequest {} {}", subrequest.method, subrequest.path))?; + sent.remove(position); + } + Ok(()) +} + +/// Checks that a header holds the checksum of the request body, base64-encoded big-endian. +pub(crate) fn check_body_checksum( + request: &Value, + header: &str, + algorithm: &ChecksumAlgorithm, +) -> Result<(), String> { + let body = request_body(request)?; + let expected = match algorithm { + ChecksumAlgorithm::Crc32 => STANDARD.encode(crc32(&body, 0xEDB8_8320).to_be_bytes()), + ChecksumAlgorithm::Crc32c => STANDARD.encode(crc32(&body, 0x82F6_3B78).to_be_bytes()), + ChecksumAlgorithm::Crc64nvme => STANDARD.encode(crc64nvme(&body).to_be_bytes()), + }; + match request_header(request, header) { + Some(value) if value == expected => Ok(()), + Some(value) => Err(format!( + "{header} is {value}, and the body's checksum is {expected}" + )), + None => Err(format!("no {header}; the body's checksum is {expected}")), + } +} + +/// A reflected CRC-32 with the given reversed polynomial: ISO-HDLC or Castagnoli. +fn crc32(bytes: &[u8], reversed_polynomial: u32) -> u32 { + let mut crc = u32::MAX; + for byte in bytes { + crc ^= u32::from(*byte); + for _ in 0..8 { + crc = if crc & 1 == 1 { + (crc >> 1) ^ reversed_polynomial + } else { + crc >> 1 + }; + } + } + !crc +} + +/// CRC-64/NVME, the CRC64NVME of S3. +fn crc64nvme(bytes: &[u8]) -> u64 { + let mut crc = u64::MAX; + for byte in bytes { + crc ^= u64::from(*byte); + for _ in 0..8 { + crc = if crc & 1 == 1 { + (crc >> 1) ^ 0x9A6C_9329_AC4B_C9B5 + } else { + crc >> 1 + }; + } + } + !crc +} + +#[cfg(test)] +mod tests { + use super::*; + use serde_json::json; + + #[test] + fn checksums_give_the_standard_check_values() { + assert_eq!(crc32(b"123456789", 0xEDB8_8320), 0xCBF4_3926); + assert_eq!(crc32(b"123456789", 0x82F6_3B78), 0xE306_9283); + assert_eq!(crc64nvme(b"123456789"), 0xAE8B_1486_0A79_9888); + } + + fn batch_request(body: &str) -> Value { + json!({ + "headers": {"content-type": "multipart/mixed; boundary=batch_x"}, + "body_base64": STANDARD.encode(body), + }) + } + + fn deletion(content_id: u32, path: &str) -> String { + format!( + "--batch_x\r\nContent-Type: application/http\r\nContent-Transfer-Encoding: binary\r\n\ + Content-ID: {content_id}\r\n\r\nDELETE {path} HTTP/1.1\r\nx-ms-date: Mon, 01 Jan 2024 \ + 00:00:00 GMT\r\nAuthorization: Bearer t\r\nContent-Length: 0\r\n\r\n" + ) + } + + #[test] + fn a_blob_batch_needs_every_subrequest_in_a_well_formed_part() { + let expected = [ + BatchSubrequest { + method: "DELETE".into(), + path: "/c/a b".into(), + }, + BatchSubrequest { + method: "DELETE".into(), + path: "/c/b".into(), + }, + ]; + let body = format!( + "{}{}--batch_x--\r\n", + deletion(0, "/c/a%20b"), + deletion(1, "https://h/c/b") + ); + assert_eq!(check_blob_batch(&batch_request(&body), &expected), Ok(())); + + // In another order, which Content-IDs still tell apart. + let reordered = format!( + "{}{}--batch_x--", + deletion(1, "/c/b"), + deletion(0, "/c/a%20b") + ); + assert_eq!( + check_blob_batch(&batch_request(&reordered), &expected), + Ok(()) + ); + + for broken in [ + format!("{}{}", deletion(0, "/c/a%20b"), deletion(1, "/c/b")), + format!( + "{}{}--batch_x--", + deletion(0, "/c/a%20b"), + deletion(0, "/c/b") + ), + format!( + "{}{}--batch_x--", + deletion(0, "/c/a%20b"), + deletion(1, "/c/other") + ), + format!( + "{}{}--batch_x--", + deletion(0, "/c/a%20b"), + deletion(1, "/c/b") + ) + .replace("\r\n", "\n"), + format!( + "{}{}--batch_x--", + deletion(0, "/c/a%20b"), + deletion(1, "/c/b") + ) + .replace("x-ms-date", "x-ms-other"), + format!( + "{}{}--batch_x--", + deletion(0, "/c/a%20b"), + deletion(1, "/c/b") + ) + .replace("Content-ID: 1\r\n", ""), + ] { + assert!( + check_blob_batch(&batch_request(&broken), &expected).is_err(), + "{broken:?}" + ); + } + } + + #[test] + fn a_body_checksum_must_be_the_checksum_of_the_body() { + let request = |value: &str| { + json!({ + "headers": {"x-amz-checksum-crc64nvme": value}, + "body_base64": STANDARD.encode("123456789"), + }) + }; + let right = STANDARD.encode(0xAE8B_1486_0A79_9888_u64.to_be_bytes()); + let reversed = STANDARD.encode(0xAE8B_1486_0A79_9888_u64.to_le_bytes()); + let algorithm = ChecksumAlgorithm::Crc64nvme; + assert_eq!( + check_body_checksum(&request(&right), "x-amz-checksum-crc64nvme", &algorithm), + Ok(()) + ); + assert!( + check_body_checksum(&request(&reversed), "x-amz-checksum-crc64nvme", &algorithm) + .is_err() + ); + } +} diff --git a/tests/grading.rs b/tests/grading.rs index cb3514c..4fb4ff8 100644 --- a/tests/grading.rs +++ b/tests/grading.rs @@ -35,7 +35,12 @@ fn create_get_request() -> Value { #[test] fn corpus_is_strict_and_valid() { - for file in ["operations.json", "vectors.json", "live.json"] { + for file in [ + "operations.json", + "management.json", + "vectors.json", + "live.json", + ] { Suite::load(format!("{}/cases/{file}", env!("CARGO_MANIFEST_DIR"))).unwrap(); } let mut suite_json = serde_json::to_value(load_test_suite()).unwrap(); @@ -138,6 +143,20 @@ fn duplicate_ids_and_empty_assertions_are_rejected() { assert!(suite.validate().is_err()); } +#[test] +fn an_index_must_name_every_case_with_its_purpose() { + let mut suite = load_test_suite(); + suite.index = suite.case_index(); + assert!(suite.validate().is_ok()); + + suite.cases[0].purpose.push_str(" again"); + assert!(suite.validate().is_err()); + + suite.index = suite.case_index(); + suite.index.remove(&suite.cases[0].id); + assert!(suite.validate().is_err()); +} + #[test] fn no_request_cannot_pass() { let session = create_get_session();