# HG changeset patch # User Andrey Zelenkov # Date 1440716960 -10800 # Node ID 1f8e15e1899a75439249498d057f179016ed6561 # Parent 85e368105c8be4d5affe13fa19f7957ec20d63a3 Tests: more tests for map module. Added tests for regex and wildcard values, special parameters and variables. diff --git a/map.t b/map.t --- 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'); ###############################################################################