annotate http_absolute_redirect.t @ 1982:fb25cbe9d4ec default tip

Tests: explicit Valgrind support. Valgrind logging is done to a separate file, as it is not able to follow stderr redirection within nginx or append to a file without corrupting it. Further, Valgrind logging seems to interfere with error suppression in tests, and catches various startup errors and warnings, so the log is additionally filtered. Since startup under Valgrind can be really slow, timeout in waitforfile() was changed to 10 seconds. Prodded by Robert Mueller.
author Maxim Dounin <mdounin@mdounin.ru>
date Fri, 31 May 2024 06:23:00 +0300
parents 2a0a6035a1af
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1103
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
1 #!/usr/bin/perl
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
2
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
3 # (C) Sergey Kandaurov
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
4 # (C) Nginx, Inc.
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
5
1691
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
6 # Tests for absolute_redirect directive and Location escaping.
1103
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
7
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
8 ###############################################################################
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
9
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
10 use warnings;
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
11 use strict;
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
12
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
13 use Test::More;
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
14
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
15 BEGIN { use FindBin; chdir($FindBin::Bin); }
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
16
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
17 use lib 'lib';
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
18 use Test::Nginx;
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
19
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
20 ###############################################################################
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
21
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
22 select STDERR; $| = 1;
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
23 select STDOUT; $| = 1;
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
24
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
25 my $t = Test::Nginx->new()->has(qw/http proxy rewrite/)
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
26 ->write_file_expand('nginx.conf', <<'EOF');
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
27
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
28 %%TEST_GLOBALS%%
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
29
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
30 daemon off;
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
31
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
32 events {
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
33 }
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
34
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
35 http {
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
36 %%TEST_GLOBALS_HTTP%%
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
37
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
38 absolute_redirect off;
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
39
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
40 server {
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
41 listen 127.0.0.1:8080;
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
42 server_name on;
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
43
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
44 absolute_redirect on;
1731
c9b4c0ef5059 Tests: added server_name_in_redirect and port_in_redirect tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1729
diff changeset
45 error_page 400 /return301;
1103
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
46
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
47 location / { }
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
48
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
49 location /auto/ {
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
50 proxy_pass http://127.0.0.1:8080;
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
51 }
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
52
1691
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
53 location "/auto sp/" {
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
54 proxy_pass http://127.0.0.1:8080;
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
55 }
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
56
1103
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
57 location /return301 {
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
58 return 301 /redirect;
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
59 }
1150
ccf134a800ae Tests: added Location tests with alias for dav and static modules.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1103
diff changeset
60
1731
c9b4c0ef5059 Tests: added server_name_in_redirect and port_in_redirect tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1729
diff changeset
61 location /return301/name {
c9b4c0ef5059 Tests: added server_name_in_redirect and port_in_redirect tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1729
diff changeset
62 return 301 /redirect;
c9b4c0ef5059 Tests: added server_name_in_redirect and port_in_redirect tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1729
diff changeset
63 server_name_in_redirect on;
c9b4c0ef5059 Tests: added server_name_in_redirect and port_in_redirect tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1729
diff changeset
64 }
c9b4c0ef5059 Tests: added server_name_in_redirect and port_in_redirect tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1729
diff changeset
65
c9b4c0ef5059 Tests: added server_name_in_redirect and port_in_redirect tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1729
diff changeset
66 location /return301/port {
c9b4c0ef5059 Tests: added server_name_in_redirect and port_in_redirect tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1729
diff changeset
67 return 301 /redirect;
c9b4c0ef5059 Tests: added server_name_in_redirect and port_in_redirect tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1729
diff changeset
68 port_in_redirect off;
c9b4c0ef5059 Tests: added server_name_in_redirect and port_in_redirect tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1729
diff changeset
69 }
c9b4c0ef5059 Tests: added server_name_in_redirect and port_in_redirect tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1729
diff changeset
70
1150
ccf134a800ae Tests: added Location tests with alias for dav and static modules.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1103
diff changeset
71 location /i/ {
ccf134a800ae Tests: added Location tests with alias for dav and static modules.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1103
diff changeset
72 alias %%TESTDIR%%/;
ccf134a800ae Tests: added Location tests with alias for dav and static modules.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1103
diff changeset
73 }
1103
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
74 }
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
75
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
76 server {
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
77 listen 127.0.0.1:8080;
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
78 server_name off;
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
79
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
80 location / { }
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
81
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
82 location /auto/ {
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
83 proxy_pass http://127.0.0.1:8080;
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
84 }
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
85
1691
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
86 location "/auto sp/" {
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
87 proxy_pass http://127.0.0.1:8080;
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
88 }
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
89
1713
77a9e393ed46 Tests: added one more Location header escaping test.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1691
diff changeset
90 location '/auto "#%<>?\^`{|}/' {
77a9e393ed46 Tests: added one more Location header escaping test.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1691
diff changeset
91 proxy_pass http://127.0.0.1:8080;
77a9e393ed46 Tests: added one more Location header escaping test.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1691
diff changeset
92 }
77a9e393ed46 Tests: added one more Location header escaping test.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1691
diff changeset
93
1103
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
94 location /return301 {
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
95 return 301 /redirect;
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
96 }
1150
ccf134a800ae Tests: added Location tests with alias for dav and static modules.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1103
diff changeset
97
ccf134a800ae Tests: added Location tests with alias for dav and static modules.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1103
diff changeset
98 location /i/ {
ccf134a800ae Tests: added Location tests with alias for dav and static modules.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1103
diff changeset
99 alias %%TESTDIR%%/;
ccf134a800ae Tests: added Location tests with alias for dav and static modules.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1103
diff changeset
100 }
1103
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
101 }
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
102 }
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
103
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
104 EOF
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
105
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
106 mkdir($t->testdir() . '/dir');
1691
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
107 mkdir($t->testdir() . '/dir sp');
1103
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
108
1731
c9b4c0ef5059 Tests: added server_name_in_redirect and port_in_redirect tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1729
diff changeset
109 $t->run()->plan(23);
1103
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
110
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
111 ###############################################################################
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
112
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
113 my $p = port(8080);
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
114
1153
818fbc9d1c29 Tests: check Location EoLs in http_absolute_redirect.t.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1150
diff changeset
115 like(get('on', '/dir'), qr!Location: http://on:$p/dir/\x0d?$!m, 'directory');
818fbc9d1c29 Tests: check Location EoLs in http_absolute_redirect.t.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1150
diff changeset
116 like(get('on', '/i/dir'), qr!Location: http://on:$p/i/dir/\x0d?$!m,
818fbc9d1c29 Tests: check Location EoLs in http_absolute_redirect.t.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1150
diff changeset
117 'directory alias');
1691
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
118
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
119 like(get('on', '/dir%20sp'), qr!Location: http://on:$p/dir%20sp/\x0d?$!m,
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
120 'directory escaped');
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
121 like(get('on', '/dir%20sp?a=b'),
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
122 qr!Location: http://on:$p/dir%20sp/\?a=b\x0d?$!m,
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
123 'directory escaped args');
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
124
1153
818fbc9d1c29 Tests: check Location EoLs in http_absolute_redirect.t.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1150
diff changeset
125 like(get('on', '/auto'), qr!Location: http://on:$p/auto/\x0d?$!m, 'auto');
1154
2c120aea4362 Tests: added auto redirect tests with args.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1153
diff changeset
126 like(get('on', '/auto?a=b'), qr!Location: http://on:$p/auto/\?a=b\x0d?$!m,
2c120aea4362 Tests: added auto redirect tests with args.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1153
diff changeset
127 'auto args');
1691
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
128
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
129 like(get('on', '/auto%20sp'), qr!Location: http://on:$p/auto%20sp/\x0d?$!m,
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
130 'auto escaped');
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
131 like(get('on', '/auto%20sp?a=b'),
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
132 qr!Location: http://on:$p/auto%20sp/\?a=b\x0d?$!m,
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
133 'auto escaped args');
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
134
1153
818fbc9d1c29 Tests: check Location EoLs in http_absolute_redirect.t.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1150
diff changeset
135 like(get('on', '/return301'), qr!Location: http://on:$p/redirect\x0d?$!m,
818fbc9d1c29 Tests: check Location EoLs in http_absolute_redirect.t.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1150
diff changeset
136 'return');
1103
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
137
1731
c9b4c0ef5059 Tests: added server_name_in_redirect and port_in_redirect tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1729
diff changeset
138 like(get('host', '/return301/name'), qr!Location: http://on:$p/redirect\x0d?!m,
c9b4c0ef5059 Tests: added server_name_in_redirect and port_in_redirect tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1729
diff changeset
139 'server_name_in_redirect on');
c9b4c0ef5059 Tests: added server_name_in_redirect and port_in_redirect tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1729
diff changeset
140 like(get('host', '/return301'), qr!Location: http://host:$p/redirect\x0d?$!m,
c9b4c0ef5059 Tests: added server_name_in_redirect and port_in_redirect tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1729
diff changeset
141 'server_name_in_redirect off - using host');
c9b4c0ef5059 Tests: added server_name_in_redirect and port_in_redirect tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1729
diff changeset
142 my $ph = IO::Socket::INET->new("127.0.0.1:$p")->peerhost();
c9b4c0ef5059 Tests: added server_name_in_redirect and port_in_redirect tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1729
diff changeset
143 like(get('.', '/return301'), qr!Location: http://$ph:$p/redirect\x0d?$!m,
c9b4c0ef5059 Tests: added server_name_in_redirect and port_in_redirect tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1729
diff changeset
144 'invalid host - using local sockaddr');
c9b4c0ef5059 Tests: added server_name_in_redirect and port_in_redirect tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1729
diff changeset
145 like(get('host', '/return301/port'), qr!Location: http://host/redirect\x0d?$!m,
c9b4c0ef5059 Tests: added server_name_in_redirect and port_in_redirect tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1729
diff changeset
146 'port_in_redirect off');
c9b4c0ef5059 Tests: added server_name_in_redirect and port_in_redirect tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1729
diff changeset
147
1153
818fbc9d1c29 Tests: check Location EoLs in http_absolute_redirect.t.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1150
diff changeset
148 like(get('off', '/dir'), qr!Location: /dir/\x0d?$!m, 'off directory');
818fbc9d1c29 Tests: check Location EoLs in http_absolute_redirect.t.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1150
diff changeset
149 like(get('off', '/i/dir'), qr!Location: /i/dir/\x0d?$!m, 'off directory alias');
1691
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
150
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
151 like(get('off', '/dir%20sp'), qr!Location: /dir%20sp/\x0d?$!m,
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
152 'off directory escaped');
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
153 like(get('off', '/dir%20sp?a=b'), qr!Location: /dir%20sp/\?a=b\x0d?$!m,
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
154 'off directory escaped args');
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
155
1153
818fbc9d1c29 Tests: check Location EoLs in http_absolute_redirect.t.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1150
diff changeset
156 like(get('off', '/auto'), qr!Location: /auto/\x0d?$!m, 'off auto');
1154
2c120aea4362 Tests: added auto redirect tests with args.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1153
diff changeset
157 like(get('off', '/auto?a=b'), qr!Location: /auto/\?a=b\x0d?$!m,
2c120aea4362 Tests: added auto redirect tests with args.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1153
diff changeset
158 'off auto args');
1691
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
159
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
160 like(get('off', '/auto%20sp'), qr!Location: /auto%20sp/\x0d?$!m,
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
161 'auto escaped');
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
162 like(get('off', '/auto%20sp?a=b'), qr!Location: /auto%20sp/\?a=b\x0d?$!m,
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
163 'auto escaped args');
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
164
1153
818fbc9d1c29 Tests: check Location EoLs in http_absolute_redirect.t.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1150
diff changeset
165 like(get('off', '/return301'), qr!Location: /redirect\x0d?$!m, 'off return');
1103
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
166
1729
14b5ee6eee6c Tests: typo.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1718
diff changeset
167 # per RFC 3986, these characters are not allowed unescaped:
1713
77a9e393ed46 Tests: added one more Location header escaping test.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1691
diff changeset
168 # %00-%1F, %7F-%FF, " ", """, "<", ">", "\", "^", "`", "{", "|", "}"
77a9e393ed46 Tests: added one more Location header escaping test.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1691
diff changeset
169 # additionally, all characters in ESCAPE_URI: "?", "%", "#"
77a9e393ed46 Tests: added one more Location header escaping test.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1691
diff changeset
170
1718
672018971a62 Tests: skip Location header escaping test on win32.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1713
diff changeset
171 SKIP: {
672018971a62 Tests: skip Location header escaping test on win32.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1713
diff changeset
172 skip 'win32', 1 if $^O eq 'MSWin32';
672018971a62 Tests: skip Location header escaping test on win32.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1713
diff changeset
173
1713
77a9e393ed46 Tests: added one more Location header escaping test.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1691
diff changeset
174 like(get('off', '/auto%20%22%23%25%3C%3E%3F%5C%5E%60%7B%7C%7D'),
77a9e393ed46 Tests: added one more Location header escaping test.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1691
diff changeset
175 qr!Location: /auto%20%22%23%25%3C%3E%3F%5C%5E%60%7B%7C%7D/\x0d?$!m,
77a9e393ed46 Tests: added one more Location header escaping test.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1691
diff changeset
176 'auto escaped strict');
77a9e393ed46 Tests: added one more Location header escaping test.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1691
diff changeset
177
77a9e393ed46 Tests: added one more Location header escaping test.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1691
diff changeset
178 }
77a9e393ed46 Tests: added one more Location header escaping test.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1691
diff changeset
179
1103
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
180 ###############################################################################
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
181
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
182 sub get {
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
183 my ($host, $uri) = @_;
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
184 http(<<EOF);
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
185 GET $uri HTTP/1.0
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
186 Host: $host
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
187
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
188 EOF
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
189 }
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
190
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
191 ###############################################################################