Added tests and removed message
[catagits/Catalyst-Action-REST.git] / t / catalyst-controller-rest.t
1 use strict;
2 use warnings;
3 use Test::More;
4 use YAML::Syck;
5 use FindBin;
6
7 use lib ("$FindBin::Bin/lib", "$FindBin::Bin/../lib", "$FindBin::Bin/broken");
8 use Test::Rest;
9
10 my $t = Test::Rest->new(content_type => 'text/x-yaml');
11
12 use_ok 'Catalyst::Test', 'Test::Catalyst::Action::REST';
13
14 my $data = { your => 'face' };
15 is_deeply(
16   Load(
17     request($t->put(url => '/rest/test', data => Dump($data)))->content
18   ),
19   { test => 'worked', data => $data },
20   'round trip (deserialize/serialize)',
21 );
22
23
24 ok my $res = request( $t->get( url => '/rest/test_status_created' ) );
25 is $res->code, 201, "... status created";
26 is $res->header('Location'), '/rest', "...location of what was created";
27
28 ok $res = request( $t->get( url => '/rest/test_status_accepted' ) );
29 is $res->code, 202, "... status accepted";
30 is $res->header('Location'), '/rest', "...location of what was accepted";
31
32 ok $res = request( $t->get( url => '/rest/test_status_no_content' ) );
33 is $res->code, 204, "... status no content";
34 is $res->content, '', '... no content';
35
36 ok $res = request( $t->get( url => '/rest/test_status_found' ) );
37 is $res->code, 302, '... status found';
38 is_deeply Load( $res->content ),
39     { status => 'found' },
40     "...  status found message";
41 is $res->header('Location'), '/rest', "...location of what was found";
42
43 ok $res = request( $t->get( url => '/rest/test_status_not_modified' ) );
44 is $res->code, 304, '... status not modified';
45 is $res->content, '', '... no content';
46
47 ok $res = request( $t->get( url => '/rest/test_status_bad_request' ) );
48 is $res->code, 400, '... status bad request';
49 is_deeply Load( $res->content ),
50     { error => "Cannot do what you have asked!" },
51     "...  status bad request message";
52
53 ok $res = request( $t->get( url => '/rest/test_status_forbidden' ) );
54 is $res->code, 403, '... status forbidden';
55 is_deeply Load( $res->content ),
56     { error => "access denied" },
57     "...  status forbidden";
58
59 ok $res = request( $t->get( url => '/rest/test_status_not_found' ) );
60 is $res->code, 404, '... status not found';
61 is_deeply Load( $res->content ),
62     { error => "Cannot find what you were looking for!" },
63     "...  status bad request message";
64
65 ok $res = request( $t->get( url => '/rest/test_status_gone' ) );
66 is $res->code, 410, '... status gone';
67 is_deeply Load( $res->content ),
68     { error => "Document have been deleted by foo" },
69     "...  status gone message";
70
71 ok $res = request( $t->get( url => '/rest/test_status_multiple_choices' ) );
72 is $res->code, 300, "... multiple choices";
73 is_deeply Load($res->content),
74     { choices => [qw(/rest/choice1 /rest/choice2)] },
75     "... 300 multiple choices has response body";
76 is $res->header('Location'), '/rest/choice1', "...main location of what was found";
77
78 done_testing;
79