varnishtest "http-restrict-req-hdr-names option tests"
#REQUIRE_VERSION=2.0

# This config tests "http-restrict-req-hdr-names" option

feature ignore_unknown_macro

server s1 {
    rxreq
    expect req.http.x-my_hdr  == on
    txresp
} -start

server s2 {
    rxreq
    expect req.http.x-my_hdr  == <undef>
    txresp
} -start

server s3 {
    rxreq
    expect req.http.x-my_hdr  == on
    txresp
} -start

server s4 {
    rxreq
    expect req.http.x-my_hdr  == <undef>
    txresp
} -start

server s5 {
    rxreq
    expect req.http.x-my_hdr  == on
    txresp
} -start

server s6 {
    rxreq
    expect req.http.x_my_hdr_with_lots_of_underscores  == <undef>
    txresp
} -start

server s7 {
    rxreq
    expect req.http.x_my_hdr-1  == <undef>
    expect req.http.x-my-hdr-2  == on
    txresp
} -start

server s8 {
    rxreq
    expect req.http.x-my_hdr-1  == <undef>
    expect req.http.x-my_hdr-2  == <undef>
    txresp
} -start

server s9 {
    rxreq
    expect req.http.x-my-hdr-with-trailing-underscore_  == <undef>
    txresp
} -start

haproxy h1 -conf {
    defaults
        mode http
        timeout connect 1s
        timeout client  1s
        timeout server  1s

    frontend fe1
        bind "fd@${fe1}"
        use_backend be-http1 if { path /req1 }
        use_backend be-http2 if { path /req2 }
        use_backend be-http3 if { path /req3 }
        use_backend be-fcgi1 if { path /req4 }
        use_backend be-fcgi2 if { path /req5 }
        use_backend be-fcgi3 if { path /req6 }
        use_backend be-http4 if { path /req7 }
        use_backend be-http5 if { path /req8 }
        use_backend be-http6 if { path /req9 }
        use_backend be-http7 if { path /req10 }

    backend be-http1
        server s1 ${s1_addr}:${s1_port}

    backend be-http2
        option http-restrict-req-hdr-names delete
        server s2 ${s2_addr}:${s2_port}

    backend be-http3
        option http-restrict-req-hdr-names reject

    backend be-fcgi1
        option http-restrict-req-hdr-names preserve
        server s3 ${s3_addr}:${s3_port}

    backend be-fcgi2
        option http-restrict-req-hdr-names delete
        server s4 ${s4_addr}:${s4_port}

    backend be-fcgi3
        option http-restrict-req-hdr-names reject

    backend be-http4
        option http-restrict-req-hdr-names delete
        server s6 ${s6_addr}:${s6_port}

    backend be-http5
        option http-restrict-req-hdr-names delete
        server s7 ${s7_addr}:${s7_port}

    backend be-http6
        option http-restrict-req-hdr-names delete
        server s8 ${s8_addr}:${s8_port}

    backend be-http7
        option http-restrict-req-hdr-names delete
        server s9 ${s9_addr}:${s9_port}

    defaults
        mode http
        timeout connect 1s
        timeout client  1s
        timeout server  1s
        option http-restrict-req-hdr-names preserve

    frontend fe2
        bind "fd@${fe2}"
        default_backend be-fcgi4

    backend be-fcgi4
        server s5 ${s5_addr}:${s5_port}

    fcgi-app my-fcgi-app
        docroot ${testdir}
} -start

client c1 -connect ${h1_fe1_sock} {
    txreq -req GET -url /req1 -hdr "X-my_hdr: on"
    rxresp
    expect resp.status == 200

    txreq -req GET -url /req2 -hdr "X-my_hdr: on"
    rxresp
    expect resp.status == 200

    txreq -req GET -url /req3 -hdr "X-my_hdr: on"
    rxresp
    expect resp.status == 403

    txreq -req GET -url /req4 -hdr "X-my_hdr: on"
    rxresp
    expect resp.status == 200

    txreq -req GET -url /req5 -hdr "X-my_hdr: on"
    rxresp
    expect resp.status == 200

    txreq -req GET -url /req6 -hdr "X-my_hdr: on"
    rxresp
    expect resp.status == 403

    txreq -req GET -url /req7 -hdr "X_my_hdr_with_lots_of_underscores: on"
    rxresp
    expect resp.status == 200

    txreq -req GET -url /req8 -hdr "X_my_hdr-1: on" -hdr "X-my-hdr-2: on"
    rxresp
    expect resp.status == 200

    txreq -req GET -url /req9 -hdr "X-my_hdr-1: on" -hdr "X-my_hdr-2: on"
    rxresp
    expect resp.status == 200

    txreq -req GET -url /req10 -hdr "X-my-hdr-with-trailing-underscore_: on"
    rxresp
    expect resp.status == 200
} -run

client c2 -connect ${h1_fe2_sock} {
    txreq -req GET -url /req1 -hdr "X-my_hdr: on"
    rxresp
    expect resp.status == 200
} -run
