REGEST: Add reg tests about error files

2 reg tests are added. The first one ensures the declaration of errors in a
proxy is fonctionnal. It declares http-errors sections and declare error files
using the errorfile and the errorfiles directives, both in the default section
and the frontend sections. The second one ensures it is possible to use a custom
error file for an HTTP deny rule.
This commit is contained in:
Christopher Faulet 2020-01-20 13:49:48 +01:00
parent cedf8fbcc6
commit a5afb0bf36
15 changed files with 308 additions and 0 deletions

View File

@ -0,0 +1,9 @@
HTTP/1.1 400 Bad request
Cache-Control: no-cache
Connection: close
Content-Type: text/html
x-err-type: errors-1
<html><body><h1>400 Bad request</h1>
Your browser sent an invalid request.
</body></html>

View File

@ -0,0 +1,9 @@
HTTP/1.1 400 Bad request
Cache-Control: no-cache
Connection: close
Content-Type: text/html
x-err-type: errors-2
<html><body><h1>400 Bad request</h1>
Your browser sent an invalid request.
</body></html>

View File

@ -0,0 +1,9 @@
HTTP/1.1 400 Bad request
Cache-Control: no-cache
Connection: close
Content-Type: text/html
x-err-type: errors-3
<html><body><h1>400 Bad request</h1>
Your browser sent an invalid request.
</body></html>

View File

@ -0,0 +1,9 @@
HTTP/1.1 400 Bad request
Cache-Control: no-cache
Connection: close
Content-Type: text/html
x-err-type: default
<html><body><h1>400 Bad request</h1>
Your browser sent an invalid request.
</body></html>

View File

@ -0,0 +1,9 @@
HTTP/1.0 403 Forbidden
Cache-Control: no-cache
Connection: close
Content-Type: text/html
x-err-type: errors-1
<html><body><h1>403 Forbidden</h1>
Request forbidden by administrative rules.
</body></html>

View File

@ -0,0 +1,9 @@
HTTP/1.0 403 Forbidden
Cache-Control: no-cache
Connection: close
Content-Type: text/html
x-err-type: errors-2
<html><body><h1>403 Forbidden</h1>
Request forbidden by administrative rules.
</body></html>

View File

@ -0,0 +1,9 @@
HTTP/1.0 403 Forbidden
Cache-Control: no-cache
Connection: close
Content-Type: text/html
x-err-type: default
<html><body><h1>403 Forbidden</h1>
Request forbidden by administrative rules.
</body></html>

View File

@ -0,0 +1,9 @@
HTTP/1.1 404 Not Found
Cache-Control: no-cache
Connection: close
Content-Type: text/html
x-err-type: errors-1
<html><body><h1>404 Not Found</h1>
The resource could not be found.
</body></html>

View File

@ -0,0 +1,9 @@
HTTP/1.1 404 Not Found
Cache-Control: no-cache
Connection: close
Content-Type: text/html
x-err-type: errors-2
<html><body><h1>404 Not Found</h1>
The resource could not be found.
</body></html>

View File

@ -0,0 +1,9 @@
HTTP/1.1 404 Not Found
Cache-Control: no-cache
Connection: close
Content-Type: text/html
x-err-type: errors-3
<html><body><h1>404 Not Found</h1>
The resource could not be found.
</body></html>

View File

@ -0,0 +1,9 @@
HTTP/1.1 404 Not Found
Cache-Control: no-cache
Connection: close
Content-Type: text/html
x-err-type: default
<html><body><h1>404 Not Found</h1>
The resource could not be found.
</body></html>

View File

@ -0,0 +1,9 @@
HTTP/1.0 500 Internal Server Error
Cache-Control: no-cache
Connection: close
Content-Type: text/html
x-err-type: errors-1
<html><body><h1>500 Internal Server Error</h1>
An internal server error occured.
</body></html>

View File

@ -0,0 +1,9 @@
HTTP/1.0 500 Internal Server Error
Cache-Control: no-cache
Connection: close
Content-Type: text/html
x-err-type: default
<html><body><h1>500 Internal Server Error</h1>
An internal server error occured.
</body></html>

View File

@ -0,0 +1,57 @@
varnishtest "Test the custom erorrs for HTTP deny rules"
#REQUIRE_VERSION=2.2
# This config tests the custom errors for HTTP deny rules.
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 /dev/null
defaults
mode http
timeout connect 1s
timeout client 1s
timeout server 1s
frontend fe1
bind "fd@${fe1}"
http-request deny deny_status 400 if { path /400 }
http-request deny deny_status 403 errorfile ${testdir}/errors/403.http if { path /403 }
http-request deny deny_status 404 errorfiles errors-1 if { path /404 }
http-request deny deny_status 500 errorfile /dev/null if { path /500-1 }
http-request deny deny_status 500 errorfiles errors-1 if { path /500-2 }
} -start
client c1r1 -connect ${h1_fe1_sock} {
txreq -req GET -url /400
rxresp
expect resp.status == 400
expect resp.http.x-err-type == <undef>
} -run
client c1r2 -connect ${h1_fe1_sock} {
txreq -req GET -url /403
rxresp
expect resp.status == 403
expect resp.http.x-err-type == "default"
} -run
client c1r3 -connect ${h1_fe1_sock} {
txreq -req GET -url /404
rxresp
expect resp.status == 404
expect resp.http.x-err-type == "errors-1"
} -run
client c1r4 -connect ${h1_fe1_sock} {
txreq -req GET -url /500-1
expect_close
} -run
client c1r5 -connect ${h1_fe1_sock} {
txreq -req GET -url /500-2
expect_close
} -run

View File

@ -0,0 +1,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 1s
timeout client 1s
timeout server 1s
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 deny_status 403 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 deny_status 403 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 deny_status 403 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