summaryrefslogtreecommitdiffstats
path: root/reg-tests/http-errorfiles/http_errors.vtc
blob: 6b20be724d4adb731a74bb08a10ddaa829186af3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
varnishtest "Test the errorfiles directive"
#REQUIRE_VERSION=2.2

# This config tests the errorfiles directive.

feature ignore_unknown_macro


haproxy h1 -conf {
    http-errors errors-1
        errorfile 400  ${testdir}/errors/400-1.http
        errorfile 403  ${testdir}/errors/403-1.http
        errorfile 404  ${testdir}/errors/404-1.http
        errorfile 500  ${testdir}/errors/500-1.http

    http-errors errors-2
        errorfile 400  ${testdir}/errors/400-2.http
        errorfile 403  ${testdir}/errors/403-2.http
        errorfile 404  ${testdir}/errors/404-2.http

    http-errors errors-3
        errorfile 400  ${testdir}/errors/400-3.http
        errorfile 404  ${testdir}/errors/404-3.http

    defaults
        mode http
        timeout connect "${HAPROXY_TEST_TIMEOUT-5s}"
        timeout client  "${HAPROXY_TEST_TIMEOUT-5s}"
        timeout server  "${HAPROXY_TEST_TIMEOUT-5s}"
	errorfiles errors-2
        errorfile 400  ${testdir}/errors/400.http
        errorfile 404  ${testdir}/errors/404.http

    frontend fe1
        bind "fd@${fe1}"
        http-request deny deny_status 400 if { path /400 }
        http-request deny if { path /403 }
        http-request deny deny_status 404 if { path /404 }
        http-request deny deny_status 500 if { path /500 }

    frontend fe2
        bind "fd@${fe2}"
        errorfiles errors-1
        errorfile 500  ${testdir}/errors/500.http
        http-request deny deny_status 400 if { path /400 }
        http-request deny if { path /403 }
        http-request deny deny_status 404 if { path /404 }
        http-request deny deny_status 500 if { path /500 }

    frontend fe3
        bind "fd@${fe3}"
        errorfile 500  ${testdir}/errors/500.http
        errorfiles errors-1 500
        errorfiles errors-3 400
        http-request deny deny_status 400 if { path /400 }
        http-request deny if { path /403 }
        http-request deny deny_status 404 if { path /404 }
        http-request deny deny_status 500 if { path /500 }
} -start

client c1r1  -connect ${h1_fe1_sock} {
        txreq -req GET -url /400
        rxresp
        expect resp.status == 400
	expect resp.http.x-err-type == "default"
} -run
client c1r2  -connect ${h1_fe1_sock} {
        txreq -req GET -url /403
        rxresp
        expect resp.status == 403
	expect resp.http.x-err-type == "errors-2"
} -run
client c1r3  -connect ${h1_fe1_sock} {
        txreq -req GET -url /404
        rxresp
        expect resp.status == 404
	expect resp.http.x-err-type == "default"
} -run
client c1r4  -connect ${h1_fe1_sock} {
        txreq -req GET -url /500
        rxresp
        expect resp.status == 500
	expect resp.http.x-err-type == <undef>
} -run

client c2r1  -connect ${h1_fe2_sock} {
        txreq -req GET -url /400
        rxresp
        expect resp.status == 400
	expect resp.http.x-err-type == "errors-1"
} -run
client c2r2  -connect ${h1_fe2_sock} {
        txreq -req GET -url /403
        rxresp
        expect resp.status == 403
	expect resp.http.x-err-type == "errors-1"
} -run
client c2r3  -connect ${h1_fe2_sock} {
        txreq -req GET -url /404
        rxresp
        expect resp.status == 404
	expect resp.http.x-err-type == "errors-1"
} -run
client c2r4  -connect ${h1_fe2_sock} {
        txreq -req GET -url /500
        rxresp
        expect resp.status == 500
	expect resp.http.x-err-type == "default"
} -run

client c3r1  -connect ${h1_fe3_sock} {
        txreq -req GET -url /400
        rxresp
        expect resp.status == 400
	expect resp.http.x-err-type == "errors-3"
} -run
client c3r2  -connect ${h1_fe3_sock} {
        txreq -req GET -url /403
        rxresp
        expect resp.status == 403
	expect resp.http.x-err-type == "errors-2"
} -run
client c3r3  -connect ${h1_fe3_sock} {
        txreq -req GET -url /404
        rxresp
        expect resp.status == 404
	expect resp.http.x-err-type == "default"
} -run
client c3r4  -connect ${h1_fe3_sock} {
        txreq -req GET -url /500
        rxresp
        expect resp.status == 500
	expect resp.http.x-err-type == "errors-1"
} -run