Mercurial > hg > nginx-tests
view http_error_page.t @ 1990:85d88cd5091c
Tests: SSI include stub tests.
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Thu, 04 Jul 2024 17:42:55 +0300 |
parents | 784151520a9a |
children |
line wrap: on
line source
#!/usr/bin/perl # (C) Maxim Dounin # Tests for error_page directive. ############################################################################### use warnings; use strict; use Test::More; BEGIN { use FindBin; chdir($FindBin::Bin); } use lib 'lib'; use Test::Nginx; ############################################################################### select STDERR; $| = 1; select STDOUT; $| = 1; my $t = Test::Nginx->new()->has(qw/http proxy rewrite/)->plan(9) ->write_file_expand('nginx.conf', <<'EOF'); %%TEST_GLOBALS%% daemon off; events { } http { %%TEST_GLOBALS_HTTP%% server { listen 127.0.0.1:8080; server_name localhost; location /redirect200 { error_page 404 =200 http://example.com/; return 404; } location /redirect497 { # 497 implies implicit status code change error_page 497 https://example.com/; return 497; } location /error302redirect { error_page 302 http://example.com/; return 302 "first"; } location /error302return302text { error_page 302 /return302text; return 302 "first"; } location /return302text { return 302 "http://example.com/"; } location /error302return302args { error_page 302 /return302args?1; return 302 "first"; } location /error302return302varargs { error_page 302 /return302args?$arg_a; return 302 "first"; } location /return302args { return 302 "http://example.com/$args"; } location /error302rewrite { error_page 302 /rewrite; return 302 "first"; } location /rewrite { rewrite ^ http://example.com/; } location /error302directory { error_page 302 /directory; return 302 "first"; } location /directory { } location /error302auto { error_page 302 /auto; return 302 "first"; } location /auto/ { proxy_pass http://127.0.0.1:8081; } } } EOF mkdir($t->testdir() . '/directory'); $t->run(); ############################################################################### # tests for error_page status code change for redirects. problems # introduced in 0.8.53 and fixed in 0.9.5. like(http_get('/redirect200'), qr!HTTP!, 'redirect 200'); like(http_get('/redirect497'), qr!HTTP/1.1 302!, 'redirect 497'); # various tests to see if old location cleared if we happen to redirect # again in error_page 302 like(http_get('/error302redirect'), qr{HTTP/1.1 302(?!.*Location: first).*Location: http://example.com/}ms, 'error 302 redirect - old location cleared'); like(http_get('/error302return302text'), qr{HTTP/1.1 302(?!.*Location: first).*Location: http://example.com/}ms, 'error 302 return 302 text - old location cleared'); like(http_get('/error302return302args'), qr{HTTP/1.1 302(?!.*Location: first).*Location: http://example.com/1}ms, 'error 302 return 302 args - old location cleared'); like(http_get('/error302return302varargs?a=2'), qr{HTTP/1.1 302(?!.*Location: first).*Location: http://example.com/2}ms, 'error 302 return 302 var args - old location cleared'); like(http_get('/error302rewrite'), qr{HTTP/1.1 302(?!.*Location: first).*Location: http://example.com/}ms, 'error 302 rewrite - old location cleared'); like(http_get('/error302directory'), qr{HTTP/1.1 301(?!.*Location: first).*Location: http://}ms, 'error 302 directory redirect - old location cleared'); like(http_get('/error302auto'), qr{HTTP/1.1 301(?!.*Location: first).*Location: http://}ms, 'error 302 auto redirect - old location cleared'); ###############################################################################