aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack
diff options
context:
space:
mode:
Diffstat (limited to 'actionpack')
-rw-r--r--actionpack/lib/action_controller/metal/strong_parameters.rb34
-rw-r--r--actionpack/lib/action_dispatch/middleware/exception_wrapper.rb3
-rw-r--r--actionpack/test/controller/parameters/parameters_require_test.rb8
-rw-r--r--actionpack/test/controller/required_params_test.rb19
-rw-r--r--actionpack/test/dispatch/debug_exceptions_test.rb6
5 files changed, 12 insertions, 58 deletions
diff --git a/actionpack/lib/action_controller/metal/strong_parameters.rb b/actionpack/lib/action_controller/metal/strong_parameters.rb
index 8ae7e474a3..b4948d99a8 100644
--- a/actionpack/lib/action_controller/metal/strong_parameters.rb
+++ b/actionpack/lib/action_controller/metal/strong_parameters.rb
@@ -10,26 +10,14 @@ 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:
def initialize(param) # :nodoc:
@param = param
- super("param not found: #{param}")
- 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}")
+ super("param is missing or the value is empty: #{param}")
end
end
@@ -169,22 +157,20 @@ module ActionController
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 <tt>ActionController::EmptyParameter</tt> error, otherwise
- # raises an <tt>ActionController::ParameterMissing</tt> error.
+ # Ensures that a parameter is present. If it's present, returns
+ # the parameter at the given +key+, otherwise raises an
+ # <tt>ActionController::ParameterMissing</tt> 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 @@ module ActionDispatch
'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 'abstract_unit'
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 @@ class BooksController < ActionController::Base
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 @@ class DebugExceptionsTest < ActionDispatch::IntegrationTest
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 @@ class DebugExceptionsTest < ActionDispatch::IntegrationTest
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