varnishtest "Test the HTTP return action with errorfiles"

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

feature ignore_unknown_macro

haproxy h1 -conf {
    global
    .if feature(THREAD)
        thread-groups 1
    .endif

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

    defaults
        mode http
        timeout connect "${HAPROXY_TEST_TIMEOUT-5s}"
        timeout client  "${HAPROXY_TEST_TIMEOUT-5s}"
        timeout server  "${HAPROXY_TEST_TIMEOUT-5s}"

    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
