Merged 5.49_01 (r1339) from refactored branch to trunk
[catagits/Catalyst-Runtime.git] / t / live / engine / request / uri.t
diff --git a/t/live/engine/request/uri.t b/t/live/engine/request/uri.t
new file mode 100644 (file)
index 0000000..a6c6b38
--- /dev/null
@@ -0,0 +1,52 @@
+#!perl\r
+\r
+use strict;\r
+use warnings;\r
+\r
+use FindBin;\r
+use lib "$FindBin::Bin/../../lib";\r
+\r
+use Test::More tests => 18;\r
+use Catalyst::Test 'TestApp';\r
+use Catalyst::Request;\r
+\r
+my $creq;\r
+\r
+# test that the path can be changed\r
+{\r
+    ok( my $response = request('http://localhost/engine/request/uri/change_path'), 'Request' );\r
+    ok( $response->is_success, 'Response Successful 2xx' );\r
+    ok( eval '$creq = ' . $response->content, 'Unserialize Catalyst::Request' );\r
+    like( $creq->uri, qr{/my/app/lives/here}, 'URI contains new path' );\r
+}\r
+\r
+# test that path properly removes the base location\r
+{\r
+    ok( my $response = request('http://localhost/engine/request/uri/change_base'), 'Request' );\r
+    ok( $response->is_success, 'Response Successful 2xx' );\r
+    ok( eval '$creq = ' . $response->content, 'Unserialize Catalyst::Request' );\r
+    like( $creq->base, qr{/new/location}, 'Base URI contains new location' );\r
+    is( $creq->path, 'engine/request/uri/change_base', 'URI contains correct path' );\r
+}\r
+\r
+# test that base + path is correct\r
+{\r
+    ok( my $response = request('http://localhost/engine/request/uri'), 'Request' );\r
+    ok( $response->is_success, 'Response Successful 2xx' );\r
+    ok( eval '$creq = ' . $response->content, 'Unserialize Catalyst::Request' );\r
+    is( $creq->base . $creq->path, $creq->uri, 'Base + Path ok' );\r
+}\r
+\r
+# test that we can use semi-colons as separators\r
+{\r
+    my $parameters = {\r
+        a => [ qw/1 2/ ],\r
+        b => 3,\r
+    };\r
+    \r
+    ok( my $response = request('http://localhost/engine/request/uri?a=1;a=2;b=3'), 'Request' );\r
+    ok( $response->is_success, 'Response Successful 2xx' );\r
+    ok( eval '$creq = ' . $response->content, 'Unserialize Catalyst::Request' );\r
+    is( $creq->{uri}->query, 'a=1;a=2;b=3', 'Query string ok' );\r
+    is_deeply( $creq->{parameters}, $parameters, 'Parameters ok' );\r
+}    \r