annotate js_var.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 9d4c88e5c183
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1666
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
1 #!/usr/bin/perl
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
2
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
3 # (C) Dmitry Volyntsev
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
4 # (C) Nginx, Inc.
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
5
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
6 # Tests for http njs module, js_var directive.
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
7
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
8 ###############################################################################
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
9
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
10 use warnings;
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
11 use strict;
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
12
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
13 use Test::More;
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
14
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
15 BEGIN { use FindBin; chdir($FindBin::Bin); }
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
16
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
17 use lib 'lib';
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
18 use Test::Nginx;
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
19
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
20 ###############################################################################
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
21
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
22 select STDERR; $| = 1;
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
23 select STDOUT; $| = 1;
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
24
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
25 my $t = Test::Nginx->new()->has(qw/http rewrite/)
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
26 ->write_file_expand('nginx.conf', <<'EOF');
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
27
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
28 %%TEST_GLOBALS%%
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
29
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
30 daemon off;
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
31
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
32 events {
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
33 }
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
34
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
35 http {
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
36 %%TEST_GLOBALS_HTTP%%
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
37
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
38 js_import test.js;
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
39
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
40 js_var $foo;
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
41 js_var $bar a:$arg_a;
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
42
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
43 server {
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
44 listen 127.0.0.1:8080;
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
45 server_name localhost;
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
46
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
47 location /test {
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
48 js_content test.test;
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
49 }
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
50
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
51 location /sub {
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
52 return 200 DONE;
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
53 }
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
54
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
55 location /dest {
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
56 return 200 $bar;
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
57 }
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
58 }
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
59 }
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
60
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
61 EOF
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
62
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
63 $t->write_file('test.js', <<EOF);
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
64 function test(r) {
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
65 if (r.args.sub) {
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
66 r.subrequest('/sub')
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
67 .then(reply => {
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
68 r.variables.bar = reply.responseText;
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
69 r.internalRedirect('/dest');
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
70 });
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
71
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
72 return;
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
73 }
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
74
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
75 r.return(200, `V:\${r.variables[r.args.var]}`);
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
76 }
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
77
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
78 export default {test};
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
79
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
80 EOF
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
81
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
82 $t->try_run('no njs js_var')->plan(3);
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
83
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
84 ###############################################################################
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
85
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
86 like(http_get('/test?var=bar&a=qq'), qr/200 OK.*V:a:qq$/s, 'default value');
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
87 like(http_get('/test?var=foo'), qr/200 OK.*V:$/s, 'default empty value');
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
88 like(http_get('/test?sub=1&var=bar&a=qq'), qr/200 OK.*DONE$/s, 'value set');
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
89
9d4c88e5c183 Tests: added js_var directive tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
90 ###############################################################################