annotate stream_proxy_ssl_conf_command.t @ 1888:cc13f7b098db

Tests: avoid premature stream reset in h3_limit_req.t. STREAM and RESET_STREAM frames could be batched, which prevents the stream from being processed and changes the status code. The fix is to wait for the stream acknowledgment. Here we just look at the largest acknowledged, this should be enough for simple cases.
author Sergey Kandaurov <pluknet@nginx.com>
date Tue, 04 Apr 2023 00:33:54 +0400
parents 58951cf933e1
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1604
4be791074207 Tests: proxy_ssl_conf_command tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
1 #!/usr/bin/perl
4be791074207 Tests: proxy_ssl_conf_command tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
2
4be791074207 Tests: proxy_ssl_conf_command tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
3 # (C) Sergey Kandaurov
4be791074207 Tests: proxy_ssl_conf_command tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
4 # (C) Nginx, Inc.
4be791074207 Tests: proxy_ssl_conf_command tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
5
4be791074207 Tests: proxy_ssl_conf_command tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
6 # Tests for stream proxy to ssl backend, proxy_ssl_conf_command.
4be791074207 Tests: proxy_ssl_conf_command tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
7
4be791074207 Tests: proxy_ssl_conf_command tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
8 ###############################################################################
4be791074207 Tests: proxy_ssl_conf_command tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
9
4be791074207 Tests: proxy_ssl_conf_command tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
10 use warnings;
4be791074207 Tests: proxy_ssl_conf_command tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
11 use strict;
4be791074207 Tests: proxy_ssl_conf_command tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
12
4be791074207 Tests: proxy_ssl_conf_command tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
13 use Test::More;
4be791074207 Tests: proxy_ssl_conf_command tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
14
4be791074207 Tests: proxy_ssl_conf_command tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
15 BEGIN { use FindBin; chdir($FindBin::Bin); }
4be791074207 Tests: proxy_ssl_conf_command tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
16
4be791074207 Tests: proxy_ssl_conf_command tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
17 use lib 'lib';
4be791074207 Tests: proxy_ssl_conf_command tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
18 use Test::Nginx;
4be791074207 Tests: proxy_ssl_conf_command tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
19
4be791074207 Tests: proxy_ssl_conf_command tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
20 ###############################################################################
4be791074207 Tests: proxy_ssl_conf_command tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
21
4be791074207 Tests: proxy_ssl_conf_command tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
22 select STDERR; $| = 1;
4be791074207 Tests: proxy_ssl_conf_command tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
23 select STDOUT; $| = 1;
4be791074207 Tests: proxy_ssl_conf_command tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
24
1860
58951cf933e1 Tests: added has_feature() test for SSL libraries.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1759
diff changeset
25 my $t = Test::Nginx->new()
58951cf933e1 Tests: added has_feature() test for SSL libraries.
Maxim Dounin <mdounin@mdounin.ru>
parents: 1759
diff changeset
26 ->has(qw/stream stream_ssl http http_ssl openssl:1.0.2/)
1604
4be791074207 Tests: proxy_ssl_conf_command tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
27 ->has_daemon('openssl');
4be791074207 Tests: proxy_ssl_conf_command tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
28
1696
4baeba0e0da2 Tests: skip ssl_conf_command tests with BoringSSL.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1693
diff changeset
29 plan(skip_all => 'no ssl_conf_command') if $t->has_module('BoringSSL');
1692
f6795e2e6a4b Tests: skip ssl_conf_command tests on too old OpenSSL explicitly.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1609
diff changeset
30
1604
4be791074207 Tests: proxy_ssl_conf_command tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
31 $t->write_file_expand('nginx.conf', <<'EOF');
4be791074207 Tests: proxy_ssl_conf_command tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
32
4be791074207 Tests: proxy_ssl_conf_command tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
33 %%TEST_GLOBALS%%
4be791074207 Tests: proxy_ssl_conf_command tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
34
4be791074207 Tests: proxy_ssl_conf_command tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
35 daemon off;
4be791074207 Tests: proxy_ssl_conf_command tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
36
4be791074207 Tests: proxy_ssl_conf_command tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
37 events {
4be791074207 Tests: proxy_ssl_conf_command tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
38 }
4be791074207 Tests: proxy_ssl_conf_command tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
39
4be791074207 Tests: proxy_ssl_conf_command tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
40 stream {
1609
f3ba4c74de31 Tests: added TEST_GLOBALS_STREAM variable support.
Andrei Belov <defan@nginx.com>
parents: 1606
diff changeset
41 %%TEST_GLOBALS_STREAM%%
f3ba4c74de31 Tests: added TEST_GLOBALS_STREAM variable support.
Andrei Belov <defan@nginx.com>
parents: 1606
diff changeset
42
1604
4be791074207 Tests: proxy_ssl_conf_command tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
43 server {
4be791074207 Tests: proxy_ssl_conf_command tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
44 listen 127.0.0.1:8080;
4be791074207 Tests: proxy_ssl_conf_command tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
45 proxy_pass 127.0.0.1:8081;
4be791074207 Tests: proxy_ssl_conf_command tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
46 proxy_ssl on;
4be791074207 Tests: proxy_ssl_conf_command tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
47
4be791074207 Tests: proxy_ssl_conf_command tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
48 proxy_ssl_certificate localhost.crt;
4be791074207 Tests: proxy_ssl_conf_command tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
49 proxy_ssl_certificate_key localhost.key;
4be791074207 Tests: proxy_ssl_conf_command tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
50 proxy_ssl_conf_command Certificate override.crt;
4be791074207 Tests: proxy_ssl_conf_command tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
51 proxy_ssl_conf_command PrivateKey override.key;
4be791074207 Tests: proxy_ssl_conf_command tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
52 }
1759
8f13779e2cde Tests: fixed stream_proxy_ssl_conf_command.t on win32.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1696
diff changeset
53 }
8f13779e2cde Tests: fixed stream_proxy_ssl_conf_command.t on win32.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1696
diff changeset
54
8f13779e2cde Tests: fixed stream_proxy_ssl_conf_command.t on win32.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1696
diff changeset
55 http {
8f13779e2cde Tests: fixed stream_proxy_ssl_conf_command.t on win32.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1696
diff changeset
56 %%TEST_GLOBALS_HTTP%%
1604
4be791074207 Tests: proxy_ssl_conf_command tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
57
4be791074207 Tests: proxy_ssl_conf_command tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
58 server {
4be791074207 Tests: proxy_ssl_conf_command tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
59 listen 127.0.0.1:8081 ssl;
1759
8f13779e2cde Tests: fixed stream_proxy_ssl_conf_command.t on win32.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1696
diff changeset
60 server_name localhost;
1604
4be791074207 Tests: proxy_ssl_conf_command tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
61
4be791074207 Tests: proxy_ssl_conf_command tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
62 ssl_certificate localhost.crt;
4be791074207 Tests: proxy_ssl_conf_command tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
63 ssl_certificate_key localhost.key;
4be791074207 Tests: proxy_ssl_conf_command tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
64 ssl_verify_client optional_no_ca;
1759
8f13779e2cde Tests: fixed stream_proxy_ssl_conf_command.t on win32.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1696
diff changeset
65
8f13779e2cde Tests: fixed stream_proxy_ssl_conf_command.t on win32.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1696
diff changeset
66 add_header X-Cert $ssl_client_s_dn always;
1604
4be791074207 Tests: proxy_ssl_conf_command tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
67 }
4be791074207 Tests: proxy_ssl_conf_command tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
68 }
4be791074207 Tests: proxy_ssl_conf_command tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
69
4be791074207 Tests: proxy_ssl_conf_command tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
70 EOF
4be791074207 Tests: proxy_ssl_conf_command tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
71
4be791074207 Tests: proxy_ssl_conf_command tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
72 $t->write_file('openssl.conf', <<EOF);
4be791074207 Tests: proxy_ssl_conf_command tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
73 [ req ]
4be791074207 Tests: proxy_ssl_conf_command tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
74 default_bits = 2048
4be791074207 Tests: proxy_ssl_conf_command tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
75 encrypt_key = no
4be791074207 Tests: proxy_ssl_conf_command tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
76 distinguished_name = req_distinguished_name
4be791074207 Tests: proxy_ssl_conf_command tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
77 [ req_distinguished_name ]
4be791074207 Tests: proxy_ssl_conf_command tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
78 EOF
4be791074207 Tests: proxy_ssl_conf_command tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
79
4be791074207 Tests: proxy_ssl_conf_command tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
80 my $d = $t->testdir();
4be791074207 Tests: proxy_ssl_conf_command tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
81
4be791074207 Tests: proxy_ssl_conf_command tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
82 foreach my $name ('localhost', 'override') {
4be791074207 Tests: proxy_ssl_conf_command tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
83 system('openssl req -x509 -new '
4be791074207 Tests: proxy_ssl_conf_command tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
84 . "-config $d/openssl.conf -subj /CN=$name/ "
4be791074207 Tests: proxy_ssl_conf_command tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
85 . "-out $d/$name.crt -keyout $d/$name.key "
4be791074207 Tests: proxy_ssl_conf_command tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
86 . ">>$d/openssl.out 2>&1") == 0
4be791074207 Tests: proxy_ssl_conf_command tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
87 or die "Can't create certificate for $name: $!\n";
4be791074207 Tests: proxy_ssl_conf_command tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
88 }
4be791074207 Tests: proxy_ssl_conf_command tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
89
4be791074207 Tests: proxy_ssl_conf_command tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
90 $t->write_file('index.html', '');
1693
5ac6efbe5552 Tests: removed TODO and try_run() checks for legacy versions.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1692
diff changeset
91 $t->run()->plan(1);
1604
4be791074207 Tests: proxy_ssl_conf_command tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
92
4be791074207 Tests: proxy_ssl_conf_command tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
93 ###############################################################################
4be791074207 Tests: proxy_ssl_conf_command tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
94
1759
8f13779e2cde Tests: fixed stream_proxy_ssl_conf_command.t on win32.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1696
diff changeset
95 like(http_get('/'), qr/CN=override/, 'proxy_ssl_conf_command');
1604
4be791074207 Tests: proxy_ssl_conf_command tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
96
4be791074207 Tests: proxy_ssl_conf_command tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
97 ###############################################################################