Commit 64433dde authored by Stan Hu's avatar Stan Hu

Merge branch '250354-ssh_key_fix' into 'master'

Fixes ssh key deletion notification

See merge request gitlab-org/gitlab!46687
parents 66eaa050 ba0a4d19
......@@ -58,7 +58,14 @@ module CredentialsInventoryActions
return unless Feature.enabled?(:credentials_inventory_revocation_emails, credential.user)
if credential.is_a?(Key)
CredentialsInventoryMailer.ssh_key_deleted_email(key: credential, deleted_by: current_user).deliver_later
CredentialsInventoryMailer.ssh_key_deleted_email(
params: {
notification_email: credential.user.notification_email,
title: credential.title,
last_used_at: credential.last_used_at,
created_at: credential.created_at
}, deleted_by: current_user
).deliver_later
elsif credential.is_a?(PersonalAccessToken)
CredentialsInventoryMailer.personal_access_token_revoked_email(token: credential, revoked_by: current_user).deliver_later
end
......
......@@ -15,12 +15,12 @@ class CredentialsInventoryMailer < ApplicationMailer
)
end
def ssh_key_deleted_email(key:, deleted_by:)
def ssh_key_deleted_email(params:, deleted_by:)
@deleted_by = deleted_by
@key = key
@params = params
mail(
to: key.user.notification_email,
to: params[:notification_email],
subject: _('Your SSH key was deleted')
)
end
......
......@@ -3,12 +3,12 @@
%ul
%li
= @key.title
= @params[:title]
%li
= _("Created on %{created_at}") % { created_at: @key.created_at.to_date.to_s(:medium) }
- if @key.last_used_at
= _("Created on %{created_at}") % { created_at: @params[:created_at].to_date.to_s(:medium) }
- if @params[:last_used_at]
%li
= _("Last used %{last_used_at} ago") % { last_used_at: time_ago_in_words(@key.last_used_at) }
= _("Last used %{last_used_at} ago") % { last_used_at: time_ago_in_words(@params[:last_used_at]) }
%p
= html_escape(_("You can create a new %{link}.")) % { link: link_to(_('SSH key'), profile_keys_url.html_safe) }
= _("The following SSH key was deleted by an administrator, %{username}.") % { username: @deleted_by.username }
= @key.title
= @params[:title]
= _("Created on %{created_at}") % { created_at: @key.created_at.to_date.to_s(:medium) }
= _("Created on %{created_at}") % { created_at: @params[:created_at].to_date.to_s(:medium) }
- if @key.last_used_at
= _("Last used %{last_used_at} ago") % { last_used_at: time_ago_in_words(@key.last_used_at) }
- if @params[:last_used_at]
= _("Last used %{last_used_at} ago") % { last_used_at: time_ago_in_words(@params[:last_used_at]) }
= html_escape(_("You can create a new SSH key by visiting %{link}")) % { link: profile_keys_url.html_safe }
......@@ -23,8 +23,16 @@ RSpec.describe CredentialsInventoryMailer do
describe '#ssh_key_deleted_email' do
let_it_be(:ssh_key) { create(:personal_key, last_used_at: 3.weeks.ago) }
subject(:email) { described_class.ssh_key_deleted_email(key: ssh_key, deleted_by: administrator) }
let(:params) do
{
notification_email: ssh_key.user.notification_email,
title: ssh_key.title,
last_used_at: ssh_key.last_used_at,
created_at: ssh_key.created_at
}
end
subject(:email) { described_class.ssh_key_deleted_email(params: params, deleted_by: administrator) }
it { is_expected.to have_subject 'Your SSH key was deleted' }
it { is_expected.to have_body_text 'The following SSH key was deleted by an administrator, Revoker' }
......
......@@ -35,9 +35,9 @@ RSpec.shared_examples_for 'credentials inventory controller delete SSH key' do |
end
it 'notifies the key owner' do
expect(CredentialsInventoryMailer).to receive_message_chain(:ssh_key_deleted_email, :deliver_later)
subject
perform_enqueued_jobs do
expect { subject }.to change { ActionMailer::Base.deliveries.size }.by(1)
end
end
context 'when credentials_inventory_revocation_emails is disabled' do
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment