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") raise ValidationError.new("New name could not be found")
end end
user.name = name request = UserNameChangeRequest.new(user: user, desired_name: name, original_name: user.name)
user.save! request.save!(validate: false) # XXX don't validate so that the 1 name change per week rule doesn't interfere
end end
def validate def validate

View File

@@ -27,7 +27,7 @@ class UserDeletionTest < ActiveSupport::TestCase
context "a valid user deletion" do context "a valid user deletion" do
setup 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") @deletion = UserDeletion.new(@user, "password")
end end
@@ -41,6 +41,15 @@ class UserDeletionTest < ActiveSupport::TestCase
assert_equal("user_#{@user.id}", @user.reload.name) assert_equal("user_#{@user.id}", @user.reload.name)
end 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 should "reset the password" do
@deletion.delete! @deletion.delete!
assert_equal(false, @user.authenticate_password("password")) assert_equal(false, @user.authenticate_password("password"))