Mercurial > hg > nginx-tests
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 |
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 | 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 ############################################################################### |