annotate stream_js_object.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 18ac4d9e5a2a
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1559
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
1 #!/usr/bin/perl
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
2
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
3 # (C) Dmitry Volyntsev
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
4 # (C) Nginx, Inc.
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
5
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
6 # Tests for stream njs module, stream session object.
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
7
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
8 ###############################################################################
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
9
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
10 use warnings;
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
11 use strict;
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
12
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
13 use Test::More;
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
14
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
15 BEGIN { use FindBin; chdir($FindBin::Bin); }
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
16
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
17 use lib 'lib';
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
18 use Test::Nginx;
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
19 use Test::Nginx::Stream qw/ stream /;
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
20
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
21 ###############################################################################
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
22
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
23 select STDERR; $| = 1;
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
24 select STDOUT; $| = 1;
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
25
1614
bc0990ea2e5b Tests: js TODO adjusted up to 0.4.0.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1609
diff changeset
26 my $t = Test::Nginx->new()->has(qw/stream stream_return/)
1559
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
27 ->write_file_expand('nginx.conf', <<'EOF');
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
28
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
29 %%TEST_GLOBALS%%
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
30
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
31 daemon off;
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
32
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
33 events {
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
34 }
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
35
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
36 stream {
1609
f3ba4c74de31 Tests: added TEST_GLOBALS_STREAM variable support.
Andrei Belov <defan@nginx.com>
parents: 1559
diff changeset
37 %%TEST_GLOBALS_STREAM%%
f3ba4c74de31 Tests: added TEST_GLOBALS_STREAM variable support.
Andrei Belov <defan@nginx.com>
parents: 1559
diff changeset
38
1751
18ac4d9e5a2a Tests: rewriting njs tests without deprecated "js_include".
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1614
diff changeset
39 js_set $test test.test;
1559
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
40
1751
18ac4d9e5a2a Tests: rewriting njs tests without deprecated "js_include".
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1614
diff changeset
41 js_import test.js;
1559
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
42
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
43 server {
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
44 listen 127.0.0.1:8081;
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
45 return $test$status;
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
46 }
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
47 }
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
48
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
49 EOF
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
50
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
51 $t->write_file('test.js', <<EOF);
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
52 function to_string(s) {
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
53 return s.toString() === '[object Stream Session]';
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
54 }
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
55
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
56 function define_prop(s) {
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
57 Object.defineProperty(s.variables, 'status', {value:400});
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
58 return s.variables.status == 400;
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
59 }
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
60
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
61 function in_operator(s) {
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
62 return ['status', 'unknown']
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
63 .map(v=>v in s.variables)
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
64 .toString() === 'true,false';
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
65 }
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
66
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
67 function redefine_proto(s) {
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
68 s[0] = 'a';
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
69 s[1] = 'b';
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
70 s.length = 2;
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
71 Object.setPrototypeOf(s, Array.prototype);
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
72 return s.join('|') === 'a|b';
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
73 }
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
74
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
75 function get_own_prop_descs(s) {
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
76 return Object.getOwnPropertyDescriptors(s)['on'].value === s.on;
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
77 }
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
78
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
79 function test(s) {
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
80 return [ to_string,
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
81 define_prop,
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
82 in_operator,
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
83 redefine_proto,
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
84 get_own_prop_descs,
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
85 ].every(v=>v(s));
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
86 }
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
87
1751
18ac4d9e5a2a Tests: rewriting njs tests without deprecated "js_include".
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1614
diff changeset
88 export default {test};
18ac4d9e5a2a Tests: rewriting njs tests without deprecated "js_include".
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1614
diff changeset
89
1559
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
90 EOF
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
91
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
92 $t->try_run('no njs stream session object')->plan(1);
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
93
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
94 ###############################################################################
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
95
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
96 is(stream('127.0.0.1:' . port(8081))->read(), 'true400', 'var set');
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
97
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
98 ###############################################################################