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:
parent
70dca37cfd
commit
d6fec21d1a
2 changed files with 24 additions and 4 deletions
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue