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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
9fbe84b7ddc6 Tests: style.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1343
diff changeset
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
a7902e5adeab Tests: style.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1520
diff changeset
71 if (r.variables.arg_dest == 'named') {
a7902e5adeab Tests: style.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1520
diff changeset
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
9fbe84b7ddc6 Tests: style.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1343
diff changeset
80 } else {
1591
a7902e5adeab Tests: style.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1520
diff changeset
81 if (r.variables.arg_a) {
a7902e5adeab Tests: style.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1520
diff changeset
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
9fbe84b7ddc6 Tests: style.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1343
diff changeset
84 } else {
1591
a7902e5adeab Tests: style.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1520
diff changeset
85 r.internalRedirect('/redirect');
1345
9fbe84b7ddc6 Tests: style.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1343
diff changeset
86 }
9fbe84b7ddc6 Tests: style.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1343
diff changeset
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 ###############################################################################