3bc28fd19a794ad3192b29c8eea4ade919e936a5
[catagits/Catalyst-Runtime.git] / t / engine / request / body.t
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 => 20;
10 use Catalyst::Test 'TestApp';
11
12 use Catalyst::Request;
13 use HTTP::Headers;
14 use HTTP::Request::Common;
15
16 {
17     my $creq;
18
19     my $request = POST( 'http://localhost/dump/request/',
20         'Content-Type' => 'text/plain',
21         'Content'      => 'Hello Catalyst'
22     );
23
24     ok( my $response = request($request), 'Request' );
25     ok( $response->is_success, 'Response Successful 2xx' );
26     is( $response->content_type, 'text/plain', 'Response Content-Type' );
27     like( $response->content, qr/^bless\( .* 'Catalyst::Request' \)$/s, 'Content is a serialized Catalyst::Request' );
28     
29     {
30         no strict 'refs';
31         ok( eval '$creq = ' . $response->content, 'Unserialize Catalyst::Request' );
32     }
33
34     isa_ok( $creq, 'Catalyst::Request' );
35     is( $creq->method, 'POST', 'Catalyst::Request method' );
36     is( $creq->content_type, 'text/plain', 'Catalyst::Request Content-Type' );
37     is( $creq->content_length, $request->content_length, 'Catalyst::Request Content-Length' );
38     is( $creq->body, $request->content, 'Catalyst::Request Content' );
39 }
40
41 {
42     my $creq;
43
44     my $request = POST( 'http://localhost/dump/request/',
45         'Content-Type' => 'text/plain',
46         'Content'      => 'x' x 100_000
47     );
48
49     ok( my $response = request($request), 'Request' );
50     ok( $response->is_success, 'Response Successful 2xx' );
51     is( $response->content_type, 'text/plain', 'Response Content-Type' );
52     like( $response->content, qr/^bless\( .* 'Catalyst::Request' \)$/s, 'Content is a serialized Catalyst::Request' );
53     
54     {
55         no strict 'refs';
56         ok( eval '$creq = ' . $response->content, 'Unserialize Catalyst::Request' );
57     }
58
59     isa_ok( $creq, 'Catalyst::Request' );
60     is( $creq->method, 'POST', 'Catalyst::Request method' );
61     is( $creq->content_type, 'text/plain', 'Catalyst::Request Content-Type' );
62     is( $creq->content_length, $request->content_length, 'Catalyst::Request Content-Length' );
63     is( $creq->body, $request->content, 'Catalyst::Request Content' );
64 }