annotate js_internal_redirect.t @ 1728:6d5ecf445e57

Tests: added HTTP/2 test with big request body. Notably, it is useful with body buffering in filters, in which case the stream window is flow controlled based on the preread buffer.
author Sergey Kandaurov <pluknet@nginx.com>
date Sat, 04 Sep 2021 14:50:02 +0300
parents bc0990ea2e5b
children 18ac4d9e5a2a
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
2ff483941037 Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
38 js_include test.js;
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
2ff483941037 Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
44 location /test {
2ff483941037 Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
45 js_content test_redirect;
2ff483941037 Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
46 }
2ff483941037 Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
47
2ff483941037 Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
48 location /redirect {
1345
9fbe84b7ddc6 Tests: style.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1343
diff changeset
49 internal;
1343
2ff483941037 Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
50 return 200 redirect$arg_b;
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
2ff483941037 Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
53 location @named {
2ff483941037 Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
54 return 200 named;
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 }
2ff483941037 Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
58
2ff483941037 Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
59 EOF
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 $t->write_file('test.js', <<EOF);
1591
a7902e5adeab Tests: style.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1520
diff changeset
62 function test_redirect(r) {
a7902e5adeab Tests: style.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1520
diff changeset
63 if (r.variables.arg_dest == 'named') {
a7902e5adeab Tests: style.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1520
diff changeset
64 r.internalRedirect('\@named');
1343
2ff483941037 Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
65
1345
9fbe84b7ddc6 Tests: style.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1343
diff changeset
66 } else {
1591
a7902e5adeab Tests: style.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1520
diff changeset
67 if (r.variables.arg_a) {
a7902e5adeab Tests: style.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1520
diff changeset
68 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
69
1345
9fbe84b7ddc6 Tests: style.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1343
diff changeset
70 } else {
1591
a7902e5adeab Tests: style.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1520
diff changeset
71 r.internalRedirect('/redirect');
1345
9fbe84b7ddc6 Tests: style.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1343
diff changeset
72 }
9fbe84b7ddc6 Tests: style.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1343
diff changeset
73 }
1343
2ff483941037 Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
74 }
2ff483941037 Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
75
2ff483941037 Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
76 EOF
2ff483941037 Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
77
1346
4d5d1e59f45e Tests: TODO js_internal_redirect.t on njs < 0.2.2.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1345
diff changeset
78 $t->try_run('no njs available')->plan(3);
1343
2ff483941037 Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
79
2ff483941037 Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
80 ###############################################################################
2ff483941037 Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
81
2ff483941037 Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
82 like(http_get('/test'), qr/redirect/s, 'redirect');
2ff483941037 Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
83 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
84 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
85
2ff483941037 Tests: added njs http internalRedirect() method tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
86 ###############################################################################