mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
1b0526eaac
The current implementation of ActionController::Parameters.const_missing returns `ActionController::Parameters.always_permitted_parameters` even if its `super` returns a constant without raising error. This prevents its subclass in a autoloading module/class from taking advantage of autoloading constants. class SomeParameters < ActionController::Parameters def do_something DefinedSomewhere.do_something end end In the code above, `DefinedSomewhere` is to be autoloaded with `Module.const_missing` but `ActionController::Parameters.const_missing` returns `always_permitted_parameters` instead of the autoloaded constant. This pull request fixes the issue respecting `const_missing`'s `super`.
36 lines
1.2 KiB
Ruby
36 lines
1.2 KiB
Ruby
require 'abstract_unit'
|
|
require 'action_controller/metal/strong_parameters'
|
|
require 'minitest/mock'
|
|
|
|
class AlwaysPermittedParametersTest < ActiveSupport::TestCase
|
|
def setup
|
|
ActionController::Parameters.action_on_unpermitted_parameters = :raise
|
|
ActionController::Parameters.always_permitted_parameters = %w( controller action format )
|
|
end
|
|
|
|
def teardown
|
|
ActionController::Parameters.action_on_unpermitted_parameters = false
|
|
ActionController::Parameters.always_permitted_parameters = %w( controller action )
|
|
end
|
|
|
|
test "shows deprecations warning on NEVER_UNPERMITTED_PARAMS" do
|
|
assert_deprecated do
|
|
ActionController::Parameters::NEVER_UNPERMITTED_PARAMS
|
|
end
|
|
end
|
|
|
|
test "returns super on missing constant other than NEVER_UNPERMITTED_PARAMS" do
|
|
ActionController::Parameters.superclass.stub :const_missing, "super" do
|
|
assert_equal "super", ActionController::Parameters::NON_EXISTING_CONSTANT
|
|
end
|
|
end
|
|
|
|
test "permits parameters that are whitelisted" do
|
|
params = ActionController::Parameters.new({
|
|
book: { pages: 65 },
|
|
format: "json"
|
|
})
|
|
permitted = params.permit book: [:pages]
|
|
assert permitted.permitted?
|
|
end
|
|
end
|