From: John Napiorkowski Date: Wed, 23 Oct 2013 17:30:08 +0000 (-0500) Subject: first pass test case X-Git-Tag: 5.90050~1^2~18 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Runtime.git;a=commitdiff_plain;h=d15db19cbcfd1896251aa7704907fb76b552beb7;hp=982d7488f79d1c7c489e8e84e1556e22132c0a3d first pass test case --- diff --git a/MANIFEST.SKIP b/MANIFEST.SKIP index b9ad8e0..18b2702 100644 --- a/MANIFEST.SKIP +++ b/MANIFEST.SKIP @@ -1,2 +1,2 @@ -^(?!script/\w+\.pl$|TODO$|lib/.+(? 'application/json', + Content => encode_json +{message=>'test'}; + + ok my $res = request $req; + + is $res->content, 'is_json'; +} + +{ + ok my $req = POST '/', [a=>1,b=>2]; + ok my $res = request $req; + + is $res->content, 'is_urlencoded'; +} + +{ + ok my $path = TestContentNegotiation->path_to(qw/share file.txt/); + ok my $req = POST '/', + Content_Type => 'form-data', + Content => [a=>1, b=>2, file=>["$path"]]; + + ok my $res = request $req; + + is $res->content, 'is_multipart'; +} + done_testing; diff --git a/t/lib/TestContentNegotiation/share/file.txt b/t/lib/TestContentNegotiation/share/file.txt new file mode 100644 index 0000000..ab8e0eb --- /dev/null +++ b/t/lib/TestContentNegotiation/share/file.txt @@ -0,0 +1,50 @@ +package TestContentNegotiation::Controller::Root; + +use Moose; +use MooseX::MethodAttributes; + +extends 'Catalyst::Controller'; + +sub start :Chained(/) PathPrefix CaptureArgs(0) { } + + sub is_json : Chained('start') PathPart('') Consumes('application/json') Args(0) { pop->res->body('is_json') } + sub is_urlencoded : Chained('start') PathPart('') Consumes('application/x-www-form-urlencoded') Args(0) { pop->res->body('is_urlencoded') } + sub is_multipart : Chained('start') PathPart('') Consumes('multipart/form-data') Args(0) { pop->res->body('is_multipart') } + + sub under :Chained('start') CaptureArgs(0) { } + + sub is_json_under : Chained('under') PathPart('') Consumes(JSON) Args(0) { pop->res->body('is_json') } + sub is_urlencoded_under : Chained('under') PathPart('') Consumes(UrlEncoded) Args(0) { pop->res->body('is_urlencoded') } + sub is_multipart_under : Chained('under') PathPart('') Consumes(Multipart) Args(0) { pop->res->body('is_multipart') } + + ## Or allow more than one type + + sub multi :Chained('start') CaptureArgs(0) { } + + sub is_more_than_one_1 + : Chained('multi') PathPart('') + : Consumes('application/x-www-form-urlencoded') + : Consumes('multipart/form-data') + : Args(0) + { + pop->res->body('formdata1'); + } + + sub is_more_than_one_2 + : Chained('multi') PathPart('') + : Consumes('HTMLForm') + : Args(0) + { + pop->res->body('formdata2'); + } + + sub is_more_than_one_3 + : Chained('multi') PathPart('') + : Consumes('application/x-www-form-urlencoded,multipart/form-data') + : Args(0) + { + pop->res->body('formdata3'); + } + + +__PACKAGE__->meta->make_immutable;