Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 2 additions & 4 deletions app/controllers/idv/by_mail/enter_code_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -101,12 +101,10 @@ def note_if_user_did_not_receive_letter

def prepare_for_personal_key
unless account_not_ready_to_be_activated?
event, _disavowal_token = create_user_event(:account_verified)
create_user_event(:account_verified)

UserAlerts::AlertUserAboutAccountVerified.call(
user: current_user,
date_time: event.created_at,
sp_name: decorated_sp_session.sp_name,
profile: current_user.active_profile,
)
flash[:success] = t('account.index.verification.success')
end
Expand Down
6 changes: 2 additions & 4 deletions app/controllers/idv/enter_password_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -134,11 +134,9 @@ def init_profile
end

if idv_session.profile.active?
event, _disavowal_token = create_user_event(:account_verified)
create_user_event(:account_verified)
UserAlerts::AlertUserAboutAccountVerified.call(
user: current_user,
date_time: event.created_at,
sp_name: decorated_sp_session.sp_name,
profile: idv_session.profile,
)
end
end
Expand Down
7 changes: 4 additions & 3 deletions app/services/user_alerts/alert_user_about_account_verified.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,12 @@

module UserAlerts
class AlertUserAboutAccountVerified
def self.call(user:, date_time:, sp_name:)
sp_name ||= APP_NAME
def self.call(profile:)
user = profile.user
sp_name = profile.initiating_service_provider&.friendly_name || APP_NAME
user.confirmed_email_addresses.each do |email_address|
UserMailer.with(user: user, email_address: email_address).account_verified(
date_time: date_time,
date_time: profile.verified_at,
sp_name: sp_name,
).deliver_now_or_later
end
Expand Down
13 changes: 2 additions & 11 deletions lib/action_account.rb
Original file line number Diff line number Diff line change
Expand Up @@ -254,14 +254,6 @@ def run(args:, config:)
class ReviewPass
include LogBase

def alert_verified(user:, date_time:)
UserAlerts::AlertUserAboutAccountVerified.call(
user: user,
date_time: date_time,
sp_name: nil,
)
end

def run(args:, config:)
uuids = args

Expand All @@ -286,10 +278,9 @@ def run(args:, config:)
success = true

if profile.active?
event, _disavowal_token = UserEventCreator.new(current_user: user).
UserEventCreator.new(current_user: user).
create_out_of_band_user_event(:account_verified)

alert_verified(user: user, date_time: event.created_at)
UserAlerts::AlertUserAboutAccountVerified.call(profile: profile)

log_texts << log_text[:profile_activated]
else
Expand Down
4 changes: 3 additions & 1 deletion spec/controllers/idv/by_mail/enter_code_controller_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -215,7 +215,9 @@
it 'dispatches account verified alert' do
action

expect(UserAlerts::AlertUserAboutAccountVerified).to have_received(:call)
expect(UserAlerts::AlertUserAboutAccountVerified).to have_received(:call).with(
profile: user.active_profile,
)
end

context 'with establishing in person enrollment' do
Expand Down
6 changes: 5 additions & 1 deletion spec/controllers/idv/enter_password_controller_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -394,9 +394,13 @@ def show
end

it 'dispatches account verified alert' do
expect(UserAlerts::AlertUserAboutAccountVerified).to receive(:call)
allow(UserAlerts::AlertUserAboutAccountVerified).to receive(:call)

put :create, params: { user: { password: ControllerHelper::VALID_PASSWORD } }

expect(UserAlerts::AlertUserAboutAccountVerified).to have_received(:call).with(
profile: user.reload.active_profile,
)
end

it 'creates an `account_verified` event once per confirmation' do
Expand Down
4 changes: 4 additions & 0 deletions spec/lib/action_account_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -204,6 +204,10 @@
subject(:result) { subtask.run(args:, config:) }

it 'Pass a user that has a pending review', aggregate_failures: true do
expect(UserAlerts::AlertUserAboutAccountVerified).to receive(:call).with(
profile: user.pending_profile,
)

profile_fraud_review_pending_at = user.pending_profile.fraud_review_pending_at

# rubocop:disable Layout/LineLength
Expand Down
37 changes: 26 additions & 11 deletions spec/services/user_alerts/alert_user_about_account_verified_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,34 +2,49 @@

RSpec.describe UserAlerts::AlertUserAboutAccountVerified do
describe '#call' do
let(:user) { create(:user, :fully_registered) }
let(:device) { create(:device, user: user) }
let(:date_time) { Time.zone.now }
let(:user) { profile.user }
let(:profile) do
create(
:profile,
:active,
initiating_service_provider: service_provider,
)
end
let(:service_provider) { create(:service_provider) }

it 'sends an email to all confirmed email addresses' do
create_list(:email_address, 2, user: user)
create(:email_address, user: user, confirmed_at: nil)
confirmed_email_addresses = user.confirmed_email_addresses

described_class.call(
user: user,
date_time: date_time,
sp_name: '',
)
described_class.call(profile: profile)

expect_delivered_email_count(3)
expect_delivered_email(
to: [confirmed_email_addresses[0].email],
subject: t('user_mailer.account_verified.subject', sp_name: ''),
subject: t('user_mailer.account_verified.subject', sp_name: service_provider.friendly_name),
)
expect_delivered_email(
to: [confirmed_email_addresses[1].email],
subject: t('user_mailer.account_verified.subject', sp_name: ''),
subject: t('user_mailer.account_verified.subject', sp_name: service_provider.friendly_name),
)
expect_delivered_email(
to: [confirmed_email_addresses[2].email],
subject: t('user_mailer.account_verified.subject', sp_name: ''),
subject: t('user_mailer.account_verified.subject', sp_name: service_provider.friendly_name),
)
end

context 'when no service provider initiated the proofing event' do
let(:service_provider) { nil }

it 'sends the email with Login.gov as the initiating service provider' do
described_class.call(profile: profile)

expect_delivered_email(
to: [user.confirmed_email_addresses.first.email],
subject: t('user_mailer.account_verified.subject', sp_name: APP_NAME),
)
end
end
end
end