Commit | Line | Data |
5dbf12d1 |
1 | use strict; |
2 | use warnings; |
3 | use Test::More; |
4 | use FindBin qw/$Bin/; |
5 | use lib "$Bin/../lib"; |
6 | use TestApp; |
d9d5d62d |
7 | use 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 | |
71 | sub 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 | |
85 | done_testing; |
86 | |