Mercurial > hg > nginx-tests
annotate js_promise.t @ 1701:408fe0dd3fed
Tests: fixed mail_imap_ssl.t too long shutdown.
Prior to literals support in IMAP test backend (e7f0b4ca0a1a), early backend
response was treated as invalid, with subsequent proxy connection close.
Now that the connection continues successfully, this requires connection
close before nginx shutdown. Otherwise, it would wait for proxy_timeout.
author | Sergey Kandaurov <pluknet@nginx.com> |
---|---|
date | Thu, 17 Jun 2021 19:52:36 +0300 |
parents | 54f867e69cb5 |
children | 18ac4d9e5a2a |
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 |
1628
54f867e69cb5
Tests: added js promise test with standalone promises.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
1614
diff
changeset
|
43 location /njs { |
54f867e69cb5
Tests: added js promise test with standalone promises.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
1614
diff
changeset
|
44 js_content test_njs; |
54f867e69cb5
Tests: added js promise test with standalone promises.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
1614
diff
changeset
|
45 } |
54f867e69cb5
Tests: added js promise test with standalone promises.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
1614
diff
changeset
|
46 |
1537
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
47 location /promise { |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
48 js_content promise; |
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 /promise_throw { |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
52 js_content promise_throw; |
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 |
1628
54f867e69cb5
Tests: added js promise test with standalone promises.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
1614
diff
changeset
|
55 location /promise_pure { |
54f867e69cb5
Tests: added js promise test with standalone promises.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
1614
diff
changeset
|
56 js_content promise_pure; |
54f867e69cb5
Tests: added js promise test with standalone promises.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
1614
diff
changeset
|
57 } |
54f867e69cb5
Tests: added js promise test with standalone promises.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
1614
diff
changeset
|
58 |
1537
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
59 location /timeout { |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
60 js_content timeout; |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
61 } |
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 location /sub_token { |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
64 js_content sub_token; |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
65 } |
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 } |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
68 |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
69 EOF |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
70 |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
71 $t->write_file('test.js', <<EOF); |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
72 var global_token = ''; |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
73 |
1628
54f867e69cb5
Tests: added js promise test with standalone promises.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
1614
diff
changeset
|
74 function test_njs(r) { |
54f867e69cb5
Tests: added js promise test with standalone promises.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
1614
diff
changeset
|
75 r.return(200, njs.version); |
54f867e69cb5
Tests: added js promise test with standalone promises.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
1614
diff
changeset
|
76 } |
54f867e69cb5
Tests: added js promise test with standalone promises.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
1614
diff
changeset
|
77 |
1537
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
78 function promise(r) { |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
79 promisified_subrequest(r, '/sub_token', 'code=200&token=a') |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
80 .then(reply => { |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
81 var data = JSON.parse(reply.responseBody); |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
82 |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
83 if (data['token'] !== "a") { |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
84 throw new Error('token is not "a"'); |
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 |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
87 return data['token']; |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
88 }) |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
89 .then(token => { |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
90 promisified_subrequest(r, '/sub_token', 'code=200&token=b') |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
91 .then(reply => { |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
92 var data = JSON.parse(reply.responseBody); |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
93 |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
94 r.return(200, '{"token": "' + data['token'] + '"}'); |
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 .catch(() => { |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
97 throw new Error("failed promise() test"); |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
98 }); |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
99 }) |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
100 .catch(() => { |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
101 r.return(500); |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
102 }); |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
103 } |
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 function promise_throw(r) { |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
106 promisified_subrequest(r, '/sub_token', 'code=200&token=x') |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
107 .then(reply => { |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
108 var data = JSON.parse(reply.responseBody); |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
109 |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
110 if (data['token'] !== "a") { |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
111 throw data['token']; |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
112 } |
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 return data['token']; |
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 .then(() => { |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
117 r.return(500); |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
118 }) |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
119 .catch(token => { |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
120 r.return(200, '{"token": "' + token + '"}'); |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
121 }); |
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 |
1628
54f867e69cb5
Tests: added js promise test with standalone promises.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
1614
diff
changeset
|
124 function promise_pure(r) { |
54f867e69cb5
Tests: added js promise test with standalone promises.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
1614
diff
changeset
|
125 var count = 0; |
54f867e69cb5
Tests: added js promise test with standalone promises.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
1614
diff
changeset
|
126 |
54f867e69cb5
Tests: added js promise test with standalone promises.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
1614
diff
changeset
|
127 Promise.resolve(true) |
54f867e69cb5
Tests: added js promise test with standalone promises.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
1614
diff
changeset
|
128 .then(() => count++) |
54f867e69cb5
Tests: added js promise test with standalone promises.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
1614
diff
changeset
|
129 .then(() => not_exist_ref) |
54f867e69cb5
Tests: added js promise test with standalone promises.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
1614
diff
changeset
|
130 .finally(() => count++) |
54f867e69cb5
Tests: added js promise test with standalone promises.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
1614
diff
changeset
|
131 .catch(() => { |
54f867e69cb5
Tests: added js promise test with standalone promises.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
1614
diff
changeset
|
132 r.return((count != 2) ? 500 : 200); |
54f867e69cb5
Tests: added js promise test with standalone promises.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
1614
diff
changeset
|
133 }); |
54f867e69cb5
Tests: added js promise test with standalone promises.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
1614
diff
changeset
|
134 } |
54f867e69cb5
Tests: added js promise test with standalone promises.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
1614
diff
changeset
|
135 |
1537
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
136 function timeout(r) { |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
137 promisified_subrequest(r, '/sub_token', 'code=200&token=R') |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
138 .then(reply => JSON.parse(reply.responseBody)) |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
139 .then(data => { |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
140 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
|
141 return data; |
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 .then(data => { |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
144 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
|
145 + data['token']); |
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 .catch(() => { |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
148 r.return(500); |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
149 }); |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
150 } |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
151 |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
152 function timeout_cb(r, url, args) { |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
153 promisified_subrequest(r, url, args) |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
154 .then(reply => { |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
155 if (global_token == '') { |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
156 var data = JSON.parse(reply.responseBody); |
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 global_token = data['token']; |
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 r.return(200, '{"token": "' + data['token'] + '"}'); |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
161 } |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
162 }) |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
163 .catch(() => { |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
164 r.return(500); |
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 } |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
167 |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
168 function promisified_subrequest(r, uri, args) { |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
169 return new Promise((resolve, reject) => { |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
170 r.subrequest(uri, args, (reply) => { |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
171 if (reply.status < 400) { |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
172 resolve(reply); |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
173 } else { |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
174 reject(reply); |
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 }); |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
177 }) |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
178 } |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
179 |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
180 function sub_token(r) { |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
181 var code = r.variables.arg_code; |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
182 var token = r.variables.arg_token; |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
183 |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
184 r.return(parseInt(code), '{"token": "'+ token +'"}'); |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
185 } |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
186 |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
187 EOF |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
188 |
1628
54f867e69cb5
Tests: added js promise test with standalone promises.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
1614
diff
changeset
|
189 $t->try_run('no njs available')->plan(4); |
1537
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
190 |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
191 ############################################################################### |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
192 |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
193 like(http_get('/promise'), qr/{"token": "b"}/, "Promise"); |
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
194 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
|
195 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
|
196 |
1628
54f867e69cb5
Tests: added js promise test with standalone promises.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
1614
diff
changeset
|
197 TODO: { |
54f867e69cb5
Tests: added js promise test with standalone promises.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
1614
diff
changeset
|
198 local $TODO = 'not yet' |
54f867e69cb5
Tests: added js promise test with standalone promises.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
1614
diff
changeset
|
199 unless http_get('/njs') =~ /^([.0-9]+)$/m && $1 ge '0.5.0'; |
54f867e69cb5
Tests: added js promise test with standalone promises.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
1614
diff
changeset
|
200 |
54f867e69cb5
Tests: added js promise test with standalone promises.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
1614
diff
changeset
|
201 like(http_get('/promise_pure'), qr/200 OK/, "events handling"); |
54f867e69cb5
Tests: added js promise test with standalone promises.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
1614
diff
changeset
|
202 } |
54f867e69cb5
Tests: added js promise test with standalone promises.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
1614
diff
changeset
|
203 |
54f867e69cb5
Tests: added js promise test with standalone promises.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
1614
diff
changeset
|
204 $t->todo_alerts() unless http_get('/njs') =~ /^([.0-9]+)$/m && $1 ge '0.5.0'; |
54f867e69cb5
Tests: added js promise test with standalone promises.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
1614
diff
changeset
|
205 |
1537
beb549bce15f
Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff
changeset
|
206 ############################################################################### |