mirror of
https://github.com/heartcombo/devise.git
synced 2026-01-11 00:27:55 -05:00
After merging https://github.com/plataformatec/devise/pull/4797, I noticed that we had no specs for the scenarios where this method was adding the errors to the resource. This commit adds tests to cover those cases.
51 lines
2.2 KiB
Ruby
51 lines
2.2 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require 'test_helper'
|
|
|
|
class AuthenticatableTest < ActiveSupport::TestCase
|
|
test 'required_fields should be an empty array' do
|
|
assert_equal Devise::Models::Validatable.required_fields(User), []
|
|
end
|
|
|
|
test 'find_first_by_auth_conditions allows custom filtering parameters' do
|
|
user = User.create!(email: "example@example.com", password: "1234567")
|
|
assert_equal User.find_first_by_auth_conditions({ email: "example@example.com" }), user
|
|
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
|
|
|
|
test 'find_or_initialize_with_errors adds blank error' do
|
|
user_with_error = User.find_or_initialize_with_errors([:email], { email: "" })
|
|
assert_equal [:email, "can't be blank"], user_with_error.errors.first
|
|
end
|
|
|
|
test 'find_or_initialize_with_errors adds invalid error' do
|
|
user_with_error = User.find_or_initialize_with_errors([:email], { email: "example@example.com" })
|
|
assert_equal [:email, "is invalid"], user_with_error.errors.first
|
|
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')
|
|
attributes = ActionController::Parameters.new(email: 'example@example.com')
|
|
|
|
User.expects(:find_first_by_auth_conditions).with('email' => 'example@example.com').returns(user)
|
|
User.find_or_initialize_with_errors([:email], attributes)
|
|
end
|
|
end
|
|
end
|