Mercurial > hg > nginx-tests
view headers.t @ 1701:408fe0dd3fed
Tests: fixed mail_imap_ssl.t too long shutdown.
Prior to literals support in IMAP test backend (e7f0b4ca0a1a), early backend
response was treated as invalid, with subsequent proxy connection close.
Now that the connection continues successfully, this requires connection
close before nginx shutdown. Otherwise, it would wait for proxy_timeout.
author | Sergey Kandaurov <pluknet@nginx.com> |
---|---|
date | Thu, 17 Jun 2021 19:52:36 +0300 |
parents | 97c8280de681 |
children |
line wrap: on
line source
#!/usr/bin/perl # (C) Sergey Kandaurov # (C) Maxim Dounin # (C) Nginx, Inc. # Tests for headers module. ############################################################################### use warnings; use strict; use Test::More; BEGIN { use FindBin; chdir($FindBin::Bin); } use lib 'lib'; use Test::Nginx; ############################################################################### select STDERR; $| = 1; select STDOUT; $| = 1; my $t = Test::Nginx->new()->has(qw/http proxy/)->plan(28) ->write_file_expand('nginx.conf', <<'EOF'); %%TEST_GLOBALS%% daemon off; events { } http { %%TEST_GLOBALS_HTTP%% server { listen 127.0.0.1:8080; server_name localhost; add_header X-URI $uri; add_header X-Always $uri always; add_header ETag foo always; add_header ETag '' always; expires epoch; location /t1 { } location /nx { } location /epoch { expires epoch; } location /max { expires max; } location /off { expires off; } location /access { expires 2048; location /access_inner { # inherited from outer } } location /negative { expires -2048; } location /daily { expires @15h30m33s; } location /modified { expires modified 2048; location /modified/proxy { proxy_pass http://127.0.0.1:8081/modified; } } location /var { expires $arg_e; location /var_inner { # inherited from outer } location /var_modified { expires modified $arg_e; } } } server { listen 127.0.0.1:8081; server_name localhost; add_header Last-Modified "Mon, 28 Sep 1970 06:00:00 GMT"; } } EOF $t->write_file('t1', ''); $t->write_file('epoch', ''); $t->write_file('max', ''); $t->write_file('off', ''); $t->write_file('access', ''); $t->write_file('access_inner', ''); $t->write_file('negative', ''); $t->write_file('daily', ''); $t->write_file('modified', ''); $t->write_file('var', ''); $t->write_file('var_inner', ''); $t->write_file('var_modified', ''); $t->run(); ############################################################################### my $r; # test for header field presence $r = http_get('/t1'); like($r, qr/Cache-Control/, 'good expires'); like($r, qr/X-URI/, 'good add_header'); like($r, qr/X-Always/, 'good add_header always'); unlike($r, qr/ETag/, 'good add_header always empty'); $r = http_get('/nx'); unlike($r, qr/Cache-Control/, 'bad expires'); unlike($r, qr/X-URI/, 'bad add_header'); like($r, qr/X-Always/, 'bad add_header always'); unlike($r, qr/ETag/, 'bad add_header always empty'); # various expires variants like(http_get('/epoch'), qr/Expires:.*1970/, 'expires epoch'); like(http_get('/max'), qr/Expires:.*2037/, 'expires max'); unlike(http_get('/off'), qr/Expires:/, 'expires off'); like(http_get('/access'), qr/max-age=2048/, 'expires access'); like(http_get('/access_inner'), qr/max-age=2048/, 'expires inner'); like(http_get('/negative'), qr/no-cache/, 'expires negative'); like(http_get('/daily'), qr/Expires:.*:33 GMT/, 'expires daily'); like(http_get('/modified'), qr/max-age=204./, 'expires modified'); # "expires modified" with proxy like(http_get('/modified/proxy'), qr/Expires: Mon, 28 Sep 1970 06:34:08 GMT/, 'expires modified proxy'); # expires with variables like(http_get('/var?e=epoch'), qr/Expires:.*1970/, 'expires var epoch'); like(http_get('/var?e=max'), qr/Expires:.*2037/, 'expires var max'); unlike(http_get('/var?e=off'), qr/Expires:/, 'expires var off'); like(http_get('/var?e=2048'), qr/max-age=2048/, 'expires var access'); like(http_get('/var_inner?e=2048'), qr/max-age=2048/, 'expires var inner'); like(http_get('/var?e=-2048'), qr/no-cache/, 'expires var negative'); like(http_get('/var?e=@33s'), qr/Expires:.*:33 GMT/, 'expires var daily'); like(http_get('/var_modified?e=2048'), qr/max-age=204./, 'expires var modified'); # some invalid cases unlike(http_get('/var'), qr/Expires/, 'expires var empty'); unlike(http_get('/var?e=bad'), qr/Expires/, 'expires var bad'); unlike(http_get('/var_modified?e=epoch'), qr/Expires/, 'expires var modified epoch'); ###############################################################################