Fix tests to skip if YAML::Syck is not installed
[catagits/Catalyst-Action-REST.git] / t / catalyst-controller-rest.t
index 18a0640..7b4555c 100644 (file)
@@ -1,6 +1,7 @@
 use strict;
 use warnings;
-use Test::More tests => 20;
+use Test::More;
+use Test::Requires qw(YAML::Syck);
 use YAML::Syck;
 use FindBin;
 
@@ -23,20 +24,35 @@ is_deeply(
 
 ok my $res = request( $t->get( url => '/rest/test_status_created' ) );
 is $res->code, 201, "... status created";
+is $res->header('Location'), '/rest', "...location of what was created";
 
 ok $res = request( $t->get( url => '/rest/test_status_accepted' ) );
 is $res->code, 202, "... status accepted";
+is $res->header('Location'), '/rest', "...location of what was accepted";
 
 ok $res = request( $t->get( url => '/rest/test_status_no_content' ) );
 is $res->code, 204, "... status no content";
 is $res->content, '', '... no content';
 
+ok $res = request( $t->get( url => '/rest/test_status_found' ) );
+is $res->code, 302, '... status found';
+is_deeply Load( $res->content ),
+    { status => 'found' },
+    "...  status found message";
+is $res->header('Location'), '/rest', "...location of what was found";
+
 ok $res = request( $t->get( url => '/rest/test_status_bad_request' ) );
 is $res->code, 400, '... status bad request';
 is_deeply Load( $res->content ),
     { error => "Cannot do what you have asked!" },
     "...  status bad request message";
 
+ok $res = request( $t->get( url => '/rest/test_status_forbidden' ) );
+is $res->code, 403, '... status forbidden';
+is_deeply Load( $res->content ),
+    { error => "access denied" },
+    "...  status forbidden";
+
 ok $res = request( $t->get( url => '/rest/test_status_not_found' ) );
 is $res->code, 404, '... status not found';
 is_deeply Load( $res->content ),
@@ -51,4 +67,10 @@ is_deeply Load( $res->content ),
 
 ok $res = request( $t->get( url => '/rest/test_status_multiple_choices' ) );
 is $res->code, 300, "... multiple choices";
+is_deeply Load($res->content),
+    { choices => [qw(/rest/choice1 /rest/choice2)] },
+    "... 300 multiple choices has response body";
+is $res->header('Location'), '/rest/choice1', "...main location of what was found";
+
+done_testing;