Mercurial > hg > nginx-tests
annotate js_promise.t @ 1552:3b6b2667ece9
Tests: added https test with pipelined requests.
author | Sergey Kandaurov <pluknet@nginx.com> |
---|---|
date | Fri, 28 Feb 2020 18:20:33 +0300 |
parents | 5e2b8621aa5d |
children | bc0990ea2e5b |
rev | line source |
---|---|
1537
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
1 #!/usr/bin/perl |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
2 |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
3 # (C) Nginx, Inc. |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
4 |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
5 # Promise tests for http njs module. |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
6 |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
7 ############################################################################### |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
8 |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
9 use warnings; |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
10 use strict; |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
11 |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
12 use Test::More; |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
13 |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
14 BEGIN { use FindBin; chdir($FindBin::Bin); } |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
15 |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
16 use lib 'lib'; |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
17 use Test::Nginx; |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
18 |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
19 ############################################################################### |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
20 |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
21 select STDERR; $| = 1; |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
22 select STDOUT; $| = 1; |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
23 |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
24 my $t = Test::Nginx->new()->has(qw/http/) |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
25 ->write_file_expand('nginx.conf', <<'EOF'); |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
26 |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
27 %%TEST_GLOBALS%% |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
28 |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
29 daemon off; |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
30 |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
31 events { |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
32 } |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
33 |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
34 http { |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
35 %%TEST_GLOBALS_HTTP%% |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
36 |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
37 js_include test.js; |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
38 |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
39 server { |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
40 listen 127.0.0.1:8080; |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
41 server_name localhost; |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
42 |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
43 location /promise { |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
44 js_content promise; |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
45 } |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
46 |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
47 location /promise_throw { |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
48 js_content promise_throw; |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
49 } |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
50 |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
51 location /timeout { |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
52 js_content timeout; |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
53 } |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
54 |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
55 location /sub_token { |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
56 js_content sub_token; |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
57 } |
1540
5e2b8621aa5d
Tests: TODO js_promise.t on njs < 0.3.8.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1537
diff
changeset
|
58 |
5e2b8621aa5d
Tests: TODO js_promise.t on njs < 0.3.8.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1537
diff
changeset
|
59 location /njs { |
5e2b8621aa5d
Tests: TODO js_promise.t on njs < 0.3.8.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1537
diff
changeset
|
60 js_content test_njs; |
5e2b8621aa5d
Tests: TODO js_promise.t on njs < 0.3.8.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1537
diff
changeset
|
61 } |
1537
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
62 } |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
63 } |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
64 |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
65 EOF |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
66 |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
67 $t->write_file('test.js', <<EOF); |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
68 var global_token = ''; |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
69 |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
70 function promise(r) { |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
71 promisified_subrequest(r, '/sub_token', 'code=200&token=a') |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
72 .then(reply => { |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
73 var data = JSON.parse(reply.responseBody); |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
74 |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
75 if (data['token'] !== "a") { |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
76 throw new Error('token is not "a"'); |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
77 } |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
78 |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
79 return data['token']; |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
80 }) |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
81 .then(token => { |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
82 promisified_subrequest(r, '/sub_token', 'code=200&token=b') |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
83 .then(reply => { |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
84 var data = JSON.parse(reply.responseBody); |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
85 |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
86 r.return(200, '{"token": "' + data['token'] + '"}'); |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
87 }) |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
88 .catch(() => { |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
89 throw new Error("failed promise() test"); |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
90 }); |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
91 }) |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
92 .catch(() => { |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
93 r.return(500); |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
94 }); |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
95 } |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
96 |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
97 function promise_throw(r) { |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
98 promisified_subrequest(r, '/sub_token', 'code=200&token=x') |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
99 .then(reply => { |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
100 var data = JSON.parse(reply.responseBody); |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
101 |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
102 if (data['token'] !== "a") { |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
103 throw data['token']; |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
104 } |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
105 |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
106 return data['token']; |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
107 }) |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
108 .then(() => { |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
109 r.return(500); |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
110 }) |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
111 .catch(token => { |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
112 r.return(200, '{"token": "' + token + '"}'); |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
113 }); |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
114 } |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
115 |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
116 function timeout(r) { |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
117 promisified_subrequest(r, '/sub_token', 'code=200&token=R') |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
118 .then(reply => JSON.parse(reply.responseBody)) |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
119 .then(data => { |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
120 setTimeout(timeout_cb, 50, r, '/sub_token', 'code=200&token=T'); |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
121 return data; |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
122 }) |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
123 .then(data => { |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
124 setTimeout(timeout_cb, 1, r, '/sub_token', 'code=200&token=' |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
125 + data['token']); |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
126 }) |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
127 .catch(() => { |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
128 r.return(500); |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
129 }); |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
130 } |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
131 |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
132 function timeout_cb(r, url, args) { |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
133 promisified_subrequest(r, url, args) |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
134 .then(reply => { |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
135 if (global_token == '') { |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
136 var data = JSON.parse(reply.responseBody); |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
137 |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
138 global_token = data['token']; |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
139 |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
140 r.return(200, '{"token": "' + data['token'] + '"}'); |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
141 } |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
142 }) |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
143 .catch(() => { |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
144 r.return(500); |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
145 }); |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
146 } |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
147 |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
148 function promisified_subrequest(r, uri, args) { |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
149 return new Promise((resolve, reject) => { |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
150 r.subrequest(uri, args, (reply) => { |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
151 if (reply.status < 400) { |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
152 resolve(reply); |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
153 } else { |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
154 reject(reply); |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
155 } |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
156 }); |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
157 }) |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
158 } |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
159 |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
160 function sub_token(r) { |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
161 var code = r.variables.arg_code; |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
162 var token = r.variables.arg_token; |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
163 |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
164 r.return(parseInt(code), '{"token": "'+ token +'"}'); |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
165 } |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
166 |
1540
5e2b8621aa5d
Tests: TODO js_promise.t on njs < 0.3.8.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1537
diff
changeset
|
167 function test_njs(r) { |
5e2b8621aa5d
Tests: TODO js_promise.t on njs < 0.3.8.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1537
diff
changeset
|
168 r.return(200, njs.version); |
5e2b8621aa5d
Tests: TODO js_promise.t on njs < 0.3.8.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1537
diff
changeset
|
169 } |
5e2b8621aa5d
Tests: TODO js_promise.t on njs < 0.3.8.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1537
diff
changeset
|
170 |
1537
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
171 EOF |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
172 |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
173 $t->try_run('no njs available')->plan(3); |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
174 |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
175 ############################################################################### |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
176 |
1540
5e2b8621aa5d
Tests: TODO js_promise.t on njs < 0.3.8.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1537
diff
changeset
|
177 TODO: { |
5e2b8621aa5d
Tests: TODO js_promise.t on njs < 0.3.8.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1537
diff
changeset
|
178 local $TODO = 'not yet' |
5e2b8621aa5d
Tests: TODO js_promise.t on njs < 0.3.8.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1537
diff
changeset
|
179 unless http_get('/njs') =~ /^([.0-9]+)$/m && $1 ge '0.3.8'; |
5e2b8621aa5d
Tests: TODO js_promise.t on njs < 0.3.8.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1537
diff
changeset
|
180 |
1537
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
181 like(http_get('/promise'), qr/{"token": "b"}/, "Promise"); |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
182 like(http_get('/promise_throw'), qr/{"token": "x"}/, "Promise throw and catch"); |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
183 like(http_get('/timeout'), qr/{"token": "R"}/, "Promise with timeout"); |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
184 |
1540
5e2b8621aa5d
Tests: TODO js_promise.t on njs < 0.3.8.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1537
diff
changeset
|
185 } |
5e2b8621aa5d
Tests: TODO js_promise.t on njs < 0.3.8.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1537
diff
changeset
|
186 |
1537
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
187 ############################################################################### |