X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Runtime.git;a=blobdiff_plain;f=t%2Funicode_plugin_request_decode.t;h=42a9a722232fe6e999e7466ed71afd7dd2cf36ab;hp=c3b7171ee326256e7090a6fb120e3640b8f5ba9a;hb=518b61984c49533ec00813125b16812cd681e778;hpb=9af4ee013b23e7241d4664ea39952fa3b20f4b7f diff --git a/t/unicode_plugin_request_decode.t b/t/unicode_plugin_request_decode.t index c3b7171..42a9a72 100644 --- a/t/unicode_plugin_request_decode.t +++ b/t/unicode_plugin_request_decode.t @@ -1,6 +1,6 @@ use strict; use warnings; -use Test::More tests => 5 * 5; +use Test::More; use utf8; # setup library path @@ -17,42 +17,19 @@ my $encode_str = "\x{e3}\x{81}\x{82}"; # e38182 is japanese 'あ' my $decode_str = Encode::decode('utf-8' => $encode_str); my $escape_str = uri_escape_utf8($decode_str); -check_parameter(GET "/?foo=$escape_str"); -check_parameter(POST '/', ['foo' => $encode_str]); -check_parameter(POST '/', - Content_Type => 'form-data', - Content => [ - 'foo' => [ - "$Bin/unicode_plugin_request_decode.t", - $encode_str, - ] - ], -); - -check_argument(GET "/$escape_str"); -check_capture(GET "/capture/$escape_str"); - -# sending non-utf8 data -my $non_utf8_data = "%C3%E6%CB%AA"; -check_fallback(GET "/?q=${non_utf8_data}"); -check_fallback(GET "/${non_utf8_data}"); -check_fallback(GET "/capture/${non_utf8_data}"); -check_fallback(POST '/', ['foo' => $non_utf8_data]); - sub check_parameter { my ( undef, $c ) = ctx_request(shift); is $c->res->output => '

It works

'; my $foo = $c->req->param('foo'); - ok utf8::is_utf8($foo); - is $foo => $decode_str; + is $foo, $decode_str; my $other_foo = $c->req->method eq 'POST' ? $c->req->upload('foo') ? $c->req->upload('foo')->filename : $c->req->body_parameters->{foo} : $c->req->query_parameters->{foo}; - ok utf8::is_utf8($other_foo); + is $other_foo => $decode_str; } @@ -61,7 +38,6 @@ sub check_argument { is $c->res->output => '

It works

'; my $foo = $c->req->args->[0]; - ok utf8::is_utf8($foo); is $foo => $decode_str; } @@ -70,7 +46,6 @@ sub check_capture { is $c->res->output => '

It works

'; my $foo = $c->req->captures->[0]; - ok utf8::is_utf8($foo); is $foo => $decode_str; } @@ -78,3 +53,27 @@ sub check_fallback { my ( $res, $c ) = ctx_request(shift); ok(!is_server_error($res->code)) or diag('Response code is: ' . $res->code); } + +check_parameter(GET "/?foo=$escape_str"); +check_parameter(POST '/', ['foo' => $encode_str]); +check_parameter(POST '/', + Content_Type => 'form-data', + Content => [ + 'foo' => [ + "$Bin/unicode_plugin_request_decode.t", + $encode_str, + ] + ], +); + +check_argument(GET "/$escape_str"); +check_capture(GET "/capture/$escape_str"); + +# sending non-utf8 data +my $non_utf8_data = "%C3%E6%CB%AA"; +check_fallback(GET "/?q=${non_utf8_data}"); +check_fallback(GET "/${non_utf8_data}"); +check_fallback(GET "/capture/${non_utf8_data}"); +check_fallback(POST '/', ['foo' => $non_utf8_data]); + +done_testing;