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