Fix #4383: Save and display deleted usernames for mods+.

Name changes for deleted users are already visible to mods, so the only
thing we need to do here is to generate a name change before the user is
deleted.
This commit is contained in:
evazion
2020-04-03 23:00:25 -05:00
parent 5826b7a61a
commit 52dd8385f8
2 changed files with 12 additions and 3 deletions

View File

@@ -57,8 +57,8 @@ class UserDeletion
raise ValidationError.new("New name could not be found")
end
user.name = name
user.save!
request = UserNameChangeRequest.new(user: user, desired_name: name, original_name: user.name)
request.save!(validate: false) # XXX don't validate so that the 1 name change per week rule doesn't interfere
end
def validate

View File

@@ -27,7 +27,7 @@ class UserDeletionTest < ActiveSupport::TestCase
context "a valid user deletion" do
setup do
@user = create(:user, email_address: build(:email_address))
@user = create(:user, name: "foo", email_address: build(:email_address))
@deletion = UserDeletion.new(@user, "password")
end
@@ -41,6 +41,15 @@ class UserDeletionTest < ActiveSupport::TestCase
assert_equal("user_#{@user.id}", @user.reload.name)
end
should "generate a user name change request" do
assert_difference("UserNameChangeRequest.count") do
@deletion.delete!
end
assert_equal("foo", UserNameChangeRequest.last.original_name)
assert_equal("user_#{@user.id}", UserNameChangeRequest.last.desired_name)
end
should "reset the password" do
@deletion.delete!
assert_equal(false, @user.authenticate_password("password"))