annotate gzip.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 882267679006
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
93
5276d85d5040 Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
1 #!/usr/bin/perl
5276d85d5040 Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
2
5276d85d5040 Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
3 # (C) Maxim Dounin
5276d85d5040 Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
4
5276d85d5040 Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
5 # Tests for nginx gzip filter module.
5276d85d5040 Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
6
5276d85d5040 Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
7 ###############################################################################
5276d85d5040 Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
8
5276d85d5040 Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
9 use warnings;
5276d85d5040 Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
10 use strict;
5276d85d5040 Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
11
5276d85d5040 Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
12 use Test::More;
5276d85d5040 Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
13
5276d85d5040 Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
14 BEGIN { use FindBin; chdir($FindBin::Bin); }
5276d85d5040 Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
15
5276d85d5040 Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
16 use lib 'lib';
5276d85d5040 Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
17 use Test::Nginx qw/ :DEFAULT :gzip /;
5276d85d5040 Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
18
5276d85d5040 Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
19 ###############################################################################
5276d85d5040 Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
20
5276d85d5040 Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
21 select STDERR; $| = 1;
5276d85d5040 Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
22 select STDOUT; $| = 1;
5276d85d5040 Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
23
121
8ac1faaddd2c Tests: better handle various configure arguments.
Maxim Dounin <mdounin@mdounin.ru>
parents: 116
diff changeset
24 my $t = Test::Nginx->new()->has(qw/http proxy gzip/)->plan(8);
93
5276d85d5040 Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
25
5276d85d5040 Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
26 $t->write_file_expand('nginx.conf', <<'EOF');
5276d85d5040 Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
27
107
1c0ec30614c6 Tests: add TEST_GLOBALS and TEST_GLOBALS_HTTP config chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents: 104
diff changeset
28 %%TEST_GLOBALS%%
1c0ec30614c6 Tests: add TEST_GLOBALS and TEST_GLOBALS_HTTP config chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents: 104
diff changeset
29
249
6a0d934950bc Tests: remove extra spaces in "daemon off".
Maxim Dounin <mdounin@mdounin.ru>
parents: 166
diff changeset
30 daemon off;
93
5276d85d5040 Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
31
5276d85d5040 Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
32 events {
5276d85d5040 Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
33 }
5276d85d5040 Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
34
5276d85d5040 Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
35 http {
107
1c0ec30614c6 Tests: add TEST_GLOBALS and TEST_GLOBALS_HTTP config chunks.
Maxim Dounin <mdounin@mdounin.ru>
parents: 104
diff changeset
36 %%TEST_GLOBALS_HTTP%%
93
5276d85d5040 Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
37
5276d85d5040 Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
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;
93
5276d85d5040 Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
40 server_name localhost;
5276d85d5040 Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
41 location / {
5276d85d5040 Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
42 gzip on;
5276d85d5040 Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
43 }
5276d85d5040 Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
44 location /proxy/ {
5276d85d5040 Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
45 gzip on;
974
882267679006 Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents: 952
diff changeset
46 proxy_pass http://127.0.0.1:8080/local/;
93
5276d85d5040 Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
47 }
5276d85d5040 Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
48 location /local/ {
5276d85d5040 Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
49 gzip off;
5276d85d5040 Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
50 alias %%TESTDIR%%/;
5276d85d5040 Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
51 }
5276d85d5040 Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
52 }
5276d85d5040 Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
53 }
5276d85d5040 Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
54
5276d85d5040 Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
55 EOF
5276d85d5040 Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
56
5276d85d5040 Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
57 $t->write_file('index.html', 'X' x 64);
5276d85d5040 Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
58
5276d85d5040 Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
59 $t->run();
5276d85d5040 Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
60
5276d85d5040 Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
61 ###############################################################################
5276d85d5040 Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
62
5276d85d5040 Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
63 my $r;
5276d85d5040 Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
64
5276d85d5040 Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
65 $r = http_gzip_request('/');
5276d85d5040 Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
66 like($r, qr/^Content-Encoding: gzip/m, 'gzip');
5276d85d5040 Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
67 http_gzip_like($r, qr/^X{64}\Z/, 'gzip content correct');
5276d85d5040 Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
68
5276d85d5040 Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
69 $r = http_gzip_request('/proxy/');
5276d85d5040 Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
70 like($r, qr/^Content-Encoding: gzip/m, 'gzip proxied');
5276d85d5040 Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
71 http_gzip_like($r, qr/^X{64}\Z/, 'gzip proxied content');
5276d85d5040 Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
72
5276d85d5040 Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
73 # Accept-Ranges headers should be cleared
5276d85d5040 Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
74
5276d85d5040 Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
75 unlike(http_gzip_request('/'), qr/Accept-Ranges/im, 'cleared accept-ranges');
5276d85d5040 Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
76 unlike(http_gzip_request('/proxy/'), qr/Accept-Ranges/im,
5276d85d5040 Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
77 'cleared headers from proxy');
5276d85d5040 Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
78
116
c8341d95297e Tests: add some HEAD gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 107
diff changeset
79 # HEAD requests should return correct headers
c8341d95297e Tests: add some HEAD gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 107
diff changeset
80
c8341d95297e Tests: add some HEAD gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 107
diff changeset
81 like(http_gzip_head('/'), qr/Content-Encoding: gzip/, 'gzip head');
c8341d95297e Tests: add some HEAD gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 107
diff changeset
82 unlike(http_head('/'), qr/Content-Encoding: gzip/, 'no gzip head');
c8341d95297e Tests: add some HEAD gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 107
diff changeset
83
93
5276d85d5040 Tests: add basic gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
84 ###############################################################################
116
c8341d95297e Tests: add some HEAD gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 107
diff changeset
85
c8341d95297e Tests: add some HEAD gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 107
diff changeset
86 sub http_gzip_head {
c8341d95297e Tests: add some HEAD gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 107
diff changeset
87 my ($uri) = @_;
c8341d95297e Tests: add some HEAD gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 107
diff changeset
88 return http(<<EOF);
c8341d95297e Tests: add some HEAD gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 107
diff changeset
89 HEAD $uri HTTP/1.1
c8341d95297e Tests: add some HEAD gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 107
diff changeset
90 Host: localhost
c8341d95297e Tests: add some HEAD gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 107
diff changeset
91 Connection: close
c8341d95297e Tests: add some HEAD gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 107
diff changeset
92 Accept-Encoding: gzip
c8341d95297e Tests: add some HEAD gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 107
diff changeset
93
c8341d95297e Tests: add some HEAD gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 107
diff changeset
94 EOF
c8341d95297e Tests: add some HEAD gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 107
diff changeset
95 }
c8341d95297e Tests: add some HEAD gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 107
diff changeset
96
c8341d95297e Tests: add some HEAD gzip tests.
Maxim Dounin <mdounin@mdounin.ru>
parents: 107
diff changeset
97 ###############################################################################