More tests for the prepare_path thing, fix said tests, changelog
[catagits/Catalyst-Runtime.git] / t / aggregate / unit_core_engine_cgi-prepare_path.t
1 use strict;
2 use warnings;
3 use Test::More;
4 use FindBin qw/$Bin/;
5 use lib "$Bin/../lib";
6 use TestApp;
7 use Catalyst::Engine::CGI;
8
9 my %template = (
10     HTTP_HOST => 'www.foo.com',
11     PATH_INFO => '/',
12 );
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
48 # FIXME - Test proxy logic
49 #       - Test encoding/escaping
50 #       - Test query string
51 #       - Test non standard port numbers
52 #       - Test // in PATH_INFO
53 #       - Test scheme (secure request on port 80)
54
55 sub get_req {
56     local %ENV = (%template, @_);
57     my $i = TestApp->new;
58     $i->engine(Catalyst::Engine::CGI->new);
59     $i->engine->prepare_path($i);
60     return $i->req;
61 }
62
63 done_testing;
64