annotate stream_js_object.t @ 1619:436d0ffc2ea3

Tests: correctly shutdown ssl for reproducible session reuse tests. Previously, session reuse tests in stream_ssl_certificate.t were prone to testing errors, since the client doesn't write any application data before closing a connection, which is done so to pass tests on win32. In this case, the server may happened to get an unexpected eof meaning that it will abandon that session. This is specific to stream testing pattern, changes to ssl_certificate.t are applied too for consistency. This is also specific to SSL_R_UNEXPECTED_EOF_WHILE_READING, which is implemented in OpenSSL 3.0.0.
author Sergey Kandaurov <pluknet@nginx.com>
date Mon, 23 Nov 2020 22:46:06 +0000
parents bc0990ea2e5b
children 18ac4d9e5a2a
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
1559
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
39 js_set $test test;
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
40
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
41 js_include test.js;
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
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
88 EOF
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
89
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
90 $t->try_run('no njs stream session object')->plan(1);
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 ###############################################################################
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 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
95
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
96 ###############################################################################