From 2f3aa7cb6e06f916cf1a6842c8746212a12263ba Mon Sep 17 00:00:00 2001 From: Juan Cruz Viotti Date: Fri, 5 Jun 2026 16:01:24 -0400 Subject: [PATCH 1/2] Use weak ETag's when serving compressed content Signed-off-by: Juan Cruz Viotti --- src/router/artifact.cc | 31 ++++++++++++++++++++---------- test/e2e/html/hurl/etag.all.hurl | 33 ++++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+), 10 deletions(-) diff --git a/src/router/artifact.cc b/src/router/artifact.cc index fc36a5ea..b983fb80 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,10 @@ 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); // See // https://json-schema.org/draft/2020-12/json-schema-core.html#section-9.5.1.1 diff --git a/test/e2e/html/hurl/etag.all.hurl b/test/e2e/html/hurl/etag.all.hurl index 45dfd676..cf8ab36f 100644 --- a/test/e2e/html/hurl/etag.all.hurl +++ b/test/e2e/html/hurl/etag.all.hurl @@ -10,6 +10,39 @@ 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]+"$/ + +# 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]+"$/ + +# Weak-form ETag from a gzip request still matches the strong-form +# If-None-Match (and vice-versa). The comparison strips the W/ prefix. +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 GET {{base}}/test/schemas/string.json HTTP 200 From 7baa9fce1a894af7efe0cca482e7fead92abdfec Mon Sep 17 00:00:00 2001 From: Juan Cruz Viotti Date: Fri, 5 Jun 2026 16:13:55 -0400 Subject: [PATCH 2/2] Fix Signed-off-by: Juan Cruz Viotti --- enterprise/e2e/html/hurl/draft3.all.hurl | 3 +++ enterprise/e2e/html/hurl/list.all.hurl | 1 + .../e2e/html/hurl/schemas-health.all.hurl | 1 + enterprise/e2e/html/hurl/self.all.hurl | 2 ++ .../e2e/path/hurl/fetch-draft3.all.hurl | 2 ++ src/router/artifact.cc | 9 +++++++ test/e2e/empty/hurl/test.all.hurl | 1 + test/e2e/headless/hurl/bundle.all.hurl | 4 ++++ test/e2e/headless/hurl/etag.all.hurl | 1 + test/e2e/headless/hurl/fetch.all.hurl | 10 ++++++++ test/e2e/headless/hurl/list.all.hurl | 5 ++++ .../hurl/schemas-dependencies.all.hurl | 5 ++++ .../headless/hurl/schemas-dependents.all.hurl | 5 ++++ .../e2e/headless/hurl/schemas-health.all.hurl | 1 + .../headless/hurl/schemas-locations.all.hurl | 2 ++ .../headless/hurl/schemas-metadata.all.hurl | 4 ++++ .../headless/hurl/schemas-positions.all.hurl | 2 ++ test/e2e/headless/hurl/schemas-stats.all.hurl | 2 ++ test/e2e/headless/hurl/self.all.hurl | 2 ++ test/e2e/html/hurl/bundle.all.hurl | 4 ++++ test/e2e/html/hurl/draft3.all.hurl | 3 +++ test/e2e/html/hurl/etag.all.hurl | 24 +++++++++++++++++-- test/e2e/html/hurl/fetch.all.hurl | 12 ++++++++++ test/e2e/html/hurl/list.all.hurl | 8 +++++++ .../html/hurl/schemas-dependencies.all.hurl | 6 +++++ .../e2e/html/hurl/schemas-dependents.all.hurl | 6 +++++ test/e2e/html/hurl/schemas-health.all.hurl | 1 + test/e2e/html/hurl/schemas-locations.all.hurl | 2 ++ test/e2e/html/hurl/schemas-metadata.all.hurl | 4 ++++ test/e2e/html/hurl/schemas-positions.all.hurl | 2 ++ test/e2e/html/hurl/schemas-stats.all.hurl | 3 +++ test/e2e/html/hurl/self.all.hurl | 2 ++ test/e2e/html/hurl/static-css.all.hurl | 2 ++ test/e2e/html/hurl/yaml.all.hurl | 2 ++ test/e2e/no-api/hurl/fetch.all.hurl | 4 ++++ test/e2e/path/hurl/fetch-draft3.all.hurl | 2 ++ test/e2e/path/hurl/fetch.all.hurl | 9 +++++++ test/e2e/path/hurl/list.all.hurl | 4 ++++ test/e2e/path/hurl/metadata-draft3.all.hurl | 2 ++ test/e2e/path/hurl/metadata.all.hurl | 3 +++ test/e2e/path/hurl/self.all.hurl | 2 ++ 41 files changed, 167 insertions(+), 2 deletions(-) diff --git a/enterprise/e2e/html/hurl/draft3.all.hurl b/enterprise/e2e/html/hurl/draft3.all.hurl index 09543829..28e631ae 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 135e847e..04978e25 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 fe4703c5..91bd2d41 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 21ab77b0..be41be73 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 b989724c..6e2c4c82 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 b983fb80..25cc9802 100644 --- a/src/router/artifact.cc +++ b/src/router/artifact.cc @@ -223,6 +223,15 @@ auto RouterAction::artifact_serve( ? 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 if (!link.empty()) { diff --git a/test/e2e/empty/hurl/test.all.hurl b/test/e2e/empty/hurl/test.all.hurl index 2c94c91b..0023ee30 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 54a2e18c..fd3b4341 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 45dfd676..db5591b6 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 a4ae25e1..b9b585f1 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 8eaf6953..10f63ad7 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 35791e4f..ef021108 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 d423a19c..86498ea4 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 40c02e5f..1077921f 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 d9274358..2a38c993 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 f856a8cc..d798bda9 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 473ba9d1..883e7b5e 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 2fe6e602..13bd2ec3 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 21ab77b0..be41be73 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 9bd5d413..b03dbc87 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 09543829..28e631ae 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 cf8ab36f..60e27312 100644 --- a/test/e2e/html/hurl/etag.all.hurl +++ b/test/e2e/html/hurl/etag.all.hurl @@ -12,6 +12,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$/ # 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 @@ -29,9 +30,11 @@ 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 from a gzip request still matches the strong-form -# If-None-Match (and vice-versa). The comparison strips the W/ prefix. +# 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 @@ -44,6 +47,22 @@ header "Date" matches /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (0[1-9]|[12][0-9]|3[01]) 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 Access-Control-Allow-Origin: * @@ -53,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 3947d536..bf005f02 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 a7b54e36..4649a6d1 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 37a348fb..c8436570 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 31b4bdc6..8a5bd727 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 044f50ae..cccf9f83 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 68740555..0ade8ed2 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 48c4a48a..9d10428d 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 4a273b74..8260c9cf 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 4e01e6a9..93a289e5 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 21ab77b0..be41be73 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 31f26b1d..245bdbda 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 aa7ea055..562ea159 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 1060e051..82d246ad 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 2d506484..e9d4468e 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 6a4191f1..41dc7444 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 0cd2a6b8..6272301f 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 8e6ba715..9ec6268b 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 59a32a40..27d9956b 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 11bd7372..4d3676f4 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