annotate js_paths.t @ 1571:1b4ceab9cb1c

Tests: fixed ssl_certificate.t with LibreSSL client. Net::SSLeay::connect() that manages TLS handshake could return unexpected error when receiving server alert, as seen in server certificate tests if it could not been selected. Typically, it returns the expected error -1, but with certain libssl implementations it can be 0, as explained below. The error is propagated from libssl's SSL_connect(), which is usually -1. In modern OpenSSL versions, it is the default error code used in the state machine returned when something went wrong with parsing TLS message header. In versions up to OpenSSL 1.0.2, with SSLv23_method() used by default, -1 is the only error code in the ssl_connect() method implementation which is used as well if receiving alert while parsing ServerHello. BoringSSL also seems to return -1. But it is not so with LibreSSL that returns zero. Previously, tests failed with client built with LibreSSL with SSLv3 removed. Here, the error is propagated directly from ssl_read_bytes() method, which is always implemented as ssl3_read_bytes() in all TLS methods. It could be also seen with OpenSSL up to 1.0.2 with non-default methods explicitly set.
author Sergey Kandaurov <pluknet@nginx.com>
date Fri, 29 May 2020 23:10:20 +0300
parents f4ae08adc23f
children bc0990ea2e5b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1456
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
1 #!/usr/bin/perl
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
2
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
3 # (C) Dmitry Volyntsev
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
4 # (C) Nginx, Inc.
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
5
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
6 # Tests for http njs module, js_path directive.
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
7
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
8 ###############################################################################
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
9
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
10 use warnings;
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
11 use strict;
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
12
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
13 use Test::More;
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
14
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
15 BEGIN { use FindBin; chdir($FindBin::Bin); }
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
16
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
17 use lib 'lib';
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
18 use Test::Nginx;
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
19
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
20 ###############################################################################
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
21
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
22 select STDERR; $| = 1;
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
23 select STDOUT; $| = 1;
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
24
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
25 my $t = Test::Nginx->new()->has(qw/http/)
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
26 ->write_file_expand('nginx.conf', <<'EOF');
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
27
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
28 %%TEST_GLOBALS%%
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
29
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
30 daemon off;
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
31
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
32 events {
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
33 }
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
34
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
35 http {
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
36 %%TEST_GLOBALS_HTTP%%
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
37
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
38 js_path "%%TESTDIR%%/lib1";
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
39 js_path "lib2";
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
40
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
41 js_include test.js;
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
42
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
43 server {
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
44 listen 127.0.0.1:8080;
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
45 server_name localhost;
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
46
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
47 location /njs {
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
48 js_content test_njs;
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
49 }
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
50
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
51 location /test {
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
52 js_content test;
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
53 }
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
54
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
55 location /test2 {
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
56 js_content test2;
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
57 }
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
58 }
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
59 }
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
60
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
61 EOF
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
62
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
63 $t->write_file('test.js', <<EOF);
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
64 import m1 from 'module1.js';
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
65 import m2 from 'module2.js';
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
66 import m3 from 'lib1/module1.js';
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
67
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
68 function test_njs(r) {
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
69 r.return(200, njs.version);
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
70 }
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
71
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
72 function test(r) {
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
73 r.return(200, m1[r.args.fun](r.args.a, r.args.b));
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
74 }
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
75
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
76 function test2(r) {
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
77 r.return(200, m2.sum(r.args.a, r.args.b));
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
78 }
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
79
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
80 function test3(r) {
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
81 r.return(200, m3.sum(r.args.a, r.args.b));
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
82 }
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
83
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
84 EOF
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
85
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
86 my $d = $t->testdir();
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
87
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
88 mkdir("$d/lib1");
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
89 mkdir("$d/lib2");
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
90
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
91 $t->write_file('lib1/module1.js', <<EOF);
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
92 function sum(a, b) { return Number(a) + Number(b); }
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
93 function prod(a, b) { return Number(a) * Number(b); }
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
94
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
95 export default {sum, prod};
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
96
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
97 EOF
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
98
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
99 $t->write_file('lib2/module2.js', <<EOF);
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
100 function sum(a, b) { return a + b; }
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
101
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
102 export default {sum};
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
103
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
104 EOF
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
105
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
106
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
107 $t->try_run('no njs available')->plan(4);
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
108
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
109 ###############################################################################
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
110
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
111 like(http_get('/test?fun=sum&a=3&b=4'), qr/7/s, 'test sum');
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
112 like(http_get('/test?fun=prod&a=3&b=4'), qr/12/s, 'test prod');
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
113 like(http_get('/test2?a=3&b=4'), qr/34/s, 'test2');
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
114 like(http_get('/test2?a=A&b=B'), qr/AB/s, 'test2 relative');
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
115
f4ae08adc23f Tests: added njs modules tests.
Dmitry Volyntsev <xeioex@nginx.com>
parents:
diff changeset
116 ###############################################################################