Mercurial > hg > nginx-tests
annotate js_fetch_objects.t @ 1851:0351dee227a8
Tests: unbreak tests with dynamic certificates on stable.
In 74cffa9d4c43, ticket based session reuse is enabled in addition to
using a shared SSL session cache. This changed how a session can be
resumed in a different server:
- for a session ID based resumption, it is resumed in the same context
- when using session tickets, a key name is also checked for matching
- with a ticket callback, this is skipped in favor of callback's logic
This makes 'session id context match' tests fail with session tickets
on stable since ticket key names are unique in distinct SSL contexts.
On the other hand, tests pass on 1.23.2+ due to automatic ticket keys
rotation that installs ticket callback, and using a common shared SSL
session cache.
author | Sergey Kandaurov <pluknet@nginx.com> |
---|---|
date | Tue, 28 Mar 2023 01:36:32 +0400 |
parents | de6aeda5c274 |
children | 0152ce2de27f |
rev | line source |
---|---|
1814
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
1 #!/usr/bin/perl |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
2 |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
3 # (C) Dmitry Volyntsev |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
4 # (C) Nginx, Inc. |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
5 |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
6 # Tests for http njs module, fetch objects. |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
7 |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
8 ############################################################################### |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
9 |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
10 use warnings; |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
11 use strict; |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
12 |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
13 use Test::More; |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
14 |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
15 BEGIN { use FindBin; chdir($FindBin::Bin); } |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
16 |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
17 use lib 'lib'; |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
18 use Test::Nginx; |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
19 |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
20 ############################################################################### |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
21 |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
22 select STDERR; $| = 1; |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
23 select STDOUT; $| = 1; |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
24 |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
25 my $t = Test::Nginx->new()->has(qw/http rewrite/) |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
26 ->write_file_expand('nginx.conf', <<'EOF'); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
27 |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
28 %%TEST_GLOBALS%% |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
29 |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
30 daemon off; |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
31 |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
32 events { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
33 } |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
34 |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
35 http { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
36 %%TEST_GLOBALS_HTTP%% |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
37 |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
38 js_import test.js; |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
39 |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
40 server { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
41 listen 127.0.0.1:8080; |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
42 server_name localhost; |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
43 |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
44 location /njs { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
45 js_content test.njs; |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
46 } |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
47 |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
48 location /headers { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
49 js_content test.headers; |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
50 } |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
51 |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
52 location /request { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
53 js_content test.request; |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
54 } |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
55 |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
56 location /response { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
57 js_content test.response; |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
58 } |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
59 |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
60 location /fetch { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
61 js_content test.fetch; |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
62 } |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
63 |
1821
1792ba2e8026
Tests: fixed js tests for Fetch API for nginx-1.22 and below.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1814
diff
changeset
|
64 location /fetch_multi_header { |
1792ba2e8026
Tests: fixed js tests for Fetch API for nginx-1.22 and below.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1814
diff
changeset
|
65 js_content test.fetch_multi_header; |
1792ba2e8026
Tests: fixed js tests for Fetch API for nginx-1.22 and below.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1814
diff
changeset
|
66 } |
1792ba2e8026
Tests: fixed js tests for Fetch API for nginx-1.22 and below.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1814
diff
changeset
|
67 |
1814
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
68 location /method { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
69 return 200 $request_method; |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
70 } |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
71 |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
72 location /header { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
73 return 200 $http_a; |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
74 } |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
75 |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
76 location /body { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
77 js_content test.body; |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
78 } |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
79 } |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
80 } |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
81 |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
82 EOF |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
83 |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
84 my $p0 = port(8080); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
85 |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
86 $t->write_file('test.js', <<EOF); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
87 function test_njs(r) { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
88 r.return(200, njs.version); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
89 } |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
90 |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
91 function header(r) { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
92 r.return(200, r.headersIn.a); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
93 } |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
94 |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
95 function body(r) { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
96 r.return(201, r.requestText); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
97 } |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
98 |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
99 async function run(r, tests) { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
100 var fails = []; |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
101 for (var i = 0; i < tests.length; i++) { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
102 var v, t = tests[i]; |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
103 |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
104 try { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
105 v = await t[1](); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
106 |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
107 } catch (e) { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
108 v = e.message; |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
109 } |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
110 |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
111 if (v != t[2]) { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
112 fails.push(`\${t[0]}: got "\${v}" expected: "\${t[2]}"\n`); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
113 } |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
114 } |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
115 |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
116 r.return(fails.length ? 400 : 200, fails); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
117 } |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
118 |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
119 async function headers(r) { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
120 const tests = [ |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
121 ['empty', () => { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
122 var h = new Headers(); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
123 return h.get('a'); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
124 }, null], |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
125 ['normal', () => { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
126 var h = new Headers({a: 'X', b: 'Z'}); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
127 return `\${h.get('a')} \${h.get('B')}`; |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
128 }, 'X Z'], |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
129 ['trim value', () => { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
130 var h = new Headers({a: ' X '}); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
131 return h.get('a'); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
132 }, 'X'], |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
133 ['invalid header name', () => { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
134 const valid = "!#\$\%&'*+-.^_`|~0123456789"; |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
135 |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
136 for (var i = 0; i < 128; i++) { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
137 var c = String.fromCodePoint(i); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
138 |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
139 if (valid.indexOf(c) != -1 || /[a-zA-Z]+/.test(c)) { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
140 continue; |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
141 } |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
142 |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
143 try { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
144 new Headers([[c, 'a']]); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
145 throw new Error( |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
146 `header with "\${c}" (\${i}) should throw`); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
147 |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
148 } catch (e) { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
149 if (e.message != 'invalid header name') { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
150 throw e; |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
151 } |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
152 } |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
153 } |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
154 |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
155 return 'OK'; |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
156 |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
157 }, 'OK'], |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
158 ['invalid header value', () => { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
159 var h = new Headers({A: 'aa\x00a'}); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
160 }, 'invalid header value'], |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
161 ['forbidden header', () => { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
162 const forbidden = ['Host', 'Connection', 'Content-length']; |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
163 forbidden.forEach(fh => { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
164 var headers = {}; |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
165 headers[fh] = 'xxx'; |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
166 headers.foo = 'bar'; |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
167 |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
168 var h = new Headers(headers); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
169 if (h.get(fh) != 'xxx') { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
170 throw new Error(`forbidden header \${fh}`); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
171 } |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
172 |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
173 if (h.get('foo') != 'bar') { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
174 throw new Error( |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
175 `non forbidden header foo: \${h.get('foo')}`); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
176 } |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
177 }) |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
178 |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
179 return 'OK'; |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
180 |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
181 }, 'OK'], |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
182 ['combine', () => { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
183 var h = new Headers({a: 'X', A: 'Z'}); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
184 return h.get('a'); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
185 }, 'X, Z'], |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
186 ['combine2', () => { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
187 var h = new Headers([['A', 'x'], ['a', 'z']]); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
188 return h.get('a'); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
189 }, 'x, z'], |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
190 ['combine3', () => { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
191 var h = new Headers(); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
192 h.append('a', 'A'); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
193 h.append('a', 'B'); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
194 h.append('a', 'C'); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
195 h.append('a', 'D'); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
196 h.append('a', 'E'); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
197 h.append('a', 'F'); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
198 return h.get('a'); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
199 }, 'A, B, C, D, E, F'], |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
200 ['getAll', () => { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
201 var h = new Headers({a: 'X', A: 'Z'}); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
202 return njs.dump(h.getAll('a')); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
203 }, "['X','Z']"], |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
204 ['inherit', () => { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
205 var h = new Headers({a: 'X', b: 'Y'}); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
206 var h2 = new Headers(h); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
207 h2.append('c', 'Z'); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
208 return h2.has('a') && h2.has('B') && h2.has('c'); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
209 }, true], |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
210 ['delete', () => { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
211 var h = new Headers({a: 'X', b: 'Z'}); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
212 h.delete('b'); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
213 return h.get('a') && !h.get('b'); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
214 }, true], |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
215 ['forEach', () => { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
216 var r = []; |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
217 var h = new Headers({a: '0', b: '1', c: '2'}); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
218 h.delete('b'); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
219 h.append('z', '3'); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
220 h.append('a', '4'); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
221 h.append('q', '5'); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
222 h.forEach((v, k) => { r.push(`\${v}:\${k}`)}) |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
223 return r.join('|'); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
224 }, 'a:0, 4|c:2|q:5|z:3'], |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
225 ['set', () => { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
226 var h = new Headers([['A', 'x'], ['a', 'y'], ['a', 'z']]); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
227 h.set('a', '#'); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
228 return h.get('a'); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
229 }, '#'], |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
230 ]; |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
231 |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
232 run(r, tests); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
233 } |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
234 |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
235 async function request(r) { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
236 const tests = [ |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
237 ['empty', () => { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
238 try { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
239 new Request(); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
240 throw new Error(`Request() should throw`); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
241 |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
242 } catch (e) { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
243 if (e.message != '1st argument is required') { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
244 throw e; |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
245 } |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
246 } |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
247 |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
248 return 'OK'; |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
249 |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
250 }, 'OK'], |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
251 ['normal', () => { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
252 var r = new Request("http://nginx.org", |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
253 {headers: {a: 'X', b: 'Y'}}); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
254 return `\${r.url}: \${r.method} \${r.headers.a}`; |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
255 }, 'http://nginx.org: GET X'], |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
256 ['url trim', () => { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
257 var r = new Request("\\x00\\x01\\x02\\x03\\x05\\x06\\x07\\x08" |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
258 + "\\x09\\x0a\\x0b\\x0c\\x0d\\x0e\\x0f" |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
259 + "\\x10\\x11\\x12\\x13\\x14\\x15\\x16" |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
260 + "\\x17\\x18\\x19\\x1a\\x1b\\x1c\\x1d" |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
261 + "\\x1e\\x1f\\x20http://nginx.org\\x00" |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
262 + "\\x01\\x02\\x03\\x05\\x06\\x07\\x08" |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
263 + "\\x09\\x0a\\x0b\\x0c\\x0d\\x0e\\x0f" |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
264 + "\\x10\\x11\\x12\\x13\\x14\\x15\\x16" |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
265 + "\\x17\\x18\\x19\\x1a\\x1b\\x1c\\x1d" |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
266 + "\\x1e\\x1f\\x20"); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
267 return r.url; |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
268 }, 'http://nginx.org'], |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
269 ['read only', () => { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
270 var r = new Request("http://nginx.org"); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
271 |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
272 const props = ['bodyUsed', 'cache', 'credentials', 'headers', |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
273 'method', 'mode', 'url']; |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
274 try { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
275 props.forEach(prop => { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
276 r[prop] = 1; |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
277 throw new Error( |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
278 `setting read-only \${prop} should throw`); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
279 }) |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
280 |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
281 } catch (e) { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
282 if (!e.message.startsWith('Cannot assign to read-only p')) { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
283 throw e; |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
284 } |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
285 } |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
286 |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
287 return 'OK'; |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
288 |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
289 }, 'OK'], |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
290 ['cache', () => { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
291 const props = ['default', 'no-cache', 'no-store', 'reload', |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
292 'force-cache', 'only-if-cached', '#']; |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
293 try { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
294 props.forEach(cv => { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
295 var r = new Request("http://nginx.org", {cache: cv}); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
296 if (r.cache != cv) { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
297 throw new Error(`r.cache != \${cv}`); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
298 } |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
299 }) |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
300 |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
301 } catch (e) { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
302 if (!e.message.startsWith('unknown cache type: #')) { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
303 throw e; |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
304 } |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
305 } |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
306 |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
307 return 'OK'; |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
308 |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
309 }, 'OK'], |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
310 ['credentials', () => { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
311 const props = ['omit', 'include', 'same-origin', '#']; |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
312 try { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
313 props.forEach(cr => { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
314 var r = new Request("http://nginx.org", |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
315 {credentials: cr}); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
316 if (r.credentials != cr) { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
317 throw new Error(`r.credentials != \${cr}`); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
318 } |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
319 }) |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
320 |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
321 } catch (e) { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
322 if (!e.message.startsWith('unknown credentials type: #')) { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
323 throw e; |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
324 } |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
325 } |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
326 |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
327 return 'OK'; |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
328 |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
329 }, 'OK'], |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
330 ['forbidden request header', () => { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
331 const forbidden = ['Host', 'Connection', 'Content-length']; |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
332 forbidden.forEach(fh => { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
333 var r = new Request("http://nginx.org", |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
334 {headers: {[fh]: 'xxx', foo: 'bar'}}); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
335 if (r.headers.get(fh) != null) { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
336 throw new Error(`forbidden header \${fh}`); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
337 } |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
338 |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
339 if (r.headers.get('foo') != 'bar') { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
340 throw new Error( |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
341 `non forbidden header foo: \${r.headers.get('foo')}`); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
342 } |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
343 }) |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
344 |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
345 return 'OK'; |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
346 |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
347 }, 'OK'], |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
348 ['method', () => { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
349 const methods = ['get', 'hEad', 'Post', 'OPTIONS', 'PUT', |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
350 'DELETE', 'CONNECT']; |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
351 try { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
352 methods.forEach(m => { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
353 var r = new Request("http://nginx.org", {method: m}); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
354 if (r.method != m.toUpperCase()) { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
355 throw new Error(`r.method != \${m}`); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
356 } |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
357 }) |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
358 |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
359 } catch (e) { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
360 if (!e.message.startsWith('forbidden method: CONNECT')) { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
361 throw e; |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
362 } |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
363 } |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
364 |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
365 return 'OK'; |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
366 |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
367 }, 'OK'], |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
368 ['mode', () => { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
369 const props = ['same-origin', 'cors', 'no-cors', 'navigate', |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
370 'websocket', '#']; |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
371 try { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
372 props.forEach(m => { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
373 var r = new Request("http://nginx.org", {mode: m}); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
374 if (r.mode != m) { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
375 throw new Error(`r.mode != \${m}`); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
376 } |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
377 }) |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
378 |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
379 } catch (e) { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
380 if (!e.message.startsWith('unknown mode type: #')) { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
381 throw e; |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
382 } |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
383 } |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
384 |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
385 return 'OK'; |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
386 |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
387 }, 'OK'], |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
388 ['inherit', () => { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
389 var r = new Request("http://nginx.org", |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
390 {headers: {a: 'X', b: 'Y'}}); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
391 var r2 = new Request(r); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
392 r2.headers.append('a', 'Z') |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
393 return `\${r2.url}: \${r2.headers.get('a')}`; |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
394 }, 'http://nginx.org: X, Z'], |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
395 ['inherit2', () => { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
396 var r = new Request("http://nginx.org", |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
397 {headers: {a: 'X', b: 'Y'}}); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
398 var r2 = new Request(r); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
399 r2.headers.append('a', 'Z') |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
400 return `\${r.url}: \${r.headers.get('a')}`; |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
401 }, 'http://nginx.org: X'], |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
402 ['inherit3', () => { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
403 var h = new Headers(); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
404 h.append('a', 'X'); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
405 h.append('a', 'Z'); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
406 var r = new Request("http://nginx.org", {headers: h}); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
407 return `\${r.url}: \${r.headers.get('a')}`; |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
408 }, 'http://nginx.org: X, Z'], |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
409 ['content type', async () => { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
410 var r = new Request("http://nginx.org", |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
411 {body: 'ABC', method: 'POST'}); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
412 var body = await r.text(); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
413 return `\${body}: \${r.headers.get('Content-Type')}`; |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
414 }, 'ABC: text/plain;charset=UTF-8'], |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
415 ['GET body', () => { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
416 try { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
417 var r = new Request("http://nginx.org", {body: 'ABC'}); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
418 |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
419 } catch (e) { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
420 if (!e.message.startsWith('Request body incompatible w')) { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
421 throw e; |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
422 } |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
423 } |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
424 |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
425 return 'OK'; |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
426 |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
427 }, 'OK'], |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
428 ]; |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
429 |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
430 run(r, tests); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
431 } |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
432 |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
433 async function response(r) { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
434 const tests = [ |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
435 ['empty', async () => { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
436 var r = new Response(); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
437 var body = await r.text(); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
438 return `\${r.url}: \${r.status} \${body} \${r.headers.get('a')}`; |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
439 }, ': 200 null'], |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
440 ['normal', async () => { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
441 var r = new Response("ABC", {headers: {a: 'X', b: 'Y'}}); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
442 var body = await r.text(); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
443 return `\${r.url}: \${r.status} \${body} \${r.headers.get('a')}`; |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
444 }, ': 200 ABC X'], |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
445 ['headers', async () => { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
446 var r = new Response(null, |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
447 {headers: new Headers({a: 'X', b: 'Y'})}); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
448 var body = await r.text(); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
449 return `\${r.url}: \${body} \${r.headers.get('b')}`; |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
450 }, ': Y'], |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
451 ['json', async () => { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
452 var r = new Response('{"a": {"b": 42}}'); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
453 var json = await r.json(); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
454 return json.a.b; |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
455 }, 42], |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
456 ['statusText', () => { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
457 const statuses = ['status text', 'aa\\u0000a']; |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
458 try { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
459 statuses.forEach(s => { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
460 var r = new Response(null, {statusText: s}); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
461 if (r.statusText != s) { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
462 throw new Error(`r.statusText != \${s}`); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
463 } |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
464 }) |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
465 |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
466 } catch (e) { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
467 if (!e.message.startsWith('invalid Response statusText')) { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
468 throw e; |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
469 } |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
470 } |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
471 |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
472 return 'OK'; |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
473 |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
474 }, 'OK'], |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
475 ]; |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
476 |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
477 run(r, tests); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
478 } |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
479 |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
480 async function fetch(r) { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
481 const tests = [ |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
482 ['method', async () => { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
483 var req = new Request("http://127.0.0.1:$p0/method", |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
484 {method: 'PUT'}); |
1822
de6aeda5c274
Tests: removed excessive tab characters from js_fetch_objects.t.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1821
diff
changeset
|
485 var r = await ngx.fetch(req); |
de6aeda5c274
Tests: removed excessive tab characters from js_fetch_objects.t.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1821
diff
changeset
|
486 var body = await r.text(); |
1814
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
487 return `\${r.url}: \${r.status} \${body} \${r.headers.get('a')}`; |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
488 }, 'http://127.0.0.1:$p0/method: 200 PUT null'], |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
489 ['request body', async () => { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
490 var req = new Request("http://127.0.0.1:$p0/body", |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
491 {body: 'foo'}); |
1822
de6aeda5c274
Tests: removed excessive tab characters from js_fetch_objects.t.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1821
diff
changeset
|
492 var r = await ngx.fetch(req); |
de6aeda5c274
Tests: removed excessive tab characters from js_fetch_objects.t.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1821
diff
changeset
|
493 var body = await r.text(); |
1814
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
494 return `\${r.url}: \${r.status} \${body}`; |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
495 }, 'http://127.0.0.1:$p0/body: 201 foo'], |
1821
1792ba2e8026
Tests: fixed js tests for Fetch API for nginx-1.22 and below.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1814
diff
changeset
|
496 ]; |
1792ba2e8026
Tests: fixed js tests for Fetch API for nginx-1.22 and below.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1814
diff
changeset
|
497 |
1792ba2e8026
Tests: fixed js tests for Fetch API for nginx-1.22 and below.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1814
diff
changeset
|
498 run(r, tests); |
1792ba2e8026
Tests: fixed js tests for Fetch API for nginx-1.22 and below.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1814
diff
changeset
|
499 } |
1792ba2e8026
Tests: fixed js tests for Fetch API for nginx-1.22 and below.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1814
diff
changeset
|
500 |
1792ba2e8026
Tests: fixed js tests for Fetch API for nginx-1.22 and below.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1814
diff
changeset
|
501 async function fetch_multi_header(r) { |
1792ba2e8026
Tests: fixed js tests for Fetch API for nginx-1.22 and below.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1814
diff
changeset
|
502 const tests = [ |
1792ba2e8026
Tests: fixed js tests for Fetch API for nginx-1.22 and below.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1814
diff
changeset
|
503 ['request multi header', async () => { |
1814
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
504 var h = new Headers({a: 'X'}); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
505 h.append('a', 'Z'); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
506 var req = new Request("http://127.0.0.1:$p0/header", |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
507 {headers: h}); |
1821
1792ba2e8026
Tests: fixed js tests for Fetch API for nginx-1.22 and below.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1814
diff
changeset
|
508 var r = await ngx.fetch(req); |
1792ba2e8026
Tests: fixed js tests for Fetch API for nginx-1.22 and below.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1814
diff
changeset
|
509 var body = await r.text(); |
1814
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
510 return `\${r.url}: \${r.status} \${body}`; |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
511 }, 'http://127.0.0.1:$p0/header: 200 X, Z'], |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
512 ]; |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
513 |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
514 run(r, tests); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
515 } |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
516 |
1821
1792ba2e8026
Tests: fixed js tests for Fetch API for nginx-1.22 and below.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1814
diff
changeset
|
517 export default {njs: test_njs, body, headers, request, response, fetch, |
1792ba2e8026
Tests: fixed js tests for Fetch API for nginx-1.22 and below.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1814
diff
changeset
|
518 fetch_multi_header}; |
1814
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
519 EOF |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
520 |
1821
1792ba2e8026
Tests: fixed js tests for Fetch API for nginx-1.22 and below.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1814
diff
changeset
|
521 $t->try_run('no njs')->plan(5); |
1814
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
522 |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
523 ############################################################################### |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
524 |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
525 local $TODO = 'not yet' unless has_version('0.7.10'); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
526 |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
527 like(http_get('/headers'), qr/200 OK/s, 'headers tests'); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
528 like(http_get('/request'), qr/200 OK/s, 'request tests'); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
529 like(http_get('/response'), qr/200 OK/s, 'response tests'); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
530 like(http_get('/fetch'), qr/200 OK/s, 'fetch tests'); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
531 |
1821
1792ba2e8026
Tests: fixed js tests for Fetch API for nginx-1.22 and below.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1814
diff
changeset
|
532 TODO: { |
1792ba2e8026
Tests: fixed js tests for Fetch API for nginx-1.22 and below.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1814
diff
changeset
|
533 local $TODO = 'not yet' unless $t->has_version('1.23.0'); |
1792ba2e8026
Tests: fixed js tests for Fetch API for nginx-1.22 and below.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1814
diff
changeset
|
534 |
1792ba2e8026
Tests: fixed js tests for Fetch API for nginx-1.22 and below.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1814
diff
changeset
|
535 like(http_get('/fetch_multi_header'), qr/200 OK/s, |
1792ba2e8026
Tests: fixed js tests for Fetch API for nginx-1.22 and below.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1814
diff
changeset
|
536 'fetch multi header tests'); |
1792ba2e8026
Tests: fixed js tests for Fetch API for nginx-1.22 and below.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1814
diff
changeset
|
537 |
1792ba2e8026
Tests: fixed js tests for Fetch API for nginx-1.22 and below.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1814
diff
changeset
|
538 } |
1792ba2e8026
Tests: fixed js tests for Fetch API for nginx-1.22 and below.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
1814
diff
changeset
|
539 |
1814
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
540 ############################################################################### |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
541 |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
542 sub has_version { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
543 my $need = shift; |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
544 |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
545 http_get('/njs') =~ /^([.0-9]+)$/m; |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
546 |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
547 my @v = split(/\./, $1); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
548 my ($n, $v); |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
549 |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
550 for $n (split(/\./, $need)) { |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
551 $v = shift @v || 0; |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
552 return 0 if $n > $v; |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
553 return 1 if $v > $n; |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
554 } |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
555 |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
556 return 1; |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
557 } |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
558 |
1d88487eafbf
Tests: added js tests for Fetch API objects.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff
changeset
|
559 ############################################################################### |