Account deletion email: serialize only user's details (#9752)

* Account deletion email: serialize only user's details

* Fix specs and mailer preview
This commit is contained in:
rhymes 2020-08-13 18:31:56 +02:00 committed by GitHub
parent c18b0f1ba1
commit 8b60a18735
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 18 additions and 12 deletions

View file

@ -104,11 +104,10 @@ class NotifyMailer < ApplicationMailer
end
def account_deleted_email
user = params[:user]
@name = user.name
@name = params[:name]
subject = "#{ApplicationConfig['COMMUNITY_NAME']} - Account Deletion Confirmation"
mail(to: user.email, subject: subject)
mail(to: params[:email], subject: subject)
end
def account_deletion_requested_email

View file

@ -11,7 +11,10 @@ module Users
Users::Delete.call(user)
return if admin_delete || user.email.blank?
NotifyMailer.with(user: user).account_deleted_email.deliver_now
# at this point the user object is already destroyed on the DB,
# thus we pass the data we need to render to deliver the email, not the
# whole object
NotifyMailer.with(name: user.name, email: user.email).account_deleted_email.deliver_now
rescue StandardError => e
DatadogStatsClient.count("users.delete", 1, tags: ["action:failed", "user_id:#{user.id}"])
Honeybadger.context({ user_id: user.id })

View file

@ -373,7 +373,7 @@ RSpec.describe NotifyMailer, type: :mailer do
end
describe "#account_deleted_email" do
let(:email) { described_class.with(user: user).account_deleted_email }
let(:email) { described_class.with(name: user.name, email: user.email).account_deleted_email }
it "renders proper subject" do
expect(email.subject).to eq("#{ApplicationConfig['COMMUNITY_NAME']} - Account Deletion Confirmation")

View file

@ -77,7 +77,8 @@ class NotifyMailerPreview < ActionMailer::Preview
end
def account_deleted_email
NotifyMailer.with(user: User.last).account_deleted_email
user = User.last
NotifyMailer.with(name: user.name, email: user.email).account_deleted_email
end
def export_email

View file

@ -7,15 +7,18 @@ RSpec.describe Users::DeleteWorker, type: :worker do
let(:message_delivery) { double }
describe "#perform" do
let(:user) { create(:user) }
let!(:user) { create(:user) }
let(:delete) { Users::Delete }
before do
allow(delete).to receive(:call)
end
context "when user is found" do
it "deletes the user correctly" do
worker.perform(user.id)
expect(User.exists?(id: user.id)).to be(false)
end
it "calls the service when a user is found" do
allow(delete).to receive(:call)
worker.perform(user.id)
expect(delete).to have_received(:call).with(user)
end
@ -39,7 +42,7 @@ RSpec.describe Users::DeleteWorker, type: :worker do
worker.perform(user.id)
expect(mailer_class).to have_received(:with).with(user: user)
expect(mailer_class).to have_received(:with).with(name: user.name, email: user.email)
expect(mailer).to have_received(:account_deleted_email)
expect(message_delivery).to have_received(:deliver_now)
end