Add HEAD requests support to T::Rest
[catagits/Catalyst-Action-REST.git] / t / catalyst-controller-rest.t
index 5d8f731..e37dab8 100644 (file)
@@ -1,6 +1,6 @@
 use strict;
 use warnings;
-use Test::More tests => 18;
+use Test::More;
 use YAML::Syck;
 use FindBin;
 
@@ -23,20 +23,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 ),
@@ -48,3 +63,13 @@ is $res->code, 410, '... status gone';
 is_deeply Load( $res->content ),
     { error => "Document have been deleted by foo" },
     "...  status gone message";
+
+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;
+