Mercurial > hg > nginx-tests
annotate js_promise.t @ 1571:1b4ceab9cb1c
Tests: fixed ssl_certificate.t with LibreSSL client.
Net::SSLeay::connect() that manages TLS handshake could return unexpected
error when receiving server alert, as seen in server certificate tests if
it could not been selected. Typically, it returns the expected error -1,
but with certain libssl implementations it can be 0, as explained below.
The error is propagated from libssl's SSL_connect(), which is usually -1.
In modern OpenSSL versions, it is the default error code used in the state
machine returned when something went wrong with parsing TLS message header.
In versions up to OpenSSL 1.0.2, with SSLv23_method() used by default, -1
is the only error code in the ssl_connect() method implementation which is
used as well if receiving alert while parsing ServerHello. BoringSSL also
seems to return -1. But it is not so with LibreSSL that returns zero.
Previously, tests failed with client built with LibreSSL with SSLv3 removed.
Here, the error is propagated directly from ssl_read_bytes() method, which
is always implemented as ssl3_read_bytes() in all TLS methods. It could be
also seen with OpenSSL up to 1.0.2 with non-default methods explicitly set.
author | Sergey Kandaurov <pluknet@nginx.com> |
---|---|
date | Fri, 29 May 2020 23:10:20 +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 ############################################################################### |