varnishtest "Test the http-error directive" #REQUIRE_VERSION=2.2 # This config tests the http-error directive. feature ignore_unknown_macro haproxy h1 -conf { http-errors errors-1 errorfile 400 ${testdir}/errors/400-1.http errorfile 403 ${testdir}/errors/403-1.http errorfile 404 ${testdir}/errors/404-1.http errorfile 500 ${testdir}/errors/500-1.http defaults mode http timeout connect 1s timeout client 1s timeout server 1s errorfile 400 ${testdir}/errors/400.http errorfile 404 ${testdir}/errors/404.http frontend fe1 bind "fd@${fe1}" http-error status 400 http-error status 403 default-errorfiles http-error status 404 errorfiles errors-1 http-error status 500 errorfile ${testdir}/errors/500.http http-error status 200 content-type "text/plain" hdr x-path "path=%[path]" lf-string "The path is \"%[path]\"" http-request return status 200 default-errorfiles if { path /200 } http-request deny deny_status 400 if { path /400 } http-request deny deny_status 403 if { path /403 } http-request deny deny_status 404 if { path /404 } http-request deny deny_status 500 if { path /500 } } -start client c1r1 -connect ${h1_fe1_sock} { txreq -req GET -url /200 rxresp expect resp.status == 200 expect resp.http.x-path == "path=/200" expect resp.http.content-type == "text/plain" expect resp.body == "The path is \"/200\"" } -run client c1r2 -connect ${h1_fe1_sock} { txreq -req GET -url /400 rxresp expect resp.status == 400 expect resp.http.x-err-type == expect resp.http.content-length == 0 } -run client c1r3 -connect ${h1_fe1_sock} { txreq -req GET -url /403 rxresp expect resp.status == 403 expect resp.http.x-err-type == expect resp.http.content-length == 93 expect resp.http.content-type == "text/html" } -run client c1r3 -connect ${h1_fe1_sock} { txreq -req GET -url /404 rxresp expect resp.status == 404 expect resp.http.x-err-type == "errors-1" } -run client c1r4 -connect ${h1_fe1_sock} { txreq -req GET -url /500 rxresp expect resp.status == 500 expect resp.http.x-err-type == "default" } -run