X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Runtime.git;a=blobdiff_plain;f=t%2Futf_incoming.t;h=8966d561db133a19a0eea6db59ffaebf74a0063e;hp=096ba69cc1bc159a0843637d7aa88a7bcec5e636;hb=8a79126d4370b7aa4ad841ed18a83df1f9e90ec8;hpb=e5a5e80ba295da3a2f1fd8610b2f03299f9c5719 diff --git a/t/utf_incoming.t b/t/utf_incoming.t index 096ba69..8966d56 100644 --- a/t/utf_incoming.t +++ b/t/utf_incoming.t @@ -3,6 +3,8 @@ use warnings; use strict; use Test::More; use HTTP::Request::Common; +use Encode 2.21 'decode_utf8', 'encode_utf8'; +use File::Spec; # Test cases for incoming utf8 @@ -61,12 +63,43 @@ use HTTP::Request::Common; Test::More::is $c->req->captures->[0], '♥'; $c->response->body("

This is base-link action ♥ ${\$c->req->args->[0]}

"); + + # Test to make sure redirect can now take an object (sorry don't have a better place for it + # but wanted test coverage. + my $location = $c->res->redirect( $c->uri_for($c->controller('Root')->action_for('uri_for')) ); + Test::More::ok !ref $location; } + sub stream_write :Local { + my ($self, $c) = @_; + $c->response->content_type('text/html'); + $c->response->write("

This is stream_write action ♥

"); + } + + sub stream_write_fh :Local { + my ($self, $c) = @_; + $c->response->content_type('text/html'); + + my $writer = $c->res->write_fh; + + $writer->write(Encode::encode_utf8('

This is stream_write_fh action ♥

')); + $writer->close; + } + + sub stream_body_fh :Local { + my ($self, $c) = @_; + + my $path = File::Spec->catfile('t', 'utf8.txt'); + open(my $fh, '<', $path) || die "trouble: $!"; + $c->response->content_type('text/html'); + $c->response->body($fh); + } + package MyApp; use Catalyst; - MyApp->config(encoding=>'UTF-8'); + # Default encoding is now UTF-8 + # MyApp->config(encoding=>'UTF-8'); Test::More::ok(MyApp->setup, 'setup app'); } @@ -74,7 +107,6 @@ use HTTP::Request::Common; ok my $psgi = MyApp->psgi_app, 'build psgi app'; use Catalyst::Test 'MyApp'; -use Encode 2.21 'decode_utf8', 'encode_utf8'; { my $res = request "/root/♥"; @@ -82,6 +114,7 @@ use Encode 2.21 'decode_utf8', 'encode_utf8'; is $res->code, 200, 'OK'; is decode_utf8($res->content), '

This is path-heart action ♥

', 'correct body'; is $res->content_length, 36, 'correct length'; + is $res->content_charset, 'UTF-8'; } { @@ -90,6 +123,7 @@ use Encode 2.21 'decode_utf8', 'encode_utf8'; is $res->code, 200, 'OK'; is decode_utf8($res->content), '

This is path-heart-arg action ♥

', 'correct body'; is $res->content_length, 40, 'correct length'; + is $res->content_charset, 'UTF-8'; } { @@ -98,6 +132,7 @@ use Encode 2.21 'decode_utf8', 'encode_utf8'; is $res->code, 200, 'OK'; is decode_utf8($res->content), '

This is path-hat action ^

', 'correct body'; is $res->content_length, 32, 'correct length'; + is $res->content_charset, 'UTF-8'; } { @@ -106,6 +141,7 @@ use Encode 2.21 'decode_utf8', 'encode_utf8'; is $res->code, 200, 'OK'; is decode_utf8($res->content), '

This is base-link action ♥

', 'correct body'; is $res->content_length, 35, 'correct length'; + is $res->content_charset, 'UTF-8'; } { @@ -120,6 +156,7 @@ use Encode 2.21 'decode_utf8', 'encode_utf8'; is $c->req->parameters->{'♥'}[0], '♥'; is $c->req->parameters->{a}, 1; is $c->req->body_parameters->{a}, 1; + is $res->content_charset, 'UTF-8'; } { @@ -129,6 +166,7 @@ use Encode 2.21 'decode_utf8', 'encode_utf8'; is decode_utf8($res->content), '

This is base-link action ♥

', 'correct body'; is $res->content_length, 35, 'correct length'; is $c->req->query_keywords, '♥♥♥'; + is $res->content_charset, 'UTF-8'; } { @@ -137,14 +175,15 @@ use Encode 2.21 'decode_utf8', 'encode_utf8'; is $res->code, 200, 'OK'; is decode_utf8($res->content), '

This is base-link action ♥ ♥

', 'correct body'; is $res->content_length, 39, 'correct length'; + is $res->content_charset, 'UTF-8'; } { my $res = request "/base/♥/♥/♥/♥"; - is $res->code, 200, 'OK'; is decode_utf8($res->content), '

This is base-link action ♥ ♥

', 'correct body'; is $res->content_length, 39, 'correct length'; + is $res->content_charset, 'UTF-8'; } { @@ -161,6 +200,7 @@ use Encode 2.21 'decode_utf8', 'encode_utf8'; is $c->req->query_parameters->{'♥'}, '♥♥'; is $c->req->body_parameters->{'♥'}, '♥♥'; is $c->req->parameters->{'♥'}[0], '♥♥'; #combined with query and body + is $res->content_charset, 'UTF-8'; } } @@ -172,6 +212,34 @@ use Encode 2.21 'decode_utf8', 'encode_utf8'; is decode_utf8($res->content), "$url", 'correct body'; #should do nothing is $res->content, "$url", 'correct body'; is $res->content_length, 90, 'correct length'; + is $res->content_charset, 'UTF-8'; +} + +{ + my $res = request "/root/stream_write"; + + is $res->code, 200, 'OK'; + is decode_utf8($res->content), '

This is stream_write action ♥

', 'correct body'; + is $res->content_charset, 'UTF-8'; +} + +{ + my $res = request "/root/stream_body_fh"; + + is $res->code, 200, 'OK'; + is decode_utf8($res->content), "

This is stream_body_fh action ♥

\n", 'correct body'; + is $res->content_charset, 'UTF-8'; + # Not sure why there is a trailing newline above... its not in catalyst code I can see. Not sure + # if is a problem or just an artifact of the why the test stuff works - JNAP +} + +{ + my $res = request "/root/stream_write_fh"; + + is $res->code, 200, 'OK'; + is decode_utf8($res->content), '

This is stream_write_fh action ♥

', 'correct body'; + #is $res->content_length, 41, 'correct length'; + is $res->content_charset, 'UTF-8'; } done_testing;