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!)
|
self.class.send(:include_helper_modules!)
|
||||||
make_test_case_available_to_view!
|
make_test_case_available_to_view!
|
||||||
|
say_no_to_protect_against_forgery!
|
||||||
end
|
end
|
||||||
|
|
||||||
def config
|
def config
|
||||||
@controller.config if @controller.respond_to?(:config)
|
@controller.config if @controller.respond_to?(:config)
|
||||||
end
|
end
|
||||||
|
|
||||||
def protect_against_forgery?
|
|
||||||
false
|
|
||||||
end
|
|
||||||
|
|
||||||
def render(options = {}, local_assigns = {}, &block)
|
def render(options = {}, local_assigns = {}, &block)
|
||||||
@rendered << output = _view.render(options, local_assigns, &block)
|
@rendered << output = _view.render(options, local_assigns, &block)
|
||||||
output
|
output
|
||||||
|
@ -117,6 +114,14 @@ module ActionView
|
||||||
HTML::Document.new(@rendered.blank? ? @output_buffer : @rendered).root
|
HTML::Document.new(@rendered.blank? ? @output_buffer : @rendered).root
|
||||||
end
|
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!
|
def make_test_case_available_to_view!
|
||||||
test_case_instance = self
|
test_case_instance = self
|
||||||
_helpers.module_eval do
|
_helpers.module_eval do
|
||||||
|
|
|
@ -122,6 +122,21 @@ module ActionView
|
||||||
helper_method :from_test_case
|
helper_method :from_test_case
|
||||||
end
|
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
|
class ATestHelperTest < ActionView::TestCase
|
||||||
include SharedTests
|
include SharedTests
|
||||||
test_case = self
|
test_case = self
|
||||||
|
|
Loading…
Reference in a new issue