haproxy/reg-tests/lua/lua_httpclient.vtc
William Lallemand f03b53c81d BUG/MINOR: httpclient: allow to replace the host header
This patch allows to replace the host header generated by the
httpclient instead of adding a new one, resulting in the server replying
an error 400.

The host header is now generated from the uri only if it wasn't found in
the list of headers.

Also add a new request in the VTC file to test this.

This patch must be backported in 2.5.
2021-11-24 15:44:36 +01:00

64 lines
1.5 KiB
Plaintext

varnishtest "Lua: check httpclient functionality from a lua-task"
# A request if first made with c0 with the port of s1 and s2 so the httpclient
# can generate its URI with it.
#
# This reg-test sends a payload with the httpclient to s1, s1 returns another
# payload. The 2nd lua httpclient sends back the payload from s1 to s2.
#
feature cmd "$HAPROXY_PROGRAM -cc 'version_atleast(2.5-dev7)'"
feature ignore_unknown_macro
#REQUIRE_OPTIONS=LUA
server s1 {
rxreq
txresp -bodylen 54000
expect req.body ~ ".*0 ABCDEFGHIJKLMNOPQRSTUVWXYZ.*"
expect req.body ~ ".*500 ABCDEFGHIJKLMNOPQRSTUVWXYZ.*"
expect req.body ~ ".*1000 ABCDEFGHIJKLMNOPQRSTUVWXYZ.*"
expect req.body ~ ".*1500 ABCDEFGHIJKLMNOPQRSTUVWXYZ.*"
expect req.body ~ ".*2000 ABCDEFGHIJKLMNOPQRSTUVWXYZ"
} -start
server s2 {
rxreq
txresp
expect req.bodylen == 54000
} -start
server s3 {
rxreq
txresp -bodylen 54000
expect req.method == "GET"
expect req.http.host == "foobar.haproxy.local"
} -start
haproxy h1 -conf {
global
lua-load ${testdir}/lua_httpclient.lua
frontend fe1
mode http
bind "fd@${fe1}"
default_backend b1
backend b1
mode http
http-request use-service lua.fakeserv
} -start
client c0 -connect ${h1_fe1_sock} {
txreq -url "/" -hdr "vtcport: ${s1_port}" -hdr "vtcport2: ${s2_port}" -hdr "vtcport3: ${s3_port}"
rxresp
expect resp.status == 200
} -run
server s1 -wait
server s2 -wait
server s3 -wait