aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSam Stephenson <sam@37signals.com>2006-04-08 07:04:21 +0000
committerSam Stephenson <sam@37signals.com>2006-04-08 07:04:21 +0000
commit23585d721d5da714c94b82905d38c7b77a67402a (patch)
treeb0ec6d7bf3bec4771271f575acb549ded0a9b132
parent47b74e6e160b6fcbd47caeed6c98ae995e180a80 (diff)
downloadrails-23585d721d5da714c94b82905d38c7b77a67402a.tar.gz
rails-23585d721d5da714c94b82905d38c7b77a67402a.tar.bz2
rails-23585d721d5da714c94b82905d38c7b77a67402a.zip
Added :add_headers option to verify which merges a hash of name/value pairs into the response's headers hash if the prerequisites cannot be satisfied
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@4201 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
-rw-r--r--actionpack/CHANGELOG5
-rw-r--r--actionpack/lib/action_controller/verification.rb4
-rw-r--r--actionpack/test/controller/verification_test.rb8
3 files changed, 13 insertions, 4 deletions
diff --git a/actionpack/CHANGELOG b/actionpack/CHANGELOG
index 873075d492..09053fc5d8 100644
--- a/actionpack/CHANGELOG
+++ b/actionpack/CHANGELOG
@@ -1,5 +1,10 @@
*SVN*
+* Added :add_headers option to verify which merges a hash of name/value pairs into the response's headers hash if the prerequisites cannot be satisfied. [Sam Stephenson]
+ ex. verify :only => :speak, :method => :post,
+ :render => { :status => 405, :text => "Must be post" },
+ :add_headers => { "Allow" => "POST" }
+
* Added ActionController.filter_parameter_logging that makes it easy to remove passwords, credit card numbers, and other sensitive information from being logged when a request is handled #1897 [jeremye@bsa.ca.gov]
diff --git a/actionpack/lib/action_controller/verification.rb b/actionpack/lib/action_controller/verification.rb
index 0bef8d85a8..cba4a2b739 100644
--- a/actionpack/lib/action_controller/verification.rb
+++ b/actionpack/lib/action_controller/verification.rb
@@ -51,6 +51,9 @@ module ActionController #:nodoc:
# from an Ajax call or not.
# * <tt>:add_flash</tt>: a hash of name/value pairs that should be merged
# into the session's flash if the prerequisites cannot be satisfied.
+ # * <tt>:add_headers</tt>: a hash of name/value pairs that should be
+ # merged into the response's headers hash if the prerequisites cannot
+ # be satisfied.
# * <tt>:redirect_to</tt>: the redirection parameters to be used when
# redirecting if the prerequisites cannot be satisfied.
# * <tt>:render</tt>: the render parameters to be used when
@@ -82,6 +85,7 @@ module ActionController #:nodoc:
if prereqs_invalid
flash.update(options[:add_flash]) if options[:add_flash]
+ response.headers.update(options[:add_headers]) if options[:add_headers]
unless performed?
render(options[:render]) if options[:render]
redirect_to(options[:redirect_to]) if options[:redirect_to]
diff --git a/actionpack/test/controller/verification_test.rb b/actionpack/test/controller/verification_test.rb
index a8b2bf4499..dc95c4b8a1 100644
--- a/actionpack/test/controller/verification_test.rb
+++ b/actionpack/test/controller/verification_test.rb
@@ -31,7 +31,7 @@ class VerificationTest < Test::Unit::TestCase
verify :only => :two_redirects, :method => :post,
:redirect_to => { :action => "unguarded" }
- verify :only => :must_be_post, :method => :post, :render => { :status => 500, :text => "Must be post"}
+ verify :only => :must_be_post, :method => :post, :render => { :status => 405, :text => "Must be post" }, :add_headers => { "Allow" => "POST" }
def guarded_one
render :text => "#{@params["one"]}"
@@ -212,13 +212,13 @@ class VerificationTest < Test::Unit::TestCase
assert_equal "Was a post!", @response.body
end
- def test_guarded_post_and_calls_render_fails
+ def test_guarded_post_and_calls_render_fails_and_sets_allow_header
get :must_be_post
- assert_response 500
+ assert_response 405
assert_equal "Must be post", @response.body
+ assert_equal "POST", @response.headers["Allow"]
end
-
def test_second_redirect
assert_nothing_raised { get :two_redirects }
end