improved req/res/stats trait composing
[catagits/Catalyst-Runtime.git] / t / content_negotiation.t
1 #!/usr/bin/env perl
2
3 use warnings;
4 use strict;
5
6 use FindBin;
7 use Test::More;
8 use HTTP::Request::Common;
9 use JSON::MaybeXS;
10
11 use lib "$FindBin::Bin/lib";
12 use Catalyst::Test 'TestContentNegotiation';
13
14 {
15   ok my $req = POST '/',
16      Content_Type => 'application/json',
17      Content => encode_json +{message=>'test'};
18
19   ok my $res = request $req;
20
21   is $res->content, 'is_json1';
22 }
23
24 {
25   ok my $req = POST '/', [a=>1,b=>2];
26   ok my $res = request $req;
27
28   is $res->content, 'is_urlencoded1';
29 }
30
31 {
32   ok my $path = TestContentNegotiation->path_to(qw/share file.txt/);
33   ok my $req = POST '/',
34     Content_Type => 'form-data',
35     Content =>  [a=>1, b=>2, file=>["$path"]];
36
37   ok my $res = request $req;
38
39   is $res->content, 'is_multipart1';
40 }
41
42 {
43   ok my $req = POST '/under',
44      Content_Type => 'application/json',
45      Content => encode_json +{message=>'test'};
46
47   ok my $res = request $req;
48
49   is $res->content, 'is_json2';
50 }
51
52 {
53   ok my $req = POST '/under', [a=>1,b=>2];
54   ok my $res = request $req;
55
56   is $res->content, 'is_urlencoded2';
57 }
58
59 {
60   ok my $path = TestContentNegotiation->path_to(qw/share file.txt/);
61   ok my $req = POST '/under',
62     Content_Type => 'form-data',
63     Content =>  [a=>1, b=>2, file=>["$path"]];
64
65   ok my $res = request $req;
66
67   is $res->content, 'is_multipart2';
68 }
69
70 {
71   ok my $req = POST '/is_more_than_one_1',
72     Content =>  [a=>1, b=>2];
73
74   ok my $res = request $req;
75
76   is $res->content, 'formdata1';
77 }
78
79 {
80   ok my $req = POST '/is_more_than_one_2',
81     Content =>  [a=>1, b=>2];
82
83   ok my $res = request $req;
84
85   is $res->content, 'formdata2';
86 }
87
88 {
89   ok my $req = POST '/is_more_than_one_3',
90     Content =>  [a=>1, b=>2];
91
92   ok my $res = request $req;
93
94   is $res->content, 'formdata3';
95 }
96
97 {
98   ok my $path = TestContentNegotiation->path_to(qw/share file.txt/);
99   ok my $req = POST '/is_more_than_one_1',
100     Content_Type => 'form-data',
101     Content =>  [a=>1, b=>2, file=>["$path"]];
102
103   ok my $res = request $req;
104
105   is $res->content, 'formdata1';
106 }
107
108 {
109   ok my $path = TestContentNegotiation->path_to(qw/share file.txt/);
110   ok my $req = POST '/is_more_than_one_2',
111     Content_Type => 'form-data',
112     Content =>  [a=>1, b=>2, file=>["$path"]];
113
114   ok my $res = request $req;
115
116   is $res->content, 'formdata2';
117 }
118
119 {
120   ok my $path = TestContentNegotiation->path_to(qw/share file.txt/);
121   ok my $req = POST '/is_more_than_one_3',
122     Content_Type => 'form-data',
123     Content =>  [a=>1, b=>2, file=>["$path"]];
124
125   ok my $res = request $req;
126
127   is $res->content, 'formdata3';
128 }
129
130 done_testing;