varnishtest "Test the strict rewriting mode"
#REQUIRE_VERSION=2.2

# This config tests the strict-mode of HTTP rules.

feature ignore_unknown_macro

server s1 {
        rxreq
        txresp \
          -status 200
        expect req.method == "GET"
        expect req.url == "/req1"
        expect req.http.x-hdr1 == "123456789012345678901234567890123456789012345678901234567890"

        accept
        rxreq
        txresp \
          -status 200
        expect req.method == "GET"
        expect req.url == "/req3"
        expect req.http.x-hdr1 == "123456789012345678901234567890123456789012345678901234567890"
        expect req.http.x-hdr3 == <undef>
} -start

server s2 {
        rxreq
        txresp \
          -status 200 \
          -hdr "x-req: /req1" \
          -bodylen 2000
        expect req.method == "GET"
        expect req.url == "/req1"

        accept
        rxreq
        txresp \
          -status 200 \
          -hdr "x-req: /req2" \
          -bodylen 2000
        expect req.method == "GET"
        expect req.url == "/req2"

        accept
        rxreq
        txresp \
          -status 200 \
          -hdr "x-req: /req3" \
          -bodylen 2000
        expect req.method == "GET"
        expect req.url == "/req3"

        accept
        rxreq
        txresp \
          -status 200 \
          -hdr "x-req: /req4" \
          -bodylen 2000
        expect req.method == "GET"
        expect req.url == "/req4"

} -start

haproxy h1 -conf {
    global
        tune.bufsize 2048
        tune.maxrewrite 128

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

    frontend fe1
        bind "fd@${fe1}"
        http-request set-header x-hdr1 123456789012345678901234567890123456789012345678901234567890
        http-request set-header x-hdr2 123456789012345678901234567890123456789012345678901234567890 if { path /req2 }
        http-request strict-mode off if { path /req3 }
        http-request set-header x-hdr3 123456789012345678901234567890123456789012345678901234567890 if { path /req3 }
        default_backend be1

    backend be1
        http-request set-header x-hdr3 123456789012345678901234567890123456789012345678901234567890 if { path /req4 }
        server s1 ${s1_addr}:${s1_port}

    frontend fe2
        bind "fd@${fe2}"
        http-response set-header x-hdr4 123456789012345678901234567890123456789012345678901234567890 if { res.hdr(x-req) /req4 }
        default_backend be2
    backend be2
        http-response set-header x-hdr1 123456789012345678901234567890123456789012345678901234567890
        http-response set-header x-hdr2 123456789012345678901234567890123456789012345678901234567890 if { res.hdr(x-req) /req2 }
        http-response strict-mode off if { res.hdr(x-req) /req3 }
        http-response set-header x-hdr3 123456789012345678901234567890123456789012345678901234567890 if { res.hdr(-req) /req3 }
        server s2 ${s2_addr}:${s2_port}

} -start

client c1r1  -connect ${h1_fe1_sock} {
        txreq \
          -req GET \
          -url /req1 \
          -bodylen 2000
        rxresp
        expect resp.status == 200
} -run
client c1r2  -connect ${h1_fe1_sock} {
        txreq \
          -req GET \
          -url /req2 \
          -bodylen 2000
        rxresp
        expect resp.status == 500
} -run
client c1r3  -connect ${h1_fe1_sock} {
        txreq \
          -req GET \
          -url /req3 \
          -bodylen 2000
        rxresp
        expect resp.status == 200
} -run
client c1r4  -connect ${h1_fe1_sock} {
        txreq \
          -req GET \
          -url /req4 \
          -bodylen 2000
        rxresp
        expect resp.status == 500
} -run

client c2r1  -connect ${h1_fe2_sock} {
        txreq \
          -req GET \
          -url /req1
        rxresp
        expect resp.status == 200
        expect resp.http.x-hdr1 == "123456789012345678901234567890123456789012345678901234567890"
} -run
client c2r2  -connect ${h1_fe2_sock} {
        txreq \
          -req GET \
          -url /req2
        rxresp
        expect resp.status == 500
} -run
client c2r3  -connect ${h1_fe2_sock} {
        txreq \
          -req GET \
          -url /req3
        rxresp
        expect resp.status == 200
        expect resp.http.x-hdr1 == "123456789012345678901234567890123456789012345678901234567890"
        expect resp.http.x-hdr3 == <undef>
} -run
client c2r4  -connect ${h1_fe2_sock} {
        txreq \
          -req GET \
          -url /req4
        rxresp
        expect resp.status == 500
} -run
