Mercurial > hg > nginx-tests
annotate js_fetch.t @ 1699:202d8feedad1
Tests: added grpc test for receiving SETTINGS in grpc filter.
author | Sergey Kandaurov <pluknet@nginx.com> |
---|---|
date | Thu, 03 Jun 2021 19:51:08 +0300 |
parents | 67adc5fd0548 |
children | bdefe70ae1a7 |
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 ############################################################################### |