annotate stream_js_fetch_https.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 520fb74cce4c
children cdcd75657e52
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
1806
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
26 eval { require IO::Socket::SSL; };
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
27 plan(skip_all => 'IO::Socket::SSL not installed') if $@;
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
28 eval { 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
29 plan(skip_all => 'IO::Socket::SSL too old') if $@;
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
30
1736
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
31 my $t = Test::Nginx->new()->has(qw/http http_ssl rewrite stream stream_return/)
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
32 ->write_file_expand('nginx.conf', <<'EOF');
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
33
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
34 %%TEST_GLOBALS%%
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
35
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
36 daemon off;
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 events {
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
39 }
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 http {
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
42 %%TEST_GLOBALS_HTTP%%
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
43
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
44 js_import test.js;
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
45
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
46 server {
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
47 listen 127.0.0.1:8080;
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
48 server_name localhost;
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 location /njs {
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
51 js_content test.njs;
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
52 }
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
53 }
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
54
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
55 server {
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
56 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
57 server_name default.example.com;
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 ssl_certificate default.example.com.chained.crt;
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
60 ssl_certificate_key default.example.com.key;
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
61
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
62 location /loc {
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
63 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
64 }
1806
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 location /success {
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
67 return 200;
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
68 }
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 location /fail {
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
71 return 403;
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
72 }
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
73
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
74 location /backend {
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
75 return 200 "BACKEND OK";
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
76 }
1736
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
77 }
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
78
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
79 server {
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
80 listen 127.0.0.1:8081 ssl;
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
81 server_name 1.example.com;
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 ssl_certificate 1.example.com.chained.crt;
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
84 ssl_certificate_key 1.example.com.key;
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 location /loc {
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
87 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
88 }
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
89 }
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
90 }
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 stream {
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
93 %%TEST_GLOBALS_STREAM%%
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 js_import test.js;
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
96 js_var $message;
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 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
99 resolver_timeout 1s;
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
100
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
101 server {
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
102 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
103 js_preread test.preread;
1736
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
104 return "default CA $message";
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
105 }
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
106
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
107 server {
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
108 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
109 js_preread test.preread;
1736
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
110 return "my CA $message";
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
111
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
112 js_fetch_ciphers HIGH:!aNull:!MD5;
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
113 js_fetch_protocols TLSv1.1 TLSv1.2;
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
114 js_fetch_trusted_certificate myca.crt;
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
115 }
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
116
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
117 server {
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
118 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
119 js_preread test.preread;
1736
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
120 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
121
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
122 js_fetch_verify_depth 0;
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
123 js_fetch_trusted_certificate myca.crt;
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
124 }
1806
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 server {
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
127 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
128
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
129 js_access test.access_ok;
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
130 ssl_preread on;
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
131
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
132 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
133 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
134 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
135
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
136 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
137 }
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 server {
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
140 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
141
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
142 js_access test.access_nok;
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
143 ssl_preread on;
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
144
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
145 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
146 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
147 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
148
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
149 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
150 }
1736
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
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
153 EOF
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
154
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
155 my $p1 = port(8081);
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
156 my $p2 = port(8082);
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
157 my $p3 = port(8083);
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
158 my $p4 = port(8084);
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
159
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
160 $t->write_file('test.js', <<EOF);
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
161 function test_njs(r) {
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
162 r.return(200, njs.version);
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
163 }
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
164
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
165 function preread(s) {
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
166 s.on('upload', function (data, flags) {
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
167 if (data.startsWith('GO')) {
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
168 s.off('upload');
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
169 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
170 .then(reply => {
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
171 s.variables.message = 'https OK - ' + reply.status;
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
172 s.done();
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
173 })
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
174 .catch(e => {
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
175 s.variables.message = 'https NOK - ' + e.message;
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
176 s.done();
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
177 })
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 } else if (data.length) {
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
180 s.deny();
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
181 }
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
182 });
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
183 }
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
184
1806
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
185 async function access_ok(s) {
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
186 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
187 {body: s.remoteAddress});
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 (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
190 }
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
191
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
192 async function access_nok(s) {
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
193 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
194 {body: s.remoteAddress});
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 (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
197 }
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
198
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
199 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
200 EOF
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
201
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
202 my $d = $t->testdir();
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
203
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
204 $t->write_file('openssl.conf', <<EOF);
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
205 [ req ]
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
206 default_bits = 2048
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
207 encrypt_key = no
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
208 distinguished_name = req_distinguished_name
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
209 [ req_distinguished_name ]
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
210 EOF
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
211
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
212 $t->write_file('myca.conf', <<EOF);
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
213 [ ca ]
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
214 default_ca = myca
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
215
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
216 [ myca ]
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
217 new_certs_dir = $d
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
218 database = $d/certindex
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
219 default_md = sha256
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
220 policy = myca_policy
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
221 serial = $d/certserial
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
222 default_days = 1
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
223 x509_extensions = myca_extensions
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_policy ]
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
226 commonName = supplied
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
227
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
228 [ myca_extensions ]
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
229 basicConstraints = critical,CA:TRUE
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
230 EOF
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
231
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
232 system('openssl req -x509 -new '
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
233 . "-config $d/openssl.conf -subj /CN=myca/ "
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
234 . "-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
235 . ">>$d/openssl.out 2>&1") == 0
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
236 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
237
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
238 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
239 system("openssl req -new "
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
240 . "-config $d/openssl.conf -subj /CN=$name/ "
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
241 . "-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
242 . ">>$d/openssl.out 2>&1") == 0
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
243 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
244 }
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 $t->write_file('certserial', '1000');
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
247 $t->write_file('certindex', '');
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
248
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
249 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
250 . "-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
251 . "-subj /CN=intermediate/ -in $d/intermediate.csr "
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
252 . "-out $d/intermediate.crt "
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
253 . ">>$d/openssl.out 2>&1") == 0
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
254 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
255
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
256 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
257 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
258 . "-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
259 . "-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
260 . ">>$d/openssl.out 2>&1") == 0
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
261 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
262 $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
263 . $t->read_file('intermediate.crt'));
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
1806
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
266 $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
267
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
268 $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
269 $t->waitforfile($t->testdir . '/' . port(8981));
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
270
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
1811
520fb74cce4c Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1806
diff changeset
273 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
274
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
275 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
276 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
277 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
278 qr/https OK/s, 'stream trusted CA');
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
279 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
280 qr/connect failed/s, 'stream wrong CN');
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
281 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
282 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
283
1806
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
284 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
285 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
286 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
287 'access https fetch not');
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
288
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
289 ###############################################################################
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
290
1811
520fb74cce4c Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1806
diff changeset
291 sub has_version {
520fb74cce4c Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1806
diff changeset
292 my $need = shift;
520fb74cce4c Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1806
diff changeset
293
520fb74cce4c Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1806
diff changeset
294 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
295
520fb74cce4c Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1806
diff changeset
296 my @v = split(/\./, $1);
520fb74cce4c Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1806
diff changeset
297 my ($n, $v);
520fb74cce4c Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1806
diff changeset
298
520fb74cce4c Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1806
diff changeset
299 for $n (split(/\./, $need)) {
520fb74cce4c Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1806
diff changeset
300 $v = shift @v || 0;
520fb74cce4c Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1806
diff changeset
301 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
302 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
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 return 1;
520fb74cce4c Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1806
diff changeset
306 }
520fb74cce4c Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1806
diff changeset
307
520fb74cce4c Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1806
diff changeset
308 ###############################################################################
520fb74cce4c Tests: improved njs version check to account multi digit versions.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1806
diff changeset
309
1806
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
310 sub get_ssl_socket {
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
311 my ($host, $port) = @_;
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
312 my $s;
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
313
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
314 eval {
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
315 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
316 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
317 alarm(8);
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
318 $s = IO::Socket::SSL->new(
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
319 Proto => 'tcp',
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
320 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
321 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
322 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
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
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
328 alarm(0);
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
329
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
330 if ($@) {
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
331 log_in("died: $@");
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
332 return undef;
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 return $s;
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
336 }
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
337
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
338 sub https_get {
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
339 my ($host, $port, $url) = @_;
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
340 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
341
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
342 if (!$s) {
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
343 return '<conn failed>';
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
344 }
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
345
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
346 return http(<<EOF, socket => $s);
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
347 GET $url HTTP/1.0
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
348 Host: $host
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
349
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
350 EOF
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
351 }
564f74bf6e4d Tests: added stream fetch tests for js_access directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1736
diff changeset
352
1736
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
353 ###############################################################################
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 sub reply_handler {
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
356 my ($recv_data, $port, %extra) = @_;
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
357
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
358 my (@name, @rdata);
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
359
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
360 use constant NOERROR => 0;
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
361 use constant A => 1;
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
362 use constant IN => 1;
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
363
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
364 # default values
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
365
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
366 my ($hdr, $rcode, $ttl) = (0x8180, NOERROR, 3600);
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
367
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
368 # decode name
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
369
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
370 my ($len, $offset) = (undef, 12);
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
371 while (1) {
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
372 $len = unpack("\@$offset C", $recv_data);
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
373 last if $len == 0;
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
374 $offset++;
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
375 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
376 $offset += $len;
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
377 }
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 $offset -= 1;
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
380 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
381
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
382 my $name = join('.', @name);
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 if ($type == A) {
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
385 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
386 }
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
387
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
388 $len = @name;
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
389 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
390 0, 0, @name, $type, $class) . join('', @rdata);
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
391 }
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 sub rd_addr {
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
394 my ($ttl, $addr) = @_;
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
395
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
396 my $code = 'split(/\./, $addr)';
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
397
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
398 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
399
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
400 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
401 }
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 sub dns_daemon {
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
404 my ($port, $t) = @_;
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
405
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
406 my ($data, $recv_data);
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
407 my $socket = IO::Socket::INET->new(
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
408 LocalAddr => '127.0.0.1',
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
409 LocalPort => $port,
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
410 Proto => 'udp',
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
411 )
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
412 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
413
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
414 local $SIG{PIPE} = 'IGNORE';
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
415
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
416 # signal we are ready
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 open my $fh, '>', $t->testdir() . '/' . $port;
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
419 close $fh;
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
420
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
421 while (1) {
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
422 $socket->recv($recv_data, 65536);
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
423 $data = reply_handler($recv_data, $port);
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
424 $socket->send($data);
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
425 }
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
426 }
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
427
f7a8997c46c7 Tests: added fetch js tests, HTTPS support.
Antoine Bonavita <antoine.bonavita@gmail.com>
parents:
diff changeset
428 ###############################################################################