Mercurial > hg > nginx-tests
annotate stream_js_preload_object.t @ 1829:a78c32419f02
Tests: separate SSL session reuse tests.
Instead of being mixed with generic SSL tests, session reuse variants
are now tested in a separate file.
In the generic SSL tests only basic session reuse is now tested,
notably with session tickets enabled and a shared SSL session cache.
This should make it possible to reuse sessions in all cases (except
when it's not supported, such as with LibreSSL with TLSv1.3).
Note that session reuse with tickets implies that $ssl_session_id
is selected by the client and therefore is not available on the
initial connection. Relevant test is modified to handle this.
Further, BoringSSL does not use legacy session ID with TLSv1.3 even
if it is sent by the client. In contrast, OpenSSL always generates
an unique legacy session id, so it is available with TLSv1.3 even if
session resumption does not work (such as with old Net::SSLeay and
IO::Socket::SSL modules).
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Thu, 23 Mar 2023 19:49:47 +0300 |
parents | c67b390cb9ef |
children |
rev | line source |
---|---|
1789
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
1 #!/usr/bin/perl |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
2 |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
3 # (C) Vadim Zhestikov |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
4 # (C) Nginx, Inc. |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
5 |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
6 # Tests for stream njs module, js_preload_object directive. |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
7 |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
8 ############################################################################### |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
9 |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
10 use warnings; |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
11 use strict; |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
12 |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
13 use Test::More; |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
14 |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
15 BEGIN { use FindBin; chdir($FindBin::Bin); } |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
16 |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
17 use lib 'lib'; |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
18 use Test::Nginx; |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
19 use Test::Nginx::Stream qw/ stream /; |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
20 |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
21 ############################################################################### |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
22 |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
23 select STDERR; $| = 1; |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
24 select STDOUT; $| = 1; |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
25 |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
26 my $t = Test::Nginx->new()->has(qw/stream stream_return/) |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
27 ->write_file_expand('nginx.conf', <<'EOF'); |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
28 |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
29 %%TEST_GLOBALS%% |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
30 |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
31 daemon off; |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
32 |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
33 events { |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
34 } |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
35 |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
36 stream { |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
37 %%TEST_GLOBALS_STREAM%% |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
38 |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
39 js_preload_object g1 from g.json; |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
40 |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
41 js_set $test foo.bar.p; |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
42 |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
43 js_import lib.js; |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
44 js_import foo from ./main.js; |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
45 |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
46 server { |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
47 listen 127.0.0.1:8081; |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
48 return $test; |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
49 } |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
50 |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
51 server { |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
52 listen 127.0.0.1:8082; |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
53 js_access lib.access; |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
54 js_preread lib.preread; |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
55 js_filter lib.filter; |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
56 proxy_pass 127.0.0.1:8083; |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
57 } |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
58 |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
59 server { |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
60 listen 127.0.0.1:8083; |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
61 return "x"; |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
62 } |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
63 } |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
64 |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
65 EOF |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
66 |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
67 $t->write_file('lib.js', <<EOF); |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
68 var res = ''; |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
69 |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
70 function access(s) { |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
71 res += g1.a; |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
72 s.allow(); |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
73 } |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
74 |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
75 function preread(s) { |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
76 s.on('upload', function (data) { |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
77 res += g1.b[1]; |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
78 if (res.length >= 3) { |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
79 s.done(); |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
80 } |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
81 }); |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
82 } |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
83 |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
84 function filter(s) { |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
85 s.on('upload', function(data, flags) { |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
86 s.send(data); |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
87 res += g1.c.prop[0].a; |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
88 }); |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
89 |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
90 s.on('download', function(data, flags) { |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
91 if (!flags.last) { |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
92 res += g1.b[3]; |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
93 s.send(data); |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
94 |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
95 } else { |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
96 res += g1.b[4]; |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
97 s.send(res, {last:1}); |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
98 s.off('download'); |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
99 } |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
100 }); |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
101 } |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
102 |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
103 export default {access, preread, filter}; |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
104 |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
105 EOF |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
106 |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
107 $t->write_file('main.js', <<EOF); |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
108 export default {bar: {p(s) {return g1.b[2]}}}; |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
109 |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
110 EOF |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
111 |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
112 $t->write_file('g.json', |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
113 '{"a":1, "b":[1,2,"element",4,5], "c":{"prop":[{"a":3}]}}'); |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
114 |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
115 $t->try_run('no js_preload_object available')->plan(2); |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
116 |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
117 ############################################################################### |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
118 |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
119 is(stream('127.0.0.1:' . port(8081))->read(), 'element', 'foo.bar.p'); |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
120 is(stream('127.0.0.1:' . port(8082))->io('0'), 'x122345', 'lib.access'); |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
121 |
c67b390cb9ef
Tests: added js tests for js_preload_object directive.
Vadim Zhestikov <v.zhestikov@f5.com>
parents:
diff
changeset
|
122 ############################################################################### |