+++ /dev/null
-use strict;
-use warnings;
-use Test::More;
-use FindBin;
-
-use lib ( "$FindBin::Bin/lib", "$FindBin::Bin/../lib" );
-use Test::Rest;
-
-use_ok 'Catalyst::Test', 'Test::Serialize';
-
-my %ctypes =(
- 'text/x-data-dumper' => 'Data::Dumper' ,
- 'text/x-data-denter' => 'Data::Denter' ,
- 'text/x-data-taxi' => 'Data::Taxi' ,
- 'application/x-storable' => 'Storable' ,
- 'application/x-freezethaw' => 'FreezeThaw' ,
- 'text/x-config-general' => 'Config::General' ,
- 'text/x-php-serialization' => 'PHP::Serialization' ,
- );
-
-my $has_serializer = eval "require Data::Serializer";
-
-foreach my $content_type (keys(%ctypes)) {
- my $dso;
- my $skip = 0;
- my $loadclass = $ctypes{$content_type};
- $loadclass =~ s/::/\//g;
- $loadclass .= '.pm';
- eval {
- require $loadclass
- };
- if ($@) {
- $skip = 1;
- }
- SKIP: {
- skip "$ctypes{$content_type} not installed", 4 if $skip;
- $dso = Data::Serializer->new( serializer => $ctypes{$content_type} );
- my $t = Test::Rest->new( 'content_type' => $content_type );
-
- my $monkey_template = { monkey => 'likes chicken!', };
- my $mres = request( $t->get( url => '/monkey_get' ) );
- ok( $mres->is_success, "GET $content_type succeeded" );
- is_deeply( $dso->raw_deserialize( $mres->content ),
- $monkey_template, "GET $content_type has the right data" );
-
- my $post_data = { 'sushi' => 'is good for monkey', };
- my $mres_post = request(
- $t->post(
- url => '/monkey_put',
- data => $dso->raw_serialize($post_data)
- )
- );
- ok( $mres_post->is_success, "POST $content_type succeeded" );
- is_deeply(
- $mres_post->content,
- "is good for monkey",
- "POST $content_type data matches"
- );
- }
-}
-
-{
- my $t = Test::Rest->new( 'content_type' => 'text/x-data-dumper' );
-
- my $post_data = "{ 'sushi' => die('hack attempt') }";
- my $mres_post = request(
- $t->post(
- url => '/monkey_put',
- data => $post_data,
- )
- );
- ok( ! $mres_post->is_success, "POST Data::Dumper fails due to invalid input" );
- like(
- $mres_post->content,
- qr%Content-Type text/x-data-dumper had a problem with your request.*'die' trapped by operation mask%s,
- "POST Data::Dumper data error matches"
- );
-}
-
-1;
-
-done_testing;