Browse Source

Fix user email address being banned on self-deletion (#16503)

* Add tests

* Fix user email address being banned on self-deletion

Fixes #16498
Claire 2 years ago
parent
commit
c3a6f7b941

+ 1 - 1
app/controllers/settings/deletes_controller.rb

@@ -42,7 +42,7 @@ class Settings::DeletesController < Settings::BaseController
   end
 
   def destroy_account!
-    current_account.suspend!(origin: :local)
+    current_account.suspend!(origin: :local, block_email: false)
     AccountDeletionWorker.perform_async(current_user.account_id)
     sign_out
   end

+ 2 - 2
app/models/account.rb

@@ -232,11 +232,11 @@ class Account < ApplicationRecord
     suspended? && deletion_request.present?
   end
 
-  def suspend!(date: Time.now.utc, origin: :local)
+  def suspend!(date: Time.now.utc, origin: :local, block_email: true)
     transaction do
       create_deletion_request!
       update!(suspended_at: date, suspension_origin: origin)
-      create_canonical_email_block!
+      create_canonical_email_block! if block_email
     end
   end
 

+ 4 - 0
spec/controllers/settings/deletes_controller_spec.rb

@@ -59,6 +59,10 @@ describe Settings::DeletesController do
           expect(user.account.reload).to be_suspended
         end
 
+        it 'does not create an email block' do
+          expect(CanonicalEmailBlock.block?(user.email)).to be false
+        end
+
         context 'when suspended' do
           let(:user) { Fabricate(:user, account_attributes: { username: 'alice', suspended_at: Time.now.utc }) }