diff --git a/lib/devise/models/confirmable.rb b/lib/devise/models/confirmable.rb index f323d454..e6df31ac 100644 --- a/lib/devise/models/confirmable.rb +++ b/lib/devise/models/confirmable.rb @@ -56,7 +56,7 @@ module Devise # Confirm a user by setting it's confirmed_at to actual time. If the user # is already confirmed, add an error to email field. If the user is invalid # add errors - def confirm!(ensure_valid=false) + def confirm!(ensure_valid: false) pending_any_confirmation do if confirmation_period_expired? self.errors.add(:email, :confirmation_period_expired, diff --git a/test/models/confirmable_test.rb b/test/models/confirmable_test.rb index 0c2c56ff..10cd160d 100644 --- a/test/models/confirmable_test.rb +++ b/test/models/confirmable_test.rb @@ -315,6 +315,12 @@ class ConfirmableTest < ActiveSupport::TestCase assert_not user.confirm! assert_equal user.username, old end + + test 'should always perform validations upon confirm when ensure valid true' do + admin = create_admin + admin.stubs(:valid?).returns(false) + assert_not admin.confirm!(ensure_valid: true) + end end class ReconfirmableTest < ActiveSupport::TestCase