view sub_filter_multi2.t @ 1411:a8243ed8adcb

Tests: expect ssl_sni_reneg.t failures on stable in certain cases. Notably, if built with OpenSSL 1.1.1 on Linux, SSL renegotiation could be handled too late if client manages to keep recv buffer filled on server.
author Sergey Kandaurov <pluknet@nginx.com>
date Wed, 05 Dec 2018 17:10:01 +0300
parents 196d33c2bb45
children
line wrap: on
line source

#!/usr/bin/perl

# (C) Dmitry Volyntsev
# (C) Nginx, Inc.

# Tests for sub filter with variables in search patterns.

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

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 rewrite sub/)->plan(7)
	->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;

        sub_filter_types *;

        location /var/replacement {
            sub_filter_once off;
            sub_filter '${arg_a}' '${arg_a}+';
            sub_filter '${arg_b}' '${arg_b}-';
            return 200 $arg_c;
        }

        location /var/replacement2 {
            sub_filter_once off;
            sub_filter '${arg_a}A${arg_b}'  +;
            sub_filter '${arg_c}AA${arg_d}' -;
            return 200 $arg_e;
        }
    }

}

EOF

$t->run();

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

like(http_get('/var/replacement?a=a&b=b&c=abXYaXbZ'),
	qr/a\+b-XYa\+Xb-Z/, 'complex');
like(http_get('/var/replacement?a=patt&b=abyz&c=pattabyzXYpattXabyzZpatt'),
	qr/patt\+abyz-XYpatt\+Xabyz-Zpatt\+/, 'complex 2');
like(http_get('/var/replacement?a=a&b=b&c=ABXYAXBZ'),
	qr/a\+b-XYa\+Xb-Z/, 'case insensivity');
like(http_get('/var/replacement?b=b&c=abXYaXbZ'),
	qr/ab-XYaXb-Z/, 'one search string is empty');
like(http_get('/var/replacement?c=abXYaXbZ'),
	qr/abXYaXbZ/, 'all search strings are empty');
like(http_get('/var/replacement2?a=aaa&b=bbb&c=yy&d=zz&e=AaaaAbbbZyyAAzzY'),
	qr/A\+Z-Y/, 'multiple variables');
like(http_get('/var/replacement2?b=bbb&c=yy&e=AAbbbZyyAAY'),
	qr/A\+Z-Y/, 'multiple variables 2');

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