annotate h2_absolute_redirect.t @ 1851:0351dee227a8

Tests: unbreak tests with dynamic certificates on stable. In 74cffa9d4c43, ticket based session reuse is enabled in addition to using a shared SSL session cache. This changed how a session can be resumed in a different server: - for a session ID based resumption, it is resumed in the same context - when using session tickets, a key name is also checked for matching - with a ticket callback, this is skipped in favor of callback's logic This makes 'session id context match' tests fail with session tickets on stable since ticket key names are unique in distinct SSL contexts. On the other hand, tests pass on 1.23.2+ due to automatic ticket keys rotation that installs ticket callback, and using a common shared SSL session cache.
author Sergey Kandaurov <pluknet@nginx.com>
date Tue, 28 Mar 2023 01:36:32 +0400
parents 41ca4b00c2d0
children 236d038dc04a
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;
1732
41ca4b00c2d0 Tests: added absolute_redirect and Location tests for HTTP/2.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1731
diff changeset
19 use Test::Nginx::HTTP2;
1103
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
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
23 select STDERR; $| = 1;
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
24 select STDOUT; $| = 1;
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
25
1732
41ca4b00c2d0 Tests: added absolute_redirect and Location tests for HTTP/2.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1731
diff changeset
26 my $t = Test::Nginx->new()->has(qw/http http_v2 proxy rewrite/)
1103
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
27 ->write_file_expand('nginx.conf', <<'EOF');
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
28
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
29 %%TEST_GLOBALS%%
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
30
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
31 daemon off;
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
32
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
33 events {
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
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
36 http {
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
37 %%TEST_GLOBALS_HTTP%%
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
38
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
39 absolute_redirect off;
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
40
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
41 server {
1732
41ca4b00c2d0 Tests: added absolute_redirect and Location tests for HTTP/2.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1731
diff changeset
42 listen 127.0.0.1:8080 http2;
1103
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
43 server_name on;
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
44
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
45 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
46 error_page 400 /return301;
1103
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
47
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
48 location / { }
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
49
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
50 location /auto/ {
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
51 proxy_pass http://127.0.0.1:8080;
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
52 }
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
53
1691
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
54 location "/auto sp/" {
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
55 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
56 }
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
57
1103
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
58 location /return301 {
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
59 return 301 /redirect;
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
60 }
1150
ccf134a800ae Tests: added Location tests with alias for dav and static modules.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1103
diff changeset
61
1731
c9b4c0ef5059 Tests: added server_name_in_redirect and port_in_redirect tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1729
diff changeset
62 location /return301/name {
c9b4c0ef5059 Tests: added server_name_in_redirect and port_in_redirect tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1729
diff changeset
63 return 301 /redirect;
c9b4c0ef5059 Tests: added server_name_in_redirect and port_in_redirect tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1729
diff changeset
64 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
65 }
c9b4c0ef5059 Tests: added server_name_in_redirect and port_in_redirect tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1729
diff changeset
66
c9b4c0ef5059 Tests: added server_name_in_redirect and port_in_redirect tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1729
diff changeset
67 location /return301/port {
c9b4c0ef5059 Tests: added server_name_in_redirect and port_in_redirect tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1729
diff changeset
68 return 301 /redirect;
c9b4c0ef5059 Tests: added server_name_in_redirect and port_in_redirect tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1729
diff changeset
69 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
70 }
c9b4c0ef5059 Tests: added server_name_in_redirect and port_in_redirect tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1729
diff changeset
71
1150
ccf134a800ae Tests: added Location tests with alias for dav and static modules.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1103
diff changeset
72 location /i/ {
ccf134a800ae Tests: added Location tests with alias for dav and static modules.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1103
diff changeset
73 alias %%TESTDIR%%/;
ccf134a800ae Tests: added Location tests with alias for dav and static modules.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1103
diff changeset
74 }
1103
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
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
77 server {
1732
41ca4b00c2d0 Tests: added absolute_redirect and Location tests for HTTP/2.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1731
diff changeset
78 listen 127.0.0.1:8080 http2;
1103
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
79 server_name off;
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
80
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
81 location / { }
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
82
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
83 location /auto/ {
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
84 proxy_pass http://127.0.0.1:8080;
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
85 }
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
86
1691
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
87 location "/auto sp/" {
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
88 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
89 }
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
90
1713
77a9e393ed46 Tests: added one more Location header escaping test.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1691
diff changeset
91 location '/auto "#%<>?\^`{|}/' {
77a9e393ed46 Tests: added one more Location header escaping test.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1691
diff changeset
92 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
93 }
77a9e393ed46 Tests: added one more Location header escaping test.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1691
diff changeset
94
1103
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
95 location /return301 {
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
96 return 301 /redirect;
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
97 }
1150
ccf134a800ae Tests: added Location tests with alias for dav and static modules.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1103
diff changeset
98
ccf134a800ae Tests: added Location tests with alias for dav and static modules.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1103
diff changeset
99 location /i/ {
ccf134a800ae Tests: added Location tests with alias for dav and static modules.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1103
diff changeset
100 alias %%TESTDIR%%/;
ccf134a800ae Tests: added Location tests with alias for dav and static modules.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1103
diff changeset
101 }
1103
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
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
105 EOF
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
106
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
107 mkdir($t->testdir() . '/dir');
1691
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
108 mkdir($t->testdir() . '/dir sp');
1103
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
109
1731
c9b4c0ef5059 Tests: added server_name_in_redirect and port_in_redirect tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1729
diff changeset
110 $t->run()->plan(23);
1103
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
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
114 my $p = port(8080);
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
115
1153
818fbc9d1c29 Tests: check Location EoLs in http_absolute_redirect.t.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1150
diff changeset
116 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
117 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
118 'directory alias');
1691
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
119
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
120 TODO: {
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
121 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
122
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
123 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
124 'directory escaped');
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
125 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
126 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
127 'directory escaped args');
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 }
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
130
1153
818fbc9d1c29 Tests: check Location EoLs in http_absolute_redirect.t.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1150
diff changeset
131 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
132 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
133 'auto args');
1691
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
134
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
135 TODO: {
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
136 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
137
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
138 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
139 'auto escaped');
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
140 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
141 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
142 'auto escaped args');
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 }
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
145
1153
818fbc9d1c29 Tests: check Location EoLs in http_absolute_redirect.t.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1150
diff changeset
146 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
147 'return');
1103
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
148
1731
c9b4c0ef5059 Tests: added server_name_in_redirect and port_in_redirect tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1729
diff changeset
149 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
150 '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
151 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
152 '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
153 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
154 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
155 '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
156 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
157 '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
158
1153
818fbc9d1c29 Tests: check Location EoLs in http_absolute_redirect.t.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1150
diff changeset
159 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
160 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
161
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
162 TODO: {
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
163 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
164
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
165 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
166 'off directory escaped');
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
167 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
168 'off directory escaped args');
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 }
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
171
1153
818fbc9d1c29 Tests: check Location EoLs in http_absolute_redirect.t.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1150
diff changeset
172 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
173 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
174 'off auto args');
1691
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
175
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
176 TODO: {
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
177 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
178
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
179 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
180 'auto escaped');
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
181 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
182 'auto escaped args');
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 }
0d8531f744bc Tests: added Location header escaping tests (ticket #882).
Sergey Kandaurov <pluknet@nginx.com>
parents: 1251
diff changeset
185
1153
818fbc9d1c29 Tests: check Location EoLs in http_absolute_redirect.t.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1150
diff changeset
186 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
187
1729
14b5ee6eee6c Tests: typo.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1718
diff changeset
188 # 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
189 # %00-%1F, %7F-%FF, " ", """, "<", ">", "\", "^", "`", "{", "|", "}"
77a9e393ed46 Tests: added one more Location header escaping test.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1691
diff changeset
190 # additionally, all characters in ESCAPE_URI: "?", "%", "#"
77a9e393ed46 Tests: added one more Location header escaping test.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1691
diff changeset
191
1718
672018971a62 Tests: skip Location header escaping test on win32.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1713
diff changeset
192 SKIP: {
672018971a62 Tests: skip Location header escaping test on win32.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1713
diff changeset
193 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
194
1713
77a9e393ed46 Tests: added one more Location header escaping test.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1691
diff changeset
195 TODO: {
77a9e393ed46 Tests: added one more Location header escaping test.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1691
diff changeset
196 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
197
77a9e393ed46 Tests: added one more Location header escaping test.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1691
diff changeset
198 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
199 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
200 'auto escaped strict');
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 }
77a9e393ed46 Tests: added one more Location header escaping test.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1691
diff changeset
203
1718
672018971a62 Tests: skip Location header escaping test on win32.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1713
diff changeset
204 }
672018971a62 Tests: skip Location header escaping test on win32.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1713
diff changeset
205
1103
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
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
208 sub get {
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
209 my ($host, $uri) = @_;
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
210
1732
41ca4b00c2d0 Tests: added absolute_redirect and Location tests for HTTP/2.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1731
diff changeset
211 my $s = Test::Nginx::HTTP2->new();
41ca4b00c2d0 Tests: added absolute_redirect and Location tests for HTTP/2.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1731
diff changeset
212 my $sid = $s->new_stream({ host => $host, path => $uri });
41ca4b00c2d0 Tests: added absolute_redirect and Location tests for HTTP/2.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1731
diff changeset
213 my $frames = $s->read(all => [{ sid => $sid, fin => 1 }]);
41ca4b00c2d0 Tests: added absolute_redirect and Location tests for HTTP/2.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1731
diff changeset
214
41ca4b00c2d0 Tests: added absolute_redirect and Location tests for HTTP/2.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1731
diff changeset
215 my ($frame) = grep { $_->{type} eq "HEADERS" } @$frames;
41ca4b00c2d0 Tests: added absolute_redirect and Location tests for HTTP/2.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1731
diff changeset
216 return 'Location: ' . $frame->{headers}->{'location'};
1103
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
217 }
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
218
71bba21ea3ed Tests: absolute_redirect and related tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
219 ###############################################################################