[bugfix] [refactoring] Sanitize parameters in find_or_initialize_with_errors (#4797)

* Use parameter sanitizer for new records in find_or_initialize_with_errors

* Add test for find_or_initialize_with_errors bugfix
This commit is contained in:
Ryan Lue
2018-11-23 01:10:50 +08:00
committed by Leonardo Tegon
parent 6f140faf0d
commit 354df3bc65
2 changed files with 22 additions and 15 deletions

View File

@@ -13,6 +13,21 @@ class AuthenticatableTest < ActiveSupport::TestCase
assert_nil User.find_first_by_auth_conditions({ email: "example@example.com" }, id: user.id.to_s.next)
end
# assumes default configuration of
# config.case_insensitive_keys = [:email]
# config.strip_whitespace_keys = [:email]
test 'find_or_initialize_with_errors uses parameter filter on find' do
user = User.create!(email: "example@example.com", password: "1234567")
assert_equal User.find_or_initialize_with_errors([:email], { email: " EXAMPLE@example.com " }), user
end
# assumes default configuration of
# config.case_insensitive_keys = [:email]
# config.strip_whitespace_keys = [:email]
test 'find_or_initialize_with_errors uses parameter filter on initialize' do
assert_equal User.find_or_initialize_with_errors([:email], { email: " EXAMPLE@example.com " }).email, "example@example.com"
end
if defined?(ActionController::Parameters)
test 'does not passes an ActionController::Parameters to find_first_by_auth_conditions through find_or_initialize_with_errors' do
user = create_user(email: 'example@example.com')