From: John Napiorkowski Date: Tue, 20 Jan 2015 21:39:55 +0000 (-0600) Subject: t push origin masterMerge branch 'andrewalker/fix-options-http-method' X-Git-Tag: 5.90083~6 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Runtime.git;a=commitdiff_plain;h=456f65dadc0438f74cc046772fea857db5e6f81d;hp=7131401a9d3f148e0dd0fd6217badd625f4531a6 t push origin masterMerge branch 'andrewalker/fix-options-http-method' --- diff --git a/lib/Catalyst.pm b/lib/Catalyst.pm index d6717cb..25661fe 100644 --- a/lib/Catalyst.pm +++ b/lib/Catalyst.pm @@ -4316,6 +4316,8 @@ acme: Leon Brocard abraxxa: Alexander Hartmaier +andrewalker: André Walker + Andrew Bramble Andrew Ford EA.Ford@ford-mason.co.ukE diff --git a/lib/Catalyst/ActionRole/HTTPMethods.pm b/lib/Catalyst/ActionRole/HTTPMethods.pm index 8b9eef8..a67d629 100644 --- a/lib/Catalyst/ActionRole/HTTPMethods.pm +++ b/lib/Catalyst/ActionRole/HTTPMethods.pm @@ -47,13 +47,13 @@ Catalyst::ActionRole::HTTPMethods - Match on HTTP Methods sub user_base : Chained('/') CaptureArg(0) { ... } - sub get_user : Chained('user_base') Args(1) GET { ... } - sub post_user : Chained('user_base') Args(1) POST { ... } - sub put_user : Chained('user_base') Args(1) PUT { ... } - sub delete_user : Chained('user_base') Args(1) DELETE { ... } - sub head_user : Chained('user_base') Args(1) HEAD { ... } - sub option_user : Chained('user_base') Args(1) OPTION { ... } - sub option_user : Chained('user_base') Args(1) PATCH { ... } + sub get_user : Chained('user_base') Args(1) GET { ... } + sub post_user : Chained('user_base') Args(1) POST { ... } + sub put_user : Chained('user_base') Args(1) PUT { ... } + sub delete_user : Chained('user_base') Args(1) DELETE { ... } + sub head_user : Chained('user_base') Args(1) HEAD { ... } + sub options_user : Chained('user_base') Args(1) OPTIONS { ... } + sub patch_user : Chained('user_base') Args(1) PATCH { ... } sub post_and_put : Chained('user_base') POST PUT Args(1) { ... } diff --git a/lib/Catalyst/Controller.pm b/lib/Catalyst/Controller.pm index f2ccfa8..860339c 100644 --- a/lib/Catalyst/Controller.pm +++ b/lib/Catalyst/Controller.pm @@ -544,12 +544,12 @@ sub _parse_Does_attr { return Does => $self->_expand_role_shortname($value); } -sub _parse_GET_attr { Method => 'GET' } -sub _parse_POST_attr { Method => 'POST' } -sub _parse_PUT_attr { Method => 'PUT' } -sub _parse_DELETE_attr { Method => 'DELETE' } -sub _parse_OPTION_attr { Method => 'OPTION' } -sub _parse_HEAD_attr { Method => 'HEAD' } +sub _parse_GET_attr { Method => 'GET' } +sub _parse_POST_attr { Method => 'POST' } +sub _parse_PUT_attr { Method => 'PUT' } +sub _parse_DELETE_attr { Method => 'DELETE' } +sub _parse_OPTIONS_attr { Method => 'OPTIONS' } +sub _parse_HEAD_attr { Method => 'HEAD' } sub _expand_role_shortname { my ($self, @shortnames) = @_; diff --git a/t/aggregate/live_component_controller_httpmethods.t b/t/aggregate/live_component_controller_httpmethods.t index 6507af1..9cc6e9f 100644 --- a/t/aggregate/live_component_controller_httpmethods.t +++ b/t/aggregate/live_component_controller_httpmethods.t @@ -1,13 +1,17 @@ use strict; use warnings; use Test::More; -use HTTP::Request::Common qw/GET POST DELETE PUT /; +use HTTP::Request::Common qw/GET POST DELETE PUT/; use FindBin; use lib "$FindBin::Bin/../lib"; use Catalyst::Test 'TestApp'; - + +sub OPTIONS { + HTTP::Request->new('OPTIONS', @_); +} + is(request(GET '/httpmethods/foo')->content, 'get'); is(request(POST '/httpmethods/foo')->content, 'post'); is(request(DELETE '/httpmethods/foo')->content, 'default'); @@ -34,4 +38,12 @@ is(request(GET '/httpmethods/check_default')->content, 'get3'); is(request(POST '/httpmethods/check_default')->content, 'post3'); is(request(PUT '/httpmethods/check_default')->content, 'chain_default'); +is(request(GET '/httpmethods/opt_typo')->content, 'typo'); +is(request(POST '/httpmethods/opt_typo')->content, 'typo'); +is(request(PUT '/httpmethods/opt_typo')->content, 'typo'); + +is(request(OPTIONS '/httpmethods/opt')->content, 'options'); +is(request(GET '/httpmethods/opt')->content, 'default'); +is(request(POST '/httpmethods/opt')->content, 'default'); + done_testing; diff --git a/t/author/spelling.t b/t/author/spelling.t index 9ebfaf5..f55ea40 100644 --- a/t/author/spelling.t +++ b/t/author/spelling.t @@ -24,6 +24,7 @@ add_stopwords(qw( chunked chunking codewise distingush equivilent plack Javascript gzipping ConfigLoader getline whitepaper matchable Andreas + André Ashton Axel Balint diff --git a/t/lib/TestApp/Controller/HTTPMethods.pm b/t/lib/TestApp/Controller/HTTPMethods.pm index e687372..2f7476d 100644 --- a/t/lib/TestApp/Controller/HTTPMethods.pm +++ b/t/lib/TestApp/Controller/HTTPMethods.pm @@ -30,6 +30,16 @@ sub any_method : Path('baz') { $ctx->response->body('any'); } +sub typo_option : Path('opt_typo') OPTION { + my ($self, $ctx) = @_; + $ctx->response->body('typo'); +} + +sub real_options : Path('opt') OPTIONS { + my ($self, $ctx) = @_; + $ctx->response->body('options'); +} + sub base :Chained('/') PathPrefix CaptureArgs(0) { } sub chained_get :Chained('base') Args(0) GET {