annotate js_fetch.t @ 1677:f13ead27f89c

Tests: improved stop() to send TERM after QUIT. It is possible that graceful stop as initiated by SIGQUIT will take very long time, such as when waiting for proxy_timeout in mail proxy (defaults to 24h). To make sure in such cases nginx is stopped after some reasonable time, we now send SIGTERM after waiting for 90 seconds. Note that win32 version previously used "-s stop", which is equivalent to SIGTERM rather than SIGQUIT. This seems accidental error during introduction of initial win32 support in tests (ce2e23daa1da), so it is changed to follow the same logic.
author Maxim Dounin <mdounin@mdounin.ru>
date Wed, 19 May 2021 04:32:55 +0300
parents 67adc5fd0548
children bdefe70ae1a7
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1640
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
1 #!/usr/bin/perl
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
2
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
3 # (C) Dmitry Volyntsev
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
4 # (C) Nginx, Inc.
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
5
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
6 # Tests for http njs module, fetch method.
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
7
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
8 ###############################################################################
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
9
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
10 use warnings;
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
11 use strict;
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
12
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
13 use Test::More;
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
14
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
15 use Socket qw/ CRLF /;
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
16
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
17 BEGIN { use FindBin; chdir($FindBin::Bin); }
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
18
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
19 use lib 'lib';
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
20 use Test::Nginx;
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
21
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
22 ###############################################################################
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
23
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
24 select STDERR; $| = 1;
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
25 select STDOUT; $| = 1;
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
26
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
27 eval { require JSON::PP; };
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
28 plan(skip_all => "JSON::PP not installed") if $@;
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
29
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
30 my $t = Test::Nginx->new()->has(qw/http/)
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
31 ->write_file_expand('nginx.conf', <<'EOF');
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
32
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
33 %%TEST_GLOBALS%%
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
34
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
35 daemon off;
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
36
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
37 events {
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
38 }
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
39
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
40 http {
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
41 %%TEST_GLOBALS_HTTP%%
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
42
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
43 js_import test.js;
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
44
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
45 server {
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
46 listen 127.0.0.1:8080;
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
47 server_name localhost;
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
48
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
49 location /njs {
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
50 js_content test.njs;
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
51 }
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
52
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
53 location /broken {
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
54 js_content test.broken;
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
55 }
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
56
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
57 location /broken_response {
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
58 js_content test.broken_response;
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
59 }
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
60
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
61 location /body {
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
62 js_content test.body;
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
63 }
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
64
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
65 location /chain {
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
66 js_content test.chain;
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
67 }
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
68
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
69 location /chunked {
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
70 js_content test.chunked;
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
71 }
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
72
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
73 location /header {
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
74 js_content test.header;
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
75 }
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
76
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
77 location /multi {
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
78 js_content test.multi;
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
79 }
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
80
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
81 location /property {
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
82 js_content test.property;
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
83 }
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
84 }
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
85
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
86 server {
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
87 listen 127.0.0.1:8080;
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
88 server_name aaa;
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
89
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
90 location /loc {
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
91 js_content test.loc;
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
92 }
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
93
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
94 location /json { }
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
95 }
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
96
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
97 server {
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
98 listen 127.0.0.1:8080;
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
99 server_name bbb;
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
100
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
101 location /loc {
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
102 js_content test.loc;
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
103 }
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
104 }
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
105
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
106 server {
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
107 listen 127.0.0.1:8081;
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
108 server_name ccc;
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
109
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
110 location /loc {
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
111 js_content test.loc;
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
112 }
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
113 }
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
114 }
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
115
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
116 EOF
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
117
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
118 my $p0 = port(8080);
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
119 my $p1 = port(8081);
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
120 my $p2 = port(8082);
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
121
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
122 $t->write_file('json', '{"a":[1,2], "b":{"c":"FIELD"}}');
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
123
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
124 $t->write_file('test.js', <<EOF);
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
125 function test_njs(r) {
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
126 r.return(200, njs.version);
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
127 }
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
128
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
129 function body(r) {
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
130 var loc = r.args.loc;
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
131 var getter = r.args.getter;
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
132
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
133 function query(obj) {
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
134 var path = r.args.path;
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
135 var retval = (getter == 'arrayBuffer') ? Buffer.from(obj).toString()
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
136 : obj;
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
137
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
138 if (path) {
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
139 retval = path.split('.').reduce((a, v) => a[v], obj);
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
140 }
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
141
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
142 return JSON.stringify(retval);
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
143 }
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
144
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
145 ngx.fetch(`http://127.0.0.1:$p0/\${loc}`, {headers: {Host: 'aaa'}})
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
146 .then(reply => reply[getter]())
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
147 .then(data => r.return(200, query(data)))
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
148 .catch(e => r.return(501, e.message))
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
149 }
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
150
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
151 function property(r) {
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
152 var opts = {headers:{Host: 'aaa'}};
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
153
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
154 if (r.args.code) {
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
155 opts.headers.code = r.args.code;
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
156 }
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
157
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
158 var p = ngx.fetch('http://127.0.0.1:$p0/loc', opts)
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
159
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
160 if (r.args.readBody) {
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
161 p = p.then(rep =>
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
162 rep.text().then(body => {rep.text = body; return rep;}))
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
163 }
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
164
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
165 p.then(reply => r.return(200, reply[r.args.pr]))
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
166 .catch(e => r.return(501, e.message))
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
167 }
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
168
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
169 function process_errors(r, tests) {
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
170 var results = [];
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
171
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
172 tests.forEach(args => {
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
173 ngx.fetch.apply(r, args)
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
174 .then(reply => {
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
175 r.return(400, '["unexpected then"]');
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
176 })
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
177 .catch(e => {
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
178 results.push(e.message);
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
179
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
180 if (results.length == tests.length) {
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
181 results.sort();
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
182 r.return(200, JSON.stringify(results));
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
183 }
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
184 })
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
185 })
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
186 }
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
187
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
188 function broken(r) {
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
189 var tests = [
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
190 ['http://127.0.0.1:1/loc'],
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
191 ['http://127.0.0.1:80800/loc'],
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
192 [Symbol.toStringTag],
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
193 ['https://127.0.0.1:$p0/loc'],
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
194 ];
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
195
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
196 return process_errors(r, tests);
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
197 }
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
198
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
199 function broken_response(r) {
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
200 var tests = [
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
201 ['http://127.0.0.1:$p2/status_line'],
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
202 ['http://127.0.0.1:$p2/length'],
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
203 ['http://127.0.0.1:$p2/header'],
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
204 ['http://127.0.0.1:$p2/headers'],
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
205 ['http://127.0.0.1:$p2/content_length'],
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
206 ];
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
207
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
208 return process_errors(r, tests);
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
209 }
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
210
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
211 function chain(r) {
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
212 var results = [];
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
213 var reqs = [
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
214 ['http://127.0.0.1:$p0/loc', {headers: {Host:'aaa'}}],
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
215 ['http://127.0.0.1:$p0/loc', {headers: {Host:'bbb'}}],
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
216 ];
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
217
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
218 function next(reply) {
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
219 if (reqs.length == 0) {
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
220 r.return(200, "SUCCESS");
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
221 return;
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
222 }
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
223
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
224 ngx.fetch.apply(r, reqs.pop())
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
225 .then(next)
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
226 .catch(e => r.return(400, e.message))
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
227 }
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
228
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
229 next();
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
230 }
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
231
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
232 function chunked(r) {
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
233 var results = [];
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
234 var tests = [
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
235 ['http://127.0.0.1:$p2/big', {max_response_body_size:128000}],
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
236 ['http://127.0.0.1:$p2/big/ok', {max_response_body_size:128000}],
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
237 ['http://127.0.0.1:$p2/chunked'],
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
238 ['http://127.0.0.1:$p2/chunked/ok'],
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
239 ['http://127.0.0.1:$p2/chunked/big', {max_response_body_size:128}],
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
240 ['http://127.0.0.1:$p2/chunked/big'],
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
241 ];
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
242
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
243 function collect(v) {
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
244 results.push(v);
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
245
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
246 if (results.length == tests.length) {
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
247 results.sort();
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
248 r.return(200, JSON.stringify(results));
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
249 }
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
250 }
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
251
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
252 tests.forEach(args => {
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
253 ngx.fetch.apply(r, args)
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
254 .then(reply => reply.text())
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
255 .then(body => collect(body.length))
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
256 .catch(e => collect(e.message))
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
257 })
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
258 }
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
259
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
260 function header(r) {
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
261 var url = `http://127.0.0.1:$p2/\${r.args.loc}`;
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
262 var method = r.args.method ? r.args.method : 'get';
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
263
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
264 var p = ngx.fetch(url)
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
265
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
266 if (r.args.readBody) {
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
267 p = p.then(rep =>
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
268 rep.text().then(body => {rep.text = body; return rep;}))
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
269 }
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
270
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
271 p.then(reply => {
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
272 var h = reply.headers[method](r.args.h);
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
273 r.return(200, njs.dump(h));
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
274 })
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
275 .catch(e => r.return(501, e.message))
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
276 }
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
277
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
278 function multi(r) {
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
279 var results = [];
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
280 var tests = [
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
281 [
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
282 'http://127.0.0.1:$p0/loc',
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
283 { headers: {Code: 201, Host: 'aaa'}},
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
284 ],
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
285 [
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
286 'http://127.0.0.1:$p0/loc',
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
287 { method:'POST', headers: {Code: 401, Host: 'bbb'}, body: 'OK'},
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
288 ],
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
289 [
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
290 'http://127.0.0.1:$p1/loc',
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
291 { method:'PATCH',
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
292 headers: {foo:undefined, bar:'xxx', Host: 'ccc'}},
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
293 ],
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
294 ];
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
295
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
296 function cmp(a,b) {
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
297 if (a.b > b.b) {return 1;}
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
298 if (a.b < b.b) {return -1;}
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
299 return 0
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
300 }
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
301
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
302 tests.forEach(args => {
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
303 ngx.fetch.apply(r, args)
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
304 .then(rep =>
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
305 rep.text().then(body => {rep.text = body; return rep;}))
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
306 .then(rep => {
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
307 results.push({b:rep.text,
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
308 c:rep.status,
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
309 u:rep.url});
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
310
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
311 if (results.length == tests.length) {
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
312 results.sort(cmp);
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
313 r.return(200, JSON.stringify(results));
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
314 }
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
315 })
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
316 .catch(e => {
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
317 r.return(400, `["\${e.message}"]`);
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
318 throw e;
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
319 })
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
320 })
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
321
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
322 if (r.args.throw) {
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
323 throw 'Oops';
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
324 }
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
325 }
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
326
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
327 function str(v) { return v ? v : ''};
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
328
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
329 function loc(r) {
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
330 var v = r.variables;
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
331 var body = str(r.requestText);
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
332 var foo = str(r.headersIn.foo);
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
333 var bar = str(r.headersIn.bar);
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
334 var c = r.headersIn.code ? Number(r.headersIn.code) : 200;
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
335 r.return(c, `\${v.host}:\${v.request_method}:\${foo}:\${bar}:\${body}`);
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
336 }
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
337
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
338 export default {njs: test_njs, body, broken, broken_response,
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
339 chain, chunked, header, multi, loc, property};
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
340 EOF
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
341
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
342 $t->try_run('no njs.fetch')->plan(27);
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
343
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
344 $t->run_daemon(\&http_daemon, port(8082));
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
345 $t->waitforsocket('127.0.0.1:' . port(8082));
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
346
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
347 ###############################################################################
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
348
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
349 local $TODO = 'not yet'
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
350 unless http_get('/njs') =~ /^([.0-9]+)$/m && $1 ge '0.5.1';
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
351
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
352 like(http_get('/body?getter=arrayBuffer&loc=loc'), qr/200 OK.*"aaa:GET:::"$/s,
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
353 'fetch body arrayBuffer');
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
354 like(http_get('/body?getter=text&loc=loc'), qr/200 OK.*"aaa:GET:::"$/s,
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
355 'fetch body text');
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
356 like(http_get('/body?getter=json&loc=json&path=b.c'),
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
357 qr/200 OK.*"FIELD"$/s, 'fetch body json');
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
358 like(http_get('/body?getter=json&loc=loc'), qr/501/s,
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
359 'fetch body json invalid');
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
360 like(http_get('/property?pr=bodyUsed'), qr/false$/s,
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
361 'fetch bodyUsed false');
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
362 like(http_get('/property?pr=bodyUsed&readBody=1'), qr/true$/s,
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
363 'fetch bodyUsed true');
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
364 like(http_get('/property?pr=ok'), qr/200 OK.*true$/s,
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
365 'fetch ok true');
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
366 like(http_get('/property?pr=ok&code=401'), qr/200 OK.*false$/s,
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
367 'fetch ok false');
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
368 like(http_get('/property?pr=redirected'), qr/200 OK.*false$/s,
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
369 'fetch redirected false');
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
370 like(http_get('/property?pr=statusText'), qr/200 OK.*OK$/s,
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
371 'fetch statusText OK');
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
372 like(http_get('/property?pr=statusText&code=403'), qr/200 OK.*Forbidden$/s,
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
373 'fetch statusText Forbidden');
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
374 like(http_get('/property?pr=type'), qr/200 OK.*basic$/s,
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
375 'fetch type');
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
376 like(http_get('/header?loc=duplicate_header&h=BAR'), qr/200 OK.*c$/s,
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
377 'fetch header');
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
378 like(http_get('/header?loc=duplicate_header&h=BARR'), qr/200 OK.*null$/s,
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
379 'fetch no header');
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
380 like(http_get('/header?loc=duplicate_header&h=foo'), qr/200 OK.*a,b$/s,
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
381 'fetch header duplicate');
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
382 like(http_get('/header?loc=duplicate_header&h=BAR&method=getAll'),
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
383 qr/200 OK.*\['c']$/s, 'fetch getAll header');
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
384 like(http_get('/header?loc=duplicate_header&h=BARR&method=getAll'),
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
385 qr/200 OK.*\[]$/s, 'fetch getAll no header');
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
386 like(http_get('/header?loc=duplicate_header&h=FOO&method=getAll'),
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
387 qr/200 OK.*\['a','b']$/s, 'fetch getAll duplicate');
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
388 like(http_get('/header?loc=duplicate_header&h=bar&method=has'),
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
389 qr/200 OK.*true$/s, 'fetch header has');
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
390 like(http_get('/header?loc=duplicate_header&h=buz&method=has'),
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
391 qr/200 OK.*false$/s, 'fetch header does not have');
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
392 like(http_get('/header?loc=chunked/big&h=BAR&readBody=1'), qr/200 OK.*xxx$/s,
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
393 'fetch chunked header');
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
394 is(get_json('/multi'),
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
395 '[{"b":"aaa:GET:::","c":201,"u":"http://127.0.0.1:'.$p0.'/loc"},' .
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
396 '{"b":"bbb:POST:::OK","c":401,"u":"http://127.0.0.1:'.$p0.'/loc"},' .
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
397 '{"b":"ccc:PATCH::xxx:","c":200,"u":"http://127.0.0.1:'.$p1.'/loc"}]',
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
398 'fetch multi');
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
399 like(http_get('/multi?throw=1'), qr/500/s, 'fetch destructor');
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
400 is(get_json('/broken'),
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
401 '[' .
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
402 '"connect failed",' .
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
403 '"failed to convert url arg",' .
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
404 '"invalid url",' .
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
405 '"unsupported URL prefix"]', 'fetch broken');
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
406 is(get_json('/broken_response'),
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
407 '["invalid fetch content length",' .
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
408 '"invalid fetch header",' .
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
409 '"invalid fetch status line",' .
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
410 '"prematurely closed connection",' .
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
411 '"prematurely closed connection"]', 'fetch broken response');
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
412 is(get_json('/chunked'),
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
413 '[10,100010,25500,' .
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
414 '"invalid fetch chunked response",' .
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
415 '"prematurely closed connection",' .
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
416 '"very large fetch chunked response"]', 'fetch chunked');
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
417 like(http_get('/chain'), qr/200 OK.*SUCCESS$/s, 'fetch chain');
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
418
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
419 ###############################################################################
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
420
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
421 sub recode {
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
422 my $json;
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
423 eval { $json = JSON::PP::decode_json(shift) };
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
424
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
425 if ($@) {
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
426 return "<failed to parse JSON>";
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
427 }
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
428
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
429 JSON::PP->new()->canonical()->encode($json);
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
430 }
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
431
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
432 sub get_json {
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
433 http_get(shift) =~ /\x0d\x0a?\x0d\x0a?(.*)/ms;
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
434 recode($1);
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
435 }
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
436
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
437 ###############################################################################
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
438
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
439 sub http_daemon {
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
440 my $port = shift;
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
441
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
442 my $server = IO::Socket::INET->new(
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
443 Proto => 'tcp',
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
444 LocalAddr => '127.0.0.1:' . $port,
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
445 Listen => 5,
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
446 Reuse => 1
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
447 ) or die "Can't create listening socket: $!\n";
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
448
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
449 local $SIG{PIPE} = 'IGNORE';
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
450
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
451 while (my $client = $server->accept()) {
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
452 $client->autoflush(1);
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
453
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
454 my $headers = '';
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
455 my $uri = '';
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
456
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
457 while (<$client>) {
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
458 $headers .= $_;
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
459 last if (/^\x0d?\x0a?$/);
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
460 }
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
461
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
462 $uri = $1 if $headers =~ /^\S+\s+([^ ]+)\s+HTTP/i;
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
463
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
464 if ($uri eq '/status_line') {
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
465 print $client
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
466 "HTTP/1.1 2A";
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
467
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
468 } elsif ($uri eq '/content_length') {
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
469 print $client
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
470 "HTTP/1.1 200 OK" . CRLF .
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
471 "Content-Length: " . CRLF .
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
472 "Connection: close" . CRLF .
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
473 CRLF;
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
474
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
475 } elsif ($uri eq '/header') {
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
476 print $client
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
477 "HTTP/1.1 200 OK" . CRLF .
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
478 "@#" . CRLF .
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
479 "Connection: close" . CRLF .
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
480 CRLF;
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
481
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
482 } elsif ($uri eq '/duplicate_header') {
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
483 print $client
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
484 "HTTP/1.1 200 OK" . CRLF .
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
485 "Foo: a" . CRLF .
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
486 "bar: c" . CRLF .
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
487 "Foo: b" . CRLF .
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
488 "Connection: close" . CRLF .
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
489 CRLF;
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
490
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
491 } elsif ($uri eq '/headers') {
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
492 print $client
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
493 "HTTP/1.1 200 OK" . CRLF .
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
494 "Connection: close" . CRLF;
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
495
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
496 } elsif ($uri eq '/length') {
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
497 print $client
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
498 "HTTP/1.1 200 OK" . CRLF .
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
499 "Content-Length: 100" . CRLF .
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
500 "Connection: close" . CRLF .
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
501 CRLF .
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
502 "unfinished" . CRLF;
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
503
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
504 } elsif ($uri eq '/big') {
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
505 print $client
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
506 "HTTP/1.1 200 OK" . CRLF .
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
507 "Content-Length: 100100" . CRLF .
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
508 "Connection: close" . CRLF .
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
509 CRLF;
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
510 for (1 .. 1000) {
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
511 print $client ("X" x 98) . CRLF;
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
512 }
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
513 print $client "unfinished" . CRLF;
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
514
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
515 } elsif ($uri eq '/big/ok') {
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
516 print $client
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
517 "HTTP/1.1 200 OK" . CRLF .
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
518 "Content-Length: 100010" . CRLF .
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
519 "Connection: close" . CRLF .
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
520 CRLF;
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
521 for (1 .. 1000) {
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
522 print $client ("X" x 98) . CRLF;
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
523 }
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
524 print $client "finished" . CRLF;
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
525
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
526 } elsif ($uri eq '/chunked') {
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
527 print $client
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
528 "HTTP/1.1 200 OK" . CRLF .
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
529 "Transfer-Encoding: chunked" . CRLF .
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
530 "Connection: close" . CRLF .
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
531 CRLF .
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
532 "ff" . CRLF .
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
533 "unfinished" . CRLF;
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
534
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
535 } elsif ($uri eq '/chunked/ok') {
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
536 print $client
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
537 "HTTP/1.1 200 OK" . CRLF .
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
538 "Transfer-Encoding: chunked" . CRLF .
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
539 "Connection: close" . CRLF .
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
540 CRLF .
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
541 "a" . CRLF .
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
542 "finished" . CRLF .
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
543 CRLF . "0" . CRLF . CRLF;
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
544 } elsif ($uri eq '/chunked/big') {
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
545 print $client
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
546 "HTTP/1.1 200 OK" . CRLF .
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
547 "Transfer-Encoding: chunked" . CRLF .
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
548 "Bar: xxx" . CRLF .
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
549 "Connection: close" . CRLF .
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
550 CRLF;
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
551
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
552 for (1 .. 100) {
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
553 print $client "ff" . CRLF . ("X" x 255) . CRLF;
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
554 }
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
555
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
556 print $client "0" . CRLF . CRLF;
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
557 }
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
558 }
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
559 }
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
560
67adc5fd0548 Tests: added js tests for ngx.fetch() method.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
561 ###############################################################################