X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Action-Serialize-Data-Serializer.git;a=blobdiff_plain;f=t%2Fcatalyst-traitfor-request-rest.t;fp=t%2Fcatalyst-traitfor-request-rest.t;h=0000000000000000000000000000000000000000;hp=4dd98f997aeb26d5d0a506a9869c57c1a84e9e33;hb=79025f72c27ba313b3c701cee238f84166f32f9e;hpb=f10c7e1c7eb3b4cb10401dbb86ca8db3dc38ced2 diff --git a/t/catalyst-traitfor-request-rest.t b/t/catalyst-traitfor-request-rest.t deleted file mode 100644 index 4dd98f9..0000000 --- a/t/catalyst-traitfor-request-rest.t +++ /dev/null @@ -1,217 +0,0 @@ -use strict; -use warnings; -use Test::More; -use FindBin; -use lib ( "$FindBin::Bin/../lib", "$FindBin::Bin/../t/lib" ); - -use Catalyst::Request::REST; -use Catalyst::TraitFor::Request::REST; -use Moose::Meta::Class; -use HTTP::Headers; -use Catalyst::Log; - -my $anon_class = Moose::Meta::Class->create_anon_class( - superclasses => ['Catalyst::Request'], - roles => ['Catalyst::TraitFor::Request::REST::ForBrowsers'], - cache => 1, -)->name; - -for my $class ( $anon_class, 'Catalyst::Request::REST' ) { - { - my $request = Catalyst::Request::REST->new( - _log => Catalyst::Log->new - ); - $request->{_context} = 'MockContext'; - $request->headers( HTTP::Headers->new ); - $request->parameters( {} ); - $request->method('GET'); - $request->content_type('text/foobar'); - - is_deeply( $request->accepted_content_types, [ 'text/foobar' ], - 'content-type set in request headers is found' ); - is( $request->preferred_content_type, 'text/foobar', - 'preferred content type is text/foobar' ); - ok( ! $request->accept_only, 'accept_only is false' ); - ok( $request->accepts('text/foobar'), 'accepts text/foobar' ); - ok( ! $request->accepts('text/html'), 'does not accept text/html' ); - } - - { - my $request = Catalyst::Request::REST->new( _log => Catalyst::Log->new ); - $request->{_context} = 'MockContext'; - $request->headers( HTTP::Headers->new ); - $request->parameters( { 'content-type' => 'text/fudge' } ); - $request->method('GET'); - $request->content_type('text/foobar'); - - is_deeply( $request->accepted_content_types, [ 'text/foobar', 'text/fudge' ], - 'content-type set in request headers and type in parameters is found' ); - is( $request->preferred_content_type, 'text/foobar', - 'preferred content type is text/foobar' ); - ok( ! $request->accept_only, 'accept_only is false' ); - ok( $request->accepts('text/foobar'), 'accepts text/foobar' ); - ok( $request->accepts('text/fudge'), 'accepts text/fudge' ); - ok( ! $request->accepts('text/html'), 'does not accept text/html' ); - } - - { - my $request = Catalyst::Request::REST->new( _log => Catalyst::Log->new ); - $request->{_context} = 'MockContext'; - $request->headers( HTTP::Headers->new ); - $request->parameters( { 'content-type' => 'text/fudge' } ); - $request->method('POST'); - $request->content_type('text/foobar'); - - ok( ! $request->accepts('text/fudge'), 'content type in parameters is ignored for POST' ); - } - - { - my $request = Catalyst::Request::REST->new( _log => Catalyst::Log->new ); - $request->{_context} = 'MockContext'; - $request->headers( HTTP::Headers->new ); - $request->parameters( {} ); - $request->method('GET'); - $request->headers->header( - 'Accept' => - # From Firefox 2.0 when it requests an html page - 'text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5', - ); - - is_deeply( $request->accepted_content_types, - [ qw( text/xml application/xml application/xhtml+xml - image/png - text/html - text/plain - */* - ) ], - 'accept header is parsed properly' ); - is( $request->preferred_content_type, 'text/xml', - 'preferred content type is text/xml' ); - ok( $request->accept_only, 'accept_only is true' ); - ok( $request->accepts('text/html'), 'accepts text/html' ); - ok( $request->accepts('image/png'), 'accepts image/png' ); - ok( ! $request->accepts('image/svg'), 'does not accept image/svg' ); - } - - { - my $request = Catalyst::Request::REST->new( _log => Catalyst::Log->new ); - $request->{_context} = 'MockContext'; - $request->headers( HTTP::Headers->new ); - $request->parameters( {} ); - $request->method('GET'); - $request->content_type('application/json'); - $request->headers->header( - 'Accept' => - # From Firefox 2.0 when it requests an html page - 'text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5', - ); - - is_deeply( $request->accepted_content_types, - [ qw( application/json - text/xml application/xml application/xhtml+xml - image/png - text/html - text/plain - */* - ) ], - 'accept header is parsed properly, and content-type header has precedence over accept' ); - ok( ! $request->accept_only, 'accept_only is false' ); - } - - { - my $request = Catalyst::Request::REST->new( _log => Catalyst::Log->new ); - $request->{_context} = 'MockContext'; - $request->headers( HTTP::Headers->new ); - $request->parameters( {} ); - $request->method('GET'); - $request->content_type('application/json'); - $request->headers->header( - 'Accept' => - # From Firefox 2.0 when it requests an html page - 'text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5', - ); - - is_deeply( $request->accepted_content_types, - [ qw( application/json - text/xml application/xml application/xhtml+xml - image/png - text/html - text/plain - */* - ) ], - 'accept header is parsed properly, and content-type header has precedence over accept' ); - ok( ! $request->accept_only, 'accept_only is false' ); - } - - { - my $request = Catalyst::Request::REST->new( _log => Catalyst::Log->new ); - $request->{_context} = 'MockContext'; - $request->headers( HTTP::Headers->new ); - $request->parameters( {} ); - $request->method('GET'); - $request->content_type('text/x-json'); - $request->headers->header( - 'Accept' => 'text/plain,text/x-json', - ); - - is_deeply( $request->accepted_content_types, - [ qw( text/x-json - text/plain - ) ], - 'each type appears only once' ); - } - - { - my $request = Catalyst::Request::REST->new( _log => Catalyst::Log->new ); - $request->{_context} = 'MockContext'; - $request->headers( HTTP::Headers->new ); - $request->parameters( {} ); - $request->method('GET'); - $request->content_type('application/json'); - $request->headers->header( - 'Accept' => 'text/plain,application/json', - ); - - is_deeply( $request->accepted_content_types, - [ qw( application/json - text/plain - ) ], - 'each type appears only once' ); - } -} - -{ - local %ENV=%ENV; - $ENV{CATALYST_DEBUG} = 0; - my $test = 'Test::Catalyst::Action::REST'; - use_ok $test; - ok($test->request_class->does('Catalyst::TraitFor::Request::REST'), - 'Request does Catalyst::TraitFor::Request::REST'); - - my $meta = Moose::Meta::Class->create_anon_class( - superclasses => ['Catalyst::Request'], - ); - $meta->add_method('__random_method' => sub { 42 }); - - $test->request_class($meta->name); - # FIXME - setup_finished(0) is evil! - eval { $test->setup_finished(0); $test->setup }; - ok !$@, 'Can setup again'; - isnt $test->request_class, $meta->name, 'Different request class'; - ok $test->request_class->can('__random_method'), 'Is right class'; - ok $test->request_class->can('data'), 'Also smells like REST subclass'; - - { - package My::Request; - use base 'Catalyst::Request::REST'; - } - $test->request_class('My::Request'); - eval { $test->setup_finished(0); $test->setup }; - is $@, '', 'no error from Request::REST subclass'; -} - -done_testing; - -package MockContext; - -sub prepare_body { }