X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Runtime.git;a=blobdiff_plain;f=t%2Faggregate%2Funit_core_engine_cgi-prepare_path.t;h=0c874e56e465181227bdb61c238a0f2cb34ec41c;hp=845b22fc73305543f81cfc500ce869d4ea5e8a2d;hb=eb3abf9698d6eb550497284482f36a315e856091;hpb=7eb695272ae1fb6c605eadb70230f5a71477b401 diff --git a/t/aggregate/unit_core_engine_cgi-prepare_path.t b/t/aggregate/unit_core_engine_cgi-prepare_path.t index 845b22f..0c874e5 100644 --- a/t/aggregate/unit_core_engine_cgi-prepare_path.t +++ b/t/aggregate/unit_core_engine_cgi-prepare_path.t @@ -6,19 +6,58 @@ use lib "$Bin/../lib"; use TestApp; use Catalyst::Engine::CGI; +my %template = ( + HTTP_HOST => 'www.foo.com', + PATH_INFO => '/', +); + +# mod_rewrite to app root for non / based app { - our %ENV = ( - HTTP_HOST => 'www.foo.com', + my $r = get_req ( REDIRECT_URL => '/comics/', - PATH_INFO => '/', SCRIPT_NAME => '/comics/dispatch.cgi', REQUEST_URI => '/comics/', ); + is ''.$r->uri, 'http://www.foo.com/comics/'; + is ''.$r->base, 'http://www.foo.com/comics/'; +} + +# mod_rewrite to sub path under app root for non / based app +{ + my $r = get_req ( + PATH_INFO => '/foo/bar.gif', + REDIRECT_URL => '/comics/foo/bar.gif', + SCRIPT_NAME => '/comics/dispatch.cgi', + REQUEST_URI => '/comics/foo/bar.gif', + ); + is ''.$r->uri, 'http://www.foo.com/comics/foo/bar.gif'; + is ''.$r->base, 'http://www.foo.com/comics/'; +} + +# Standard CGI hit for non / based app +{ + my $r = get_req ( + PATH_INFO => '/static/css/blueprint/screen.css', + SCRIPT_NAME => '/~bobtfish/Gitalist/script/gitalist.cgi', + REQUEST_URI => '/~bobtfish/Gitalist/script/gitalist.cgi/static/css/blueprint/screen.css', + ); + is ''.$r->uri, 'http://www.foo.com/~bobtfish/Gitalist/script/gitalist.cgi/static/css/blueprint/screen.css'; + is ''.$r->base, 'http://www.foo.com/~bobtfish/Gitalist/script/gitalist.cgi/'; +} + +# FIXME - Test proxy logic +# - Test encoding/escaping +# - Test query string +# - Test non standard port numbers +# - Test // in PATH_INFO +# - Test scheme (secure request on port 80) + +sub get_req { + local %ENV = (%template, @_); my $i = TestApp->new; $i->engine(Catalyst::Engine::CGI->new); $i->engine->prepare_path($i); - is ''.$i->req->uri, 'http://www.foo.com/comics/'; - is ''.$i->req->base, 'http://www.foo.com/comics/'; + return $i->req; } done_testing;