diff --git a/enterprise/e2e/html/hurl/draft3.all.hurl b/enterprise/e2e/html/hurl/draft3.all.hurl index 095438290..28e631aec 100644 --- a/enterprise/e2e/html/hurl/draft3.all.hurl +++ b/enterprise/e2e/html/hurl/draft3.all.hurl @@ -9,6 +9,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" { "$schema": "http://json-schema.org/draft-03/schema#", "id": "{{base}}/test/draft3/string", @@ -65,6 +66,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" { "$schema": "http://json-schema.org/draft-03/schema#", "id": "{{base}}/test/draft3/with-ref", @@ -87,6 +89,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" { "$schema": "http://json-schema.org/draft-03/schema#", "id": "{{base}}/test/draft3/with-ref", diff --git a/enterprise/e2e/html/hurl/list.all.hurl b/enterprise/e2e/html/hurl/list.all.hurl index 135e847e1..04978e250 100644 --- a/enterprise/e2e/html/hurl/list.all.hurl +++ b/enterprise/e2e/html/hurl/list.all.hurl @@ -12,6 +12,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" header "Last-Modified" exists jsonpath "$.path" == "/" jsonpath "$.url" == "{{base}}" diff --git a/enterprise/e2e/html/hurl/schemas-health.all.hurl b/enterprise/e2e/html/hurl/schemas-health.all.hurl index fe4703c5f..91bd2d416 100644 --- a/enterprise/e2e/html/hurl/schemas-health.all.hurl +++ b/enterprise/e2e/html/hurl/schemas-health.all.hurl @@ -13,6 +13,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" header "Last-Modified" exists jsonpath "$.score" == 67 jsonpath "$.errors" count == 1 diff --git a/enterprise/e2e/html/hurl/self.all.hurl b/enterprise/e2e/html/hurl/self.all.hurl index 21ab77b00..be41be737 100644 --- a/enterprise/e2e/html/hurl/self.all.hurl +++ b/enterprise/e2e/html/hurl/self.all.hurl @@ -20,6 +20,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" header "Last-Modified" exists jsonpath "$.entries[*].name" includes "self" @@ -50,6 +51,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" header "Last-Modified" exists jsonpath "$.entries" count >= 1 diff --git a/enterprise/e2e/path/hurl/fetch-draft3.all.hurl b/enterprise/e2e/path/hurl/fetch-draft3.all.hurl index b989724c3..6e2c4c82a 100644 --- a/enterprise/e2e/path/hurl/fetch-draft3.all.hurl +++ b/enterprise/e2e/path/hurl/fetch-draft3.all.hurl @@ -9,6 +9,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" { "$schema": "http://json-schema.org/draft-03/schema#", "id": "{{base}}/v1/catalog/draft3/string", @@ -62,6 +63,7 @@ header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ bytes count == 0 header "ETag" == {{draft3_string_etag}} +header "Vary" == "Accept-Encoding" header "Content-Length" == {{draft3_string_content_length}} GET {{base}}/v1/catalog/draft3/nonexistent.json diff --git a/src/router/artifact.cc b/src/router/artifact.cc index fc36a5ead..25cc9802b 100644 --- a/src/router/artifact.cc +++ b/src/router/artifact.cc @@ -12,7 +12,6 @@ #include // std::exception #include // std::filesystem #include // std::optional -#include // std::ostringstream #include // std::string #include // std::string_view #include // std::move @@ -164,15 +163,26 @@ auto RouterAction::artifact_serve( return; } + // Our checksum is computed over the identity (uncompressed) payload at + // index time. When the wire response is gzip-encoded the wire bytes are + // not what the checksum covers, so per RFC 9110 §8.8.1 the validator must + // be marked weak: + // + // "if the origin server sends the same validator for a representation + // with a gzip content coding applied as it does for a representation + // with no content coding, then that validator is weak." + // + // https://datatracker.ietf.org/doc/html/rfc9110#section-8.8.1 + // + // When the wire response is identity, the wire bytes exactly match what + // the checksum covers, so the validator can be strong. const auto &checksum{info->checksum_hex}; - std::ostringstream etag_value_strong; - std::ostringstream etag_value_weak; - etag_value_strong << '"' << checksum << '"'; - etag_value_weak << 'W' << '/' << '"' << checksum << '"'; + const std::string etag_strong{std::string{"\""} + checksum + "\""}; + const std::string etag_weak{std::string{"W/\""} + checksum + "\""}; for (const auto &match : request.header_list("if-none-match")) { // Cache hit - if (match.first == "*" || match.first == etag_value_weak.str() || - match.first == etag_value_strong.str()) { + if (match.first == "*" || match.first == etag_weak || + match.first == etag_strong) { response.write_status(sourcemeta::one::STATUS_NOT_MODIFIED); if (enable_cors) { response.write_header("Access-Control-Allow-Origin", "*"); @@ -208,9 +218,19 @@ auto RouterAction::artifact_serve( response.write_header("Last-Modified", sourcemeta::core::to_gmt(info->last_modified)); - std::ostringstream etag; - etag << '"' << checksum << '"'; - response.write_header("ETag", std::move(etag).str()); + response.write_header("ETag", request.response_encoding() == + sourcemeta::one::Encoding::GZIP + ? etag_weak + : etag_strong); + + // RFC 9110 §12.5.5: emit Vary on cacheable responses so shared caches key + // the entry by the request headers that select the representation. The + // wire encoding and the ETag form (strong vs weak per RFC 9110 §8.8.1) + // both vary with `Accept-Encoding`; without this header a shared cache + // can serve the gzip variant to a client that didn't request gzip, or + // the strong-form ETag against a weak-form cached entry. + // https://datatracker.ietf.org/doc/html/rfc9110#section-12.5.5 + response.write_header("Vary", "Accept-Encoding"); // See // https://json-schema.org/draft/2020-12/json-schema-core.html#section-9.5.1.1 diff --git a/test/e2e/empty/hurl/test.all.hurl b/test/e2e/empty/hurl/test.all.hurl index 2c94c91bd..0023ee30f 100644 --- a/test/e2e/empty/hurl/test.all.hurl +++ b/test/e2e/empty/hurl/test.all.hurl @@ -20,6 +20,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" header "Last-Modified" exists jsonpath "$.path" == "/" jsonpath "$.url" == "{{base}}" diff --git a/test/e2e/headless/hurl/bundle.all.hurl b/test/e2e/headless/hurl/bundle.all.hurl index 54a2e18cd..fd3b4341f 100644 --- a/test/e2e/headless/hurl/bundle.all.hurl +++ b/test/e2e/headless/hurl/bundle.all.hurl @@ -9,6 +9,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" GET {{base}}/test/schemas/bundling-single.json?bundle=1 HTTP 200 @@ -99,6 +100,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" GET {{base}}/test/schemas/no-id.json?bundle=1 HTTP 200 @@ -150,6 +152,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" { "$schema": "http://json-schema.org/draft-07/schema#", "$id": "{{base}}/test/schemas/bundling-single", @@ -180,6 +183,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" { "$schema": "http://json-schema.org/draft-07/schema#", "$id": "{{base}}/test/schemas/bundling-single", diff --git a/test/e2e/headless/hurl/etag.all.hurl b/test/e2e/headless/hurl/etag.all.hurl index 45dfd6764..db5591b6e 100644 --- a/test/e2e/headless/hurl/etag.all.hurl +++ b/test/e2e/headless/hurl/etag.all.hurl @@ -20,6 +20,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" == {{test_schemas_string_json_etag}} +header "Vary" == "Accept-Encoding" GET {{base}}/test/schemas/string.json If-None-Match: {{test_schemas_string_json_etag}} diff --git a/test/e2e/headless/hurl/fetch.all.hurl b/test/e2e/headless/hurl/fetch.all.hurl index a4ae25e13..b9b585f14 100644 --- a/test/e2e/headless/hurl/fetch.all.hurl +++ b/test/e2e/headless/hurl/fetch.all.hurl @@ -9,6 +9,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" GET {{base}}/test/schemas/string.json HTTP 200 @@ -48,6 +49,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" GET {{base}}/test/schemas/string HTTP 200 @@ -206,6 +208,7 @@ header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ bytes count == 0 header "ETag" == {{test_schemas_string_json_etag}} +header "Vary" == "Accept-Encoding" header "Content-Length" == {{test_schemas_string_json_content_length}} POST {{base}}/test/schemas/string.json @@ -258,6 +261,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "{{base}}/test/no-base/no-id", @@ -275,6 +279,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "{{base}}/test/no-base/test-1", @@ -302,6 +307,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" GET {{base}}/test/schemas/string.JSON HTTP 200 @@ -314,6 +320,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" body == "{{case_baseline_body}}" GET {{base}}/test/schemas/string.Json @@ -327,6 +334,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" body == "{{case_baseline_body}}" GET {{base}}/test/schemas/STRING.json @@ -340,6 +348,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" body == "{{case_baseline_body}}" GET {{base}}/TEST/SCHEMAS/STRING.JSON @@ -353,4 +362,5 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" body == "{{case_baseline_body}}" diff --git a/test/e2e/headless/hurl/list.all.hurl b/test/e2e/headless/hurl/list.all.hurl index 8eaf6953d..10f63ad7d 100644 --- a/test/e2e/headless/hurl/list.all.hurl +++ b/test/e2e/headless/hurl/list.all.hurl @@ -12,6 +12,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" header "Last-Modified" exists jsonpath "$.path" == "/" jsonpath "$.url" == "{{base}}" @@ -59,6 +60,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" header "Last-Modified" exists jsonpath "$.path" == "/test" jsonpath "$.url" == "{{base}}/test" @@ -130,6 +132,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" header "Last-Modified" exists jsonpath "$.path" == "/" jsonpath "$.url" == "{{base}}" @@ -180,6 +183,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" header "Last-Modified" exists jsonpath "$.path" == "/test" jsonpath "$.url" == "{{base}}/test" @@ -228,6 +232,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" header "Last-Modified" exists jsonpath "$.path" == "/test" jsonpath "$.url" == "{{base}}/test" diff --git a/test/e2e/headless/hurl/schemas-dependencies.all.hurl b/test/e2e/headless/hurl/schemas-dependencies.all.hurl index 35791e4ff..ef0211087 100644 --- a/test/e2e/headless/hurl/schemas-dependencies.all.hurl +++ b/test/e2e/headless/hurl/schemas-dependencies.all.hurl @@ -12,6 +12,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" header "Last-Modified" exists jsonpath "$" count == 1 jsonpath "$[0].from" == "{{base}}/test/schemas/bundling-single" @@ -45,6 +46,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" header "Last-Modified" exists jsonpath "$" count == 0 @@ -75,6 +77,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" header "Last-Modified" exists jsonpath "$" count == 0 @@ -105,6 +108,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" header "Last-Modified" exists jsonpath "$" count == 0 @@ -132,6 +136,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" header "Last-Modified" exists bytes count == 0 diff --git a/test/e2e/headless/hurl/schemas-dependents.all.hurl b/test/e2e/headless/hurl/schemas-dependents.all.hurl index d423a19c5..86498ea4c 100644 --- a/test/e2e/headless/hurl/schemas-dependents.all.hurl +++ b/test/e2e/headless/hurl/schemas-dependents.all.hurl @@ -12,6 +12,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" header "Last-Modified" exists jsonpath "$" count == 3 jsonpath "$[0].from" == "{{base}}/test/schemas/bundling-double" @@ -48,6 +49,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" header "Last-Modified" exists jsonpath "$" count == 4 jsonpath "$[0].from" == "{{base}}/test/schemas/bundling-double" @@ -86,6 +88,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" header "Last-Modified" exists jsonpath "$" count == 0 @@ -116,6 +119,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" header "Last-Modified" exists jsonpath "$" count == 0 @@ -143,6 +147,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" header "Last-Modified" exists bytes count == 0 diff --git a/test/e2e/headless/hurl/schemas-health.all.hurl b/test/e2e/headless/hurl/schemas-health.all.hurl index 40c02e5f3..1077921ff 100644 --- a/test/e2e/headless/hurl/schemas-health.all.hurl +++ b/test/e2e/headless/hurl/schemas-health.all.hurl @@ -13,6 +13,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" header "Last-Modified" exists jsonpath "$.score" == 0 jsonpath "$.errors" count == 3 diff --git a/test/e2e/headless/hurl/schemas-locations.all.hurl b/test/e2e/headless/hurl/schemas-locations.all.hurl index d92743588..2a38c9935 100644 --- a/test/e2e/headless/hurl/schemas-locations.all.hurl +++ b/test/e2e/headless/hurl/schemas-locations.all.hurl @@ -13,6 +13,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" header "Last-Modified" exists jsonpath "$.static['{{base}}/test/schemas/no-id'].base" == "{{base}}/test/schemas/no-id" jsonpath "$.static['{{base}}/test/schemas/no-id'].baseDialect" == "http://json-schema.org/draft-07/schema#" @@ -92,6 +93,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" header "Last-Modified" exists bytes count == 0 diff --git a/test/e2e/headless/hurl/schemas-metadata.all.hurl b/test/e2e/headless/hurl/schemas-metadata.all.hurl index f856a8cc2..d798bda9c 100644 --- a/test/e2e/headless/hurl/schemas-metadata.all.hurl +++ b/test/e2e/headless/hurl/schemas-metadata.all.hurl @@ -13,6 +13,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" header "Last-Modified" exists jsonpath "$.baseDialect" == "http://json-schema.org/draft-07/schema#" jsonpath "$.health" == 0 @@ -59,6 +60,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" header "Last-Modified" exists jsonpath "$.bytes" == 357 jsonpath "$.bytesBundled" == 357 @@ -114,6 +116,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" header "Last-Modified" exists bytes count == 0 @@ -223,6 +226,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" header "Last-Modified" exists jsonpath "$.baseDialect" == "http://json-schema.org/draft-07/schema#" jsonpath "$.dialect" == "http://json-schema.org/draft-07/schema#" diff --git a/test/e2e/headless/hurl/schemas-positions.all.hurl b/test/e2e/headless/hurl/schemas-positions.all.hurl index 473ba9d13..883e7b5ed 100644 --- a/test/e2e/headless/hurl/schemas-positions.all.hurl +++ b/test/e2e/headless/hurl/schemas-positions.all.hurl @@ -13,6 +13,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" header "Last-Modified" exists jsonpath "$['']" count == 4 jsonpath "$[''][0]" == 1 @@ -60,6 +61,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" header "Last-Modified" exists bytes count == 0 diff --git a/test/e2e/headless/hurl/schemas-stats.all.hurl b/test/e2e/headless/hurl/schemas-stats.all.hurl index 2fe6e6026..13bd2ec3e 100644 --- a/test/e2e/headless/hurl/schemas-stats.all.hurl +++ b/test/e2e/headless/hurl/schemas-stats.all.hurl @@ -13,6 +13,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" header "Last-Modified" exists jsonpath "$['http://json-schema.org/draft-07/schema#']['$id']" == 1 jsonpath "$['http://json-schema.org/draft-07/schema#']['$schema']" == 1 @@ -43,6 +44,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" header "Last-Modified" exists bytes count == 0 diff --git a/test/e2e/headless/hurl/self.all.hurl b/test/e2e/headless/hurl/self.all.hurl index 21ab77b00..be41be737 100644 --- a/test/e2e/headless/hurl/self.all.hurl +++ b/test/e2e/headless/hurl/self.all.hurl @@ -20,6 +20,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" header "Last-Modified" exists jsonpath "$.entries[*].name" includes "self" @@ -50,6 +51,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" header "Last-Modified" exists jsonpath "$.entries" count >= 1 diff --git a/test/e2e/html/hurl/bundle.all.hurl b/test/e2e/html/hurl/bundle.all.hurl index 9bd5d413e..b03dbc875 100644 --- a/test/e2e/html/hurl/bundle.all.hurl +++ b/test/e2e/html/hurl/bundle.all.hurl @@ -9,6 +9,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" GET {{base}}/test/bundling/single.json?bundle=1 HTTP 200 @@ -99,6 +100,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" GET {{base}}/test/v2.0/schema.json?bundle=1 HTTP 200 @@ -174,6 +176,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" { "$schema": "http://json-schema.org/draft-07/schema#", "$id": "{{base}}/test/bundling/single", @@ -204,6 +207,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" { "$schema": "http://json-schema.org/draft-07/schema#", "$id": "{{base}}/test/bundling/single", diff --git a/test/e2e/html/hurl/draft3.all.hurl b/test/e2e/html/hurl/draft3.all.hurl index 095438290..28e631aec 100644 --- a/test/e2e/html/hurl/draft3.all.hurl +++ b/test/e2e/html/hurl/draft3.all.hurl @@ -9,6 +9,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" { "$schema": "http://json-schema.org/draft-03/schema#", "id": "{{base}}/test/draft3/string", @@ -65,6 +66,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" { "$schema": "http://json-schema.org/draft-03/schema#", "id": "{{base}}/test/draft3/with-ref", @@ -87,6 +89,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" { "$schema": "http://json-schema.org/draft-03/schema#", "id": "{{base}}/test/draft3/with-ref", diff --git a/test/e2e/html/hurl/etag.all.hurl b/test/e2e/html/hurl/etag.all.hurl index 45dfd6764..60e27312a 100644 --- a/test/e2e/html/hurl/etag.all.hurl +++ b/test/e2e/html/hurl/etag.all.hurl @@ -10,6 +10,58 @@ header "Referrer-Policy" not exists header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ +# Identity response: strong ETag form `""` per RFC 9110 §8.8.1 +header "ETag" matches /^"[0-9a-f]+"$/ +header "Vary" == "Accept-Encoding" + +# Gzip-encoded response: weak ETag form `W/""` per RFC 9110 §8.8.1 +# https://datatracker.ietf.org/doc/html/rfc9110#section-8.8.1 +GET {{base}}/test/schemas/string.json +Accept-Encoding: gzip +HTTP 200 +Content-Type: application/schema+json +Content-Encoding: gzip +Access-Control-Allow-Origin: * +[Captures] +test_schemas_string_json_etag_weak: header "ETag" +[Asserts] +header "Referrer-Policy" not exists +header "Content-Security-Policy" not exists +header "X-Frame-Options" not exists +header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ +header "ETag" matches /^W\/"[0-9a-f]+"$/ +header "Vary" == "Accept-Encoding" + +# Weak-form ETag captured from a gzip-encoded response still matches when +# sent as If-None-Match on an identity request: the comparison strips the +# W/ prefix and the underlying SHA-256 is identical across encodings. +GET {{base}}/test/schemas/string.json +If-None-Match: {{test_schemas_string_json_etag_weak}} +HTTP 304 +Access-Control-Allow-Origin: * +[Asserts] +header "Referrer-Policy" not exists +header "Content-Security-Policy" not exists +header "X-Frame-Options" not exists +header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ +header "Content-Type" not exists +bytes count == 0 + +# Reverse direction: strong-form ETag captured from an identity response +# still matches when sent as If-None-Match on a gzip-encoded request. +GET {{base}}/test/schemas/string.json +Accept-Encoding: gzip +If-None-Match: {{test_schemas_string_json_etag}} +HTTP 304 +Access-Control-Allow-Origin: * +[Asserts] +header "Referrer-Policy" not exists +header "Content-Security-Policy" not exists +header "X-Frame-Options" not exists +header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ +header "Content-Type" not exists +header "Content-Encoding" not exists +bytes count == 0 GET {{base}}/test/schemas/string.json HTTP 200 @@ -20,6 +72,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" == {{test_schemas_string_json_etag}} +header "Vary" == "Accept-Encoding" GET {{base}}/test/schemas/string.json If-None-Match: {{test_schemas_string_json_etag}} diff --git a/test/e2e/html/hurl/fetch.all.hurl b/test/e2e/html/hurl/fetch.all.hurl index 3947d5368..bf005f026 100644 --- a/test/e2e/html/hurl/fetch.all.hurl +++ b/test/e2e/html/hurl/fetch.all.hurl @@ -9,6 +9,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" GET {{base}}/test/schemas/string.json HTTP 200 @@ -48,6 +49,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" GET {{base}}/test/schemas/string HTTP 200 @@ -355,6 +357,7 @@ header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ bytes count == 0 header "ETag" == {{test_schemas_string_json_etag}} +header "Vary" == "Accept-Encoding" header "Content-Length" == {{test_schemas_string_json_content_length}} POST {{base}}/test/schemas/string.json @@ -420,6 +423,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "{{base}}/test/schemas/clash/foo" @@ -436,6 +440,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "{{base}}/test/schemas/clash/foo/bar" @@ -452,6 +457,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "{{base}}/test/no-base/no-id", @@ -469,6 +475,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "{{base}}/test/no-base/test-1", @@ -496,6 +503,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" GET {{base}}/test/schemas/string.JSON HTTP 200 @@ -508,6 +516,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" body == "{{case_baseline_body}}" GET {{base}}/test/schemas/string.Json @@ -521,6 +530,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" body == "{{case_baseline_body}}" GET {{base}}/test/schemas/STRING.json @@ -534,6 +544,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" body == "{{case_baseline_body}}" GET {{base}}/TEST/SCHEMAS/STRING.JSON @@ -547,4 +558,5 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" body == "{{case_baseline_body}}" diff --git a/test/e2e/html/hurl/list.all.hurl b/test/e2e/html/hurl/list.all.hurl index a7b54e362..4649a6d1e 100644 --- a/test/e2e/html/hurl/list.all.hurl +++ b/test/e2e/html/hurl/list.all.hurl @@ -12,6 +12,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" header "Last-Modified" exists jsonpath "$.path" == "/" jsonpath "$.url" == "{{base}}" @@ -60,6 +61,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" header "Last-Modified" exists jsonpath "$.path" == "/test" jsonpath "$.url" == "{{base}}/test" @@ -164,6 +166,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" header "Last-Modified" exists jsonpath "$.path" == "/test/v2.0" jsonpath "$.url" == "{{base}}/test/v2.0" @@ -214,6 +217,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" header "Last-Modified" exists jsonpath "$.path" == "/test/v2.0" jsonpath "$.url" == "{{base}}/test/v2.0" @@ -264,6 +268,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" header "Last-Modified" exists jsonpath "$.path" == "/test/schemas/versions" jsonpath "$.url" == "{{base}}/test/schemas/versions" @@ -317,6 +322,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" header "Last-Modified" exists jsonpath "$.path" == "/test/schemas/clash/foo" jsonpath "$.url" == "{{base}}/test/schemas/clash/foo" @@ -372,6 +378,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" header "Last-Modified" exists jsonpath "$.path" == "/test/schemas/clash" jsonpath "$.url" == "{{base}}/test/schemas/clash" @@ -430,6 +437,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" header "Last-Modified" exists jsonpath "$.path" == "/test/extension" jsonpath "$.url" == "{{base}}/test/extension" diff --git a/test/e2e/html/hurl/schemas-dependencies.all.hurl b/test/e2e/html/hurl/schemas-dependencies.all.hurl index 37a348fba..c84365702 100644 --- a/test/e2e/html/hurl/schemas-dependencies.all.hurl +++ b/test/e2e/html/hurl/schemas-dependencies.all.hurl @@ -12,6 +12,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" header "Last-Modified" exists jsonpath "$" count == 1 jsonpath "$[0].from" == "{{base}}/test/bundling/single" @@ -45,6 +46,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" header "Last-Modified" exists jsonpath "$" count == 0 @@ -75,6 +77,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" header "Last-Modified" exists jsonpath "$" count == 0 @@ -105,6 +108,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" header "Last-Modified" exists jsonpath "$" count == 0 @@ -135,6 +139,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" header "Last-Modified" exists jsonpath "$" count == 3 jsonpath "$[0].from" == "{{base}}/test/schemas/cycle/foo" @@ -171,6 +176,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" header "Last-Modified" exists bytes count == 0 diff --git a/test/e2e/html/hurl/schemas-dependents.all.hurl b/test/e2e/html/hurl/schemas-dependents.all.hurl index 31b4bdc67..8a5bd727e 100644 --- a/test/e2e/html/hurl/schemas-dependents.all.hurl +++ b/test/e2e/html/hurl/schemas-dependents.all.hurl @@ -12,6 +12,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" header "Last-Modified" exists jsonpath "$" count == 3 jsonpath "$[0].from" == "{{base}}/test/bundling/double" @@ -48,6 +49,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" header "Last-Modified" exists jsonpath "$" count == 4 jsonpath "$[0].from" == "{{base}}/test/bundling/double" @@ -86,6 +88,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" header "Last-Modified" exists jsonpath "$" count == 0 @@ -116,6 +119,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" header "Last-Modified" exists jsonpath "$" count == 0 @@ -146,6 +150,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" header "Last-Modified" exists jsonpath "$" count == 3 jsonpath "$[0].from" == "{{base}}/test/schemas/cycle/bar" @@ -179,6 +184,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" header "Last-Modified" exists bytes count == 0 diff --git a/test/e2e/html/hurl/schemas-health.all.hurl b/test/e2e/html/hurl/schemas-health.all.hurl index 044f50ae8..cccf9f839 100644 --- a/test/e2e/html/hurl/schemas-health.all.hurl +++ b/test/e2e/html/hurl/schemas-health.all.hurl @@ -13,6 +13,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" header "Last-Modified" exists jsonpath "$.score" == 0 jsonpath "$.errors" count == 3 diff --git a/test/e2e/html/hurl/schemas-locations.all.hurl b/test/e2e/html/hurl/schemas-locations.all.hurl index 68740555e..0ade8ed22 100644 --- a/test/e2e/html/hurl/schemas-locations.all.hurl +++ b/test/e2e/html/hurl/schemas-locations.all.hurl @@ -13,6 +13,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" header "Last-Modified" exists jsonpath "$.static['{{base}}/test/v2.0/schema'].base" == "{{base}}/test/v2.0/schema" jsonpath "$.static['{{base}}/test/v2.0/schema'].baseDialect" == "http://json-schema.org/draft-07/schema#" @@ -92,6 +93,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" header "Last-Modified" exists bytes count == 0 diff --git a/test/e2e/html/hurl/schemas-metadata.all.hurl b/test/e2e/html/hurl/schemas-metadata.all.hurl index 48c4a48a2..9d10428d5 100644 --- a/test/e2e/html/hurl/schemas-metadata.all.hurl +++ b/test/e2e/html/hurl/schemas-metadata.all.hurl @@ -13,6 +13,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" header "Last-Modified" exists jsonpath "$.bytes" == 130 jsonpath "$.bytesBundled" == 130 @@ -61,6 +62,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" header "Last-Modified" exists jsonpath "$.bytes" == 357 jsonpath "$.bytesBundled" == 357 @@ -116,6 +118,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" header "Last-Modified" exists bytes count == 0 @@ -225,6 +228,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" header "Last-Modified" exists jsonpath "$.bytes" == 269 jsonpath "$.bytesBundled" == 6411 diff --git a/test/e2e/html/hurl/schemas-positions.all.hurl b/test/e2e/html/hurl/schemas-positions.all.hurl index 4a273b74e..8260c9cf6 100644 --- a/test/e2e/html/hurl/schemas-positions.all.hurl +++ b/test/e2e/html/hurl/schemas-positions.all.hurl @@ -13,6 +13,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" header "Last-Modified" exists jsonpath "$['']" count == 4 jsonpath "$[''][0]" == 1 @@ -60,6 +61,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" header "Last-Modified" exists bytes count == 0 diff --git a/test/e2e/html/hurl/schemas-stats.all.hurl b/test/e2e/html/hurl/schemas-stats.all.hurl index 4e01e6a99..93a289e56 100644 --- a/test/e2e/html/hurl/schemas-stats.all.hurl +++ b/test/e2e/html/hurl/schemas-stats.all.hurl @@ -13,6 +13,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" header "Last-Modified" exists jsonpath "$['http://json-schema.org/draft-07/schema#']['$id']" == 1 jsonpath "$['http://json-schema.org/draft-07/schema#']['$schema']" == 1 @@ -43,6 +44,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" header "Last-Modified" exists bytes count == 0 @@ -151,6 +153,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" header "Last-Modified" exists jsonpath "$['https://json-schema.org/draft/2020-12/vocab/core']['$schema']" == 1 jsonpath "$['https://json-schema.org/draft/2020-12/vocab/meta-data']['title']" == 1 diff --git a/test/e2e/html/hurl/self.all.hurl b/test/e2e/html/hurl/self.all.hurl index 21ab77b00..be41be737 100644 --- a/test/e2e/html/hurl/self.all.hurl +++ b/test/e2e/html/hurl/self.all.hurl @@ -20,6 +20,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" header "Last-Modified" exists jsonpath "$.entries[*].name" includes "self" @@ -50,6 +51,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" header "Last-Modified" exists jsonpath "$.entries" count >= 1 diff --git a/test/e2e/html/hurl/static-css.all.hurl b/test/e2e/html/hurl/static-css.all.hurl index 31f26b1d2..245bdbdae 100644 --- a/test/e2e/html/hurl/static-css.all.hurl +++ b/test/e2e/html/hurl/static-css.all.hurl @@ -41,6 +41,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" [Captures] css_etag: header "ETag" GET {{base}}/self/v1/static/style.min.css @@ -52,6 +53,7 @@ header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ bytes count > 0 header "ETag" == {{css_etag}} +header "Vary" == "Accept-Encoding" header "Access-Control-Allow-Origin" not exists GET {{base}}/self/v1/static/style.min.css diff --git a/test/e2e/html/hurl/yaml.all.hurl b/test/e2e/html/hurl/yaml.all.hurl index aa7ea055e..562ea1591 100644 --- a/test/e2e/html/hurl/yaml.all.hurl +++ b/test/e2e/html/hurl/yaml.all.hurl @@ -24,6 +24,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" GET {{base}}/test/schemas/yaml.json HTTP 200 @@ -64,6 +65,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" GET {{base}}/test/schemas/yml.json HTTP 200 diff --git a/test/e2e/no-api/hurl/fetch.all.hurl b/test/e2e/no-api/hurl/fetch.all.hurl index 1060e051c..82d246ad4 100644 --- a/test/e2e/no-api/hurl/fetch.all.hurl +++ b/test/e2e/no-api/hurl/fetch.all.hurl @@ -9,6 +9,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" { "$schema": "http://json-schema.org/draft-07/schema#", "$id": "{{base}}/test/schemas/string", @@ -26,6 +27,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" { "$schema": "http://json-schema.org/draft-07/schema#", "$id": "{{base}}/test/schemas/string", @@ -43,6 +45,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" { "$schema": "http://json-schema.org/draft-07/schema#", "$id": "{{base}}/test/schemas/integer", @@ -61,3 +64,4 @@ header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ bytes count == 0 header "ETag" exists +header "Vary" == "Accept-Encoding" diff --git a/test/e2e/path/hurl/fetch-draft3.all.hurl b/test/e2e/path/hurl/fetch-draft3.all.hurl index 2d5064849..e9d4468e9 100644 --- a/test/e2e/path/hurl/fetch-draft3.all.hurl +++ b/test/e2e/path/hurl/fetch-draft3.all.hurl @@ -9,6 +9,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" { "$schema": "http://json-schema.org/draft-03/schema#", "id": "{{base}}/v1/catalog/draft3/string", @@ -114,6 +115,7 @@ header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ bytes count == 0 header "ETag" == {{draft3_string_etag}} +header "Vary" == "Accept-Encoding" header "Content-Length" == {{draft3_string_content_length}} GET {{base}}/v1/catalog/draft3/nonexistent.json diff --git a/test/e2e/path/hurl/fetch.all.hurl b/test/e2e/path/hurl/fetch.all.hurl index 6a4191f15..41dc74445 100644 --- a/test/e2e/path/hurl/fetch.all.hurl +++ b/test/e2e/path/hurl/fetch.all.hurl @@ -9,6 +9,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" { "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "{{base}}/v1/catalog/example/string", @@ -217,6 +218,7 @@ header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ bytes count == 0 header "ETag" == {{string_etag}} +header "Vary" == "Accept-Encoding" header "Content-Length" == {{string_content_length}} GET {{base}}/v1/catalog/example/nonexistent.json @@ -311,6 +313,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" GET {{base}}/v1/catalog/example/string.JSON HTTP 200 @@ -323,6 +326,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" body == "{{case_baseline_body}}" GET {{base}}/v1/catalog/example/string.Json @@ -336,6 +340,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" body == "{{case_baseline_body}}" GET {{base}}/v1/catalog/example/STRING.json @@ -349,6 +354,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" body == "{{case_baseline_body}}" GET {{base}}/v1/catalog/EXAMPLE/STRING.JSON @@ -362,6 +368,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" body == "{{case_baseline_body}}" # Unknown query parameters are silently ignored on the REST schema fetch @@ -378,6 +385,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" body == "{{case_baseline_body}}" GET {{base}}/v1/catalog/example/string.json?bundle&foo=bar&baz @@ -391,3 +399,4 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" diff --git a/test/e2e/path/hurl/list.all.hurl b/test/e2e/path/hurl/list.all.hurl index 0cd2a6b87..6272301f3 100644 --- a/test/e2e/path/hurl/list.all.hurl +++ b/test/e2e/path/hurl/list.all.hurl @@ -11,6 +11,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" header "Last-Modified" exists jsonpath "$.path" == "/v1/catalog/" jsonpath "$.url" == "{{base}}/v1/catalog" @@ -67,6 +68,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" header "Last-Modified" exists jsonpath "$.path" == "/v1/catalog/draft3" jsonpath "$.url" == "{{base}}/v1/catalog/draft3" @@ -128,6 +130,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" header "Last-Modified" exists jsonpath "$.path" == "/v1/catalog/example" jsonpath "$.url" == "{{base}}/v1/catalog/example" @@ -198,6 +201,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" header "Last-Modified" exists jsonpath "$.path" == "/v1/catalog/rebased" jsonpath "$.url" == "{{base}}/v1/catalog/rebased" diff --git a/test/e2e/path/hurl/metadata-draft3.all.hurl b/test/e2e/path/hurl/metadata-draft3.all.hurl index 8e6ba7159..9ec6268b3 100644 --- a/test/e2e/path/hurl/metadata-draft3.all.hurl +++ b/test/e2e/path/hurl/metadata-draft3.all.hurl @@ -12,6 +12,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" header "Last-Modified" exists jsonpath "$.identifier" == "{{base}}/v1/catalog/draft3/string" jsonpath "$.path" == "/v1/catalog/draft3/string" @@ -79,6 +80,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" { "$schema": "http://json-schema.org/draft-03/schema#", "id": "{{base}}/v1/catalog/draft3/with-ref", diff --git a/test/e2e/path/hurl/metadata.all.hurl b/test/e2e/path/hurl/metadata.all.hurl index 59a32a409..27d9956ba 100644 --- a/test/e2e/path/hurl/metadata.all.hurl +++ b/test/e2e/path/hurl/metadata.all.hurl @@ -12,6 +12,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" header "Last-Modified" exists jsonpath "$.bytes" == 143 jsonpath "$.bytesBundled" == 143 @@ -57,6 +58,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" header "Last-Modified" exists jsonpath "$.bytes" == 145 jsonpath "$.bytesBundled" == 145 @@ -106,6 +108,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" header "Last-Modified" exists jsonpath "$.identifier" == "{{base}}/v1/catalog/example/zzz-truncate-target" jsonpath "$.path" == "/v1/catalog/example/zzz-truncate-target" diff --git a/test/e2e/path/hurl/self.all.hurl b/test/e2e/path/hurl/self.all.hurl index 11bd73723..4d3676f4c 100644 --- a/test/e2e/path/hurl/self.all.hurl +++ b/test/e2e/path/hurl/self.all.hurl @@ -19,6 +19,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" header "Last-Modified" exists jsonpath "$.entries[*].name" includes "self" @@ -48,6 +49,7 @@ header "Content-Security-Policy" not exists header "X-Frame-Options" not exists header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} ([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/ header "ETag" exists +header "Vary" == "Accept-Encoding" header "Last-Modified" exists jsonpath "$.entries" count >= 1