varnishtest "Test declaration of HTTP rules in default sections"

feature cmd "$HAPROXY_PROGRAM -cc 'version_atleast(2.5-dev0)'"
feature ignore_unknown_macro

server s1 {
        rxreq
        expect req.http.x-frontend == "fe"
        expect req.http.x-backend == "be"
        expect req.http.x-test1-frt == "def_front"
        expect req.http.x-test1-bck == "def_back"
        txresp
}  -start

server s2 {
        rxreq
        txresp
}  -start

haproxy h1 -conf {
  defaults common
      mode http
      timeout connect "${HAPROXY_TEST_TIMEOUT-5s}"
      timeout client  "${HAPROXY_TEST_TIMEOUT-5s}"
      timeout server  "${HAPROXY_TEST_TIMEOUT-5s}"

  defaults def_front from common
      http-request set-header x-frontend "%[fe_name]"
      http-request set-var(txn.test1) "str(def_front)"
      http-response set-header x-frontend "%[fe_name]"
      http-response set-var(txn.test2) "str(def_front)"
      http-after-response set-var(txn.test3) "str(def_front)"

  defaults def_back from common
      http-request set-header x-backend "%[be_name]"
      http-request set-var(txn.test1) "str(def_back)"
      http-response set-header x-backend "%[be_name]"
      http-response set-var(txn.test2) "str(def_back)"
      http-after-response set-var(txn.test3) "str(def_back)"

  frontend fe from def_front
      bind "fd@${feh1}"

      http-request set-header x-test1-frt "%[var(txn.test1)]"
      http-response set-header x-test2-frt "%[var(txn.test2)]"
      http-after-response set-header x-test3-frt "%[var(txn.test3)]"

      default_backend be

  backend be from def_back
      http-request set-header x-test1-bck "%[var(txn.test1)]"
      http-response set-header x-test2-bck "%[var(txn.test2)]"
      http-after-response set-header x-test3-bck "%[var(txn.test3)]"

      server s1 ${s1_addr}:${s1_port}

} -start


haproxy h2 -conf {
  defaults common
      mode http
      timeout connect "${HAPROXY_TEST_TIMEOUT-5s}"
      timeout client  "${HAPROXY_TEST_TIMEOUT-5s}"
      timeout server  "${HAPROXY_TEST_TIMEOUT-5s}"

  defaults def_front from common
      http-request allow
      http-response allow
      http-after-response allow

  defaults def_back from common
      http-request allow
      http-response allow
      http-after-response allow

  frontend fe from def_front
      bind "fd@${feh2}"

      http-request deny status 403
      http-response deny status 502
      http-after-response set-status 502

      default_backend be

  backend be from def_back
      http-request deny status 403
      http-response deny status 502
      http-after-response set-status 502

      server s2 ${s2_addr}:${s2_port}

} -start

haproxy h3 -conf {
  defaults base-http
      mode http
      timeout connect "${HAPROXY_TEST_TIMEOUT-5s}"
      timeout client  "${HAPROXY_TEST_TIMEOUT-5s}"
      timeout server  "${HAPROXY_TEST_TIMEOUT-5s}"

      http-request capture hdr(Host)  len 64  # idx 0
      http-request capture hdr(X-req-1) len 32  # idx 1

  frontend fe1 from base-http
      bind "fd@${fe1h3}"
      declare capture request len 32 # idx 2

      http-request capture hdr(X-req-2) id 2
      http-request return status 200 hdr "X-Capture-1" "%[capture.req.hdr(0)]" hdr "X-Capture-2" "%[capture.req.hdr(1)]" hdr "X-Capture-3" "%[capture.req.hdr(2)]"

  frontend fe2 from base-http
      bind "fd@${fe2h3}"
      http-request capture hdr(X-req-2) id 1
      http-request return status 200 hdr "X-Capture-1" "%[capture.req.hdr(0)]" hdr "X-Capture-2" "%[capture.req.hdr(1)]"

} -start

client c1 -connect ${h1_feh1_sock} {
        txreq -req GET -url /
        rxresp
        expect resp.status == 200
        expect resp.http.x-frontend == "fe"
        expect resp.http.x-backend == "be"
        expect resp.http.x-test2-bck == "def_back"
        expect resp.http.x-test2-frt == "def_front"
        expect resp.http.x-test3-bck == "def_back"
        expect resp.http.x-test3-frt == "def_front"
} -run

client c2 -connect ${h2_feh2_sock} {
        txreq -req GET -url /
        rxresp
        expect resp.status == 200
} -run

client c3 -connect ${h3_fe1h3_sock} {
        txreq -req GET -url /  \
          -hdr "host: v-test"  \
          -hdr "x-req-1: val1" \
          -hdr "x-req-2: val2"
        rxresp
        expect resp.status == 200
        expect resp.http.x-capture-1 == "v-test"
        expect resp.http.x-capture-2 == "val1"
        expect resp.http.x-capture-3 == "val2"
} -run

client c4 -connect ${h3_fe2h3_sock} {
        txreq -req GET -url /  \
          -hdr "host: v-test"  \
          -hdr "x-req-1: val1" \
          -hdr "x-req-2: val2"
        rxresp
        expect resp.status == 200
        expect resp.http.x-capture-1 == "v-test"
        expect resp.http.x-capture-2 == "val2"
        expect resp.http.x-capture-3 == "<undef>"
} -run
