Commit | Line | Data |
dd4e6fd2 |
1 | #!perl |
2 | |
3 | use strict; |
4 | use warnings; |
5 | |
6 | use FindBin; |
a2e038a1 |
7 | use lib "$FindBin::Bin/lib"; |
dd4e6fd2 |
8 | |
94b8f5de |
9 | use Test::More tests => 29; |
dd4e6fd2 |
10 | use Catalyst::Test 'TestApp'; |
11 | |
12 | use Catalyst::Request; |
13 | use HTTP::Headers; |
14 | use HTTP::Request::Common; |
15 | use URI; |
16 | |
17 | { |
18 | my $creq; |
19 | |
fbcc39ad |
20 | my $parameters = { 'a' => [qw(A b C d E f G)], }; |
21 | |
b9e9fff6 |
22 | my $query = join( '&', map { 'a=' . $_ } @{ $parameters->{a} } ); |
fbcc39ad |
23 | |
24 | ok( my $response = request("http://localhost/dump/request?$query"), |
25 | 'Request' ); |
b9e9fff6 |
26 | ok( $response->is_success, 'Response Successful 2xx' ); |
27 | is( $response->content_type, 'text/plain', 'Response Content-Type' ); |
fbcc39ad |
28 | like( |
29 | $response->content, |
30 | qr/^bless\( .* 'Catalyst::Request' \)$/s, |
31 | 'Content is a serialized Catalyst::Request' |
32 | ); |
b9e9fff6 |
33 | ok( eval '$creq = ' . $response->content, 'Unserialize Catalyst::Request' ); |
34 | isa_ok( $creq, 'Catalyst::Request' ); |
35 | is( $creq->method, 'GET', 'Catalyst::Request method' ); |
fbcc39ad |
36 | is_deeply( $creq->{parameters}, $parameters, |
37 | 'Catalyst::Request parameters' ); |
b9e9fff6 |
38 | } |
39 | |
40 | { |
41 | my $creq; |
42 | |
fbcc39ad |
43 | my $parameters = { |
5c2c224d |
44 | 'a' => [qw(A b C d E f G)], |
45 | '%' => [ '%', '"', '& - &' ], |
46 | 'blank' => '', |
dd4e6fd2 |
47 | }; |
48 | |
fbcc39ad |
49 | my $request = POST( |
50 | 'http://localhost/dump/request/a/b?a=1&a=2&a=3', |
dd4e6fd2 |
51 | 'Content' => $parameters, |
52 | 'Content-Type' => 'application/x-www-form-urlencoded' |
53 | ); |
54 | |
dd4e6fd2 |
55 | unshift( @{ $parameters->{a} }, 1, 2, 3 ); |
fbcc39ad |
56 | |
dd4e6fd2 |
57 | ok( my $response = request($request), 'Request' ); |
58 | ok( $response->is_success, 'Response Successful 2xx' ); |
59 | is( $response->content_type, 'text/plain', 'Response Content-Type' ); |
fbcc39ad |
60 | like( |
61 | $response->content, |
62 | qr/^bless\( .* 'Catalyst::Request' \)$/s, |
63 | 'Content is a serialized Catalyst::Request' |
64 | ); |
dd4e6fd2 |
65 | ok( eval '$creq = ' . $response->content, 'Unserialize Catalyst::Request' ); |
66 | isa_ok( $creq, 'Catalyst::Request' ); |
67 | is( $creq->method, 'POST', 'Catalyst::Request method' ); |
fbcc39ad |
68 | is_deeply( $creq->{parameters}, $parameters, |
69 | 'Catalyst::Request parameters' ); |
dd4e6fd2 |
70 | is_deeply( $creq->arguments, [qw(a b)], 'Catalyst::Request arguments' ); |
fbcc39ad |
71 | is_deeply( $creq->{uploads}, {}, 'Catalyst::Request uploads' ); |
72 | is_deeply( $creq->cookies, {}, 'Catalyst::Request cookie' ); |
dd4e6fd2 |
73 | } |
c2e37e59 |
74 | |
c2e37e59 |
75 | # http://dev.catalyst.perl.org/ticket/37 |
76 | # multipart/form-data parameters that contain 'http://' |
fbcc39ad |
77 | # was an HTTP::Message bug, but HTTP::Body handles it properly now |
c2e37e59 |
78 | { |
79 | my $creq; |
80 | |
81 | my $parameters = { |
5c2c224d |
82 | 'url' => 'http://www.google.com', |
83 | 'blank' => '', |
c2e37e59 |
84 | }; |
85 | |
86 | my $request = POST( 'http://localhost/dump/request', |
87 | 'Content-Type' => 'multipart/form-data', |
88 | 'Content' => $parameters, |
89 | ); |
90 | |
91 | ok( my $response = request($request), 'Request' ); |
92 | ok( eval '$creq = ' . $response->content, 'Unserialize Catalyst::Request' ); |
fbcc39ad |
93 | is_deeply( $creq->{parameters}, $parameters, 'Catalyst::Request parameters' ); |
94 | } |
95 | |
96 | # raw query string support |
97 | { |
98 | my $creq; |
99 | |
100 | my $parameters = { |
5c2c224d |
101 | a => 1, |
102 | blank => '', |
fbcc39ad |
103 | }; |
104 | |
105 | my $request = POST( |
94b8f5de |
106 | 'http://localhost/dump/request/a/b?query_string', |
fbcc39ad |
107 | 'Content' => $parameters, |
108 | 'Content-Type' => 'application/x-www-form-urlencoded' |
109 | ); |
110 | |
111 | ok( my $response = request($request), 'Request' ); |
112 | ok( eval '$creq = ' . $response->content, 'Unserialize Catalyst::Request' ); |
94b8f5de |
113 | is( $creq->{uri}->query, 'query_string', 'Catalyst::Request POST query_string' ); |
5c2c224d |
114 | is_deeply( $creq->{parameters}, $parameters, 'Catalyst::Request parameters' ); |
fbcc39ad |
115 | |
116 | ok( $response = request('http://localhost/dump/request/a/b?x=1&y=1&z=1'), 'Request' ); |
117 | ok( eval '$creq = ' . $response->content, 'Unserialize Catalyst::Request' ); |
118 | is( $creq->{uri}->query, 'x=1&y=1&z=1', 'Catalyst::Request GET query_string' ); |
c2e37e59 |
119 | } |