[deploy] Delete all users via the DeleteWorker for consistency (#7013)

This commit is contained in:
Molly Struve 2020-04-02 18:26:58 -05:00 committed by GitHub
parent 6904854629
commit 40f15e68d0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 34 additions and 27 deletions

View file

@ -20,17 +20,14 @@ module Moderator
@ghost = User.find_by(username: "ghost")
reassign_articles
reassign_comments
delete_non_content_activity_and_user
delete_user
CacheBuster.bust("/ghost")
end
private
def delete_non_content_activity_and_user
delete_user_activity
user.unsubscribe_from_newsletters
CacheBuster.bust("/#{user.username}")
user.delete
def delete_user
Users::DeleteWorker.new.perform(user.id, true)
end
def reassign_comments

View file

@ -20,9 +20,8 @@ module Moderator
merge_follows
merge_chat_mentions
merge_profile
remove_additional_email
update_social
@delete_user.delete
Users::DeleteWorker.new.perform(@delete_user.id, true)
@keep_user.touch(:profile_updated_at)
CacheBuster.bust("/#{@keep_user.username}")
@ -49,24 +48,6 @@ module Moderator
end
end
def remove_additional_email
return if @delete_user.email.blank?
email_attr = {
email_comment_notifications: false,
email_digest_periodic: false,
email_follower_notifications: false,
email_mention_notifications: false,
email_newsletter: false,
email_unread_notifications: false,
email_badge_notifications: false,
email_membership_newsletter: false
}
@delete_user.update(email_attr)
@delete_user.unsubscribe_from_newsletters
end
def merge_profile
if @delete_user.github_repos.any?
@delete_user.github_repos.update_all(user_id: @keep_user.id)

View file

@ -10,7 +10,7 @@ module Users
delete_user_activity
user.unsubscribe_from_newsletters
CacheBuster.bust("/#{user.username}")
user.delete
user.destroy
Rails.cache.delete("user-destroy-token-#{user.id}")
end

View file

@ -0,0 +1,20 @@
require "rails_helper"
RSpec.describe Moderator::MergeUser, type: :service do
let!(:keep_user) { create(:user) }
let!(:delete_user) { create(:user) }
let(:delete_user_id) { delete_user.id }
let(:admin) { create(:user, :super_admin) }
describe "#merge" do
before { sidekiq_perform_enqueued_jobs }
it "deletes delete_user_id and keeps keep_user" do
sidekiq_perform_enqueued_jobs do
described_class.call_merge(admin: admin, keep_user: keep_user, delete_user_id: delete_user.id)
end
expect(User.find_by(id: delete_user_id)).to be_nil
expect(User.find_by(id: keep_user.id)).not_to be_nil
end
end
end

View file

@ -35,6 +35,15 @@ RSpec.describe Users::Delete, type: :service do
expect(Rails.cache).to have_received(:delete).with("user-destroy-token-#{user.id}")
end
it "removes user from Elasticsearch" do
sidekiq_perform_enqueued_jobs { user }
expect(user.elasticsearch_doc).not_to be_nil
sidekiq_perform_enqueued_jobs do
described_class.call(user)
end
expect { user.elasticsearch_doc }.to raise_error(Search::Errors::Transport::NotFound)
end
# check that all the associated records are being destroyed, except for those that are kept explicitly (kept_associations)
describe "deleting associations" do
let(:kept_association_names) { %i[created_podcasts notes offender_feedback_messages reporter_feedback_messages affected_feedback_messages] }