annotate 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 http njs module, request 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 use Socket qw/ CRLF /;
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
15
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
16 BEGIN { use FindBin; chdir($FindBin::Bin); }
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
17
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
18 use lib 'lib';
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
19 use Test::Nginx;
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
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
26 my $t = Test::Nginx->new()->has(qw/http/)
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 http {
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
37 %%TEST_GLOBALS_HTTP%%
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
38
1751
18ac4d9e5a2a Tests: rewriting njs tests without deprecated "js_include".
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1614
diff changeset
39 js_import test.js;
1559
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 server {
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
42 listen 127.0.0.1:8080;
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
43 server_name localhost;
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
44
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
45 location /to_string {
1751
18ac4d9e5a2a Tests: rewriting njs tests without deprecated "js_include".
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1614
diff changeset
46 js_content test.to_string;
1559
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 location /define_prop {
1751
18ac4d9e5a2a Tests: rewriting njs tests without deprecated "js_include".
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1614
diff changeset
50 js_content test.define_prop;
1559
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
51 }
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
52
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
53 location /in_operator {
1751
18ac4d9e5a2a Tests: rewriting njs tests without deprecated "js_include".
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1614
diff changeset
54 js_content test.in_operator;
1559
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
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
57 location /redefine_bind {
1751
18ac4d9e5a2a Tests: rewriting njs tests without deprecated "js_include".
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1614
diff changeset
58 js_content test.redefine_bind;
1559
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 location /redefine_proxy {
1751
18ac4d9e5a2a Tests: rewriting njs tests without deprecated "js_include".
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1614
diff changeset
62 js_content test.redefine_proxy;
1559
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
63 }
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
64
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
65 location /redefine_proto {
1751
18ac4d9e5a2a Tests: rewriting njs tests without deprecated "js_include".
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1614
diff changeset
66 js_content test.redefine_proto;
1559
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
67 }
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
68
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
69 location /get_own_prop_descs {
1751
18ac4d9e5a2a Tests: rewriting njs tests without deprecated "js_include".
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1614
diff changeset
70 js_content test.get_own_prop_descs;
1559
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
71 }
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
72 }
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 EOF
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
76
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
77 $t->write_file('test.js', <<EOF);
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
78 function to_string(r) {
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
79 r.return(200, r.toString());
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
80 }
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
81
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
82 function define_prop(r) {
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
83 Object.defineProperty(r.headersOut, 'Foo', {value:'bar'});
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
84 r.return(200);
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
85 }
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 function in_operator(r) {
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
88 r.return(200, ['Foo', 'Bar'].map(v=>v in r.headersIn)
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
89 .toString() === 'true,false');
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
90 }
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 function redefine_bind(r) {
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
93 r.return = r.return.bind(r, 200);
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
94 r.return('redefine_bind');
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
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
97 function redefine_proxy(r) {
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
98 r.return_orig = r.return;
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
99 r.return = function (body) { this.return_orig(200, body);}
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
100 r.return('redefine_proxy');
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
101 }
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
102
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
103 function redefine_proto(r) {
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
104 r[0] = 'a';
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
105 r[1] = 'b';
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
106 r.length = 2;
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
107 Object.setPrototypeOf(r, Array.prototype);
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
108 r.return(200, r.join('|'));
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
109 }
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
110
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
111 function get_own_prop_descs(r) {
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
112 r.return(200,
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
113 Object.getOwnPropertyDescriptors(r)['log'].value === r.log);
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
114 }
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
115
1751
18ac4d9e5a2a Tests: rewriting njs tests without deprecated "js_include".
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1614
diff changeset
116 export default {to_string, define_prop, in_operator, redefine_bind,
18ac4d9e5a2a Tests: rewriting njs tests without deprecated "js_include".
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1614
diff changeset
117 redefine_proxy, redefine_proto, get_own_prop_descs};
18ac4d9e5a2a Tests: rewriting njs tests without deprecated "js_include".
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1614
diff changeset
118
1559
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
119 EOF
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
120
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
121 $t->try_run('no njs request object')->plan(7);
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
122
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
123 ###############################################################################
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
124
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
125 like(http_get('/to_string'), qr/\[object Request\]/, 'toString');
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
126 like(http_get('/define_prop'), qr/Foo: bar/, 'define_prop');
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
127 like(http(
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
128 'GET /in_operator HTTP/1.0' . CRLF
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
129 . 'Foo: foo' . CRLF
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
130 . 'Host: localhost' . CRLF . CRLF
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
131 ), qr/true/, 'in_operator');
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
132 like(http_get('/redefine_bind'), qr/redefine_bind/, 'redefine_bind');
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
133 like(http_get('/redefine_proxy'), qr/redefine_proxy/, 'redefine_proxy');
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
134 like(http_get('/redefine_proto'), qr/a|b/, 'redefine_proto');
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
135 like(http_get('/get_own_prop_descs'), qr/true/, 'get_own_prop_descs');
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
136
9e5d38da7651 Tests: added object js tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
137 ###############################################################################