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