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