annotate stream_js_fetch_https.t @ 1888:cc13f7b098db

Tests: avoid premature stream reset in h3_limit_req.t. STREAM and RESET_STREAM frames could be batched, which prevents the stream from being processed and changes the status code. The fix is to wait for the stream acknowledgment. Here we just look at the largest acknowledged, this should be enough for simple cases.
author Sergey Kandaurov <pluknet@nginx.com>
date Tue, 04 Apr 2023 00:33:54 +0400
parents cdcd75657e52
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1736
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
1 #!/usr/bin/perl
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
2
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
3 # (C) Dmitry Volyntsev
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
4 # (C) Nginx, Inc.
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
5
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
6 # Tests for stream njs module, fetch method, https support.
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
7
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
8 ###############################################################################
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
9
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
10 use warnings;
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
11 use strict;
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
12
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
13 use Test::More;
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
14
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
15 BEGIN { use FindBin; chdir($FindBin::Bin); }
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
16
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
17 use lib 'lib';
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
18 use Test::Nginx;
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
19 use Test::Nginx::Stream qw/ stream /;
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
20
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
21 ###############################################################################
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
22
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
23 select STDERR; $| = 1;
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
24 select STDOUT; $| = 1;
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
25
1858
cdcd75657e52 Tests: added has_feature() tests for IO::Socket::SSL.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1811
diff changeset
26 my $t = Test::Nginx->new()
cdcd75657e52 Tests: added has_feature() tests for IO::Socket::SSL.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1811
diff changeset
27 ->has(qw/http http_ssl rewrite stream stream_return socket_ssl/)
cdcd75657e52 Tests: added has_feature() tests for IO::Socket::SSL.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1811
diff changeset
28 ->has_daemon('openssl')
1736
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
29 ->write_file_expand('nginx.conf', <<'EOF');
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
30
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
31 %%TEST_GLOBALS%%
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
32
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
33 daemon off;
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
34
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
35 events {
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
36 }
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
37
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
38 http {
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
39 %%TEST_GLOBALS_HTTP%%
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
40
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
41 js_import test.js;
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
42
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
43 server {
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
44 listen 127.0.0.1:8080;
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
45 server_name localhost;
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
46
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
47 location /njs {
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
48 js_content test.njs;
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
49 }
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
50 }
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
51
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
52 server {
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
53 listen 127.0.0.1:8081 ssl default;
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
54 server_name default.example.com;
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
55
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
56 ssl_certificate default.example.com.chained.crt;
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
57 ssl_certificate_key default.example.com.key;
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
58
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
59 location /loc {
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
60 return 200 "You are at default.example.com.";
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
61 }
1806
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
62
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
63 location /success {
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
64 return 200;
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
65 }
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
66
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
67 location /fail {
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
68 return 403;
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
69 }
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
70
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
71 location /backend {
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
72 return 200 "BACKEND OK";
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
73 }
1736
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
74 }
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
75
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
76 server {
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
77 listen 127.0.0.1:8081 ssl;
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
78 server_name 1.example.com;
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
79
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
80 ssl_certificate 1.example.com.chained.crt;
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
81 ssl_certificate_key 1.example.com.key;
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
82
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
83 location /loc {
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
84 return 200 "You are at 1.example.com.";
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
85 }
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
86 }
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
87 }
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
88
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
89 stream {
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
90 %%TEST_GLOBALS_STREAM%%
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
91
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
92 js_import test.js;
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
93 js_var $message;
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
94
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
95 resolver 127.0.0.1:%%PORT_8981_UDP%%;
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
96 resolver_timeout 1s;
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
97
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
98 server {
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
99 listen 127.0.0.1:8082;
1806
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
100 js_preread test.preread;
1736
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
101 return "default CA $message";
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
102 }
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
103
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
104 server {
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
105 listen 127.0.0.1:8083;
1806
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
106 js_preread test.preread;
1736
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
107 return "my CA $message";
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
108
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
109 js_fetch_ciphers HIGH:!aNull:!MD5;
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
110 js_fetch_protocols TLSv1.1 TLSv1.2;
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
111 js_fetch_trusted_certificate myca.crt;
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
112 }
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
113
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
114 server {
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
115 listen 127.0.0.1:8084;
1806
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
116 js_preread test.preread;
1736
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
117 return "my CA with verify_depth=0 $message";
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
118
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
119 js_fetch_verify_depth 0;
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
120 js_fetch_trusted_certificate myca.crt;
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
121 }
1806
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
122
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
123 server {
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
124 listen 127.0.0.1:8085;
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
125
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
126 js_access test.access_ok;
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
127 ssl_preread on;
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
128
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
129 js_fetch_ciphers HIGH:!aNull:!MD5;
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
130 js_fetch_protocols TLSv1.1 TLSv1.2;
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
131 js_fetch_trusted_certificate myca.crt;
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
132
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
133 proxy_pass 127.0.0.1:8081;
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
134 }
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
135
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
136 server {
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
137 listen 127.0.0.1:8086;
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
138
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
139 js_access test.access_nok;
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
140 ssl_preread on;
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
141
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
142 js_fetch_ciphers HIGH:!aNull:!MD5;
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
143 js_fetch_protocols TLSv1.1 TLSv1.2;
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
144 js_fetch_trusted_certificate myca.crt;
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
145
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
146 proxy_pass 127.0.0.1:8081;
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
147 }
1736
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
148 }
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
149
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
150 EOF
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
151
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
152 my $p1 = port(8081);
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
153 my $p2 = port(8082);
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
154 my $p3 = port(8083);
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
155 my $p4 = port(8084);
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
156
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
157 $t->write_file('test.js', <<EOF);
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
158 function test_njs(r) {
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
159 r.return(200, njs.version);
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
160 }
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
161
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
162 function preread(s) {
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
163 s.on('upload', function (data, flags) {
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
164 if (data.startsWith('GO')) {
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
165 s.off('upload');
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
166 ngx.fetch('https://' + data.substring(2) + ':$p1/loc')
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
167 .then(reply => {
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
168 s.variables.message = 'https OK - ' + reply.status;
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
169 s.done();
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
170 })
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
171 .catch(e => {
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
172 s.variables.message = 'https NOK - ' + e.message;
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
173 s.done();
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
174 })
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
175
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
176 } else if (data.length) {
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
177 s.deny();
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
178 }
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
179 });
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
180 }
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
181
1806
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
182 async function access_ok(s) {
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
183 let r = await ngx.fetch('https://default.example.com:$p1/success',
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
184 {body: s.remoteAddress});
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
185
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
186 (r.status == 200) ? s.allow(): s.deny();
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
187 }
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
188
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
189 async function access_nok(s) {
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
190 let r = await ngx.fetch('https://default.example.com:$p1/fail',
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
191 {body: s.remoteAddress});
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
192
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
193 (r.status == 200) ? s.allow(): s.deny();
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
194 }
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
195
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
196 export default {njs: test_njs, preread, access_ok, access_nok};
1736
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
197 EOF
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
198
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
199 my $d = $t->testdir();
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
200
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
201 $t->write_file('openssl.conf', <<EOF);
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
202 [ req ]
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
203 default_bits = 2048
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
204 encrypt_key = no
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
205 distinguished_name = req_distinguished_name
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
206 [ req_distinguished_name ]
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
207 EOF
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
208
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
209 $t->write_file('myca.conf', <<EOF);
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
210 [ ca ]
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
211 default_ca = myca
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
212
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
213 [ myca ]
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
214 new_certs_dir = $d
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
215 database = $d/certindex
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
216 default_md = sha256
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
217 policy = myca_policy
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
218 serial = $d/certserial
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
219 default_days = 1
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
220 x509_extensions = myca_extensions
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
221
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
222 [ myca_policy ]
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
223 commonName = supplied
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
224
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
225 [ myca_extensions ]
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
226 basicConstraints = critical,CA:TRUE
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
227 EOF
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
228
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
229 system('openssl req -x509 -new '
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
230 . "-config $d/openssl.conf -subj /CN=myca/ "
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
231 . "-out $d/myca.crt -keyout $d/myca.key "
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
232 . ">>$d/openssl.out 2>&1") == 0
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
233 or die "Can't create self-signed certificate for CA: $!\n";
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
234
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
235 foreach my $name ('intermediate', 'default.example.com', '1.example.com') {
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
236 system("openssl req -new "
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
237 . "-config $d/openssl.conf -subj /CN=$name/ "
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
238 . "-out $d/$name.csr -keyout $d/$name.key "
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
239 . ">>$d/openssl.out 2>&1") == 0
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
240 or die "Can't create certificate signing req for $name: $!\n";
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
241 }
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
242
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
243 $t->write_file('certserial', '1000');
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
244 $t->write_file('certindex', '');
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
245
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
246 system("openssl ca -batch -config $d/myca.conf "
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
247 . "-keyfile $d/myca.key -cert $d/myca.crt "
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
248 . "-subj /CN=intermediate/ -in $d/intermediate.csr "
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
249 . "-out $d/intermediate.crt "
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
250 . ">>$d/openssl.out 2>&1") == 0
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
251 or die "Can't sign certificate for intermediate: $!\n";
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
252
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
253 foreach my $name ('default.example.com', '1.example.com') {
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
254 system("openssl ca -batch -config $d/myca.conf "
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
255 . "-keyfile $d/intermediate.key -cert $d/intermediate.crt "
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
256 . "-subj /CN=$name/ -in $d/$name.csr -out $d/$name.crt "
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
257 . ">>$d/openssl.out 2>&1") == 0
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
258 or die "Can't sign certificate for $name $!\n";
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
259 $t->write_file("$name.chained.crt", $t->read_file("$name.crt")
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
260 . $t->read_file('intermediate.crt'));
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
261 }
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
262
1806
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
263 $t->try_run('no njs.fetch')->plan(6);
1736
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
264
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
265 $t->run_daemon(\&dns_daemon, port(8981), $t);
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
266 $t->waitforfile($t->testdir . '/' . port(8981));
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
267
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
268 ###############################################################################
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
269
1811
520fb74cce4c Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1806
diff changeset
270 local $TODO = 'not yet' unless has_version('0.7.0');
1736
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
271
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
272 like(stream("127.0.0.1:$p2")->io('GOdefault.example.com'),
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
273 qr/connect failed/s, 'stream non trusted CA');
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
274 like(stream("127.0.0.1:$p3")->io('GOdefault.example.com'),
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
275 qr/https OK/s, 'stream trusted CA');
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
276 like(stream("127.0.0.1:$p3")->io('GOlocalhost'),
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
277 qr/connect failed/s, 'stream wrong CN');
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
278 like(stream("127.0.0.1:$p4")->io('GOdefaul.example.com'),
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
279 qr/connect failed/s, 'stream verify_depth too small');
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
280
1806
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
281 like(https_get('default.example.com', port(8085), '/backend'),
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
282 qr!BACKEND OK!, 'access https fetch');
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
283 is(https_get('default.example.com', port(8086), '/backend'), '<conn failed>',
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
284 'access https fetch not');
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
285
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
286 ###############################################################################
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
287
1811
520fb74cce4c Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1806
diff changeset
288 sub has_version {
520fb74cce4c Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1806
diff changeset
289 my $need = shift;
520fb74cce4c Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1806
diff changeset
290
520fb74cce4c Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1806
diff changeset
291 http_get('/njs') =~ /^([.0-9]+)$/m;
520fb74cce4c Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1806
diff changeset
292
520fb74cce4c Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1806
diff changeset
293 my @v = split(/\./, $1);
520fb74cce4c Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1806
diff changeset
294 my ($n, $v);
520fb74cce4c Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1806
diff changeset
295
520fb74cce4c Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1806
diff changeset
296 for $n (split(/\./, $need)) {
520fb74cce4c Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1806
diff changeset
297 $v = shift @v || 0;
520fb74cce4c Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1806
diff changeset
298 return 0 if $n > $v;
520fb74cce4c Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1806
diff changeset
299 return 1 if $v > $n;
520fb74cce4c Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1806
diff changeset
300 }
520fb74cce4c Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1806
diff changeset
301
520fb74cce4c Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1806
diff changeset
302 return 1;
520fb74cce4c Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1806
diff changeset
303 }
520fb74cce4c Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1806
diff changeset
304
520fb74cce4c Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1806
diff changeset
305 ###############################################################################
520fb74cce4c Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1806
diff changeset
306
1806
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
307 sub get_ssl_socket {
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
308 my ($host, $port) = @_;
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
309 my $s;
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
310
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
311 eval {
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
312 local $SIG{ALRM} = sub { die "timeout\n" };
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
313 local $SIG{PIPE} = sub { die "sigpipe\n" };
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
314 alarm(8);
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
315 $s = IO::Socket::SSL->new(
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
316 Proto => 'tcp',
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
317 PeerAddr => '127.0.0.1:' . $port,
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
318 SSL_verify_mode => IO::Socket::SSL::SSL_VERIFY_NONE(),
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
319 SSL_error_trap => sub { die $_[1] }
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
320 );
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
321
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
322 alarm(0);
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
323 };
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
324
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
325 alarm(0);
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
326
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
327 if ($@) {
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
328 log_in("died: $@");
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
329 return undef;
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
330 }
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
331
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
332 return $s;
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
333 }
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
334
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
335 sub https_get {
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
336 my ($host, $port, $url) = @_;
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
337 my $s = get_ssl_socket($host, $port);
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
338
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
339 if (!$s) {
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
340 return '<conn failed>';
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
341 }
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
342
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
343 return http(<<EOF, socket => $s);
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
344 GET $url HTTP/1.0
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
345 Host: $host
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
346
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
347 EOF
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
348 }
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
349
1736
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
350 ###############################################################################
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
351
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
352 sub reply_handler {
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
353 my ($recv_data, $port, %extra) = @_;
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
354
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
355 my (@name, @rdata);
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
356
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
357 use constant NOERROR => 0;
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
358 use constant A => 1;
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
359 use constant IN => 1;
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
360
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
361 # default values
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
362
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
363 my ($hdr, $rcode, $ttl) = (0x8180, NOERROR, 3600);
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
364
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
365 # decode name
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
366
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
367 my ($len, $offset) = (undef, 12);
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
368 while (1) {
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
369 $len = unpack("\@$offset C", $recv_data);
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
370 last if $len == 0;
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
371 $offset++;
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
372 push @name, unpack("\@$offset A$len", $recv_data);
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
373 $offset += $len;
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
374 }
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
375
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
376 $offset -= 1;
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
377 my ($id, $type, $class) = unpack("n x$offset n2", $recv_data);
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
378
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
379 my $name = join('.', @name);
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
380
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
381 if ($type == A) {
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
382 push @rdata, rd_addr($ttl, '127.0.0.1');
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
383 }
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
384
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
385 $len = @name;
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
386 pack("n6 (C/a*)$len x n2", $id, $hdr | $rcode, 1, scalar @rdata,
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
387 0, 0, @name, $type, $class) . join('', @rdata);
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
388 }
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
389
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
390 sub rd_addr {
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
391 my ($ttl, $addr) = @_;
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
392
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
393 my $code = 'split(/\./, $addr)';
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
394
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
395 return pack 'n3N', 0xc00c, A, IN, $ttl if $addr eq '';
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
396
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
397 pack 'n3N nC4', 0xc00c, A, IN, $ttl, eval "scalar $code", eval($code);
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
398 }
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
399
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
400 sub dns_daemon {
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
401 my ($port, $t) = @_;
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
402
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
403 my ($data, $recv_data);
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
404 my $socket = IO::Socket::INET->new(
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
405 LocalAddr => '127.0.0.1',
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
406 LocalPort => $port,
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
407 Proto => 'udp',
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
408 )
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
409 or die "Can't create listening socket: $!\n";
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
410
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
411 local $SIG{PIPE} = 'IGNORE';
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
412
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
413 # signal we are ready
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
414
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
415 open my $fh, '>', $t->testdir() . '/' . $port;
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
416 close $fh;
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
417
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
418 while (1) {
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
419 $socket->recv($recv_data, 65536);
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
420 $data = reply_handler($recv_data, $port);
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
421 $socket->send($data);
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
422 }
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
423 }
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
424
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
425 ###############################################################################