From: Remi Tricot-Le Breton Date: Thu, 22 Oct 2020 08:40:06 +0000 (+0200) Subject: REGTEST: cache: Add if-none-match test case X-Git-Tag: v2.3-dev8~28 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=5bbdc81cf1cda6f658c3f6cce9e4c569964476c7;p=thirdparty%2Fhaproxy.git REGTEST: cache: Add if-none-match test case Test that if-none-match header is properly taken into account and that when the conditions are fulfilled, a "304 Not Modified" response can be sent to the client. Co-authored-by: Tim Duesterhus --- diff --git a/reg-tests/cache/if-none-match.vtc b/reg-tests/cache/if-none-match.vtc new file mode 100644 index 0000000000..c5391c90f9 --- /dev/null +++ b/reg-tests/cache/if-none-match.vtc @@ -0,0 +1,84 @@ +varnishtest "If-None-Match support" + +#REQUIRE_VERSION=2.3 + +feature ignore_unknown_macro + +server s1 { + rxreq + txresp -nolen -hdr "Transfer-Encoding: chunked" \ + -hdr "ETag: \"etag\"" + chunkedlen 1 + chunkedlen 1 + chunkedlen 2 + chunkedlen 3 + chunkedlen 5 + chunkedlen 8 + chunkedlen 13 + chunkedlen 21 + chunkedlen 34 + chunkedlen 55 + chunkedlen 89 + chunkedlen 144 + chunkedlen 233 + chunkedlen 0 +} -start + +haproxy h1 -conf { + defaults + mode http + ${no-htx} option http-use-htx + timeout connect 1s + timeout client 1s + timeout server 1s + + frontend fe + bind "fd@${fe}" + default_backend test + + backend test + http-request cache-use my_cache + server www ${s1_addr}:${s1_port} + http-response cache-store my_cache + + cache my_cache + total-max-size 3 + max-age 20 + max-object-size 3072 +} -start + + +client c1 -connect ${h1_fe_sock} { + txreq + rxresp + expect resp.status == 200 + expect resp.bodylen == 609 + txreq + rxresp + expect resp.status == 200 + expect resp.bodylen == 609 + txreq \ + -hdr "if-none-match: *" + rxresp + expect resp.status == 304 + txreq \ + -hdr "if-none-match: \"etag\"" + rxresp + expect resp.status == 304 + txreq \ + -hdr "if-none-match: W/\"etag\"" + rxresp + expect resp.status == 304 +} -run + +client c2 -connect ${h1_fe_sock} { + txreq \ + -hdr "if-none-match: \"wrong_etag\"" + rxresp + expect resp.status == 200 + expect resp.bodylen == 609 + txreq \ + -hdr "if-none-match: W/\"wrong_etag\", W/\"etag\"" + rxresp + expect resp.status == 304 +} -run