From: Marco Pessotto Date: Mon, 18 Jul 2016 08:06:46 +0000 (+0200) Subject: Added failing tests for invalid UTF-8 X-Git-Tag: 5.90110~3^2 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Runtime.git;a=commitdiff_plain;h=9206d78d3c3c9439fcbc0b9dd79c552beebe5ff5;hp=5df9a4c5adf79f83fa4e54196c321f323c24670d Added failing tests for invalid UTF-8 --- diff --git a/t/utf_incoming.t b/t/utf_incoming.t index 21683cf..8b88a0e 100644 --- a/t/utf_incoming.t +++ b/t/utf_incoming.t @@ -7,6 +7,7 @@ use HTTP::Message::PSGI (); use Encode 2.21 'decode_utf8', 'encode_utf8', 'encode'; use File::Spec; use JSON::MaybeXS; +use Data::Dumper; use Scalar::Util (); # Test cases for incoming utf8 @@ -223,6 +224,13 @@ use Scalar::Util (); $c->response->body($c->req->body_parameters->{arg}); } + sub echo_param :Local { + my ($self, $c) = @_; + $c->response->content_type('text/plain'); + $c->response->body($c->req->query_parameters->{arg}); + } + + package MyApp; use Catalyst; @@ -529,6 +537,31 @@ SKIP: { is $c->req->query_parameters->{'a'}, $shiftjs, 'got expected value'; } +{ + my $invalid = '%e2'; + # in url + { + my $req = GET "/$invalid"; + my $res = request $req; + is ($res->code, '400', "Invalid url param is 400"); + } + # in body + { + my $req = POST "/root/echo_arg", Content => "arg0=$invalid"; + my $res = request $req; + is ($res->code, '400', "Invalid post param is 400"); + } + # in query + { + # failing since 5.90080 + my $req = GET "/root/echo_param?arg=$invalid"; + my $res = request $req; + is ($res->code, '400', "Invalid get param is 400") or diag Dumper($res->decoded_content); + } + +} + + ## should we use binmode on filehandles to force the encoding...? ## Not sure what else to do with multipart here, if docs are enough...