annotate http_absolute_redirect.t @ 1836:74cffa9d4c43

Tests: enabled session reuse via TLS session tickets. This fixes tests with TLSv1.3 enabled when using BoringSSL, since for TLSv1.3 it only supports session reuse via TLS session tickets, and not server-side session cache.
author Maxim Dounin <mdounin@mdounin.ru>
date Thu, 23 Mar 2023 19:50:02 +0300
parents c9b4c0ef5059
children 2a0a6035a1af
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 TODO: {
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
120 local $TODO = 'not yet' unless $t->has_version('1.21.0');
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
121
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
122 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
123 'directory escaped');
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
124 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
125 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
126 'directory escaped args');
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
127
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
1153
818fbc9d1c29 Tests: check Location EoLs in http_absolute_redirect.t.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1150
diff changeset
130 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
131 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
132 'auto args');
1691
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
133
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
134 TODO: {
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
135 local $TODO = 'not yet' unless $t->has_version('1.21.0');
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
136
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
137 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
138 'auto escaped');
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
139 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
140 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
141 'auto escaped args');
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
142
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
143 }
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
144
1153
818fbc9d1c29 Tests: check Location EoLs in http_absolute_redirect.t.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1150
diff changeset
145 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
146 'return');
1103
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
147
1731
c9b4c0ef5059 Tests: added server_name_in_redirect and port_in_redirect tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1729
diff changeset
148 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
149 '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
150 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
151 '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
152 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
153 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
154 '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
155 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
156 '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
157
1153
818fbc9d1c29 Tests: check Location EoLs in http_absolute_redirect.t.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1150
diff changeset
158 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
159 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
160
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
161 TODO: {
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
162 local $TODO = 'not yet' unless $t->has_version('1.21.0');
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
163
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
164 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
165 'off directory escaped');
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
166 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
167 'off directory escaped args');
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
168
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
169 }
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
170
1153
818fbc9d1c29 Tests: check Location EoLs in http_absolute_redirect.t.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1150
diff changeset
171 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
172 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
173 'off auto args');
1691
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
174
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
175 TODO: {
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
176 local $TODO = 'not yet' unless $t->has_version('1.21.0');
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
177
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
178 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
179 'auto escaped');
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
180 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
181 'auto escaped args');
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
182
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
183 }
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
184
1153
818fbc9d1c29 Tests: check Location EoLs in http_absolute_redirect.t.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1150
diff changeset
185 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
186
1729
14b5ee6eee6c Tests: typo.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1718
diff changeset
187 # 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
188 # %00-%1F, %7F-%FF, " ", """, "<", ">", "\", "^", "`", "{", "|", "}"
77a9e393ed46 Tests: added one more Location header escaping test.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1691
diff changeset
189 # additionally, all characters in ESCAPE_URI: "?", "%", "#"
77a9e393ed46 Tests: added one more Location header escaping test.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1691
diff changeset
190
1718
672018971a62 Tests: skip Location header escaping test on win32.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1713
diff changeset
191 SKIP: {
672018971a62 Tests: skip Location header escaping test on win32.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1713
diff changeset
192 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
193
1713
77a9e393ed46 Tests: added one more Location header escaping test.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1691
diff changeset
194 TODO: {
77a9e393ed46 Tests: added one more Location header escaping test.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1691
diff changeset
195 local $TODO = 'not yet' unless $t->has_version('1.21.1');
77a9e393ed46 Tests: added one more Location header escaping test.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1691
diff changeset
196
77a9e393ed46 Tests: added one more Location header escaping test.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1691
diff changeset
197 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
198 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
199 'auto escaped strict');
77a9e393ed46 Tests: added one more Location header escaping test.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1691
diff changeset
200
77a9e393ed46 Tests: added one more Location header escaping test.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1691
diff changeset
201 }
77a9e393ed46 Tests: added one more Location header escaping test.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1691
diff changeset
202
1718
672018971a62 Tests: skip Location header escaping test on win32.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1713
diff changeset
203 }
672018971a62 Tests: skip Location header escaping test on win32.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1713
diff changeset
204
1103
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
205 ###############################################################################
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
206
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
207 sub get {
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
208 my ($host, $uri) = @_;
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
209 http(<<EOF);
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
210 GET $uri HTTP/1.0
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
211 Host: $host
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
212
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
213 EOF
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
214 }
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
215
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
216 ###############################################################################