Commit | Line | Data |
4585dfb1 |
1 | #!perl\r |
2 | \r |
3 | use strict;\r |
4 | use warnings;\r |
5 | \r |
6 | use FindBin;\r |
7 | use lib "$FindBin::Bin/lib";\r |
8 | \r |
c4744895 |
9 | use Test::More tests => 19;\r |
4585dfb1 |
10 | use Catalyst::Test 'TestApp';\r |
11 | use HTTP::Request::Common;\r |
12 | \r |
13 | # test an SSL redirect\r |
14 | ok( my $res = request('http://localhost/ssl/secured'), 'request ok' );\r |
15 | is( $res->code, 302, 'redirect code ok' );\r |
16 | is( $res->header('location'), 'https://localhost/ssl/secured', 'redirect uri ok' );\r |
17 | isnt( $res->content, 'Secured', 'no content displayed on secure page, ok' );\r |
18 | \r |
19 | # test redirection params\r |
61b31739 |
20 | ok( $res = request('http://localhost/ssl/secured?a=1&a=2&b=3&c=4'), 'request ok' );\r |
4585dfb1 |
21 | is( $res->header('location'), 'https://localhost/ssl/secured?a=1&a=2&b=3&c=4', 'redirect with params ok' );\r |
22 | \r |
c4744895 |
23 | # test that it does not redirect for actions where SSL mode is optional\r |
4a6b6bad |
24 | ok( $res = request('http://localhost/ssl/maybe_secured'), 'request ok' );\r |
c4744895 |
25 | is( $res->code, 200, 'no redirect for optional SSL action' );\r |
26 | \r |
4585dfb1 |
27 | # test that it doesn't redirect on POST\r |
28 | my $request = POST( 'http://localhost/ssl/secured', \r |
29 | 'Content' => '',\r |
30 | 'Content-Type' => 'application/x-www-form-urlencoded'\r |
31 | );\r |
32 | ok( $res = request($request), 'request ok' );\r |
33 | is( $res->code, 200, 'POST ok' );\r |
34 | \r |
35 | # test that it doesn't redirect if already in SSL mode\r |
36 | SKIP:\r |
37 | {\r |
cc4f2717 |
38 | if ( Catalyst->VERSION < 5.5 ) {\r |
39 | skip "These tests require Catalyst >= 5.5", 7;\r |
40 | }\r |
4585dfb1 |
41 | ok( $res = request('https://localhost/ssl/secured'), 'request ok' );\r |
42 | is( $res->code, 200, 'SSL request, ok' );\r |
43 | \r |
44 | # test redirect back to http mode\r |
45 | ok( $res = request('https://localhost/ssl/unsecured'), 'request ok' );\r |
46 | is( $res->code, 302, 'redirect back to http ok' );\r |
47 | is( $res->header('location'), 'http://localhost/ssl/unsecured', 'redirect uri ok' );\r |
48 | \r |
49 | # test redirection params\r |
61b31739 |
50 | ok( $res = request('https://localhost/ssl/unsecured?a=1&a=2&b=3&c=4'), 'request ok' );\r |
4585dfb1 |
51 | is( $res->header('location'), 'http://localhost/ssl/unsecured?a=1&a=2&b=3&c=4', 'redirect with params ok' );\r |
c4744895 |
52 | \r |
53 | # test that it does not redirect for actions where SSL mode is optional\r |
54 | ok( $res = request('https://localhost/ssl/maybe_secured'), 'request ok' );\r |
55 | is( $res->code, 200, 'no redirect for optional SSL action' );\r |
4585dfb1 |
56 | }\r |
57 | \r |