changeset 117:f2b8d86438ee

Tests: add location matching tests.
author Maxim Dounin <mdounin@mdounin.ru>
date Thu, 17 Dec 2009 18:41:23 +0300
parents c8341d95297e
children 4bf7a819358c
files http-location.t
diffstat 1 files changed, 92 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
new file mode 100644
--- /dev/null
+++ b/http-location.t
@@ -0,0 +1,92 @@
+#!/usr/bin/perl
+
+# (C) Maxim Dounin
+
+# Tests for location 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;
+
+my $t = Test::Nginx->new()->has('rewrite')->plan(8)
+	->write_file_expand('nginx.conf', <<'EOF');
+
+%%TEST_GLOBALS%%
+
+master_process off;
+daemon         off;
+
+events {
+}
+
+http {
+    %%TEST_GLOBALS_HTTP%%
+
+    server {
+        listen       127.0.0.1:8080;
+        server_name  localhost;
+
+        location = / {
+            add_header X-Location exactlyroot;
+            return 204;
+        }
+
+        location / {
+            add_header X-Location root;
+            return 204;
+        }
+
+        location ^~ /images/ {
+            add_header X-Location images;
+            return 204;
+        }
+
+        location ~* \.(gif|jpg|jpeg)$ {
+            add_header X-Location regex;
+            return 204;
+        }
+
+        location ~ casefull {
+            add_header X-Location casefull;
+            return 204;
+        }
+    }
+}
+
+EOF
+
+$t->run();
+
+###############################################################################
+
+like(http_get('/'), qr/X-Location: exactlyroot/, 'exactlyroot');
+like(http_get('/x'), qr/X-Location: root/, 'root');
+like(http_get('/images/t.gif'), qr/X-Location: images/, 'images');
+like(http_get('/t.gif'), qr/X-Location: regex/, 'regex');
+
+{
+local $TODO = 'broken in 0.8.25';
+
+like(http_get('/t.GIF'), qr/X-Location: regex/, 'regex with mungled case');
+
+}
+
+like(http_get('/casefull/t.gif'), qr/X-Location: regex/, 'first regex wins');
+like(http_get('/casefull/'), qr/X-Location: casefull/, 'casefull regex');
+like(http_get('/CASEFULL/'), qr/X-Location: root/,
+     'casefull regex do not match wrong case');
+
+###############################################################################