Mercurial > hg > nginx-tests
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 |
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 ############################################################################### |