Mercurial > hg > nginx-tests
view http_server_name.t @ 605:a77f19282f63
Tests: switched to using headers to test variables in userid.t.
Tests might behave incorrectly due to the delay in writing to log.
Made tests stricter for different endianness. While here, improved style.
author | Andrey Zelenkov <zelenkov@nginx.com> |
---|---|
date | Thu, 11 Jun 2015 20:56:19 +0300 |
parents | 6a0d934950bc |
children | c68b7bbdf21a |
line wrap: on
line source
#!/usr/bin/perl # (C) Maxim Dounin # Tests for server_name selection. ############################################################################### 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; plan(skip_all => 'win32') if $^O eq 'MSWin32'; my $t = Test::Nginx->new()->has(qw/http rewrite/)->plan(9) ->write_file_expand('nginx.conf', <<'EOF'); %%TEST_GLOBALS%% daemon off; events { } http { %%TEST_GLOBALS_HTTP%% server_names_hash_bucket_size 64; server { listen 127.0.0.1:8080; server_name localhost; location / { add_header X-Server $server_name; return 204; } } server { listen 127.0.0.1:8080; server_name www.example.com; location / { add_header X-Server $server_name; return 204; } } server { listen 127.0.0.1:8080; server_name ~^EXAMPLE\.COM$; location / { add_header X-Server $server_name; return 204; } } server { listen 127.0.0.1:8080; server_name ~^(?P<name>.+)\Q.example.com\E$; location / { add_header X-Server $server_name; add_header X-Match $name; return 204; } } server { listen 127.0.0.1:8080; server_name "~^(?P<name>www\p{N}+)\.example\.com$"; location / { add_header X-Server $server_name; add_header X-Match $name; return 204; } } } EOF $t->run(); ############################################################################### sub http_server($) { my ($host) = @_; return http(<<EOF); GET / HTTP/1.0 Host: $host EOF } ############################################################################### like(http_server('xxx'), qr/X-Server: localhost/, 'default'); like(http_server('www.example.com'), qr/\QX-Server: www.example.com/, 'www.example.com'); like(http_server('WWW.EXAMPLE.COM'), qr/\QX-Server: www.example.com/, 'www.example.com uppercase'); like(http_server('example.com'), qr/\QX-Server: ~^EXAMPLE\.COM$/, 'example.com regex'); like(http_server('EXAMPLE.COM'), qr/\QX-Server: ~^EXAMPLE\.COM$/, 'example.com regex uppercase'); like(http_server('blah.example.com'), qr/X-Match: blah/, '(P<name>.*).example.com named capture'); like(http_server('BLAH.EXAMPLE.COM'), qr/X-Match: blah/, '(P<name>.*).example.com named capture uppercase'); like(http_server('www01.example.com'), qr/X-Match: www01/, '\p{N} in named capture'); like(http_server('WWW01.EXAMPLE.COM'), qr/X-Match: www01/, '\p{N} in named capture uppercase'); ###############################################################################