diff options
author | David Chelimsky <dchelimsky@gmail.com> | 2010-05-25 23:46:00 -0500 |
---|---|---|
committer | José Valim <jose.valim@gmail.com> | 2010-05-26 15:59:03 +0200 |
commit | e02db06ece7aeecec7c37f5b0e3de7d65c8684e6 (patch) | |
tree | ef87e5c212382a6b14b9167c9dbfa19e575290c0 /actionpack | |
parent | 9ae7e93920999511447179f7c44e4654ebfda476 (diff) | |
download | rails-e02db06ece7aeecec7c37f5b0e3de7d65c8684e6.tar.gz rails-e02db06ece7aeecec7c37f5b0e3de7d65c8684e6.tar.bz2 rails-e02db06ece7aeecec7c37f5b0e3de7d65c8684e6.zip |
In AV::TC, move protect_against_forgery? from the test_case to the
_helper module included in the view.
- ensures that protect_against_forgery? is present when a helper
included in a partial that is rendered by the template under test
calls it (which happens in FormTagHelper#extra_tags_for_form, for
example).
[#4700 state:resolved]
Signed-off-by: José Valim <jose.valim@gmail.com>
Diffstat (limited to 'actionpack')
-rw-r--r-- | actionpack/lib/action_view/test_case.rb | 13 | ||||
-rw-r--r-- | actionpack/test/template/test_case_test.rb | 15 |
2 files changed, 24 insertions, 4 deletions
diff --git a/actionpack/lib/action_view/test_case.rb b/actionpack/lib/action_view/test_case.rb index e71761db6d..4dbbd2eb6a 100644 --- a/actionpack/lib/action_view/test_case.rb +++ b/actionpack/lib/action_view/test_case.rb @@ -89,16 +89,13 @@ module ActionView self.class.send(:include_helper_modules!) make_test_case_available_to_view! + say_no_to_protect_against_forgery! end def config @controller.config if @controller.respond_to?(:config) end - def protect_against_forgery? - false - end - def render(options = {}, local_assigns = {}, &block) @rendered << output = _view.render(options, local_assigns, &block) output @@ -117,6 +114,14 @@ module ActionView HTML::Document.new(@rendered.blank? ? @output_buffer : @rendered).root end + def say_no_to_protect_against_forgery! + _helpers.module_eval do + def protect_against_forgery? + false + end + end + end + def make_test_case_available_to_view! test_case_instance = self _helpers.module_eval do diff --git a/actionpack/test/template/test_case_test.rb b/actionpack/test/template/test_case_test.rb index a34bca8145..16e5ee4f72 100644 --- a/actionpack/test/template/test_case_test.rb +++ b/actionpack/test/template/test_case_test.rb @@ -122,6 +122,21 @@ module ActionView helper_method :from_test_case end + class IgnoreProtectAgainstForgeryTest < ActionView::TestCase + module HelperThatInvokesProtectAgainstForgery + def help_me + protect_against_forgery? + end + end + + helper HelperThatInvokesProtectAgainstForgery + + test "protect_from_forgery? in any helpers returns false" do + assert !_view.help_me + end + + end + class ATestHelperTest < ActionView::TestCase include SharedTests test_case = self |