annotate js_body_filter_if.t @ 1836:74cffa9d4c43

Tests: enabled session reuse via TLS session tickets. This fixes tests with TLSv1.3 enabled when using BoringSSL, since for TLSv1.3 it only supports session reuse via TLS session tickets, and not server-side session cache.
author Maxim Dounin <mdounin@mdounin.ru>
date Thu, 23 Mar 2023 19:50:02 +0300
parents 390cbd46c46b
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1782
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
1 #!/usr/bin/perl
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
2
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
3 # (C) Dmitry Volyntsev
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
4 # (C) Nginx, Inc.
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
5
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
6 # Tests for http njs module, body filter, if context.
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
7
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
8 ###############################################################################
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
9
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
10 use warnings;
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
11 use strict;
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
12
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
13 use Test::More;
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
14
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
15 BEGIN { use FindBin; chdir($FindBin::Bin); }
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
16
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
17 use lib 'lib';
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
18 use Test::Nginx;
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
19
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
20 ###############################################################################
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
21
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
22 select STDERR; $| = 1;
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
23 select STDOUT; $| = 1;
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
24
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
25 my $t = Test::Nginx->new()->has(qw/http proxy rewrite/)
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
26 ->write_file_expand('nginx.conf', <<'EOF');
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
27
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
28 %%TEST_GLOBALS%%
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
29
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
30 daemon off;
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
31
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
32 events {
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
33 }
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
34
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
35 http {
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
36 %%TEST_GLOBALS_HTTP%%
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
37
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
38 js_import test.js;
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
39
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
40 server {
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
41 listen 127.0.0.1:8080;
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
42 server_name localhost;
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
43
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
44 location /njs {
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
45 js_content test.njs;
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
46 }
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
47
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
48 location /filter {
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
49 if ($arg_name ~ "prepend") {
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
50 js_body_filter test.prepend;
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
51 }
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
52
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
53 if ($arg_name ~ "append") {
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
54 js_body_filter test.append;
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
55 }
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
56
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
57 js_body_filter test.should_not_be_called;
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
58
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
59 proxy_pass http://127.0.0.1:8081/source;
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
60 }
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
61 }
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
62
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
63 server {
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
64 listen 127.0.0.1:8081;
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
65 server_name localhost;
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
66
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
67 location /source {
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
68 postpone_output 1;
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
69 js_content test.source;
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
70 }
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
71 }
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
72 }
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
73
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
74 EOF
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
75
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
76 $t->write_file('test.js', <<EOF);
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
77 function test_njs(r) {
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
78 r.return(200, njs.version);
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
79 }
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
80
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
81 function append(r, data, flags) {
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
82 r.sendBuffer(data, {last:false});
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
83
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
84 if (flags.last) {
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
85 r.sendBuffer("XXX", flags);
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
86 }
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
87 }
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
88
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
89 function chain(chunks, i) {
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
90 if (i < chunks.length) {
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
91 chunks.r.send(chunks[i++]);
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
92 setTimeout(chunks.chain, chunks.delay, chunks, i);
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
93
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
94 } else {
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
95 chunks.r.finish();
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
96 }
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
97 }
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
98
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
99 function source(r) {
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
100 var chunks = ['AAA', 'BB', 'C', 'DDDD'];
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
101 chunks.delay = 5;
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
102 chunks.r = r;
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
103 chunks.chain = chain;
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
104
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
105 r.status = 200;
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
106 r.sendHeader();
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
107 chain(chunks, 0);
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
108 }
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
109
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
110 function prepend(r, data, flags) {
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
111 r.sendBuffer("XXX");
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
112 r.sendBuffer(data, flags);
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
113 r.done();
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
114 }
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
115
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
116 export default {njs: test_njs, append, prepend, source};
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
117
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
118 EOF
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
119
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
120 $t->try_run('no njs body filter')->plan(2);
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
121
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
122 ###############################################################################
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
123
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
124 like(http_get('/filter?name=append'), qr/AAABBCDDDDXXX/, 'append');
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
125 like(http_get('/filter?name=prepend'), qr/XXXAAABBCDDDD/, 'prepend');
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
126
390cbd46c46b Tests: added js tests for directives in additional contexts.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
127 ###############################################################################