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