annotate js_header_filter.t @ 1788:78fe648d54a7

Tests: avoid send timeout in h2_ssl.t test with canceled streams. While being irrelevant to catching alerts, it slows down run time on systems with short socket buffers.
author Sergey Kandaurov <pluknet@nginx.com>
date Tue, 30 Aug 2022 17:24:16 +0400
parents 43f31fe62dfd
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1642
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
1 #!/usr/bin/perl
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
2
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
3 # (C) Dmitry Volyntsev
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
4 # (C) Nginx, Inc.
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
5
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
6 # Tests for http njs module, header filter.
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
7
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
8 ###############################################################################
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
9
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
10 use warnings;
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
11 use strict;
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
12
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
13 use Test::More;
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
14
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
15 BEGIN { use FindBin; chdir($FindBin::Bin); }
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
16
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
17 use lib 'lib';
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
18 use Test::Nginx;
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
19
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
20 ###############################################################################
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
21
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
22 select STDERR; $| = 1;
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
23 select STDOUT; $| = 1;
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
24
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
25 my $t = Test::Nginx->new()->has(qw/http proxy rewrite/)
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
26 ->write_file_expand('nginx.conf', <<'EOF');
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
27
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
28 %%TEST_GLOBALS%%
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
29
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
30 daemon off;
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
31
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
32 events {
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
33 }
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
34
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
35 http {
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
36 %%TEST_GLOBALS_HTTP%%
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
37
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
38 js_import test.js;
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
39
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
40 server {
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
41 listen 127.0.0.1:8080;
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
42 server_name localhost;
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
43
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
44 location /njs {
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
45 js_content test.njs;
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
46 }
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
47
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
48 location /filter/ {
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
49 js_header_filter test.filter;
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
50 proxy_pass http://127.0.0.1:8081/;
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
51 }
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
52 }
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
53
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
54 server {
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
55 listen 127.0.0.1:8081;
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
56 server_name localhost;
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
57
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
58 location / {
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
59 add_header Set-Cookie "BB";
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
60 add_header Set-Cookie "CCCC";
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
61
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
62 return 200;
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
63 }
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
64 }
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
65 }
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
66
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
67 EOF
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
68
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
69 $t->write_file('test.js', <<EOF);
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
70 function test_njs(r) {
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
71 r.return(200, njs.version);
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
72 }
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
73
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
74 function filter(r) {
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
75 var cookies = r.headersOut['Set-Cookie'];
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
76 var len = r.args.len ? Number(r.args.len) : 0;
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
77 r.headersOut['Set-Cookie'] = cookies.filter(v=>v.length > len);
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
78 }
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
79
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
80 export default {njs: test_njs, filter};
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
81
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
82 EOF
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
83
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
84 $t->try_run('no njs header filter')->plan(2);
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
85
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
86 ###############################################################################
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
87
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
88 like(http_get('/filter/?len=1'), qr/Set-Cookie: BB.*Set-Cookie: CCCC.*/ms,
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
89 'all');;
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
90 unlike(http_get('/filter/?len=3'), qr/Set-Cookie: BB/,
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
91 'filter');
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
92
43f31fe62dfd Tests: added tests for js_header_filter directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
93 ###############################################################################