annotate js_dump.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 96fb3513345b
children bc0990ea2e5b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1534
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
1 #!/usr/bin/perl
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
2
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
3 # (C) Dmitry Volyntsev
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
4 # (C) Nginx, Inc.
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
5
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
6 # Tests for http njs module, request object dump.
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
7
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
8 ###############################################################################
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
9
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
10 use warnings;
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
11 use strict;
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
12
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
13 use Test::More;
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
14 use Socket qw/ CRLF /;
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
15
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
16 BEGIN { use FindBin; chdir($FindBin::Bin); }
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
17
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
18 use lib 'lib';
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
19 use Test::Nginx;
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
20
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
21 ###############################################################################
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
22
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
23 select STDERR; $| = 1;
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
24 select STDOUT; $| = 1;
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
25
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
26 my $t = Test::Nginx->new()->has(qw/http rewrite/)
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
27 ->write_file_expand('nginx.conf', <<'EOF');
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
28
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
29 %%TEST_GLOBALS%%
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
30
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
31 daemon off;
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
32
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
33 events {
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
34 }
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
35
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
36 http {
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
37 %%TEST_GLOBALS_HTTP%%
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
38
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
39 js_include test.js;
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
40
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
41 server {
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
42 listen 127.0.0.1:8080;
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
43 server_name localhost;
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
44
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
45 location /njs {
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
46 js_content test_njs;
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
47 }
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
48
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
49 location /dump {
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
50 js_content test_dump;
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
51 }
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
52
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
53 location /stringify {
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
54 js_content test_stringify;
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
55 }
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
56
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
57 location /stringify_subrequest {
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
58 js_content test_stringify_subrequest;
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
59 }
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
60
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
61 location /js_sub {
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
62 return 201 '{$request_method}';
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
63 }
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
64 }
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
65 }
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
66
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
67 EOF
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
68
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
69 $t->write_file('test.js', <<EOF);
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
70 function test_njs(r) {
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
71 r.return(200, njs.version);
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
72 }
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
73
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
74 function test_dump(r) {
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
75 r.headersOut.baz = 'bar';
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
76 r.return(200, njs.dump(r));
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
77 }
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
78
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
79 function test_stringify(r) {
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
80 r.headersOut.baz = 'bar';
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
81 var obj = JSON.parse(JSON.stringify(r));
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
82 r.return(200, JSON.stringify(obj));
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
83 }
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
84
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
85 function test_stringify_subrequest(r) {
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
86 r.subrequest('/js_sub', reply => {
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
87 r.return(200, JSON.stringify(reply))
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
88 });
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
89 }
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
90
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
91 EOF
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
92
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
93 $t->try_run('no njs dump')->plan(3);
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
94
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
95 ###############################################################################
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
96
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
97 TODO: {
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
98 local $TODO = 'not yet'
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
99 unless http_get('/njs') =~ /^([.0-9]+)$/m && $1 ge '0.3.8';
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
100
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
101 like(http(
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
102 'GET /dump?v=1&t=x HTTP/1.0' . CRLF
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
103 . 'Foo: bar' . CRLF
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
104 . 'Foo2: bar2' . CRLF
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
105 . 'Host: localhost' . CRLF . CRLF
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
106 ), qr/method:'GET'/, 'njs.dump(r)');
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
107
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
108 like(http(
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
109 'GET /stringify?v=1&t=x HTTP/1.0' . CRLF
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
110 . 'Foo: bar' . CRLF
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
111 . 'Foo2: bar2' . CRLF
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
112 . 'Host: localhost' . CRLF . CRLF
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
113 ), qr/headersOut":\{"baz":"bar"}/, 'JSON.stringify(r)');
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
114
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
115 like(http(
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
116 'GET /stringify_subrequest HTTP/1.0' . CRLF
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
117 . 'Host: localhost' . CRLF . CRLF
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
118 ), qr/responseBody":"\{GET}"/, 'JSON.stringify(reply)');
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
119
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
120 }
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
121
96fb3513345b Tests: added js dump tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
122 ###############################################################################