view http_absolute_redirect.t @ 1150:ccf134a800ae

Tests: added Location tests with alias for dav and static modules.
author Sergey Kandaurov <pluknet@nginx.com>
date Tue, 21 Mar 2017 15:42:21 +0300
parents 71bba21ea3ed
children 818fbc9d1c29
line wrap: on
line source

#!/usr/bin/perl

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

# Tests for absolute_redirect directive.

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

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 rewrite/)
	->write_file_expand('nginx.conf', <<'EOF');

%%TEST_GLOBALS%%

daemon off;

events {
}

http {
    %%TEST_GLOBALS_HTTP%%

    absolute_redirect off;

    server {
        listen       127.0.0.1:8080;
        server_name  on;

        absolute_redirect on;

        location / { }

        location /auto/ {
            proxy_pass http://127.0.0.1:8080;
        }

        location /return301 {
            return 301 /redirect;
        }

        location /i/ {
            alias %%TESTDIR%%/;
        }
    }

    server {
        listen       127.0.0.1:8080;
        server_name  off;

        location / { }

        location /auto/ {
            proxy_pass http://127.0.0.1:8080;
        }

        location /return301 {
            return 301 /redirect;
        }

        location /i/ {
            alias %%TESTDIR%%/;
        }
    }
}

EOF

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

$t->try_run('no absolute_redirect')->plan(8);

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

my $p = port(8080);

like(get('on', '/dir'), qr!Location: http://on:$p/dir/!, 'directory');
like(get('on', '/i/dir'), qr!Location: http://on:$p/i/dir/!, 'directory alias');
like(get('on', '/auto'), qr!Location: http://on:$p/auto/!, 'auto');
like(get('on', '/return301'), qr!Location: http://on:$p/redirect!, 'return');

like(get('off', '/dir'), qr!Location: /dir/!, 'off directory');
like(get('off', '/i/dir'), qr!Location: /i/dir/!, 'off directory alias');
like(get('off', '/auto'), qr!Location: /auto/!, 'off auto');
like(get('off', '/return301'), qr!Location: /redirect!, 'off return');

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

sub get {
	my ($host, $uri) = @_;
	http(<<EOF);
GET $uri HTTP/1.0
Host: $host

EOF
}

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