blob: 3303760d45725b4ff72d706de645a2cbe48a80db [file] [log] [blame]
Tim Duesterhusd371e992021-04-15 21:45:58 +02001varnishtest "normalize-uri tests"
2#REQUIRE_VERSION=2.4
3
4# This reg-test tests the http-request normalize-uri action.
5
6feature ignore_unknown_macro
7
8server s1 {
9 rxreq
10 txresp
11} -repeat 10 -start
12
13haproxy h1 -conf {
14 defaults
15 mode http
16 timeout connect 1s
17 timeout client 1s
18 timeout server 1s
19
20 frontend fe_merge_slashes
21 bind "fd@${fe_merge_slashes}"
22
23 http-request set-var(txn.before) url
24 http-request normalize-uri merge-slashes
25 http-request set-var(txn.after) url
26
27 http-response add-header before %[var(txn.before)]
28 http-response add-header after %[var(txn.after)]
29
30 default_backend be
31
32 backend be
33 server s1 ${s1_addr}:${s1_port}
34
35} -start
36
37client c1 -connect ${h1_fe_merge_slashes_sock} {
38 txreq -url "/foo/bar"
39 rxresp
40 expect resp.http.before == "/foo/bar"
41 expect resp.http.after == "/foo/bar"
42
43 txreq -url "/foo//bar"
44 rxresp
45 expect resp.http.before == "/foo//bar"
46 expect resp.http.after == "/foo/bar"
47
48 txreq -url "/foo///bar"
49 rxresp
50 expect resp.http.before == "/foo///bar"
51 expect resp.http.after == "/foo/bar"
52
53 txreq -url "///foo///bar"
54 rxresp
55 expect resp.http.before == "///foo///bar"
56 expect resp.http.after == "/foo/bar"
57
58 txreq -url "///foo/bar"
59 rxresp
60 expect resp.http.before == "///foo/bar"
61 expect resp.http.after == "/foo/bar"
62
63 txreq -url "///foo///bar///"
64 rxresp
65 expect resp.http.before == "///foo///bar///"
66 expect resp.http.after == "/foo/bar/"
67
68 txreq -url "///"
69 rxresp
70 expect resp.http.before == "///"
71 expect resp.http.after == "/"
72
73 txreq -url "/foo?bar=///"
74 rxresp
75 expect resp.http.before == "/foo?bar=///"
76 expect resp.http.after == "/foo?bar=///"
77
78 txreq -url "//foo?bar=///"
79 rxresp
80 expect resp.http.before == "//foo?bar=///"
81 expect resp.http.after == "/foo?bar=///"
82
83 txreq -req OPTIONS -url "*"
84 rxresp
85 expect resp.http.before == "*"
86 expect resp.http.after == "*"
87} -run