user name changes: don't create feedback or modaction.

Don't create a neutral feedback, create a mod action, or dmail the user
after changing a user's name. The name change is already recorded in
/user_name_change_requests, so creating feedbacks and mod actions is
redundant. They also expose private information (when a user deletes
their account, old name changes aren't supposed to be visible any more).
This commit is contained in:
evazion
2019-09-25 21:39:01 -05:00
parent c710aa3ffb
commit 07f706e75f
2 changed files with 9 additions and 51 deletions

View File

@@ -6,7 +6,7 @@ class UserNameChangeRequest < ApplicationRecord
validates :desired_name, user_name: true
validates_presence_of :original_name, :desired_name
after_create :approve!
after_create :update_name!
def self.visible(viewer = CurrentUser.user)
if viewer.is_admin?
@@ -18,12 +18,8 @@ class UserNameChangeRequest < ApplicationRecord
end
end
def approve!
user.update_attribute(:name, desired_name)
body = "Your name change request has been approved. Be sure to log in with your new user name."
Dmail.create_automated(:title => "Name change request approved", :body => body, :to_id => user_id)
UserFeedback.create(:user_id => user_id, :category => "neutral", :body => "Name changed from #{original_name} to #{desired_name}")
ModAction.log("Name changed from #{original_name} to #{desired_name}",:user_name_change)
def update_name!
user.update!(name: desired_name)
end
def not_limited

View File

@@ -5,51 +5,14 @@ class UserNameChangeRequestTest < ActiveSupport::TestCase
setup do
@admin = FactoryBot.create(:admin_user)
@requester = FactoryBot.create(:user)
CurrentUser.user = @requester
CurrentUser.ip_addr = "127.0.0.1"
end
teardown do
CurrentUser.user = nil
CurrentUser.ip_addr = nil
end
context "approving a request" do
setup do
@change_request = UserNameChangeRequest.create(
:user_id => @requester.id,
:original_name => @requester.name,
:desired_name => "abc"
)
CurrentUser.user = @admin
end
should "create a dmail" do
assert_difference("Dmail.count", 2) do
@change_request.approve!
end
end
should "change the user's name" do
@change_request.approve!
@requester.reload
assert_equal("abc", @requester.name)
end
should "create feedback" do
assert_difference("UserFeedback.count", 1) do
@change_request.approve!
end
end
should "create mod action" do
assert_difference("ModAction.count", 1) do
@change_request.approve!
end
end
end
context "creating a new request" do
should "change the user's name" do
@change_request = create(:user_name_change_request, user_id: @requester.id, original_name: @requester.name, desired_name: "abc")
assert_equal("abc", @requester.reload.name)
end
should "not validate if the desired name already exists" do
assert_difference("UserNameChangeRequest.count", 0) do
req = UserNameChangeRequest.create(
@@ -62,8 +25,7 @@ class UserNameChangeRequestTest < ActiveSupport::TestCase
end
should "not convert the desired name to lower case" do
uncr = FactoryBot.create(:user_name_change_request, user: @requester, original_name: "provence.", desired_name: "Provence")
CurrentUser.scoped(@admin) { uncr.approve! }
uncr = create(:user_name_change_request, user: @requester, original_name: "provence.", desired_name: "Provence")
assert_equal("Provence", @requester.name)
end