annotate js_promise.t @ 1851:0351dee227a8

Tests: unbreak tests with dynamic certificates on stable. In 74cffa9d4c43, ticket based session reuse is enabled in addition to using a shared SSL session cache. This changed how a session can be resumed in a different server: - for a session ID based resumption, it is resumed in the same context - when using session tickets, a key name is also checked for matching - with a ticket callback, this is skipped in favor of callback's logic This makes 'session id context match' tests fail with session tickets on stable since ticket key names are unique in distinct SSL contexts. On the other hand, tests pass on 1.23.2+ due to automatic ticket keys rotation that installs ticket callback, and using a common shared SSL session cache.
author Sergey Kandaurov <pluknet@nginx.com>
date Tue, 28 Mar 2023 01:36:32 +0400
parents 386748f328b1
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
1751
18ac4d9e5a2a Tests: rewriting njs tests without deprecated "js_include".
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1628
diff changeset
37 js_import test.js;
1537
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 {
1751
18ac4d9e5a2a Tests: rewriting njs tests without deprecated "js_include".
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1628
diff changeset
44 js_content test.njs;
1628
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 {
1751
18ac4d9e5a2a Tests: rewriting njs tests without deprecated "js_include".
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1628
diff changeset
48 js_content test.promise;
1537
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 {
1751
18ac4d9e5a2a Tests: rewriting njs tests without deprecated "js_include".
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1628
diff changeset
52 js_content test.promise_throw;
1537
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 {
1751
18ac4d9e5a2a Tests: rewriting njs tests without deprecated "js_include".
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1628
diff changeset
56 js_content test.promise_pure;
1628
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 {
1751
18ac4d9e5a2a Tests: rewriting njs tests without deprecated "js_include".
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1628
diff changeset
60 js_content test.timeout;
1537
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 {
1751
18ac4d9e5a2a Tests: rewriting njs tests without deprecated "js_include".
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1628
diff changeset
64 js_content test.sub_token;
1537
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 => {
1781
386748f328b1 Tests: updated js properties deprecated since 0.5.0.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1776
diff changeset
81 var data = JSON.parse(reply.responseText);
1537
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 => {
1781
386748f328b1 Tests: updated js properties deprecated since 0.5.0.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1776
diff changeset
92 var data = JSON.parse(reply.responseText);
1537
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 => {
1781
386748f328b1 Tests: updated js properties deprecated since 0.5.0.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1776
diff changeset
108 var data = JSON.parse(reply.responseText);
1537
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')
1781
386748f328b1 Tests: updated js properties deprecated since 0.5.0.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1776
diff changeset
138 .then(reply => JSON.parse(reply.responseText))
1537
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 == '') {
1781
386748f328b1 Tests: updated js properties deprecated since 0.5.0.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1776
diff changeset
156 var data = JSON.parse(reply.responseText);
1537
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
1751
18ac4d9e5a2a Tests: rewriting njs tests without deprecated "js_include".
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1628
diff changeset
187 export default {njs:test_njs, promise, promise_throw, promise_pure,
18ac4d9e5a2a Tests: rewriting njs tests without deprecated "js_include".
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1628
diff changeset
188 timeout, sub_token};
18ac4d9e5a2a Tests: rewriting njs tests without deprecated "js_include".
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1628
diff changeset
189
1537
beb549bce15f Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff changeset
190 EOF
beb549bce15f Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff changeset
191
1628
54f867e69cb5 Tests: added js promise test with standalone promises.
Alexander Borisov <alexander.borisov@nginx.com>
parents: 1614
diff changeset
192 $t->try_run('no njs available')->plan(4);
1537
beb549bce15f Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff changeset
193
beb549bce15f Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff changeset
194 ###############################################################################
beb549bce15f Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff changeset
195
beb549bce15f Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff changeset
196 like(http_get('/promise'), qr/{"token": "b"}/, "Promise");
beb549bce15f Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff changeset
197 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
198 like(http_get('/timeout'), qr/{"token": "R"}/, "Promise with timeout");
1628
54f867e69cb5 Tests: added js promise test with standalone promises.
Alexander Borisov <alexander.borisov@nginx.com>
parents: 1614
diff changeset
199 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
200
1537
beb549bce15f Tests: added njs Promise tests.
Alexander Borisov <alexander.borisov@nginx.com>
parents:
diff changeset
201 ###############################################################################