Fix up required Plack version to ensure we have a recent enough version to work with...
[catagits/Catalyst-Runtime.git] / t / aggregate / unit_core_engine-prepare_path.t
CommitLineData
5dbf12d1 1use strict;
2use warnings;
3use Test::More;
4use FindBin qw/$Bin/;
5use lib "$Bin/../lib";
6use TestApp;
d9d5d62d 7use Catalyst::Engine;
5dbf12d1 8
eb3abf96 9# mod_rewrite to app root for non / based app
5dbf12d1 10{
eb3abf96 11 my $r = get_req (
5dbf12d1 12 SCRIPT_NAME => '/comics/dispatch.cgi',
13 REQUEST_URI => '/comics/',
14 );
eb3abf96 15 is ''.$r->uri, 'http://www.foo.com/comics/';
16 is ''.$r->base, 'http://www.foo.com/comics/';
17}
18
19# mod_rewrite to sub path under app root for non / based app
20{
21 my $r = get_req (
22 PATH_INFO => '/foo/bar.gif',
eb3abf96 23 SCRIPT_NAME => '/comics/dispatch.cgi',
24 REQUEST_URI => '/comics/foo/bar.gif',
25 );
26 is ''.$r->uri, 'http://www.foo.com/comics/foo/bar.gif';
27 is ''.$r->base, 'http://www.foo.com/comics/';
28}
29
30# Standard CGI hit for non / based app
31{
32 my $r = get_req (
33 PATH_INFO => '/static/css/blueprint/screen.css',
34 SCRIPT_NAME => '/~bobtfish/Gitalist/script/gitalist.cgi',
35 REQUEST_URI => '/~bobtfish/Gitalist/script/gitalist.cgi/static/css/blueprint/screen.css',
36 );
37 is ''.$r->uri, 'http://www.foo.com/~bobtfish/Gitalist/script/gitalist.cgi/static/css/blueprint/screen.css';
38 is ''.$r->base, 'http://www.foo.com/~bobtfish/Gitalist/script/gitalist.cgi/';
39}
53f4422a 40# / %2F %252F escaping case.
41{
42 my $r = get_req (
43 PATH_INFO => '/%2F/%2F',
44 SCRIPT_NAME => '/~bobtfish/Gitalist/script/gitalist.cgi',
45 REQUEST_URI => '/~bobtfish/Gitalist/script/gitalist.cgi/%252F/%252F',
46 );
47 is ''.$r->uri, 'http://www.foo.com/~bobtfish/Gitalist/script/gitalist.cgi/%252F/%252F';
48 is ''.$r->base, 'http://www.foo.com/~bobtfish/Gitalist/script/gitalist.cgi/';
49}
eb3abf96 50
b760ac3d 51# Using rewrite rules to ask for a sub-path in your app.
52# E.g. RewriteRule ^(.*)$ /path/to/fastcgi/domainprofi.fcgi/iframeredirect$1 [L,NS]
53{
54 my $r = get_req (
55 PATH_INFO => '/iframeredirect/info',
56 SCRIPT_NAME => '',
57 REQUEST_URI => '/info',
58 );
59 is ''.$r->uri, 'http://www.foo.com/iframeredirect/info';
60 is ''.$r->base, 'http://www.foo.com/';
61}
62
63
64
eb3abf96 65# FIXME - Test proxy logic
eb3abf96 66# - Test query string
67# - Test non standard port numbers
68# - Test // in PATH_INFO
69# - Test scheme (secure request on port 80)
70
71sub get_req {
ee1ea13f 72 my %template = (
73 HTTP_HOST => 'www.foo.com',
74 PATH_INFO => '/',
75 );
76
d9d5d62d 77 my $engine = Catalyst::Engine->new(
78 env => { %template, @_ },
79 );
5dbf12d1 80 my $i = TestApp->new;
d9d5d62d 81 $engine->prepare_path($i);
eb3abf96 82 return $i->req;
5dbf12d1 83}
84
85done_testing;
86