changeset 683:49aea425392d

Tests: more tests for server_name directive. Added tests for regex and wildcard values, multiple values, and multiple directives.
author Andrey Zelenkov <zelenkov@nginx.com>
date Tue, 08 Sep 2015 15:12:34 +0300
parents c68b7bbdf21a
children 96666f621dbc
files http_server_name.t
diffstat 1 files changed, 86 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/http_server_name.t
+++ b/http_server_name.t
@@ -1,6 +1,8 @@
 #!/usr/bin/perl
 
 # (C) Maxim Dounin
+# (C) Andrey Zelenkov
+# (C) Nginx, Inc.
 
 # Tests for server_name selection.
 
@@ -11,6 +13,8 @@ use strict;
 
 use Test::More;
 
+use Socket qw/ CRLF /;
+
 BEGIN { use FindBin; chdir($FindBin::Bin); }
 
 use lib 'lib';
@@ -23,7 +27,7 @@ select STDOUT; $| = 1;
 
 plan(skip_all => 'win32') if $^O eq 'MSWin32';
 
-my $t = Test::Nginx->new()->has(qw/http rewrite/)->plan(9)
+my $t = Test::Nginx->new()->has(qw/http rewrite/)->plan(18)
 	->write_file_expand('nginx.conf', <<'EOF');
 
 %%TEST_GLOBALS%%
@@ -49,6 +53,15 @@ http {
 
     server {
         listen       127.0.0.1:8080;
+        server_name  "";
+
+        location / {
+            add_header X-Server $server_name;
+        }
+    }
+
+    server {
+        listen       127.0.0.1:8080;
         server_name  www.example.com;
 
         location / {
@@ -84,6 +97,52 @@ http {
             add_header X-Match  $name;
         }
     }
+
+    server {
+        listen       127.0.0.1:8080;
+        server_name  many.example.com many2.example.com;
+
+        location / {
+            add_header X-Server $server_name;
+        }
+    }
+
+    server {
+        listen       127.0.0.1:8080;
+        server_name  many3.example.com;
+        server_name  many4.example.com;
+
+        location / {
+            add_header X-Server $server_name;
+        }
+    }
+
+    server {
+        listen       127.0.0.1:8080;
+        server_name  *.wc.example.com;
+
+        location / {
+            add_header X-Server $server_name;
+        }
+    }
+
+    server {
+        listen       127.0.0.1:8080;
+        server_name  wc2.example.*;
+
+        location / {
+            add_header X-Server $server_name;
+        }
+    }
+
+    server {
+        listen       127.0.0.1:8080;
+        server_name  .dot.example.com;
+
+        location / {
+            add_header X-Server $server_name;
+        }
+    }
 }
 
 EOF
@@ -94,6 +153,7 @@ EOF
 ###############################################################################
 
 like(http_server('xxx'), qr/X-Server: localhost/, 'default');
+unlike(http_server(), qr/X-Server/, 'empty');
 
 like(http_server('www.example.com'), qr/\QX-Server: www.example.com/,
 	'www.example.com');
@@ -115,15 +175,36 @@ like(http_server('www01.example.com'), q
 like(http_server('WWW01.EXAMPLE.COM'), qr/X-Match: www01/,
 	'\p{N} in named capture uppercase');
 
+like(http_server('many.example.com'), qr/\QX-Server: many.example.com/,
+	'name row - first');
+like(http_server('many2.example.com'), qr/\QX-Server: many.example.com/,
+	'name row - second');
+
+like(http_server('many3.example.com'), qr/\QX-Server: many3.example.com/,
+	'name list - first');
+like(http_server('many4.example.com'), qr/\QX-Server: many3.example.com/,
+	'name list - second');
+
+like(http_server('www.wc.example.com'),
+	qr/\QX-Server: *.wc.example.com/, 'wildcard first');
+like(http_server('wc2.example.net'),
+	qr/\QX-Server: wc2.example.*/, 'wildcard last');
+
+like(http_server('www.dot.example.com'), qr/\QX-Server: dot.example.com/,
+	'wildcard dot');
+like(http_server('dot.example.com'), qr/\QX-Server: dot.example.com/,
+	'wildcard dot empty');
+
 ###############################################################################
 
 sub http_server {
 	my ($host) = @_;
-	return http(<<EOF);
-GET / HTTP/1.0
-Host: $host
 
-EOF
+	my $str = 'GET / HTTP/1.0' . CRLF .
+		(defined $host ? "Host: $host" . CRLF : '') .
+		CRLF;
+
+	return http($str);
 }
 
 ###############################################################################