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

# This config tests the HTTP return action.

feature ignore_unknown_macro

haproxy h1 -conf {
    global
        # WT: limit false-positives causing "HTTP header incomplete" due to
        # idle server connections being randomly used and randomly expiring
        # under us.
        tune.idle-pool.shared off

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

    frontend fe1
        bind "fd@${fe1}"
        http-request return if { path /def-1 }
        http-request return hdr "x-custom-hdr" "%[url]" if { path /def-2 }
        http-request return status 403 if { path /def-3 }
        http-request return content-type "text/plain" if { path /def-4 }

        http-request return content-type "text/plain" string "hello" hdr "x-custom-hdr" "%[url]"  if { path /string }
        http-request return content-type "text/plain" lf-string "path is %[url]" hdr "x-custom-hdr" "%[url]"  if { path /lf-string }
        http-request return content-type "text/plain" file /dev/null hdr "x-custom-hdr" "%[url]"  if { path /empty-file }
        http-request return content-type "text/plain" file ${testdir}/1k.txt hdr "x-custom-hdr" "%[url]"  if { path /file }
        http-request return content-type "text/plain" lf-file ${testdir}/lf-file.txt hdr "x-custom-hdr" "%[url]"  if { path /lf-file }
} -start

client c1  -connect ${h1_fe1_sock} {
        txreq -req GET -url /def-1
        rxresp
        expect resp.status == 200
        expect resp.http.content-length == 0
        expect resp.http.content-type == <undef>
        expect resp.http.x-custom-hdr == <undef>

        txreq -req GET -url /def-2
        rxresp
        expect resp.status == 200
        expect resp.http.content-length == 0
        expect resp.http.content-type == <undef>
        expect resp.http.x-custom-hdr == "/def-2"

        txreq -req GET -url /def-3
        rxresp
        expect resp.status == 403
        expect resp.http.content-length == 0
        expect resp.http.content-type == <undef>

        txreq -req GET -url /def-4
        rxresp
        expect resp.status == 200
        expect resp.http.content-length == 0
        expect resp.http.content-type == <undef>

        txreq -req GET -url /string
        rxresp
        expect resp.status == 200
        expect resp.http.content-length == 5
        expect resp.http.content-type == "text/plain"
        expect resp.http.x-custom-hdr == "/string"
        expect resp.body == "hello"

        txreq -req GET -url /lf-string
        rxresp
        expect resp.status == 200
        expect resp.http.content-length == 18
        expect resp.http.content-type == "text/plain"
        expect resp.http.x-custom-hdr == "/lf-string"
        expect resp.body == "path is /lf-string"

        txreq -req GET -url /empty-file
        rxresp
        expect resp.status == 200
        expect resp.http.content-length == 0
        expect resp.http.content-type == <undef>
        expect resp.http.x-custom-hdr == "/empty-file"

        txreq -req GET -url /file
        rxresp
        expect resp.status == 200
        expect resp.http.content-length == 1024
        expect resp.http.content-type == "text/plain"
        expect resp.http.x-custom-hdr == "/file"

        txreq -req GET -url /lf-file
        rxresp
        expect resp.status == 200
        expect resp.http.content-length == 17
        expect resp.http.content-type == "text/plain"
        expect resp.http.x-custom-hdr == "/lf-file"
        expect resp.body == "path is /lf-file\n"
} -run
