changeset 681:1f8e15e1899a

Tests: more tests for map module. Added tests for regex and wildcard values, special parameters and variables.
author Andrey Zelenkov <zelenkov@nginx.com>
date Fri, 28 Aug 2015 02:09:20 +0300
parents 85e368105c8b
children c68b7bbdf21a
files map.t
diffstat 1 files changed, 50 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/map.t
+++ b/map.t
@@ -1,6 +1,8 @@
 #!/usr/bin/perl
 
 # (C) Maxim Dounin
+# (C) Andrey Zelenkov
+# (C) Nginx, Inc.
 
 # Tests for map module.
 
@@ -21,7 +23,7 @@ use Test::Nginx;
 select STDERR; $| = 1;
 select STDOUT; $| = 1;
 
-my $t = Test::Nginx->new()->has(qw/http map/)->plan(5);
+my $t = Test::Nginx->new()->has(qw/http map rewrite/)->plan(18);
 
 $t->write_file_expand('nginx.conf', <<'EOF');
 
@@ -36,15 +38,28 @@ http {
     %%TEST_GLOBALS_HTTP%%
 
     map $args $x {
-        default      0;
-        foo          bar;
+        default                     0;
+        foo                         bar;
     }
 
     map $args $y {
         hostnames;
-        default      0;
-        example.com  foo;
-        example.*    wildcard;
+        default                     0;
+        example.com                 foo;
+        example.*                   right-wildcard;
+        *.example.com               left-wildcard;
+        .dot.example.com            special-wildcard;
+        ~^REGEX.EXAMPLE\.ORG$       regex-sensitive;
+        ~*^www.regex.example\.org$  regex-insensitive;
+        \include                    include;
+        server                      $server_name;
+        var                         $z;
+    }
+
+    map $args $z {
+        default                     0;
+        var                         baz;
+        include                     map.conf;
     }
 
     server {
@@ -53,13 +68,18 @@ http {
 
         location / {
             add_header X-Foo "x:$x y:$y\n";
+            return 204;
+        }
+        location /z {
+            add_header X-Foo "z:$z\n";
+            return 204;
         }
     }
 }
 
 EOF
 
-$t->write_file('index.html', '');
+$t->write_file('map.conf', "foo bar;");
 $t->run();
 
 ###############################################################################
@@ -67,7 +87,29 @@ EOF
 like(http_get('/?1'), qr/x:0 y:0/, 'map default');
 like(http_get('/?foo'), qr/x:bar y:0/, 'map foo bar');
 like(http_get('/?example.com'), qr/x:0 y:foo/, 'map example.com foo');
-like(http_get('/?example.org'), qr/x:0 y:wild/, 'map example.org wildcard');
+like(http_get('/?EXAMPLE.COM'), qr/x:0 y:foo/, 'map EXAMPLE.COM foo');
 like(http_get('/?example.com.'), qr/x:0 y:foo/, 'map example.com. foo');
+like(http_get('/?example.org'), qr/x:0 y:right-wildcard/,
+	'map example.org wildcard');
+like(http_get('/?foo.example.com'), qr/x:0 y:left-wildcard/,
+	'map foo.example.com wildcard');
+like(http_get('/?foo.example.com.'), qr/x:0 y:left-wildcard/,
+	'map foo.example.com. wildcard');
+like(http_get('/?dot.example.com'), qr/x:0 y:special-wildcard/,
+	'map dot.example.com special wildcard');
+like(http_get('/?www.dot.example.com'), qr/x:0 y:special-wildcard/,
+	'map www.dot.example.com special wildcard');
+like(http_get('/?REGEX.EXAMPLE.ORG'), qr/x:0 y:regex-sensitive/,
+	'map REGEX.EXAMPLE.ORG');
+like(http_get('/?regex.example.org'), qr/x:0 y:0/,
+	'map regex.example.org');
+like(http_get('/?www.regex.example.org'), qr/x:0 y:regex-insensitive/,
+	'map www.regex.example.org insensitive');
+like(http_get('/?WWW.REGEX.EXAMPLE.ORG'), qr/x:0 y:regex-insensitive/,
+	'map WWW.REGEX.EXAMPLE.ORG insensitive');
+like(http_get('/?include'), qr/x:0 y:include/, 'map special parameter');
+like(http_get('/?server'), qr/x:0 y:localhost/, 'map server_name variable');
+like(http_get('/?var'), qr/x:0 y:baz/, 'map z variable');
+like(http_get('/z?foo'), qr/z:bar/, 'include foo bar');
 
 ###############################################################################