Mercurial > hg > nginx-tests
annotate js_args.t @ 1888:cc13f7b098db
Tests: avoid premature stream reset in h3_limit_req.t.
STREAM and RESET_STREAM frames could be batched, which prevents the stream
from being processed and changes the status code. The fix is to wait for
the stream acknowledgment. Here we just look at the largest acknowledged,
this should be enough for simple cases.
author | Sergey Kandaurov <pluknet@nginx.com> |
---|---|
date | Tue, 04 Apr 2023 00:33:54 +0400 |
parents | 520fb74cce4c |
children |
rev | line source |
---|---|
1778
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
1 #!/usr/bin/perl |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
2 |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
3 # (C) Dmitry Volyntsev |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
4 # (C) Nginx, Inc. |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
5 |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
6 # Tests for http njs module, arguments tests. |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
7 |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
8 ############################################################################### |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
9 |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
10 use warnings; |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
11 use strict; |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
12 |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
13 use Test::More; |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
14 |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
15 BEGIN { use FindBin; chdir($FindBin::Bin); } |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
16 |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
17 use lib 'lib'; |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
18 use Test::Nginx; |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
19 |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
20 ############################################################################### |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
21 |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
22 select STDERR; $| = 1; |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
23 select STDOUT; $| = 1; |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
24 |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
25 eval { require JSON::PP; }; |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
26 plan(skip_all => "JSON::PP not installed") if $@; |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
27 |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
28 my $t = Test::Nginx->new()->has(qw/http/) |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
29 ->write_file_expand('nginx.conf', <<'EOF'); |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
30 |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
31 %%TEST_GLOBALS%% |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
32 |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
33 daemon off; |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
34 |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
35 events { |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
36 } |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
37 |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
38 http { |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
39 %%TEST_GLOBALS_HTTP%% |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
40 |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
41 js_import test.js; |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
42 |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
43 js_set $test_iter test.iter; |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
44 |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
45 server { |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
46 listen 127.0.0.1:8080; |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
47 server_name localhost; |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
48 |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
49 location /njs { |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
50 js_content test.njs; |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
51 } |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
52 |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
53 location /iter { |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
54 return 200 $test_iter; |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
55 } |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
56 |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
57 location /keys { |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
58 js_content test.keys; |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
59 } |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
60 |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
61 location /object { |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
62 js_content test.object; |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
63 } |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
64 } |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
65 } |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
66 |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
67 EOF |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
68 |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
69 $t->write_file('test.js', <<EOF); |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
70 function test_njs(r) { |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
71 r.return(200, njs.version); |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
72 } |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
73 |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
74 function iter(r) { |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
75 var s = '', a; |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
76 for (a in r.args) { |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
77 if (a.substr(0, 3) == 'foo') { |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
78 s += r.args[a]; |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
79 } |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
80 } |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
81 |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
82 return s; |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
83 } |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
84 |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
85 function keys(r) { |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
86 r.return(200, Object.keys(r.args).sort()); |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
87 } |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
88 |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
89 function object(r) { |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
90 r.return(200, JSON.stringify(r.args)); |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
91 } |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
92 |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
93 export default {njs: test_njs, iter, keys, object}; |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
94 |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
95 EOF |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
96 |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
97 $t->try_run('no njs')->plan(15); |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
98 |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
99 ############################################################################### |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
100 |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
101 sub recode { |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
102 my $json; |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
103 eval { $json = JSON::PP::decode_json(shift) }; |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
104 |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
105 if ($@) { |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
106 return "<failed to parse JSON>"; |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
107 } |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
108 |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
109 JSON::PP->new()->canonical()->encode($json); |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
110 } |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
111 |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
112 sub get_json { |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
113 http_get(shift) =~ /\x0d\x0a?\x0d\x0a?(.*)/ms; |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
114 recode($1); |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
115 } |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
116 |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
117 ############################################################################### |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
118 |
1811
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1778
diff
changeset
|
119 local $TODO = 'not yet' unless has_version('0.7.6'); |
1778
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
120 |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
121 like(http_get('/iter?foo=12345&foo2=bar&nn=22&foo-3=z'), qr/12345barz/, |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
122 'r.args iteration'); |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
123 like(http_get('/iter?foo=123&foo2=&foo3&foo4=456'), qr/123456/, |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
124 'r.args iteration 2'); |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
125 like(http_get('/iter?foo=123&foo2=&foo3'), qr/123/, 'r.args iteration 3'); |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
126 like(http_get('/iter?foo=123&foo2='), qr/123/, 'r.args iteration 4'); |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
127 like(http_get('/iter?foo=1&foo=2'), qr/1,2/m, 'r.args iteration 5'); |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
128 |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
129 like(http_get('/keys?b=1&c=2&a=5'), qr/a,b,c/m, 'r.args sorted keys'); |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
130 like(http_get('/keys?b=1&b=2'), qr/b/m, 'r.args duplicate keys'); |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
131 like(http_get('/keys?b=1&a&c='), qr/a,b,c/m, 'r.args empty value'); |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
132 |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
133 is(get_json('/object'), '{}', 'empty object'); |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
134 is(get_json('/object?a=1&b=2&c=3'), '{"a":"1","b":"2","c":"3"}', |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
135 'ordinary object'); |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
136 is(get_json('/object?a=1&A=2'), '{"A":"2","a":"1"}', |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
137 'case sensitive object'); |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
138 is(get_json('/object?a=1&A=2&a=3'), '{"A":"2","a":["1","3"]}', |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
139 'duplicate keys object'); |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
140 is(get_json('/object?%61=1&a=2'), '{"a":["1","2"]}', |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
141 'keys percent-encoded object'); |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
142 is(get_json('/object?a=%62%63&b=%63%64'), '{"a":"bc","b":"cd"}', |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
143 'values percent-encoded object'); |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
144 is(get_json('/object?a=%6&b=%&c=%%&d=%zz'), |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
145 '{"a":"%6","b":"%","c":"%%","d":"%zz"}', |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
146 'values percent-encoded broken object'); |
1811
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1778
diff
changeset
|
147 |
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1778
diff
changeset
|
148 ############################################################################### |
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1778
diff
changeset
|
149 |
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1778
diff
changeset
|
150 sub has_version { |
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1778
diff
changeset
|
151 my $need = shift; |
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1778
diff
changeset
|
152 |
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1778
diff
changeset
|
153 http_get('/njs') =~ /^([.0-9]+)$/m; |
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1778
diff
changeset
|
154 |
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1778
diff
changeset
|
155 my @v = split(/\./, $1); |
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1778
diff
changeset
|
156 my ($n, $v); |
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1778
diff
changeset
|
157 |
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1778
diff
changeset
|
158 for $n (split(/\./, $need)) { |
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1778
diff
changeset
|
159 $v = shift @v || 0; |
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1778
diff
changeset
|
160 return 0 if $n > $v; |
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1778
diff
changeset
|
161 return 1 if $v > $n; |
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1778
diff
changeset
|
162 } |
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1778
diff
changeset
|
163 |
520fb74cce4c
Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1778
diff
changeset
|
164 return 1; |
1778
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
165 } |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
166 |
0979f22e3a5b
Tests: added extended request arguments tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
167 ############################################################################### |