varnishtest "Test the HTTP return action with errorfiles"
#REQUIRE_VERSION=2.2

# This config tests the HTTP return action when error files are used to reply to
# the client.

feature ignore_unknown_macro

haproxy h1 -conf {
    http-errors errors-2
        errorfile 400 ${testdir}/errors/400-2.http

    defaults
        mode http
        timeout connect 1s
        timeout client  1s
        timeout server  1s

    frontend fe1
        bind "fd@${fe1}"
        errorfile 400 ${testdir}/errors/400.http
        http-request return status 400 default-errorfiles if { path /def }
        http-request return status 400 errorfile ${testdir}/errors/400-1.http if { path /400-1 }
        http-request return status 400 errorfiles errors-2 if { path /400-2 }
} -start

client c1  -connect ${h1_fe1_sock} {
        txreq -req GET -url /def
        rxresp
        expect resp.status == 400
	expect resp.http.x-err-type == "default"
} -run

client c1r2  -connect ${h1_fe1_sock} {
        txreq -req GET -url /400-1
        rxresp
        expect resp.status == 400
	expect resp.http.x-err-type == "errors-1"
} -run

client c1r3  -connect ${h1_fe1_sock} {
        txreq -req GET -url /400-2
        rxresp
        expect resp.status == 400
	expect resp.http.x-err-type == "errors-2"
} -run
