annotate js_headers.t @ 1606:e4e0695552ed

Tests: fixed stream_proxy_ssl_conf_command.t. The stream_proxy_ssl_conf_command.t test used stream return module to return the response. Since this ignores actual request, but the perl test code used http_get(). This might result in the request being sent after the response is returned and the connection closed by the server, resulting in RST being generated and no response seen by the client at all. Fix is to use "stream(...)->read()" instead of http_get(), so no request is sent at all, eliminating possibility of RST being generated.
author Maxim Dounin <mdounin@mdounin.ru>
date Tue, 10 Nov 2020 05:03:29 +0300
parents 4cc012205ac5
children 18ac4d9e5a2a
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
1521
b6699ffd9ddd Tests: added Cookie and X-Forwarded-For r.headersIn tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1520
diff changeset
40 js_set $test_foo_in test_foo_in;
b6699ffd9ddd Tests: added Cookie and X-Forwarded-For r.headersIn tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1520
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
1439
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
43 js_include test.js;
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 {
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
50 js_content test_njs;
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 {
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
54 js_content content_length;
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 {
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
58 js_content content_length_arr;
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 {
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
62 js_content content_length_keys;
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;
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
69 js_content content_type;
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;
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
76 js_content content_type_arr;
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 {
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
80 js_content content_encoding;
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 {
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
84 js_content content_encoding_arr;
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 {
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
88 js_content headers_list;
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 {
b6699ffd9ddd Tests: added Cookie and X-Forwarded-For r.headersIn tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1520
diff changeset
100 js_content 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 {
4cc012205ac5 Tests: added js tests for raw headers API.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1566
diff changeset
104 js_content raw_hdr_in;
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 {
5d0eb718f38e Tests: moved njs http headers test to a separate file.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1439
diff changeset
108 js_content hdr_out;
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 {
4cc012205ac5 Tests: added js tests for raw headers API.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1566
diff changeset
112 js_content raw_hdr_out;
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 {
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
116 js_content hdr_out_array;
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 {
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
120 js_content hdr_out_set_cookie;
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 {
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
124 js_content hdr_out_single;
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 {
5d0eb718f38e Tests: moved njs http headers test to a separate file.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1439
diff changeset
128 js_content ihdr_out;
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 {
ca0858ef7d3d Tests: added js keys tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1521
diff changeset
132 js_content hdr_sorted_keys;
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
1521
b6699ffd9ddd Tests: added Cookie and X-Forwarded-For r.headersIn tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1520
diff changeset
246 function test_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
1521
b6699ffd9ddd Tests: added Cookie and X-Forwarded-For r.headersIn tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1520
diff changeset
250 function test_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
5d0eb718f38e Tests: moved njs http headers test to a separate file.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1439
diff changeset
326
1439
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
327 EOF
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
328
1568
4cc012205ac5 Tests: added js tests for raw headers API.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1566
diff changeset
329 $t->try_run('no njs')->plan(39);
1439
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
330
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
331 ###############################################################################
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
332
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
333 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
334 'set Content-Length');
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
335 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
336 'set Content-Type');
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
337 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
338 'set Content-Type 2');
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
339 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
340 'set Content-Encoding');
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
341 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
342
1440
5d0eb718f38e Tests: moved njs http headers test to a separate file.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1439
diff changeset
343 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
344 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
345 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
346 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
347 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
348 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
349 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
350
1563
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
351 TODO: {
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
352 local $TODO = 'not yet'
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
353 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
354
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
355 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
356 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
357 'set Content-Length arr');
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
358
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
359 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
360 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
361 'set Content-Type arr');
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
362 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
363 'set Content-Encoding arr');
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
364
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
365 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
366 'r.headersOut arr');
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
367 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
368 'r.headersOut arr last is empty');
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
369 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
370 'r.headersOut get');
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
371 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
372 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
373 'r.headersOut get3');
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?scalar_set=1'), qr/B:xxx/,
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
375 'r.headersOut scalar set');
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
376 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
377 'r.headersOut single');
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
378 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
379 'r.headersOut single get');
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
380 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
381 'set_cookie');
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
382 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
383 'set_cookie2');
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
384 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
385 'set_cookie3');
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
386
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
387 }
c1d167a13c24 Tests: added js tests for multi-values headers.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1525
diff changeset
388
1521
b6699ffd9ddd Tests: added Cookie and X-Forwarded-For r.headersIn tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1520
diff changeset
389 like(http(
b6699ffd9ddd Tests: added Cookie and X-Forwarded-For r.headersIn tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1520
diff changeset
390 '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
391 . 'Cookie: foo' . CRLF
b6699ffd9ddd Tests: added Cookie and X-Forwarded-For r.headersIn tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1520
diff changeset
392 . 'Host: localhost' . CRLF . CRLF
b6699ffd9ddd Tests: added Cookie and X-Forwarded-For r.headersIn tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1520
diff changeset
393 ), 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
394
b6699ffd9ddd Tests: added Cookie and X-Forwarded-For r.headersIn tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1520
diff changeset
395 like(http(
b6699ffd9ddd Tests: added Cookie and X-Forwarded-For r.headersIn tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1520
diff changeset
396 '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
397 . '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
398 . 'Host: localhost' . CRLF . CRLF
b6699ffd9ddd Tests: added Cookie and X-Forwarded-For r.headersIn tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1520
diff changeset
399 ), 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
400
b6699ffd9ddd Tests: added Cookie and X-Forwarded-For r.headersIn tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1520
diff changeset
401 like(http(
b6699ffd9ddd Tests: added Cookie and X-Forwarded-For r.headersIn tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1520
diff changeset
402 '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
403 . 'Cookie: foo1' . CRLF
b6699ffd9ddd Tests: added Cookie and X-Forwarded-For r.headersIn tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1520
diff changeset
404 . 'Cookie: foo2' . 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
1566
5cf2f4da8bd5 Tests: added js tests for multi-values headers in r.headersIn.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1565
diff changeset
406 ), 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
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 . '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
411 . '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
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/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
414
5cf2f4da8bd5 Tests: added js tests for multi-values headers in r.headersIn.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1565
diff changeset
415 like(http(
5cf2f4da8bd5 Tests: added js tests for multi-values headers in r.headersIn.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1565
diff changeset
416 '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
417 . 'ETag: bar1' . CRLF
5cf2f4da8bd5 Tests: added js tests for multi-values headers in r.headersIn.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1565
diff changeset
418 . 'ETag: bar2' . CRLF
5cf2f4da8bd5 Tests: added js tests for multi-values headers in r.headersIn.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1565
diff changeset
419 . '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
420 ), 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
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 . '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
425 . '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
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/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
428
5cf2f4da8bd5 Tests: added js tests for multi-values headers in r.headersIn.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1565
diff changeset
429 TODO: {
5cf2f4da8bd5 Tests: added js tests for multi-values headers in r.headersIn.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1565
diff changeset
430 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
431 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
432
5cf2f4da8bd5 Tests: added js tests for multi-values headers in r.headersIn.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1565
diff changeset
433 like(http(
5cf2f4da8bd5 Tests: added js tests for multi-values headers in r.headersIn.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1565
diff changeset
434 '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
435 . 'Foo: bar1' . CRLF
5cf2f4da8bd5 Tests: added js tests for multi-values headers in r.headersIn.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1565
diff changeset
436 . 'Foo: bar2' . CRLF
5cf2f4da8bd5 Tests: added js tests for multi-values headers in r.headersIn.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1565
diff changeset
437 . '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
438 ), 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
439
1568
4cc012205ac5 Tests: added js tests for raw headers API.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1566
diff changeset
440 like(http(
4cc012205ac5 Tests: added js tests for raw headers API.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1566
diff changeset
441 '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
442 . 'foo: bar1' . CRLF
4cc012205ac5 Tests: added js tests for raw headers API.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1566
diff changeset
443 . 'Foo: bar2' . CRLF
4cc012205ac5 Tests: added js tests for raw headers API.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1566
diff changeset
444 . 'Host: localhost' . CRLF . CRLF
4cc012205ac5 Tests: added js tests for raw headers API.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1566
diff changeset
445 ), qr/raw: bar1|bar2/, 'r.rawHeadersIn');
4cc012205ac5 Tests: added js tests for raw headers API.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1566
diff changeset
446
4cc012205ac5 Tests: added js tests for raw headers API.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1566
diff changeset
447 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
448
1566
5cf2f4da8bd5 Tests: added js tests for multi-values headers in r.headersIn.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1565
diff changeset
449 }
1521
b6699ffd9ddd Tests: added Cookie and X-Forwarded-For r.headersIn tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1520
diff changeset
450
1525
ca0858ef7d3d Tests: added js keys tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1521
diff changeset
451 like(http(
ca0858ef7d3d Tests: added js keys tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1521
diff changeset
452 '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
453 . 'Cookie: foo1' . CRLF
ca0858ef7d3d Tests: added js keys tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1521
diff changeset
454 . 'Accept: */*' . CRLF
ca0858ef7d3d Tests: added js keys tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1521
diff changeset
455 . 'Cookie: foo2' . CRLF
ca0858ef7d3d Tests: added js keys tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1521
diff changeset
456 . 'Host: localhost' . CRLF . CRLF
ca0858ef7d3d Tests: added js keys tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1521
diff changeset
457 ), qr/Accept,Cookie,Host/, 'r.headersIn sorted keys');
ca0858ef7d3d Tests: added js keys tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1521
diff changeset
458
ca0858ef7d3d Tests: added js keys tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1521
diff changeset
459 like(http(
ca0858ef7d3d Tests: added js keys tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1521
diff changeset
460 'GET /hdr_sorted_keys HTTP/1.0' . CRLF
ca0858ef7d3d Tests: added js keys tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1521
diff changeset
461 . 'Host: localhost' . CRLF . CRLF
ca0858ef7d3d Tests: added js keys tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1521
diff changeset
462 ), qr/a,b,c/, 'r.headersOut sorted keys');
ca0858ef7d3d Tests: added js keys tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 1521
diff changeset
463
1439
c083749bc47d Tests: added njs http r.headersOut tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
464 ###############################################################################