Commit | Line | Data |
878b821c |
1 | #!perl |
2 | |
3 | use strict; |
4 | use warnings; |
5 | |
6 | use FindBin; |
7 | use lib "$FindBin::Bin/lib"; |
8 | |
9 | use Test::More tests => 8; |
10 | use Catalyst::Test 'TestAppOnDemand'; |
11 | |
12 | use Catalyst::Request; |
13 | use HTTP::Headers; |
14 | use HTTP::Request::Common; |
15 | |
16 | # Test a simple POST request to make sure body parsing |
17 | # works in on-demand mode. |
18 | SKIP: |
19 | { |
20 | if ( $ENV{CATALYST_SERVER} ) { |
21 | skip "Using remote server", 8; |
22 | } |
23 | |
24 | { |
25 | my $params; |
26 | |
27 | my $request = POST( |
28 | 'http://localhost/body/params', |
29 | 'Content-Type' => 'application/x-www-form-urlencoded', |
30 | 'Content' => 'foo=bar&baz=quux' |
31 | ); |
32 | |
33 | my $expected = { foo => 'bar', baz => 'quux' }; |
34 | |
35 | ok( my $response = request($request), 'Request' ); |
36 | ok( $response->is_success, 'Response Successful 2xx' ); |
37 | |
38 | { |
39 | no strict 'refs'; |
40 | ok( |
41 | eval '$params = ' . $response->content, |
42 | 'Unserialize params' |
43 | ); |
44 | } |
45 | |
46 | is_deeply( $params, $expected, 'Catalyst::Request body parameters' ); |
47 | } |
48 | |
49 | # Test reading chunks of the request body using $c->read |
50 | { |
51 | my $creq; |
52 | |
53 | my $request = POST( |
54 | 'http://localhost/body/read', |
55 | 'Content-Type' => 'text/plain', |
56 | 'Content' => 'x' x 105_000 |
57 | ); |
58 | |
59 | my $expected = '10000|10000|10000|10000|10000|10000|10000|10000|10000|10000|5000'; |
60 | |
61 | ok( my $response = request($request), 'Request' ); |
62 | ok( $response->is_success, 'Response Successful 2xx' ); |
63 | is( $response->content_type, 'text/plain', 'Response Content-Type' ); |
64 | is( $response->content, $expected, 'Response Content' ); |
65 | } |
66 | } |