annotate js_headers.t @ 1752:ba6e24e38f03

Tests: improved stop_daemons() to send signal again. As was observed, it's possible that a signal to complete a uwsgi daemon can be ignored while it is starting up, which results in tests hang due to eternal waiting on child processes termination. Notably, it is seen when running tests with a high number of prove jobs on a low-profile VM against nginx with broken modules and/or configuration. To reproduce: $ TEST_NGINX_GLOBALS=ERROR prove -j16 uwsgi*.t Inspecting uwsgi under ktrace on FreeBSD confirms that a SIGTERM signal is ignored at the very beginning of uwsgi startup. It is then replaced with a default action after listen(), thus waiting until uwsgi is ready to accept new TCP connections doesn't completely solve the hang window. The fix is to retry sending a signal some time after waitpid(WNOHANG) continuously demonstrated no progress with reaping a signaled process. It is modelled after f13ead27f89c that improved stop() for nginx.
author Sergey Kandaurov <pluknet@nginx.com>
date Wed, 29 Dec 2021 22:29:23 +0300
parents 18ac4d9e5a2a
children c0dfbedf52bd
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1439
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
1 #!/usr/bin/perl
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
2
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
3 # (C) Dmitry Volyntsev
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
4 # (C) Nginx, Inc.
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
5
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
6 # Tests for http njs module, working with headers.
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
7
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
8 ###############################################################################
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
9
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
10 use warnings;
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
11 use strict;
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
12
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
13 use Test::More;
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
14
1521
b6699ffd9ddd Tests: added Cookie and X-Forwarded-For r.headersIn tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1520
diff changeset
15 use Socket qw/ CRLF /;
b6699ffd9ddd Tests: added Cookie and X-Forwarded-For r.headersIn tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1520
diff changeset
16
1439
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
17 BEGIN { use FindBin; chdir($FindBin::Bin); }
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
18
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
19 use lib 'lib';
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
20 use Test::Nginx;
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
21
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
22 ###############################################################################
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
23
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
24 select STDERR; $| = 1;
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
25 select STDOUT; $| = 1;
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
26
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
27 my $t = Test::Nginx->new()->has(qw/http charset/)
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
28 ->write_file_expand('nginx.conf', <<'EOF');
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
29
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
30 %%TEST_GLOBALS%%
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
31
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
32 daemon off;
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
33
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
34 events {
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
35 }
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
36
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
37 http {
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
38 %%TEST_GLOBALS_HTTP%%
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
39
1751
18ac4d9e5a2a Tests: rewriting njs tests without deprecated "js_include".
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1568
diff changeset
40 js_set $test_foo_in test.foo_in;
18ac4d9e5a2a Tests: rewriting njs tests without deprecated "js_include".
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1568
diff changeset
41 js_set $test_ifoo_in test.ifoo_in;
1440
5d0eb718f38e Tests: moved njs http headers test to a separate file.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1439
diff changeset
42
1751
18ac4d9e5a2a Tests: rewriting njs tests without deprecated "js_include".
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1568
diff changeset
43 js_import test.js;
1439
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
44
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
45 server {
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
46 listen 127.0.0.1:8080;
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
47 server_name localhost;
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
48
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
49 location /njs {
1751
18ac4d9e5a2a Tests: rewriting njs tests without deprecated "js_include".
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1568
diff changeset
50 js_content test.njs;
1439
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
51 }
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
52
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
53 location /content_length {
1751
18ac4d9e5a2a Tests: rewriting njs tests without deprecated "js_include".
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1568
diff changeset
54 js_content test.content_length;
1439
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
55 }
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
56
1563
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
57 location /content_length_arr {
1751
18ac4d9e5a2a Tests: rewriting njs tests without deprecated "js_include".
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1568
diff changeset
58 js_content test.content_length_arr;
1563
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
59 }
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
60
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
61 location /content_length_keys {
1751
18ac4d9e5a2a Tests: rewriting njs tests without deprecated "js_include".
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1568
diff changeset
62 js_content test.content_length_keys;
1563
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
63 }
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
64
1439
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
65 location /content_type {
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
66 charset windows-1251;
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
67
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
68 default_type text/plain;
1751
18ac4d9e5a2a Tests: rewriting njs tests without deprecated "js_include".
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1568
diff changeset
69 js_content test.content_type;
1439
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
70 }
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
71
1563
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
72 location /content_type_arr {
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
73 charset windows-1251;
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
74
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
75 default_type text/plain;
1751
18ac4d9e5a2a Tests: rewriting njs tests without deprecated "js_include".
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1568
diff changeset
76 js_content test.content_type_arr;
1563
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
77 }
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
78
1439
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
79 location /content_encoding {
1751
18ac4d9e5a2a Tests: rewriting njs tests without deprecated "js_include".
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1568
diff changeset
80 js_content test.content_encoding;
1439
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
81 }
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
82
1563
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
83 location /content_encoding_arr {
1751
18ac4d9e5a2a Tests: rewriting njs tests without deprecated "js_include".
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1568
diff changeset
84 js_content test.content_encoding_arr;
1563
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
85 }
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
86
1439
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
87 location /headers_list {
1751
18ac4d9e5a2a Tests: rewriting njs tests without deprecated "js_include".
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1568
diff changeset
88 js_content test.headers_list;
1439
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
89 }
1440
5d0eb718f38e Tests: moved njs http headers test to a separate file.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1439
diff changeset
90
1521
b6699ffd9ddd Tests: added Cookie and X-Forwarded-For r.headersIn tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1520
diff changeset
91 location /foo_in {
b6699ffd9ddd Tests: added Cookie and X-Forwarded-For r.headersIn tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1520
diff changeset
92 return 200 $test_foo_in;
1440
5d0eb718f38e Tests: moved njs http headers test to a separate file.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1439
diff changeset
93 }
5d0eb718f38e Tests: moved njs http headers test to a separate file.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1439
diff changeset
94
1521
b6699ffd9ddd Tests: added Cookie and X-Forwarded-For r.headersIn tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1520
diff changeset
95 location /ifoo_in {
b6699ffd9ddd Tests: added Cookie and X-Forwarded-For r.headersIn tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1520
diff changeset
96 return 200 $test_ifoo_in;
b6699ffd9ddd Tests: added Cookie and X-Forwarded-For r.headersIn tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1520
diff changeset
97 }
b6699ffd9ddd Tests: added Cookie and X-Forwarded-For r.headersIn tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1520
diff changeset
98
b6699ffd9ddd Tests: added Cookie and X-Forwarded-For r.headersIn tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1520
diff changeset
99 location /hdr_in {
1751
18ac4d9e5a2a Tests: rewriting njs tests without deprecated "js_include".
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1568
diff changeset
100 js_content test.hdr_in;
1440
5d0eb718f38e Tests: moved njs http headers test to a separate file.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1439
diff changeset
101 }
5d0eb718f38e Tests: moved njs http headers test to a separate file.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1439
diff changeset
102
1568
4cc012205ac5 Tests: added js tests for raw headers API.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1566
diff changeset
103 location /raw_hdr_in {
1751
18ac4d9e5a2a Tests: rewriting njs tests without deprecated "js_include".
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1568
diff changeset
104 js_content test.raw_hdr_in;
1568
4cc012205ac5 Tests: added js tests for raw headers API.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1566
diff changeset
105 }
4cc012205ac5 Tests: added js tests for raw headers API.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1566
diff changeset
106
1440
5d0eb718f38e Tests: moved njs http headers test to a separate file.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1439
diff changeset
107 location /hdr_out {
1751
18ac4d9e5a2a Tests: rewriting njs tests without deprecated "js_include".
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1568
diff changeset
108 js_content test.hdr_out;
1440
5d0eb718f38e Tests: moved njs http headers test to a separate file.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1439
diff changeset
109 }
5d0eb718f38e Tests: moved njs http headers test to a separate file.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1439
diff changeset
110
1568
4cc012205ac5 Tests: added js tests for raw headers API.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1566
diff changeset
111 location /raw_hdr_out {
1751
18ac4d9e5a2a Tests: rewriting njs tests without deprecated "js_include".
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1568
diff changeset
112 js_content test.raw_hdr_out;
1568
4cc012205ac5 Tests: added js tests for raw headers API.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1566
diff changeset
113 }
4cc012205ac5 Tests: added js tests for raw headers API.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1566
diff changeset
114
1563
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
115 location /hdr_out_array {
1751
18ac4d9e5a2a Tests: rewriting njs tests without deprecated "js_include".
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1568
diff changeset
116 js_content test.hdr_out_array;
1563
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
117 }
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
118
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
119 location /hdr_out_set_cookie {
1751
18ac4d9e5a2a Tests: rewriting njs tests without deprecated "js_include".
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1568
diff changeset
120 js_content test.hdr_out_set_cookie;
1563
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
121 }
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
122
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
123 location /hdr_out_single {
1751
18ac4d9e5a2a Tests: rewriting njs tests without deprecated "js_include".
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1568
diff changeset
124 js_content test.hdr_out_single;
1563
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
125 }
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
126
1440
5d0eb718f38e Tests: moved njs http headers test to a separate file.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1439
diff changeset
127 location /ihdr_out {
1751
18ac4d9e5a2a Tests: rewriting njs tests without deprecated "js_include".
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1568
diff changeset
128 js_content test.ihdr_out;
1440
5d0eb718f38e Tests: moved njs http headers test to a separate file.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1439
diff changeset
129 }
1525
ca0858ef7d3d Tests: added js keys tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1521
diff changeset
130
ca0858ef7d3d Tests: added js keys tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1521
diff changeset
131 location /hdr_sorted_keys {
1751
18ac4d9e5a2a Tests: rewriting njs tests without deprecated "js_include".
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1568
diff changeset
132 js_content test.hdr_sorted_keys;
1525
ca0858ef7d3d Tests: added js keys tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1521
diff changeset
133 }
1439
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
134 }
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
135 }
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
136
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
137 EOF
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
138
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
139 $t->write_file('test.js', <<EOF);
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
140 function test_njs(r) {
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
141 r.return(200, njs.version);
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
142 }
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
143
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
144 function content_length(r) {
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
145 r.headersOut['Content-Length'] = '';
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
146 r.headersOut['Content-Length'] = 3;
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
147 delete r.headersOut['Content-Length'];
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
148 r.headersOut['Content-Length'] = 3;
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
149 r.sendHeader();
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
150 r.send('XXX');
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
151 r.finish();
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
152 }
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
153
1563
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
154 function content_length_arr(r) {
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
155 r.headersOut['Content-Length'] = [5];
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
156 r.headersOut['Content-Length'] = [];
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
157 r.headersOut['Content-Length'] = [4,3];
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
158 r.sendHeader();
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
159 r.send('XXX');
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
160 r.finish();
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
161 }
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
162
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
163 function content_length_keys(r) {
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
164 r.headersOut['Content-Length'] = 3;
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
165 var in_keys = Object.keys(r.headersOut).some(v=>v=='Content-Length');
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
166 r.return(200, `B:\${in_keys}`);
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
167 }
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
168
1439
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
169 function content_type(r) {
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
170 r.headersOut['Content-Type'] = 'text/xml';
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
171 r.headersOut['Content-Type'] = '';
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
172 r.headersOut['Content-Type'] = 'text/xml; charset=';
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
173 delete r.headersOut['Content-Type'];
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
174 r.headersOut['Content-Type'] = 'text/xml; charset=utf-8';
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
175 r.headersOut['Content-Type'] = 'text/xml; charset="utf-8"';
1563
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
176 var in_keys = Object.keys(r.headersOut).some(v=>v=='Content-Type');
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
177 r.return(200, `B:\${in_keys}`);
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
178 }
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
179
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
180 function content_type_arr(r) {
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
181 r.headersOut['Content-Type'] = ['text/html'];
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
182 r.headersOut['Content-Type'] = [];
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
183 r.headersOut['Content-Type'] = [ 'text/xml', 'text/html'];
1439
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
184 r.return(200);
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
185 }
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
186
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
187 function content_encoding(r) {
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
188 r.headersOut['Content-Encoding'] = '';
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
189 r.headersOut['Content-Encoding'] = 'test';
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
190 delete r.headersOut['Content-Encoding'];
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
191 r.headersOut['Content-Encoding'] = 'gzip';
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
192 r.return(200);
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
193 }
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
194
1563
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
195 function content_encoding_arr(r) {
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
196 r.headersOut['Content-Encoding'] = 'test';
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
197 r.headersOut['Content-Encoding'] = [];
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
198 r.headersOut['Content-Encoding'] = ['test', 'gzip'];
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
199 r.return(200);
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
200 }
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
201
1439
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
202 function headers_list(r) {
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
203 for (var h in {a:1, b:2, c:3}) {
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
204 r.headersOut[h] = h;
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
205 }
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
206
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
207 delete r.headersOut.b;
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
208 r.headersOut.d = 'd';
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
209
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
210 var out = "";
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
211 for (var h in r.headersOut) {
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
212 out += h + ":";
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
213 }
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
214
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
215 r.return(200, out);
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
216 }
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
217
1521
b6699ffd9ddd Tests: added Cookie and X-Forwarded-For r.headersIn tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1520
diff changeset
218 function hdr_in(r) {
b6699ffd9ddd Tests: added Cookie and X-Forwarded-For r.headersIn tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1520
diff changeset
219 var s = '', h;
b6699ffd9ddd Tests: added Cookie and X-Forwarded-For r.headersIn tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1520
diff changeset
220 for (h in r.headersIn) {
b6699ffd9ddd Tests: added Cookie and X-Forwarded-For r.headersIn tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1520
diff changeset
221 s += `\${h.toLowerCase()}: \${r.headersIn[h]}\n`;
b6699ffd9ddd Tests: added Cookie and X-Forwarded-For r.headersIn tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1520
diff changeset
222 }
b6699ffd9ddd Tests: added Cookie and X-Forwarded-For r.headersIn tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1520
diff changeset
223
b6699ffd9ddd Tests: added Cookie and X-Forwarded-For r.headersIn tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1520
diff changeset
224 r.return(200, s);
b6699ffd9ddd Tests: added Cookie and X-Forwarded-For r.headersIn tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1520
diff changeset
225 }
b6699ffd9ddd Tests: added Cookie and X-Forwarded-For r.headersIn tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1520
diff changeset
226
1568
4cc012205ac5 Tests: added js tests for raw headers API.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1566
diff changeset
227 function raw_hdr_in(r) {
4cc012205ac5 Tests: added js tests for raw headers API.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1566
diff changeset
228 var filtered = r.rawHeadersIn
4cc012205ac5 Tests: added js tests for raw headers API.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1566
diff changeset
229 .filter(v=>v[0].toLowerCase() == r.args.filter);
4cc012205ac5 Tests: added js tests for raw headers API.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1566
diff changeset
230 r.return(200, 'raw:' + filtered.map(v=>v[1]).join('|'));
4cc012205ac5 Tests: added js tests for raw headers API.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1566
diff changeset
231 }
4cc012205ac5 Tests: added js tests for raw headers API.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1566
diff changeset
232
1525
ca0858ef7d3d Tests: added js keys tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1521
diff changeset
233 function hdr_sorted_keys(r) {
ca0858ef7d3d Tests: added js keys tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1521
diff changeset
234 var s = '';
ca0858ef7d3d Tests: added js keys tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1521
diff changeset
235 var hdr = r.args.in ? r.headersIn : r.headersOut;
ca0858ef7d3d Tests: added js keys tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1521
diff changeset
236
ca0858ef7d3d Tests: added js keys tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1521
diff changeset
237 if (!r.args.in) {
ca0858ef7d3d Tests: added js keys tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1521
diff changeset
238 r.headersOut.b = 'b';
ca0858ef7d3d Tests: added js keys tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1521
diff changeset
239 r.headersOut.c = 'c';
ca0858ef7d3d Tests: added js keys tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1521
diff changeset
240 r.headersOut.a = 'a';
ca0858ef7d3d Tests: added js keys tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1521
diff changeset
241 }
ca0858ef7d3d Tests: added js keys tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1521
diff changeset
242
ca0858ef7d3d Tests: added js keys tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1521
diff changeset
243 r.return(200, Object.keys(hdr).sort());
ca0858ef7d3d Tests: added js keys tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1521
diff changeset
244 }
ca0858ef7d3d Tests: added js keys tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1521
diff changeset
245
1751
18ac4d9e5a2a Tests: rewriting njs tests without deprecated "js_include".
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1568
diff changeset
246 function foo_in(r) {
1440
5d0eb718f38e Tests: moved njs http headers test to a separate file.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1439
diff changeset
247 return 'hdr=' + r.headersIn.foo;
5d0eb718f38e Tests: moved njs http headers test to a separate file.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1439
diff changeset
248 }
5d0eb718f38e Tests: moved njs http headers test to a separate file.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1439
diff changeset
249
1751
18ac4d9e5a2a Tests: rewriting njs tests without deprecated "js_include".
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1568
diff changeset
250 function ifoo_in(r) {
1440
5d0eb718f38e Tests: moved njs http headers test to a separate file.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1439
diff changeset
251 var s = '', h;
5d0eb718f38e Tests: moved njs http headers test to a separate file.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1439
diff changeset
252 for (h in r.headersIn) {
5d0eb718f38e Tests: moved njs http headers test to a separate file.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1439
diff changeset
253 if (h.substr(0, 3) == 'foo') {
5d0eb718f38e Tests: moved njs http headers test to a separate file.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1439
diff changeset
254 s += r.headersIn[h];
5d0eb718f38e Tests: moved njs http headers test to a separate file.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1439
diff changeset
255 }
5d0eb718f38e Tests: moved njs http headers test to a separate file.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1439
diff changeset
256 }
5d0eb718f38e Tests: moved njs http headers test to a separate file.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1439
diff changeset
257 return s;
5d0eb718f38e Tests: moved njs http headers test to a separate file.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1439
diff changeset
258 }
5d0eb718f38e Tests: moved njs http headers test to a separate file.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1439
diff changeset
259
5d0eb718f38e Tests: moved njs http headers test to a separate file.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1439
diff changeset
260 function hdr_out(r) {
5d0eb718f38e Tests: moved njs http headers test to a separate file.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1439
diff changeset
261 r.status = 200;
5d0eb718f38e Tests: moved njs http headers test to a separate file.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1439
diff changeset
262 r.headersOut['Foo'] = r.args.fOO;
5d0eb718f38e Tests: moved njs http headers test to a separate file.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1439
diff changeset
263
5d0eb718f38e Tests: moved njs http headers test to a separate file.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1439
diff changeset
264 if (r.args.bar) {
5d0eb718f38e Tests: moved njs http headers test to a separate file.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1439
diff changeset
265 r.headersOut['Bar'] =
5d0eb718f38e Tests: moved njs http headers test to a separate file.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1439
diff changeset
266 r.headersOut[(r.args.bar == 'empty' ? 'Baz' :'Foo')]
5d0eb718f38e Tests: moved njs http headers test to a separate file.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1439
diff changeset
267 }
5d0eb718f38e Tests: moved njs http headers test to a separate file.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1439
diff changeset
268
5d0eb718f38e Tests: moved njs http headers test to a separate file.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1439
diff changeset
269 r.sendHeader();
5d0eb718f38e Tests: moved njs http headers test to a separate file.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1439
diff changeset
270 r.finish();
5d0eb718f38e Tests: moved njs http headers test to a separate file.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1439
diff changeset
271 }
5d0eb718f38e Tests: moved njs http headers test to a separate file.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1439
diff changeset
272
1568
4cc012205ac5 Tests: added js tests for raw headers API.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1566
diff changeset
273 function raw_hdr_out(r) {
4cc012205ac5 Tests: added js tests for raw headers API.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1566
diff changeset
274 r.headersOut.a = ['foo', 'bar'];
4cc012205ac5 Tests: added js tests for raw headers API.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1566
diff changeset
275 r.headersOut.b = 'b';
4cc012205ac5 Tests: added js tests for raw headers API.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1566
diff changeset
276
4cc012205ac5 Tests: added js tests for raw headers API.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1566
diff changeset
277 var filtered = r.rawHeadersOut
4cc012205ac5 Tests: added js tests for raw headers API.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1566
diff changeset
278 .filter(v=>v[0].toLowerCase() == r.args.filter);
4cc012205ac5 Tests: added js tests for raw headers API.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1566
diff changeset
279 r.return(200, 'raw:' + filtered.map(v=>v[1]).join('|'));
4cc012205ac5 Tests: added js tests for raw headers API.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1566
diff changeset
280 }
4cc012205ac5 Tests: added js tests for raw headers API.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1566
diff changeset
281
1563
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
282 function hdr_out_array(r) {
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
283 if (!r.args.hidden) {
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
284 r.headersOut['Foo'] = [r.args.fOO];
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
285 r.headersOut['Foo'] = [];
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
286 r.headersOut['Foo'] = ['bar', r.args.fOO];
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
287 }
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
288
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
289 if (r.args.scalar_set) {
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
290 r.headersOut['Foo'] = 'xxx';
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
291 }
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
292
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
293 r.return(200, `B:\${njs.dump(r.headersOut.foo)}`);
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
294 }
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
295
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
296 function hdr_out_single(r) {
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
297 r.headersOut.ETag = ['a', 'b'];
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
298 r.return(200, `B:\${njs.dump(r.headersOut.etag)}`);
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
299 }
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
300
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
301 function hdr_out_set_cookie(r) {
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
302 r.headersOut['Set-Cookie'] = [];
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
303 r.headersOut['Set-Cookie'] = ['a', 'b'];
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
304 delete r.headersOut['Set-Cookie'];
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
305 r.headersOut['Set-Cookie'] = 'e';
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
306 r.headersOut['Set-Cookie'] = ['c', '', null, 'd', 'f'];
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
307
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
308 r.return(200, `B:\${njs.dump(r.headersOut['Set-Cookie'])}`);
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
309 }
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
310
1440
5d0eb718f38e Tests: moved njs http headers test to a separate file.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1439
diff changeset
311 function ihdr_out(r) {
5d0eb718f38e Tests: moved njs http headers test to a separate file.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1439
diff changeset
312 r.status = 200;
5d0eb718f38e Tests: moved njs http headers test to a separate file.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1439
diff changeset
313 r.headersOut['a'] = r.args.a;
5d0eb718f38e Tests: moved njs http headers test to a separate file.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1439
diff changeset
314 r.headersOut['b'] = r.args.b;
5d0eb718f38e Tests: moved njs http headers test to a separate file.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1439
diff changeset
315
5d0eb718f38e Tests: moved njs http headers test to a separate file.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1439
diff changeset
316 var s = '', h;
5d0eb718f38e Tests: moved njs http headers test to a separate file.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1439
diff changeset
317 for (h in r.headersOut) {
5d0eb718f38e Tests: moved njs http headers test to a separate file.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1439
diff changeset
318 s += r.headersOut[h];
5d0eb718f38e Tests: moved njs http headers test to a separate file.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1439
diff changeset
319 }
5d0eb718f38e Tests: moved njs http headers test to a separate file.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1439
diff changeset
320
5d0eb718f38e Tests: moved njs http headers test to a separate file.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1439
diff changeset
321 r.sendHeader();
5d0eb718f38e Tests: moved njs http headers test to a separate file.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1439
diff changeset
322 r.send(s);
5d0eb718f38e Tests: moved njs http headers test to a separate file.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1439
diff changeset
323 r.finish();
5d0eb718f38e Tests: moved njs http headers test to a separate file.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1439
diff changeset
324 }
5d0eb718f38e Tests: moved njs http headers test to a separate file.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1439
diff changeset
325
1751
18ac4d9e5a2a Tests: rewriting njs tests without deprecated "js_include".
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1568
diff changeset
326 export default {njs:test_njs, content_length, content_length_arr,
18ac4d9e5a2a Tests: rewriting njs tests without deprecated "js_include".
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1568
diff changeset
327 content_length_keys, content_type, content_type_arr,
18ac4d9e5a2a Tests: rewriting njs tests without deprecated "js_include".
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1568
diff changeset
328 content_encoding, content_encoding_arr, headers_list,
18ac4d9e5a2a Tests: rewriting njs tests without deprecated "js_include".
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1568
diff changeset
329 hdr_in, raw_hdr_in, hdr_sorted_keys, foo_in, ifoo_in,
18ac4d9e5a2a Tests: rewriting njs tests without deprecated "js_include".
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1568
diff changeset
330 hdr_out, raw_hdr_out, hdr_out_array, hdr_out_single,
18ac4d9e5a2a Tests: rewriting njs tests without deprecated "js_include".
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1568
diff changeset
331 hdr_out_set_cookie, ihdr_out};
18ac4d9e5a2a Tests: rewriting njs tests without deprecated "js_include".
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1568
diff changeset
332
1440
5d0eb718f38e Tests: moved njs http headers test to a separate file.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1439
diff changeset
333
1439
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
334 EOF
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
335
1568
4cc012205ac5 Tests: added js tests for raw headers API.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1566
diff changeset
336 $t->try_run('no njs')->plan(39);
1439
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
337
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
338 ###############################################################################
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
339
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
340 like(http_get('/content_length'), qr/Content-Length: 3/,
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
341 'set Content-Length');
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
342 like(http_get('/content_type'), qr/Content-Type: text\/xml; charset="utf-8"\r/,
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
343 'set Content-Type');
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
344 unlike(http_get('/content_type'), qr/Content-Type: text\/plain/,
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
345 'set Content-Type 2');
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
346 like(http_get('/content_encoding'), qr/Content-Encoding: gzip/,
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
347 'set Content-Encoding');
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
348 like(http_get('/headers_list'), qr/a:c:d/, 'headers list');
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
349
1440
5d0eb718f38e Tests: moved njs http headers test to a separate file.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1439
diff changeset
350 like(http_get('/ihdr_out?a=12&b=34'), qr/^1234$/m, 'r.headersOut iteration');
5d0eb718f38e Tests: moved njs http headers test to a separate file.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1439
diff changeset
351 like(http_get('/ihdr_out'), qr/\x0d\x0a?\x0d\x0a?$/m, 'r.send zero');
5d0eb718f38e Tests: moved njs http headers test to a separate file.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1439
diff changeset
352 like(http_get('/hdr_out?foo=12345'), qr/Foo: 12345/, 'r.headersOut');
5d0eb718f38e Tests: moved njs http headers test to a separate file.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1439
diff changeset
353 like(http_get('/hdr_out?foo=123&bar=copy'), qr/Bar: 123/, 'r.headersOut get');
5d0eb718f38e Tests: moved njs http headers test to a separate file.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1439
diff changeset
354 unlike(http_get('/hdr_out?bar=empty'), qr/Bar:/, 'r.headersOut empty');
5d0eb718f38e Tests: moved njs http headers test to a separate file.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1439
diff changeset
355 unlike(http_get('/hdr_out?foo='), qr/Foo:/, 'r.headersOut no value');
5d0eb718f38e Tests: moved njs http headers test to a separate file.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1439
diff changeset
356 unlike(http_get('/hdr_out?foo'), qr/Foo:/, 'r.headersOut no value 2');
1439
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
357
1563
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
358 TODO: {
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
359 local $TODO = 'not yet'
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
360 unless http_get('/njs') =~ /^([.0-9]+)$/m && $1 ge '0.4.0';
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
361
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
362 like(http_get('/content_length_keys'), qr/B:true/, 'Content-Length in keys');
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
363 like(http_get('/content_length_arr'), qr/Content-Length: 3/,
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
364 'set Content-Length arr');
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
365
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
366 like(http_get('/content_type'), qr/B:true/, 'Content-Type in keys');
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
367 like(http_get('/content_type_arr'), qr/Content-Type: text\/html/,
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
368 'set Content-Type arr');
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
369 like(http_get('/content_encoding_arr'), qr/Content-Encoding: gzip/,
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
370 'set Content-Encoding arr');
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
371
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
372 like(http_get('/hdr_out_array?foo=12345'), qr/Foo: bar\r\nFoo: 12345/,
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
373 'r.headersOut arr');
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
374 like(http_get('/hdr_out_array'), qr/Foo: bar/,
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
375 'r.headersOut arr last is empty');
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
376 like(http_get('/hdr_out_array?foo=abc'), qr/B:bar,abc/,
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
377 'r.headersOut get');
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
378 like(http_get('/hdr_out_array'), qr/B:bar/, 'r.headersOut get2');
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
379 like(http_get('/hdr_out_array?hidden=1'), qr/B:undefined/,
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
380 'r.headersOut get3');
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
381 like(http_get('/hdr_out_array?scalar_set=1'), qr/B:xxx/,
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
382 'r.headersOut scalar set');
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
383 like(http_get('/hdr_out_single'), qr/ETag: a\r\nETag: b/,
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
384 'r.headersOut single');
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
385 like(http_get('/hdr_out_single'), qr/B:a/,
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
386 'r.headersOut single get');
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
387 like(http_get('/hdr_out_set_cookie'), qr/Set-Cookie: c\r\nSet-Cookie: d/,
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
388 'set_cookie');
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
389 like(http_get('/hdr_out_set_cookie'), qr/B:\['c','d','f']/,
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
390 'set_cookie2');
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
391 unlike(http_get('/hdr_out_set_cookie'), qr/Set-Cookie: [abe]/,
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
392 'set_cookie3');
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
393
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
394 }
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
395
1521
b6699ffd9ddd Tests: added Cookie and X-Forwarded-For r.headersIn tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1520
diff changeset
396 like(http(
b6699ffd9ddd Tests: added Cookie and X-Forwarded-For r.headersIn tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1520
diff changeset
397 'GET /hdr_in HTTP/1.0' . CRLF
b6699ffd9ddd Tests: added Cookie and X-Forwarded-For r.headersIn tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1520
diff changeset
398 . 'Cookie: foo' . CRLF
b6699ffd9ddd Tests: added Cookie and X-Forwarded-For r.headersIn tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1520
diff changeset
399 . 'Host: localhost' . CRLF . CRLF
b6699ffd9ddd Tests: added Cookie and X-Forwarded-For r.headersIn tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1520
diff changeset
400 ), qr/cookie: foo/, 'r.headersIn cookie');
b6699ffd9ddd Tests: added Cookie and X-Forwarded-For r.headersIn tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1520
diff changeset
401
b6699ffd9ddd Tests: added Cookie and X-Forwarded-For r.headersIn tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1520
diff changeset
402 like(http(
b6699ffd9ddd Tests: added Cookie and X-Forwarded-For r.headersIn tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1520
diff changeset
403 'GET /hdr_in HTTP/1.0' . CRLF
b6699ffd9ddd Tests: added Cookie and X-Forwarded-For r.headersIn tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1520
diff changeset
404 . 'X-Forwarded-For: foo' . CRLF
b6699ffd9ddd Tests: added Cookie and X-Forwarded-For r.headersIn tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1520
diff changeset
405 . 'Host: localhost' . CRLF . CRLF
b6699ffd9ddd Tests: added Cookie and X-Forwarded-For r.headersIn tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1520
diff changeset
406 ), qr/x-forwarded-for: foo/, 'r.headersIn xff');
b6699ffd9ddd Tests: added Cookie and X-Forwarded-For r.headersIn tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1520
diff changeset
407
b6699ffd9ddd Tests: added Cookie and X-Forwarded-For r.headersIn tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1520
diff changeset
408 like(http(
b6699ffd9ddd Tests: added Cookie and X-Forwarded-For r.headersIn tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1520
diff changeset
409 'GET /hdr_in HTTP/1.0' . CRLF
b6699ffd9ddd Tests: added Cookie and X-Forwarded-For r.headersIn tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1520
diff changeset
410 . 'Cookie: foo1' . CRLF
b6699ffd9ddd Tests: added Cookie and X-Forwarded-For r.headersIn tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1520
diff changeset
411 . 'Cookie: foo2' . CRLF
b6699ffd9ddd Tests: added Cookie and X-Forwarded-For r.headersIn tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1520
diff changeset
412 . 'Host: localhost' . CRLF . CRLF
1566
5cf2f4da8bd5 Tests: added js tests for multi-values headers in r.headersIn.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1565
diff changeset
413 ), qr/cookie: foo1;\s?foo2/, 'r.headersIn cookie2');
1521
b6699ffd9ddd Tests: added Cookie and X-Forwarded-For r.headersIn tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1520
diff changeset
414
b6699ffd9ddd Tests: added Cookie and X-Forwarded-For r.headersIn tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1520
diff changeset
415 like(http(
b6699ffd9ddd Tests: added Cookie and X-Forwarded-For r.headersIn tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1520
diff changeset
416 'GET /hdr_in HTTP/1.0' . CRLF
b6699ffd9ddd Tests: added Cookie and X-Forwarded-For r.headersIn tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1520
diff changeset
417 . 'X-Forwarded-For: foo1' . CRLF
b6699ffd9ddd Tests: added Cookie and X-Forwarded-For r.headersIn tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1520
diff changeset
418 . 'X-Forwarded-For: foo2' . CRLF
b6699ffd9ddd Tests: added Cookie and X-Forwarded-For r.headersIn tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1520
diff changeset
419 . 'Host: localhost' . CRLF . CRLF
1566
5cf2f4da8bd5 Tests: added js tests for multi-values headers in r.headersIn.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1565
diff changeset
420 ), qr/x-forwarded-for: foo1,\s?foo2/, 'r.headersIn xff2');
5cf2f4da8bd5 Tests: added js tests for multi-values headers in r.headersIn.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1565
diff changeset
421
5cf2f4da8bd5 Tests: added js tests for multi-values headers in r.headersIn.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1565
diff changeset
422 like(http(
5cf2f4da8bd5 Tests: added js tests for multi-values headers in r.headersIn.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1565
diff changeset
423 'GET /hdr_in HTTP/1.0' . CRLF
5cf2f4da8bd5 Tests: added js tests for multi-values headers in r.headersIn.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1565
diff changeset
424 . 'ETag: bar1' . CRLF
5cf2f4da8bd5 Tests: added js tests for multi-values headers in r.headersIn.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1565
diff changeset
425 . 'ETag: bar2' . CRLF
5cf2f4da8bd5 Tests: added js tests for multi-values headers in r.headersIn.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1565
diff changeset
426 . 'Host: localhost' . CRLF . CRLF
5cf2f4da8bd5 Tests: added js tests for multi-values headers in r.headersIn.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1565
diff changeset
427 ), qr/etag: bar1(?!,\s?bar2)/, 'r.headersIn duplicate single');
5cf2f4da8bd5 Tests: added js tests for multi-values headers in r.headersIn.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1565
diff changeset
428
5cf2f4da8bd5 Tests: added js tests for multi-values headers in r.headersIn.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1565
diff changeset
429 like(http(
5cf2f4da8bd5 Tests: added js tests for multi-values headers in r.headersIn.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1565
diff changeset
430 'GET /hdr_in HTTP/1.0' . CRLF
5cf2f4da8bd5 Tests: added js tests for multi-values headers in r.headersIn.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1565
diff changeset
431 . 'Content-Type: bar1' . CRLF
5cf2f4da8bd5 Tests: added js tests for multi-values headers in r.headersIn.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1565
diff changeset
432 . 'Content-Type: bar2' . CRLF
5cf2f4da8bd5 Tests: added js tests for multi-values headers in r.headersIn.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1565
diff changeset
433 . 'Host: localhost' . CRLF . CRLF
5cf2f4da8bd5 Tests: added js tests for multi-values headers in r.headersIn.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1565
diff changeset
434 ), qr/content-type: bar1(?!,\s?bar2)/, 'r.headersIn duplicate single 2');
5cf2f4da8bd5 Tests: added js tests for multi-values headers in r.headersIn.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1565
diff changeset
435
5cf2f4da8bd5 Tests: added js tests for multi-values headers in r.headersIn.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1565
diff changeset
436 TODO: {
5cf2f4da8bd5 Tests: added js tests for multi-values headers in r.headersIn.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1565
diff changeset
437 local $TODO = 'not yet'
5cf2f4da8bd5 Tests: added js tests for multi-values headers in r.headersIn.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1565
diff changeset
438 unless http_get('/njs') =~ /^([.0-9]+)$/m && $1 ge '0.4.1';
5cf2f4da8bd5 Tests: added js tests for multi-values headers in r.headersIn.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1565
diff changeset
439
5cf2f4da8bd5 Tests: added js tests for multi-values headers in r.headersIn.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1565
diff changeset
440 like(http(
5cf2f4da8bd5 Tests: added js tests for multi-values headers in r.headersIn.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1565
diff changeset
441 'GET /hdr_in HTTP/1.0' . CRLF
5cf2f4da8bd5 Tests: added js tests for multi-values headers in r.headersIn.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1565
diff changeset
442 . 'Foo: bar1' . CRLF
5cf2f4da8bd5 Tests: added js tests for multi-values headers in r.headersIn.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1565
diff changeset
443 . 'Foo: bar2' . CRLF
5cf2f4da8bd5 Tests: added js tests for multi-values headers in r.headersIn.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1565
diff changeset
444 . 'Host: localhost' . CRLF . CRLF
5cf2f4da8bd5 Tests: added js tests for multi-values headers in r.headersIn.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1565
diff changeset
445 ), qr/foo: bar1,bar2/, 'r.headersIn duplicate generic');
5cf2f4da8bd5 Tests: added js tests for multi-values headers in r.headersIn.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1565
diff changeset
446
1568
4cc012205ac5 Tests: added js tests for raw headers API.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1566
diff changeset
447 like(http(
4cc012205ac5 Tests: added js tests for raw headers API.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1566
diff changeset
448 'GET /raw_hdr_in?filter=foo HTTP/1.0' . CRLF
4cc012205ac5 Tests: added js tests for raw headers API.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1566
diff changeset
449 . 'foo: bar1' . CRLF
4cc012205ac5 Tests: added js tests for raw headers API.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1566
diff changeset
450 . 'Foo: bar2' . CRLF
4cc012205ac5 Tests: added js tests for raw headers API.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1566
diff changeset
451 . 'Host: localhost' . CRLF . CRLF
4cc012205ac5 Tests: added js tests for raw headers API.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1566
diff changeset
452 ), qr/raw: bar1|bar2/, 'r.rawHeadersIn');
4cc012205ac5 Tests: added js tests for raw headers API.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1566
diff changeset
453
4cc012205ac5 Tests: added js tests for raw headers API.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1566
diff changeset
454 like(http_get('/raw_hdr_out?filter=a'), qr/raw: foo|bar/, 'r.rawHeadersOut');
4cc012205ac5 Tests: added js tests for raw headers API.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1566
diff changeset
455
1566
5cf2f4da8bd5 Tests: added js tests for multi-values headers in r.headersIn.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1565
diff changeset
456 }
1521
b6699ffd9ddd Tests: added Cookie and X-Forwarded-For r.headersIn tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1520
diff changeset
457
1525
ca0858ef7d3d Tests: added js keys tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1521
diff changeset
458 like(http(
ca0858ef7d3d Tests: added js keys tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1521
diff changeset
459 'GET /hdr_sorted_keys?in=1 HTTP/1.0' . CRLF
ca0858ef7d3d Tests: added js keys tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1521
diff changeset
460 . 'Cookie: foo1' . CRLF
ca0858ef7d3d Tests: added js keys tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1521
diff changeset
461 . 'Accept: */*' . CRLF
ca0858ef7d3d Tests: added js keys tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1521
diff changeset
462 . 'Cookie: foo2' . CRLF
ca0858ef7d3d Tests: added js keys tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1521
diff changeset
463 . 'Host: localhost' . CRLF . CRLF
ca0858ef7d3d Tests: added js keys tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1521
diff changeset
464 ), qr/Accept,Cookie,Host/, 'r.headersIn sorted keys');
ca0858ef7d3d Tests: added js keys tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1521
diff changeset
465
ca0858ef7d3d Tests: added js keys tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1521
diff changeset
466 like(http(
ca0858ef7d3d Tests: added js keys tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1521
diff changeset
467 'GET /hdr_sorted_keys HTTP/1.0' . CRLF
ca0858ef7d3d Tests: added js keys tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1521
diff changeset
468 . 'Host: localhost' . CRLF . CRLF
ca0858ef7d3d Tests: added js keys tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1521
diff changeset
469 ), qr/a,b,c/, 'r.headersOut sorted keys');
ca0858ef7d3d Tests: added js keys tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1521
diff changeset
470
1439
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
471 ###############################################################################