Mercurial > hg > nginx-tests
annotate js_internal_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 | 520fb74cce4c |
children |
rev | line source |
---|---|
1343
2ff483941037
Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
1 #!/usr/bin/perl |
2ff483941037
Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
2 |
2ff483941037
Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
3 # (C) Dmitry Volyntsev |
2ff483941037
Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
4 # (C) Nginx, Inc. |
2ff483941037
Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
5 |
2ff483941037
Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
6 # Tests for http njs module, internalRedirect method. |
2ff483941037
Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
7 |
2ff483941037
Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
8 ############################################################################### |
2ff483941037
Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
9 |
2ff483941037
Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
10 use warnings; |
2ff483941037
Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
11 use strict; |
2ff483941037
Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
12 |
2ff483941037
Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
13 use Test::More; |
2ff483941037
Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
14 |
2ff483941037
Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
15 BEGIN { use FindBin; chdir($FindBin::Bin); } |
2ff483941037
Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
16 |
2ff483941037
Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
17 use lib 'lib'; |
2ff483941037
Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
18 use Test::Nginx; |
2ff483941037
Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
19 |
2ff483941037
Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
20 ############################################################################### |
2ff483941037
Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
21 |
2ff483941037
Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
22 select STDERR; $| = 1; |
2ff483941037
Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
23 select STDOUT; $| = 1; |
2ff483941037
Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
24 |
1347
106d9f806288
Tests: js_internal_redirect.t cleanup.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1346
diff
changeset
|
25 my $t = Test::Nginx->new()->has(qw/http rewrite/) |
1343
2ff483941037
Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
26 ->write_file_expand('nginx.conf', <<'EOF'); |
2ff483941037
Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
27 |
2ff483941037
Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
28 %%TEST_GLOBALS%% |
2ff483941037
Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
29 |
2ff483941037
Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
30 daemon off; |
2ff483941037
Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
31 |
2ff483941037
Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
32 events { |
2ff483941037
Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
33 } |
2ff483941037
Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
34 |
2ff483941037
Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
35 http { |
2ff483941037
Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
36 %%TEST_GLOBALS_HTTP%% |
2ff483941037
Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
37 |
1751
18ac4d9e5a2a
Tests: rewriting njs tests without deprecated "js_include".
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1614
diff
changeset
|
38 js_import test.js; |
1343
2ff483941037
Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
39 |
2ff483941037
Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
40 server { |
2ff483941037
Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
41 listen 127.0.0.1:8080; |
2ff483941037
Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
42 server_name localhost; |
2ff483941037
Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
43 |
1760
3580ad4b575f
Tests: fixed js_internal_redirect.t TODO.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1757
diff
changeset
|
44 location /njs { |
3580ad4b575f
Tests: fixed js_internal_redirect.t TODO.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1757
diff
changeset
|
45 js_content test.njs; |
3580ad4b575f
Tests: fixed js_internal_redirect.t TODO.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1757
diff
changeset
|
46 } |
3580ad4b575f
Tests: fixed js_internal_redirect.t TODO.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1757
diff
changeset
|
47 |
1343
2ff483941037
Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
48 location /test { |
1751
18ac4d9e5a2a
Tests: rewriting njs tests without deprecated "js_include".
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1614
diff
changeset
|
49 js_content test.redirect; |
1343
2ff483941037
Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
50 } |
2ff483941037
Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
51 |
2ff483941037
Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
52 location /redirect { |
1345 | 53 internal; |
1343
2ff483941037
Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
54 return 200 redirect$arg_b; |
2ff483941037
Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
55 } |
2ff483941037
Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
56 |
2ff483941037
Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
57 location @named { |
2ff483941037
Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
58 return 200 named; |
2ff483941037
Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
59 } |
2ff483941037
Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
60 } |
2ff483941037
Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
61 } |
2ff483941037
Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
62 |
2ff483941037
Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
63 EOF |
2ff483941037
Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
64 |
2ff483941037
Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
65 $t->write_file('test.js', <<EOF); |
1760
3580ad4b575f
Tests: fixed js_internal_redirect.t TODO.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1757
diff
changeset
|
66 function test_njs(r) { |
3580ad4b575f
Tests: fixed js_internal_redirect.t TODO.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1757
diff
changeset
|
67 r.return(200, njs.version); |
3580ad4b575f
Tests: fixed js_internal_redirect.t TODO.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1757
diff
changeset
|
68 } |
3580ad4b575f
Tests: fixed js_internal_redirect.t TODO.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1757
diff
changeset
|
69 |
1751
18ac4d9e5a2a
Tests: rewriting njs tests without deprecated "js_include".
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1614
diff
changeset
|
70 function redirect(r) { |
1591 | 71 if (r.variables.arg_dest == 'named') { |
72 r.internalRedirect('\@named'); | |
1343
2ff483941037
Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
73 |
1757
ce8b0c9452ae
Tests: added extended js internalRedirect tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1751
diff
changeset
|
74 } else if (r.variables.arg_unsafe) { |
ce8b0c9452ae
Tests: added extended js internalRedirect tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1751
diff
changeset
|
75 r.internalRedirect('/red\0rect'); |
ce8b0c9452ae
Tests: added extended js internalRedirect tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1751
diff
changeset
|
76 |
ce8b0c9452ae
Tests: added extended js internalRedirect tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1751
diff
changeset
|
77 } else if (r.variables.arg_quoted) { |
ce8b0c9452ae
Tests: added extended js internalRedirect tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1751
diff
changeset
|
78 r.internalRedirect('/red%69rect'); |
ce8b0c9452ae
Tests: added extended js internalRedirect tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1751
diff
changeset
|
79 |
1345 | 80 } else { |
1591 | 81 if (r.variables.arg_a) { |
82 r.internalRedirect('/redirect?b=' + r.variables.arg_a); | |
1343
2ff483941037
Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
83 |
1345 | 84 } else { |
1591 | 85 r.internalRedirect('/redirect'); |
1345 | 86 } |
87 } | |
1343
2ff483941037
Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
88 } |
2ff483941037
Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
89 |
1760
3580ad4b575f
Tests: fixed js_internal_redirect.t TODO.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1757
diff
changeset
|
90 export default {njs:test_njs, redirect}; |
1751
18ac4d9e5a2a
Tests: rewriting njs tests without deprecated "js_include".
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1614
diff
changeset
|
91 |
1343
2ff483941037
Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
92 EOF |
2ff483941037
Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
93 |
1757
ce8b0c9452ae
Tests: added extended js internalRedirect tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1751
diff
changeset
|
94 $t->try_run('no njs available')->plan(5); |
1343
2ff483941037
Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
95 |
2ff483941037
Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
96 ############################################################################### |
2ff483941037
Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
97 |
2ff483941037
Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
98 like(http_get('/test'), qr/redirect/s, 'redirect'); |
2ff483941037
Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
99 like(http_get('/test?a=A'), qr/redirectA/s, 'redirect with args'); |
2ff483941037
Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
100 like(http_get('/test?dest=named'), qr/named/s, 'redirect to named location'); |
2ff483941037
Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
101 |
1757
ce8b0c9452ae
Tests: added extended js internalRedirect tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1751
diff
changeset
|
102 TODO: { |
1811
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1760
diff
changeset
|
103 local $TODO = 'not yet' unless has_version('0.7.4'); |
1757
ce8b0c9452ae
Tests: added extended js internalRedirect tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1751
diff
changeset
|
104 |
ce8b0c9452ae
Tests: added extended js internalRedirect tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1751
diff
changeset
|
105 like(http_get('/test?unsafe=1'), qr/500 Internal Server/s, |
ce8b0c9452ae
Tests: added extended js internalRedirect tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1751
diff
changeset
|
106 'unsafe redirect'); |
ce8b0c9452ae
Tests: added extended js internalRedirect tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1751
diff
changeset
|
107 like(http_get('/test?quoted=1'), qr/200 .*redirect/s, |
ce8b0c9452ae
Tests: added extended js internalRedirect tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1751
diff
changeset
|
108 'quoted redirect'); |
ce8b0c9452ae
Tests: added extended js internalRedirect tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1751
diff
changeset
|
109 } |
ce8b0c9452ae
Tests: added extended js internalRedirect tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1751
diff
changeset
|
110 |
1343
2ff483941037
Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
111 ############################################################################### |
1811
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1760
diff
changeset
|
112 |
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1760
diff
changeset
|
113 sub has_version { |
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1760
diff
changeset
|
114 my $need = shift; |
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1760
diff
changeset
|
115 |
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1760
diff
changeset
|
116 http_get('/njs') =~ /^([.0-9]+)$/m; |
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1760
diff
changeset
|
117 |
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1760
diff
changeset
|
118 my @v = split(/\./, $1); |
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1760
diff
changeset
|
119 my ($n, $v); |
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1760
diff
changeset
|
120 |
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1760
diff
changeset
|
121 for $n (split(/\./, $need)) { |
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1760
diff
changeset
|
122 $v = shift @v || 0; |
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1760
diff
changeset
|
123 return 0 if $n > $v; |
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1760
diff
changeset
|
124 return 1 if $v > $n; |
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1760
diff
changeset
|
125 } |
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1760
diff
changeset
|
126 |
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1760
diff
changeset
|
127 return 1; |
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1760
diff
changeset
|
128 } |
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1760
diff
changeset
|
129 |
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1760
diff
changeset
|
130 ############################################################################### |