From f886fe2d8ccc900cde2629577e5c0be8c7d4c67f Mon Sep 17 00:00:00 2001 From: Guillermo Iguaran Date: Sat, 2 Nov 2013 14:30:03 -0500 Subject: [PATCH] Revert "Merge pull request #9660 from sebasoga/change_strong_parameters_require_behaviour" This reverts commit c2b5a8e61ba0f35015e6ac949a5c8fce2042a1f2, reversing changes made to 1918b12c0429caec2a6134ac5e5b42ade103fe90. See: https://github.com/rails/rails/pull/9660#issuecomment-27627493 --- .../metal/strong_parameters.rb | 32 ++++++------------- .../middleware/exception_wrapper.rb | 3 +- .../parameters/parameters_require_test.rb | 8 +---- .../test/controller/required_params_test.rb | 19 ----------- .../test/dispatch/debug_exceptions_test.rb | 6 ---- 5 files changed, 11 insertions(+), 57 deletions(-) diff --git a/actionpack/lib/action_controller/metal/strong_parameters.rb b/actionpack/lib/action_controller/metal/strong_parameters.rb index 8ae7e474a3..fcc76f6225 100644 --- a/actionpack/lib/action_controller/metal/strong_parameters.rb +++ b/actionpack/lib/action_controller/metal/strong_parameters.rb @@ -10,6 +10,8 @@ module ActionController # params = ActionController::Parameters.new(a: {}) # params.fetch(:b) # # => ActionController::ParameterMissing: param not found: b + # params.require(:a) + # # => ActionController::ParameterMissing: param not found: a class ParameterMissing < KeyError attr_reader :param # :nodoc: @@ -19,20 +21,6 @@ def initialize(param) # :nodoc: end end - # Raised when a required parameter value is empty. - # - # params = ActionController::Parameters.new(a: {}) - # params.require(:a) - # # => ActionController::EmptyParameter: value is empty for required key: a - class EmptyParameter < IndexError - attr_reader :param - - def initialize(param) - @param = param - super("value is empty for required key: #{param}") - end - end - # Raised when a supplied parameter is not expected. # # params = ActionController::Parameters.new(a: "123", b: "456") @@ -169,22 +157,20 @@ def permit! self end - # Ensures that a parameter is present. If it's present and not empty, - # returns the parameter at the given +key+, if it's empty raises - # an ActionController::EmptyParameter error, otherwise - # raises an ActionController::ParameterMissing error. + # Ensures that a parameter is present. If it's present, returns + # the parameter at the given +key+, otherwise raises an + # ActionController::ParameterMissing error. # # ActionController::Parameters.new(person: { name: 'Francesco' }).require(:person) # # => {"name"=>"Francesco"} # - # ActionController::Parameters.new(person: {}).require(:person) - # # => ActionController::EmptyParameter: value is empty for required key: person + # ActionController::Parameters.new(person: nil).require(:person) + # # => ActionController::ParameterMissing: param not found: person # - # ActionController::Parameters.new(name: {}).require(:person) + # ActionController::Parameters.new(person: {}).require(:person) # # => ActionController::ParameterMissing: param not found: person def require(key) - raise(ActionController::ParameterMissing.new(key)) unless self.key?(key) - self[key].presence || raise(ActionController::EmptyParameter.new(key)) + self[key].presence || raise(ParameterMissing.new(key)) end # Alias of #require. diff --git a/actionpack/lib/action_dispatch/middleware/exception_wrapper.rb b/actionpack/lib/action_dispatch/middleware/exception_wrapper.rb index daddaccadd..37bf9c8c9f 100644 --- a/actionpack/lib/action_dispatch/middleware/exception_wrapper.rb +++ b/actionpack/lib/action_dispatch/middleware/exception_wrapper.rb @@ -15,8 +15,7 @@ class ExceptionWrapper 'ActionController::InvalidAuthenticityToken' => :unprocessable_entity, 'ActionDispatch::ParamsParser::ParseError' => :bad_request, 'ActionController::BadRequest' => :bad_request, - 'ActionController::ParameterMissing' => :bad_request, - 'ActionController::EmptyParameter' => :bad_request + 'ActionController::ParameterMissing' => :bad_request ) cattr_accessor :rescue_templates diff --git a/actionpack/test/controller/parameters/parameters_require_test.rb b/actionpack/test/controller/parameters/parameters_require_test.rb index 21b3eaa6b5..bdaba8d2d8 100644 --- a/actionpack/test/controller/parameters/parameters_require_test.rb +++ b/actionpack/test/controller/parameters/parameters_require_test.rb @@ -2,14 +2,8 @@ require 'action_controller/metal/strong_parameters' class ParametersRequireTest < ActiveSupport::TestCase - test "required parameters must be present" do + test "required parameters must be present not merely not nil" do assert_raises(ActionController::ParameterMissing) do - ActionController::Parameters.new(name: {}).require(:person) - end - end - - test "required parameters can't be blank" do - assert_raises(ActionController::EmptyParameter) do ActionController::Parameters.new(person: {}).require(:person) end end diff --git a/actionpack/test/controller/required_params_test.rb b/actionpack/test/controller/required_params_test.rb index b27069140b..343d57c300 100644 --- a/actionpack/test/controller/required_params_test.rb +++ b/actionpack/test/controller/required_params_test.rb @@ -5,11 +5,6 @@ def create params.require(:book).require(:name) head :ok end - - def update - params.require(:book) - head :ok - end end class ActionControllerRequiredParamsTest < ActionController::TestCase @@ -25,20 +20,6 @@ class ActionControllerRequiredParamsTest < ActionController::TestCase end end - test "empty required parameters will raise an exception" do - assert_raise ActionController::EmptyParameter do - put :update, {book: {}} - end - - assert_raise ActionController::EmptyParameter do - put :update, {book: ''} - end - - assert_raise ActionController::EmptyParameter do - put :update, {book: nil} - end - end - test "required parameters that are present will not raise" do post :create, { book: { name: "Mjallo!" } } assert_response :ok diff --git a/actionpack/test/dispatch/debug_exceptions_test.rb b/actionpack/test/dispatch/debug_exceptions_test.rb index 6e28e4a982..3045a07ad6 100644 --- a/actionpack/test/dispatch/debug_exceptions_test.rb +++ b/actionpack/test/dispatch/debug_exceptions_test.rb @@ -43,8 +43,6 @@ def call(env) raise ActionController::UrlGenerationError, "No route matches" when "/parameter_missing" raise ActionController::ParameterMissing, :missing_param_key - when "/required_key_empty_value" - raise ActionController::EmptyParameter, :empty_param_key else raise "puke!" end @@ -128,10 +126,6 @@ def setup get "/parameter_missing", {}, {'action_dispatch.show_exceptions' => true} assert_response 400 assert_match(/ActionController::ParameterMissing/, body) - - get "/required_key_empty_value", {}, {'action_dispatch.show_exceptions' => true} - assert_response 400 - assert_match(/ActionController::EmptyParameter/, body) end test "rescue with text error for xhr request" do -- GitLab