Mercurial > hg > nginx-tests
annotate js.t @ 1259:caf59f42a3e1
Tests: handled GC deficiency in Perl < 5.22.
This allows to unbreak running worker_shutdown_timeout tests on stable.
See for more details: https://rt.perl.org/Public/Bug/Display.html?id=122556
author | Sergey Kandaurov <pluknet@nginx.com> |
---|---|
date | Fri, 08 Dec 2017 15:39:03 +0300 |
parents | edf5a3c9e36a |
children | 3882f8f3b2bc |
rev | line source |
---|---|
708 | 1 #!/usr/bin/perl |
2 | |
3 # (C) Roman Arutyunyan | |
4 | |
5 # Tests for http JavaScript module. | |
6 | |
7 ############################################################################### | |
8 | |
9 use warnings; | |
10 use strict; | |
11 | |
12 use Test::More; | |
13 | |
14 BEGIN { use FindBin; chdir($FindBin::Bin); } | |
15 | |
16 use lib 'lib'; | |
17 use Test::Nginx; | |
18 | |
19 ############################################################################### | |
20 | |
21 select STDERR; $| = 1; | |
22 select STDOUT; $| = 1; | |
23 | |
864
460a9cadbd2f
Tests: do not check for njs presence, just try js.t configuration.
Sergey Kandaurov <pluknet@nginx.com>
parents:
709
diff
changeset
|
24 my $t = Test::Nginx->new()->has(qw/http rewrite/) |
708 | 25 ->write_file_expand('nginx.conf', <<'EOF'); |
26 | |
27 %%TEST_GLOBALS%% | |
28 | |
29 daemon off; | |
30 | |
31 events { | |
32 } | |
33 | |
34 http { | |
35 %%TEST_GLOBALS_HTTP%% | |
36 | |
993
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
37 js_set $test_method test_method; |
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
38 js_set $test_version test_version; |
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
39 js_set $test_addr test_addr; |
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
40 js_set $test_uri test_uri; |
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
41 js_set $test_hdr test_hdr; |
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
42 js_set $test_ihdr test_ihdr; |
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
43 js_set $test_arg test_arg; |
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
44 js_set $test_iarg test_iarg; |
1001
4a0e1d7cc20b
Tests: more JavaScript tests for http js module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
994
diff
changeset
|
45 js_set $test_var test_var; |
4a0e1d7cc20b
Tests: more JavaScript tests for http js module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
994
diff
changeset
|
46 js_set $test_log test_log; |
1247
edf5a3c9e36a
Tests: added tests for js backtraces.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1106
diff
changeset
|
47 js_set $test_except test_except; |
993
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
48 |
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
49 js_include test.js; |
708 | 50 |
51 server { | |
974
882267679006
Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
952
diff
changeset
|
52 listen 127.0.0.1:8080; |
708 | 53 server_name localhost; |
54 | |
55 location /req_method { | |
56 return 200 $test_method; | |
57 } | |
58 | |
59 location /req_version { | |
60 return 200 $test_version; | |
61 } | |
62 | |
63 location /req_addr { | |
64 return 200 $test_addr; | |
65 } | |
66 | |
67 location /req_uri { | |
68 return 200 $test_uri; | |
69 } | |
70 | |
71 location /req_hdr { | |
72 return 200 $test_hdr; | |
73 } | |
74 | |
75 location /req_ihdr { | |
76 return 200 $test_ihdr; | |
77 } | |
78 | |
79 location /req_arg { | |
80 return 200 $test_arg; | |
81 } | |
82 | |
83 location /req_iarg { | |
84 return 200 $test_iarg; | |
85 } | |
86 | |
1001
4a0e1d7cc20b
Tests: more JavaScript tests for http js module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
994
diff
changeset
|
87 location /req_var { |
4a0e1d7cc20b
Tests: more JavaScript tests for http js module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
994
diff
changeset
|
88 return 200 $test_var; |
4a0e1d7cc20b
Tests: more JavaScript tests for http js module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
994
diff
changeset
|
89 } |
4a0e1d7cc20b
Tests: more JavaScript tests for http js module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
994
diff
changeset
|
90 |
4a0e1d7cc20b
Tests: more JavaScript tests for http js module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
994
diff
changeset
|
91 location /req_log { |
4a0e1d7cc20b
Tests: more JavaScript tests for http js module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
994
diff
changeset
|
92 return 200 $test_log; |
4a0e1d7cc20b
Tests: more JavaScript tests for http js module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
994
diff
changeset
|
93 } |
4a0e1d7cc20b
Tests: more JavaScript tests for http js module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
994
diff
changeset
|
94 |
1247
edf5a3c9e36a
Tests: added tests for js backtraces.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1106
diff
changeset
|
95 location /req_except { |
edf5a3c9e36a
Tests: added tests for js backtraces.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1106
diff
changeset
|
96 return 200 $test_except; |
edf5a3c9e36a
Tests: added tests for js backtraces.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1106
diff
changeset
|
97 } |
edf5a3c9e36a
Tests: added tests for js backtraces.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1106
diff
changeset
|
98 |
708 | 99 location /res_status { |
993
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
100 js_content status; |
708 | 101 } |
102 | |
103 location /res_ctype { | |
993
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
104 js_content ctype; |
708 | 105 } |
106 | |
107 location /res_clen { | |
993
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
108 js_content clen; |
708 | 109 } |
110 | |
111 location /res_send { | |
993
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
112 js_content send; |
708 | 113 } |
114 | |
115 location /res_hdr { | |
993
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
116 js_content hdr; |
708 | 117 } |
1001
4a0e1d7cc20b
Tests: more JavaScript tests for http js module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
994
diff
changeset
|
118 |
4a0e1d7cc20b
Tests: more JavaScript tests for http js module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
994
diff
changeset
|
119 location /res_ihdr { |
4a0e1d7cc20b
Tests: more JavaScript tests for http js module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
994
diff
changeset
|
120 js_content ihdr; |
4a0e1d7cc20b
Tests: more JavaScript tests for http js module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
994
diff
changeset
|
121 } |
1247
edf5a3c9e36a
Tests: added tests for js backtraces.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1106
diff
changeset
|
122 |
edf5a3c9e36a
Tests: added tests for js backtraces.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1106
diff
changeset
|
123 location /res_except { |
edf5a3c9e36a
Tests: added tests for js backtraces.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1106
diff
changeset
|
124 js_content content_except; |
edf5a3c9e36a
Tests: added tests for js backtraces.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1106
diff
changeset
|
125 } |
708 | 126 } |
127 } | |
128 | |
129 EOF | |
130 | |
993
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
131 $t->write_file('test.js', <<EOF); |
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
132 function test_method(req, res) { |
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
133 return 'method=' + req.method; |
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
134 } |
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
135 |
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
136 function test_version(req, res) { |
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
137 return 'version=' + req.httpVersion; |
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
138 } |
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
139 |
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
140 function test_addr(req, res) { |
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
141 return 'addr=' + req.remoteAddress; |
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
142 } |
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
143 |
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
144 function test_uri(req, res) { |
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
145 return 'uri=' + req.uri; |
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
146 } |
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
147 |
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
148 function test_hdr(req, res) { |
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
149 return 'hdr=' + req.headers.foo; |
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
150 } |
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
151 |
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
152 function test_ihdr(req, res) { |
1106
4b0b10e39a08
Tests: fixed implicitly declared njs variables after 4337ed48d6d6.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1001
diff
changeset
|
153 var s = '', h; |
993
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
154 for (h in req.headers) { |
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
155 if (h.substr(0, 3) == 'foo') { |
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
156 s += req.headers[h]; |
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
157 } |
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
158 } |
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
159 return s; |
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
160 } |
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
161 |
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
162 function test_arg(req, res) { |
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
163 return 'arg=' + req.args.foo; |
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
164 } |
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
165 |
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
166 function test_iarg(req, res) { |
1106
4b0b10e39a08
Tests: fixed implicitly declared njs variables after 4337ed48d6d6.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1001
diff
changeset
|
167 var s = '', a; |
993
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
168 for (a in req.args) { |
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
169 if (a.substr(0, 3) == 'foo') { |
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
170 s += req.args[a]; |
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
171 } |
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
172 } |
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
173 return s; |
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
174 } |
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
175 |
1001
4a0e1d7cc20b
Tests: more JavaScript tests for http js module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
994
diff
changeset
|
176 function test_var(req, res) { |
4a0e1d7cc20b
Tests: more JavaScript tests for http js module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
994
diff
changeset
|
177 return 'variable=' + req.variables.remote_addr; |
4a0e1d7cc20b
Tests: more JavaScript tests for http js module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
994
diff
changeset
|
178 } |
4a0e1d7cc20b
Tests: more JavaScript tests for http js module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
994
diff
changeset
|
179 |
4a0e1d7cc20b
Tests: more JavaScript tests for http js module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
994
diff
changeset
|
180 function test_log(req, res) { |
4a0e1d7cc20b
Tests: more JavaScript tests for http js module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
994
diff
changeset
|
181 req.log("SEE-THIS"); |
4a0e1d7cc20b
Tests: more JavaScript tests for http js module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
994
diff
changeset
|
182 } |
4a0e1d7cc20b
Tests: more JavaScript tests for http js module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
994
diff
changeset
|
183 |
1247
edf5a3c9e36a
Tests: added tests for js backtraces.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1106
diff
changeset
|
184 function test_except(req, res) { |
edf5a3c9e36a
Tests: added tests for js backtraces.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1106
diff
changeset
|
185 var fs = require('fs'); |
edf5a3c9e36a
Tests: added tests for js backtraces.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1106
diff
changeset
|
186 fs.readFileSync(); |
edf5a3c9e36a
Tests: added tests for js backtraces.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1106
diff
changeset
|
187 } |
edf5a3c9e36a
Tests: added tests for js backtraces.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1106
diff
changeset
|
188 |
993
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
189 function status(req, res) { |
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
190 res.status = 204; |
1001
4a0e1d7cc20b
Tests: more JavaScript tests for http js module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
994
diff
changeset
|
191 if (res.status != 204) |
4a0e1d7cc20b
Tests: more JavaScript tests for http js module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
994
diff
changeset
|
192 res.status = 404; |
993
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
193 res.sendHeader(); |
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
194 res.finish(); |
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
195 } |
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
196 |
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
197 function ctype(req, res) { |
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
198 res.status = 200; |
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
199 res.contentType = 'application/foo'; |
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
200 res.sendHeader(); |
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
201 res.finish(); |
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
202 } |
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
203 |
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
204 function clen(req, res) { |
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
205 res.status = 200; |
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
206 res.contentLength = 5; |
1001
4a0e1d7cc20b
Tests: more JavaScript tests for http js module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
994
diff
changeset
|
207 if (res.contentLength != 5) |
4a0e1d7cc20b
Tests: more JavaScript tests for http js module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
994
diff
changeset
|
208 res.contentLength = 6; |
993
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
209 res.sendHeader(); |
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
210 res.send('foo12'); |
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
211 res.finish(); |
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
212 } |
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
213 |
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
214 function send(req, res) { |
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
215 var a, s; |
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
216 res.status = 200; |
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
217 res.sendHeader(); |
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
218 for (a in req.args) { |
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
219 if (a.substr(0, 3) == 'foo') { |
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
220 s = req.args[a]; |
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
221 res.send('n=' + a + ', v=' + s.substr(0, 2) + ' '); |
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
222 } |
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
223 } |
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
224 res.finish(); |
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
225 } |
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
226 |
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
227 function hdr(req, res) { |
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
228 res.status = 200; |
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
229 res.headers['Foo'] = req.args.fOO; |
1001
4a0e1d7cc20b
Tests: more JavaScript tests for http js module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
994
diff
changeset
|
230 |
4a0e1d7cc20b
Tests: more JavaScript tests for http js module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
994
diff
changeset
|
231 if (req.args.bar) { |
4a0e1d7cc20b
Tests: more JavaScript tests for http js module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
994
diff
changeset
|
232 res.headers['Bar'] = res.headers['Foo']; |
4a0e1d7cc20b
Tests: more JavaScript tests for http js module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
994
diff
changeset
|
233 } |
4a0e1d7cc20b
Tests: more JavaScript tests for http js module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
994
diff
changeset
|
234 |
4a0e1d7cc20b
Tests: more JavaScript tests for http js module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
994
diff
changeset
|
235 if (req.args.bar == 'empty') { |
4a0e1d7cc20b
Tests: more JavaScript tests for http js module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
994
diff
changeset
|
236 res.headers['Bar'] = res.headers['Baz']; |
4a0e1d7cc20b
Tests: more JavaScript tests for http js module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
994
diff
changeset
|
237 } |
4a0e1d7cc20b
Tests: more JavaScript tests for http js module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
994
diff
changeset
|
238 |
993
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
239 res.sendHeader(); |
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
240 res.finish(); |
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
241 } |
1001
4a0e1d7cc20b
Tests: more JavaScript tests for http js module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
994
diff
changeset
|
242 |
4a0e1d7cc20b
Tests: more JavaScript tests for http js module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
994
diff
changeset
|
243 function ihdr(req, res) { |
4a0e1d7cc20b
Tests: more JavaScript tests for http js module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
994
diff
changeset
|
244 res.status = 200; |
4a0e1d7cc20b
Tests: more JavaScript tests for http js module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
994
diff
changeset
|
245 res.headers['a'] = req.args.a; |
4a0e1d7cc20b
Tests: more JavaScript tests for http js module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
994
diff
changeset
|
246 res.headers['b'] = req.args.b; |
4a0e1d7cc20b
Tests: more JavaScript tests for http js module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
994
diff
changeset
|
247 |
1106
4b0b10e39a08
Tests: fixed implicitly declared njs variables after 4337ed48d6d6.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1001
diff
changeset
|
248 var s = '', h; |
1001
4a0e1d7cc20b
Tests: more JavaScript tests for http js module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
994
diff
changeset
|
249 for (h in res.headers) { |
4a0e1d7cc20b
Tests: more JavaScript tests for http js module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
994
diff
changeset
|
250 s += res.headers[h]; |
4a0e1d7cc20b
Tests: more JavaScript tests for http js module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
994
diff
changeset
|
251 } |
4a0e1d7cc20b
Tests: more JavaScript tests for http js module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
994
diff
changeset
|
252 |
4a0e1d7cc20b
Tests: more JavaScript tests for http js module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
994
diff
changeset
|
253 res.sendHeader(); |
4a0e1d7cc20b
Tests: more JavaScript tests for http js module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
994
diff
changeset
|
254 res.send(s); |
4a0e1d7cc20b
Tests: more JavaScript tests for http js module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
994
diff
changeset
|
255 res.finish(); |
4a0e1d7cc20b
Tests: more JavaScript tests for http js module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
994
diff
changeset
|
256 } |
1247
edf5a3c9e36a
Tests: added tests for js backtraces.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1106
diff
changeset
|
257 |
edf5a3c9e36a
Tests: added tests for js backtraces.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1106
diff
changeset
|
258 function content_except(req, res) { |
edf5a3c9e36a
Tests: added tests for js backtraces.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1106
diff
changeset
|
259 JSON.parse({}.a.a); |
edf5a3c9e36a
Tests: added tests for js backtraces.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1106
diff
changeset
|
260 } |
edf5a3c9e36a
Tests: added tests for js backtraces.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1106
diff
changeset
|
261 |
993
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
262 EOF |
3ee5ca1ec728
Tests: updated js.t to the new http js module syntax.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
263 |
1247
edf5a3c9e36a
Tests: added tests for js backtraces.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1106
diff
changeset
|
264 $t->try_run('no njs available')->plan(22); |
708 | 265 |
266 ############################################################################### | |
267 | |
994
345a655ef643
Tests: fixed js.t tests description.
Sergey Kandaurov <pluknet@nginx.com>
parents:
993
diff
changeset
|
268 like(http_get('/req_method'), qr/method=GET/, 'req.method'); |
345a655ef643
Tests: fixed js.t tests description.
Sergey Kandaurov <pluknet@nginx.com>
parents:
993
diff
changeset
|
269 like(http_get('/req_version'), qr/version=1.0/, 'req.httpVersion'); |
345a655ef643
Tests: fixed js.t tests description.
Sergey Kandaurov <pluknet@nginx.com>
parents:
993
diff
changeset
|
270 like(http_get('/req_addr'), qr/addr=127.0.0.1/, 'req.remoteAddress'); |
345a655ef643
Tests: fixed js.t tests description.
Sergey Kandaurov <pluknet@nginx.com>
parents:
993
diff
changeset
|
271 like(http_get('/req_uri'), qr/uri=\/req_uri/, 'req.uri'); |
345a655ef643
Tests: fixed js.t tests description.
Sergey Kandaurov <pluknet@nginx.com>
parents:
993
diff
changeset
|
272 like(http_get_hdr('/req_hdr'), qr/hdr=12345/, 'req.headers'); |
345a655ef643
Tests: fixed js.t tests description.
Sergey Kandaurov <pluknet@nginx.com>
parents:
993
diff
changeset
|
273 like(http_get_ihdr('/req_ihdr'), qr/12345barz/, 'req.headers iteration'); |
345a655ef643
Tests: fixed js.t tests description.
Sergey Kandaurov <pluknet@nginx.com>
parents:
993
diff
changeset
|
274 like(http_get('/req_arg?foO=12345'), qr/arg=12345/, 'req.args'); |
708 | 275 like(http_get('/req_iarg?foo=12345&foo2=bar&nn=22&foo-3=z'), qr/12345barz/, |
994
345a655ef643
Tests: fixed js.t tests description.
Sergey Kandaurov <pluknet@nginx.com>
parents:
993
diff
changeset
|
276 'req.args iteration'); |
1001
4a0e1d7cc20b
Tests: more JavaScript tests for http js module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
994
diff
changeset
|
277 like(http_get('/req_var'), qr/variable=127.0.0.1/, 'req.variables'); |
4a0e1d7cc20b
Tests: more JavaScript tests for http js module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
994
diff
changeset
|
278 like(http_get('/req_log'), qr/200 OK/, 'req.log'); |
708 | 279 |
994
345a655ef643
Tests: fixed js.t tests description.
Sergey Kandaurov <pluknet@nginx.com>
parents:
993
diff
changeset
|
280 like(http_get('/res_status'), qr/204 No Content/, 'res.status'); |
708 | 281 like(http_get('/res_ctype'), qr/Content-Type: application\/foo/, |
994
345a655ef643
Tests: fixed js.t tests description.
Sergey Kandaurov <pluknet@nginx.com>
parents:
993
diff
changeset
|
282 'res.contentType'); |
345a655ef643
Tests: fixed js.t tests description.
Sergey Kandaurov <pluknet@nginx.com>
parents:
993
diff
changeset
|
283 like(http_get('/res_clen'), qr/Content-Length: 5/, 'res.contentLength'); |
708 | 284 like(http_get('/res_send?foo=12345&n=11&foo-2=bar&ndd=&foo-3=z'), |
994
345a655ef643
Tests: fixed js.t tests description.
Sergey Kandaurov <pluknet@nginx.com>
parents:
993
diff
changeset
|
285 qr/n=foo, v=12 n=foo-2, v=ba n=foo-3, v=z/, 'res.send'); |
345a655ef643
Tests: fixed js.t tests description.
Sergey Kandaurov <pluknet@nginx.com>
parents:
993
diff
changeset
|
286 like(http_get('/res_hdr?foo=12345'), qr/Foo: 12345/, 'res.headers'); |
1001
4a0e1d7cc20b
Tests: more JavaScript tests for http js module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
994
diff
changeset
|
287 like(http_get('/res_hdr?foo=123&bar=copy'), qr/Bar: 123/, 'res.headers get'); |
4a0e1d7cc20b
Tests: more JavaScript tests for http js module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
994
diff
changeset
|
288 like(http_get('/res_hdr?bar=empty'), qr/Bar: \x0d/, 'res.headers empty'); |
4a0e1d7cc20b
Tests: more JavaScript tests for http js module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
994
diff
changeset
|
289 like(http_get('/res_ihdr?a=12&b=34'), qr/^1234$/m, 'res.headers iteration'); |
4a0e1d7cc20b
Tests: more JavaScript tests for http js module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
994
diff
changeset
|
290 |
1247
edf5a3c9e36a
Tests: added tests for js backtraces.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1106
diff
changeset
|
291 http_get('/req_except'); |
edf5a3c9e36a
Tests: added tests for js backtraces.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1106
diff
changeset
|
292 http_get('/res_except'); |
edf5a3c9e36a
Tests: added tests for js backtraces.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1106
diff
changeset
|
293 |
1001
4a0e1d7cc20b
Tests: more JavaScript tests for http js module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
994
diff
changeset
|
294 TODO: { |
4a0e1d7cc20b
Tests: more JavaScript tests for http js module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
994
diff
changeset
|
295 local $TODO = 'zero size buf in writer'; |
4a0e1d7cc20b
Tests: more JavaScript tests for http js module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
994
diff
changeset
|
296 |
4a0e1d7cc20b
Tests: more JavaScript tests for http js module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
994
diff
changeset
|
297 like(http_get('/res_ihdr'), qr/\x0d\x0a?\x0d\x0a?$/m, 'res.send zero'); |
4a0e1d7cc20b
Tests: more JavaScript tests for http js module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
994
diff
changeset
|
298 |
4a0e1d7cc20b
Tests: more JavaScript tests for http js module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
994
diff
changeset
|
299 $t->todo_alerts(); |
4a0e1d7cc20b
Tests: more JavaScript tests for http js module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
994
diff
changeset
|
300 |
4a0e1d7cc20b
Tests: more JavaScript tests for http js module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
994
diff
changeset
|
301 } |
4a0e1d7cc20b
Tests: more JavaScript tests for http js module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
994
diff
changeset
|
302 |
4a0e1d7cc20b
Tests: more JavaScript tests for http js module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
994
diff
changeset
|
303 $t->stop(); |
4a0e1d7cc20b
Tests: more JavaScript tests for http js module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
994
diff
changeset
|
304 |
4a0e1d7cc20b
Tests: more JavaScript tests for http js module.
Sergey Kandaurov <pluknet@nginx.com>
parents:
994
diff
changeset
|
305 ok(index($t->read_file('error.log'), 'SEE-THIS') > 0, 'log js'); |
1247
edf5a3c9e36a
Tests: added tests for js backtraces.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1106
diff
changeset
|
306 ok(index($t->read_file('error.log'), 'at fs.readFileSync') > 0, |
edf5a3c9e36a
Tests: added tests for js backtraces.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1106
diff
changeset
|
307 'js_set backtrace'); |
edf5a3c9e36a
Tests: added tests for js backtraces.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1106
diff
changeset
|
308 ok(index($t->read_file('error.log'), 'at JSON.parse') > 0, |
edf5a3c9e36a
Tests: added tests for js backtraces.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1106
diff
changeset
|
309 'js_content backtrace'); |
708 | 310 |
311 ############################################################################### | |
312 | |
313 sub http_get_hdr { | |
314 my ($url, %extra) = @_; | |
315 return http(<<EOF, %extra); | |
316 GET $url HTTP/1.0 | |
317 FoO: 12345 | |
318 | |
319 EOF | |
320 } | |
321 | |
322 sub http_get_ihdr { | |
323 my ($url, %extra) = @_; | |
324 return http(<<EOF, %extra); | |
325 GET $url HTTP/1.0 | |
326 foo: 12345 | |
327 Host: localhost | |
328 foo2: bar | |
329 X-xxx: more | |
330 foo-3: z | |
331 | |
332 EOF | |
333 } | |
334 | |
335 ############################################################################### |