Commit | Line | Data |
d34c067a |
1 | use strict; |
2 | use warnings; |
10018fb4 |
3 | use Test::More; |
d34c067a |
4 | use FindBin; |
d34c067a |
5 | |
89b766ab |
6 | use lib ( "$FindBin::Bin/lib", "$FindBin::Bin/../lib" ); |
d34c067a |
7 | use Test::Rest; |
8 | |
9 | # Should use the default serializer, YAML |
89b766ab |
10 | my $t = Test::Rest->new( 'content_type' => 'text/plain' ); |
d34c067a |
11 | |
12 | use_ok 'Catalyst::Test', 'Test::Catalyst::Action::REST'; |
13 | |
14 | foreach my $method (qw(GET DELETE POST PUT OPTIONS)) { |
15 | my $run_method = lc($method); |
89b766ab |
16 | my $result = "something $method"; |
d34c067a |
17 | my $res; |
89b766ab |
18 | if ( grep /$method/, qw(GET DELETE OPTIONS) ) { |
19 | $res = request( $t->$run_method( url => '/test' ) ); |
d34c067a |
20 | } else { |
89b766ab |
21 | $res = request( |
22 | $t->$run_method( |
23 | url => '/test', |
50157804 |
24 | data => '', |
d34c067a |
25 | ) |
26 | ); |
27 | } |
28 | ok( $res->is_success, "$method request succeeded" ); |
89b766ab |
29 | is( |
30 | $res->content, |
31 | "something $method", |
32 | "$method request had proper response" |
33 | ); |
d34c067a |
34 | } |
35 | |
ecb598ef |
36 | my $head_res = request( $t->head(url => '/test') ); |
37 | ok($head_res->is_success, 'HEAD request succeeded') |
38 | or diag($head_res->code); |
39 | ok(!$head_res->content, 'HEAD request had proper response'); |
40 | |
9e4398c8 |
41 | $head_res = request( $t->head(url => '/actions/yet_other_test') ); |
42 | ok($head_res->code == 405, 'HEAD request succeeded') |
43 | or diag($head_res->code); |
44 | |
89b766ab |
45 | my $fail_res = request( $t->delete( url => '/notreally' ) ); |
46 | is( $fail_res->code, 405, "Request to bad method gets 405 Not Implemented" ); |
47 | is( $fail_res->header('allow'), "GET", "405 allow header properly set." ); |
48 | |
49 | my $options_res = request( $t->options( url => '/notreally' ) ); |
50 | is( $options_res->code, 200, "OPTIONS request handler succeeded" ); |
51 | is( $options_res->header('allow'), |
52 | "GET", "OPTIONS request allow header properly set." ); |
53 | |
80204218 |
54 | my $opts_res = request( $t->options( url => '/rest/opts' ) ); |
55 | is( $opts_res->code, 200, "OPTIONS request handler succeeded" ); |
56 | is( $opts_res->header('allow'), |
57 | "GET", "OPTIONS request allow header properly set." ); |
58 | is($opts_res->content, q{}, 'should have no body'); |
59 | |
60 | $opts_res = request( |
61 | $t->options( |
62 | url => '/rest/opts', |
63 | headers => { Accept => 'application/json' }, |
64 | ) |
65 | ); |
66 | is( $opts_res->code, 200, "OPTIONS request handler succeeded" ); |
67 | is( $opts_res->header('allow'), |
68 | "GET", "OPTIONS request allow header properly set." ); |
69 | is($opts_res->content, q{}, 'should have no body'); |
70 | |
fec6d454 |
71 | my $modified_res = request( $t->get( url => '/not_modified' ) ); |
72 | is( $modified_res->code, 304, "Not Modified request handler succeeded" ); |
73 | |
89b766ab |
74 | my $ni_res = request( $t->delete( url => '/not_implemented' ) ); |
75 | is( $ni_res->code, 200, "Custom not_implemented handler succeeded" ); |
76 | is( |
77 | $ni_res->content, |
78 | "Not Implemented Handler", |
79 | "not_implemented handler had proper response" |
80 | ); |
d34c067a |
81 | |
82 | 1; |
10018fb4 |
83 | |
84 | done_testing; |