Invalidate security tokens on password or email changes (#17717).

Contributed by Jan Schulz-Hofen.


git-svn-id: http://svn.redmine.org/redmine/trunk@13396 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Jean-Baptiste Barth
2014-09-14 08:22:25 +00:00
parent d30367d46b
commit 2eb95f41b4
2 changed files with 49 additions and 1 deletions

View File

@@ -403,6 +403,42 @@ class UserTest < ActiveSupport::TestCase
end
end
def test_password_change_should_destroy_tokens
recovery_token = Token.create!(:user_id => 2, :action => 'recovery')
autologin_token = Token.create!(:user_id => 2, :action => 'autologin')
user = User.find(2)
user.password, user.password_confirmation = "a new password", "a new password"
assert user.save
assert_nil Token.find_by_id(recovery_token.id)
assert_nil Token.find_by_id(autologin_token.id)
end
def test_mail_change_should_destroy_tokens
recovery_token = Token.create!(:user_id => 2, :action => 'recovery')
autologin_token = Token.create!(:user_id => 2, :action => 'autologin')
user = User.find(2)
user.mail = "user@somwehere.com"
assert user.save
assert_nil Token.find_by_id(recovery_token.id)
assert_equal autologin_token, Token.find_by_id(autologin_token.id)
end
def test_change_on_other_fields_should_not_destroy_tokens
recovery_token = Token.create!(:user_id => 2, :action => 'recovery')
autologin_token = Token.create!(:user_id => 2, :action => 'autologin')
user = User.find(2)
user.firstname = "Bobby"
assert user.save
assert_equal recovery_token, Token.find_by_id(recovery_token.id)
assert_equal autologin_token, Token.find_by_id(autologin_token.id)
end
def test_validate_login_presence
@admin.login = ""
assert !@admin.save