view map_volatile.t @ 1815:173c9b792c2c

Tests: fixed hostname verification in ssl_certificate_chain.t. ssl_certificate_chain.t doesn't supply the hostname expected in a tested certificate, which causes IO::Socket::SSL to fall back to an IP address given in PeerAddr. As of IO::Socket::SSL 2.078, verification enabled by default for such hostnames [1] results in "hostname verification failed" errors. To keep tests simple, the IP address is now included in subjectAltName. [1] https://github.com/noxxi/p5-io-socket-ssl/issues/121
author Sergey Kandaurov <pluknet@nginx.com>
date Thu, 15 Dec 2022 21:02:18 +0400
parents 766bcbb632ee
children
line wrap: on
line source

#!/usr/bin/perl

# (C) Sergey Kandaurov
# (C) Nginx, Inc.

# Tests for map module with volatile.

###############################################################################

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 map/);

$t->write_file_expand('nginx.conf', <<'EOF');

%%TEST_GLOBALS%%

daemon off;

events {
}

http {
    %%TEST_GLOBALS_HTTP%%

    map $uri $uri_cached {
        /1/          /1/redirect;
        /1/redirect  uncached;
    }

    map $uri $uri_uncached {
        volatile;

        /2/          /2/redirect;
        /2/redirect  uncached;
    }

    server {
        listen       127.0.0.1:8080;
        server_name  localhost;

        location /1 {
            index $uri_cached;
        }
        location /1/redirect {
            add_header X-URI $uri_cached always;
        }

        location /2 {
            index $uri_uncached;
        }
        location /2/redirect {
            add_header X-URI $uri_uncached always;
        }
    }
}

EOF

mkdir($t->testdir() . '/1');
mkdir($t->testdir() . '/2');

$t->run()->plan(2);

###############################################################################

like(http_get('/1/'), qr!X-URI: /1/redirect!, 'map');
like(http_get('/2/'), qr/X-URI: uncached/, 'map volatile');

###############################################################################