1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00

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>
This commit is contained in:
David Chelimsky 2010-05-25 23:46:00 -05:00 committed by José Valim
parent 9ae7e93920
commit e02db06ece
2 changed files with 24 additions and 4 deletions

View file

@ -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

View file

@ -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