Mercurial > hg > nginx-tests
annotate server_tokens.t @ 1974:b5036a0f9ae0 default tip
Tests: improved compatibility when using recent "openssl" app.
Starting with OpenSSL 3.0, "openssl genrsa" generates encrypted keys
in PKCS#8 format instead of previously used PKCS#1 format. Further,
since OpenSSL 1.1.0 such keys are using PBKDF2 hmacWithSHA256.
Such keys are not supported by old SSL libraries, notably by OpenSSL
before 1.0.0 (OpenSSL 0.9.8 only supports hmacWithSHA1) and by BoringSSL
before May 21, 2019 (support for hmacWithSHA256 was added in 302a4dee6c),
and trying to load such keys into nginx compiled with an old SSL library
results in "unsupported prf" errors.
To facilitate testing with old SSL libraries, keys are now generated
with "openssl genrsa -traditional" if the flag is available.
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Mon, 06 May 2024 00:04:26 +0300 |
parents | e0b55129fbbf |
children |
rev | line source |
---|---|
869
f528369414aa
Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
1 #!/usr/bin/perl |
f528369414aa
Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
2 |
f528369414aa
Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
3 # (C) Andrey Zelenkov |
f528369414aa
Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
4 # (C) Nginx, Inc. |
f528369414aa
Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
5 |
f528369414aa
Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
6 # Tests for server_tokens directive. |
f528369414aa
Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
7 |
f528369414aa
Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
8 ############################################################################### |
f528369414aa
Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
9 |
f528369414aa
Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
10 use warnings; |
f528369414aa
Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
11 use strict; |
f528369414aa
Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
12 |
f528369414aa
Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
13 use Test::More; |
f528369414aa
Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
14 |
f528369414aa
Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
15 BEGIN { use FindBin; chdir($FindBin::Bin); } |
f528369414aa
Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
16 |
f528369414aa
Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
17 use lib 'lib'; |
f528369414aa
Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
18 use Test::Nginx; |
f528369414aa
Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
19 |
f528369414aa
Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
20 ############################################################################### |
f528369414aa
Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
21 |
f528369414aa
Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
22 select STDERR; $| = 1; |
f528369414aa
Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
23 select STDOUT; $| = 1; |
f528369414aa
Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
24 |
1121
c883d3d3a3ab
Tests: server_tokens build tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1120
diff
changeset
|
25 my $t = Test::Nginx->new()->has(qw/http rewrite/) |
869
f528369414aa
Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
26 ->write_file_expand('nginx.conf', <<'EOF'); |
f528369414aa
Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
27 |
f528369414aa
Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
28 %%TEST_GLOBALS%% |
f528369414aa
Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
29 |
f528369414aa
Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
30 daemon off; |
f528369414aa
Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
31 |
f528369414aa
Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
32 events { |
f528369414aa
Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
33 } |
f528369414aa
Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
34 |
f528369414aa
Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
35 http { |
f528369414aa
Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
36 %%TEST_GLOBALS_HTTP%% |
f528369414aa
Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
37 |
f528369414aa
Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
38 server { |
974
882267679006
Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
952
diff
changeset
|
39 listen 127.0.0.1:8080; |
881
56ed4be9ff41
Tests: added server_name and fixed indentation in server_tokens.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
878
diff
changeset
|
40 server_name localhost; |
869
f528369414aa
Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
41 |
f528369414aa
Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
42 location /200 { |
f528369414aa
Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
43 return 200; |
f528369414aa
Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
44 } |
f528369414aa
Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
45 |
f528369414aa
Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
46 location /404 { |
f528369414aa
Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
47 return 404; |
f528369414aa
Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
48 } |
f528369414aa
Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
49 |
f528369414aa
Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
50 location /off { |
f528369414aa
Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
51 server_tokens off; |
f528369414aa
Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
52 |
f528369414aa
Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
53 location /off/200 { |
f528369414aa
Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
54 return 200; |
f528369414aa
Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
55 } |
f528369414aa
Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
56 |
f528369414aa
Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
57 location /off/404 { |
f528369414aa
Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
58 return 404; |
f528369414aa
Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
59 } |
f528369414aa
Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
60 } |
f528369414aa
Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
61 |
f528369414aa
Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
62 location /on { |
f528369414aa
Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
63 server_tokens on; |
f528369414aa
Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
64 |
f528369414aa
Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
65 location /on/200 { |
f528369414aa
Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
66 return 200; |
f528369414aa
Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
67 } |
f528369414aa
Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
68 |
f528369414aa
Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
69 location /on/404 { |
f528369414aa
Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
70 return 404; |
f528369414aa
Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
71 } |
f528369414aa
Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
72 } |
1121
c883d3d3a3ab
Tests: server_tokens build tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1120
diff
changeset
|
73 |
c883d3d3a3ab
Tests: server_tokens build tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1120
diff
changeset
|
74 location /b { |
c883d3d3a3ab
Tests: server_tokens build tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1120
diff
changeset
|
75 server_tokens build; |
c883d3d3a3ab
Tests: server_tokens build tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1120
diff
changeset
|
76 |
c883d3d3a3ab
Tests: server_tokens build tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1120
diff
changeset
|
77 location /b/200 { |
c883d3d3a3ab
Tests: server_tokens build tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1120
diff
changeset
|
78 return 200; |
c883d3d3a3ab
Tests: server_tokens build tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1120
diff
changeset
|
79 } |
c883d3d3a3ab
Tests: server_tokens build tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1120
diff
changeset
|
80 |
c883d3d3a3ab
Tests: server_tokens build tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1120
diff
changeset
|
81 location /b/404 { |
c883d3d3a3ab
Tests: server_tokens build tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1120
diff
changeset
|
82 return 404; |
c883d3d3a3ab
Tests: server_tokens build tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1120
diff
changeset
|
83 } |
c883d3d3a3ab
Tests: server_tokens build tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1120
diff
changeset
|
84 } |
869
f528369414aa
Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
85 } |
f528369414aa
Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
86 } |
f528369414aa
Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
87 |
f528369414aa
Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
88 EOF |
f528369414aa
Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
89 |
1251
766bcbb632ee
Tests: removed TODO and try_run() checks for legacy versions.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1123
diff
changeset
|
90 $t->run()->plan(12); |
869
f528369414aa
Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
91 |
f528369414aa
Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
92 ############################################################################### |
f528369414aa
Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
93 |
1950
e0b55129fbbf
Tests: fixed server_tokens.t to accept alternative names.
Maxim Dounin <mdounin@mdounin.ru>
parents:
1859
diff
changeset
|
94 my $re = qr/\w+\/\d+\.\d+\.\d+/; |
1120
a6ffc722dfcb
Tests: refactored server_tokens tests, no functional changes.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1119
diff
changeset
|
95 |
a6ffc722dfcb
Tests: refactored server_tokens tests, no functional changes.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1119
diff
changeset
|
96 like(http_get_server('/200'), $re, 'tokens default 200'); |
a6ffc722dfcb
Tests: refactored server_tokens tests, no functional changes.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1119
diff
changeset
|
97 like(http_get_server('/404'), $re, 'tokens default 404'); |
a6ffc722dfcb
Tests: refactored server_tokens tests, no functional changes.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1119
diff
changeset
|
98 like(http_body('/404'), $re, 'tokens default 404 body'); |
869
f528369414aa
Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
99 |
1950
e0b55129fbbf
Tests: fixed server_tokens.t to accept alternative names.
Maxim Dounin <mdounin@mdounin.ru>
parents:
1859
diff
changeset
|
100 like(http_get_server('/off/200'), qr/^\w+$/, 'tokens off 200'); |
e0b55129fbbf
Tests: fixed server_tokens.t to accept alternative names.
Maxim Dounin <mdounin@mdounin.ru>
parents:
1859
diff
changeset
|
101 like(http_get_server('/off/404'), qr/^\w+$/, 'tokens off 404'); |
e0b55129fbbf
Tests: fixed server_tokens.t to accept alternative names.
Maxim Dounin <mdounin@mdounin.ru>
parents:
1859
diff
changeset
|
102 unlike(http_body('/off/404'), $re, 'tokens off 404 body'); |
869
f528369414aa
Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
103 |
1120
a6ffc722dfcb
Tests: refactored server_tokens tests, no functional changes.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1119
diff
changeset
|
104 like(http_get_server('/on/200'), $re, 'tokens on 200'); |
a6ffc722dfcb
Tests: refactored server_tokens tests, no functional changes.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1119
diff
changeset
|
105 like(http_get_server('/on/404'), $re, 'tokens on 404'); |
a6ffc722dfcb
Tests: refactored server_tokens tests, no functional changes.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1119
diff
changeset
|
106 like(http_body('/on/404'), $re, 'tokens on 404 body'); |
869
f528369414aa
Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
107 |
1859
5f46af4707e7
Tests: fixed server_tokens tests for build names with spaces.
Maxim Dounin <mdounin@mdounin.ru>
parents:
1251
diff
changeset
|
108 $re = qr/$re \(.*\)/ if $t->has_module('--build='); |
1121
c883d3d3a3ab
Tests: server_tokens build tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1120
diff
changeset
|
109 |
c883d3d3a3ab
Tests: server_tokens build tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1120
diff
changeset
|
110 like(http_get_server('/b/200'), $re, 'tokens build 200'); |
c883d3d3a3ab
Tests: server_tokens build tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1120
diff
changeset
|
111 like(http_get_server('/b/404'), $re, 'tokens build 404'); |
c883d3d3a3ab
Tests: server_tokens build tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1120
diff
changeset
|
112 like(http_body('/b/404'), $re, 'tokens build 404 body'); |
c883d3d3a3ab
Tests: server_tokens build tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1120
diff
changeset
|
113 |
869
f528369414aa
Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
114 ############################################################################### |
f528369414aa
Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
115 |
f528369414aa
Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
116 sub http_body { |
f528369414aa
Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
117 my ($uri) = shift; |
f528369414aa
Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
118 return http_get($uri) =~ /.*?\x0d\x0a?\x0d\x0a?(.*)/ms && $1; |
f528369414aa
Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
119 } |
f528369414aa
Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
120 |
878
327044615c87
Tests: added http_get_server subroutine in server_tokens.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
877
diff
changeset
|
121 sub http_get_server { |
327044615c87
Tests: added http_get_server subroutine in server_tokens.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
877
diff
changeset
|
122 my ($url) = @_; |
1119
cfe1bc3162f9
Tests: fixed capturing Server header in server_tokens.t.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
123 return http_get($url) =~ /^Server:\s(.+?)\x0d?$/mi && $1 || undef; |
878
327044615c87
Tests: added http_get_server subroutine in server_tokens.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
877
diff
changeset
|
124 } |
327044615c87
Tests: added http_get_server subroutine in server_tokens.t.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
877
diff
changeset
|
125 |
869
f528369414aa
Tests: added tests for server_tokens directive.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
diff
changeset
|
126 ############################################################################### |