From 23585d721d5da714c94b82905d38c7b77a67402a Mon Sep 17 00:00:00 2001 From: Sam Stephenson Date: Sat, 8 Apr 2006 07:04:21 +0000 Subject: 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 --- actionpack/CHANGELOG | 5 +++++ actionpack/lib/action_controller/verification.rb | 4 ++++ actionpack/test/controller/verification_test.rb | 8 ++++---- 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. # * :add_flash: a hash of name/value pairs that should be merged # into the session's flash if the prerequisites cannot be satisfied. + # * :add_headers: a hash of name/value pairs that should be + # merged into the response's headers hash if the prerequisites cannot + # be satisfied. # * :redirect_to: the redirection parameters to be used when # redirecting if the prerequisites cannot be satisfied. # * :render: 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 -- cgit v1.2.3