diff --git a/app/controllers/concerns/idv/phone_otp_rate_limitable.rb b/app/controllers/concerns/idv/phone_otp_rate_limitable.rb index 3ad3ab920c7..82a3952a382 100644 --- a/app/controllers/concerns/idv/phone_otp_rate_limitable.rb +++ b/app/controllers/concerns/idv/phone_otp_rate_limitable.rb @@ -29,6 +29,7 @@ def reset_attempt_count_if_user_no_longer_locked_out def handle_too_many_otp_sends analytics.idv_phone_confirmation_otp_rate_limit_sends + irs_attempts_api_tracker.idv_phone_otp_sent_rate_limited handle_max_attempts('otp_requests') end diff --git a/app/services/irs_attempts_api/tracker_events.rb b/app/services/irs_attempts_api/tracker_events.rb index 37e968f6cb2..21c0354be59 100644 --- a/app/services/irs_attempts_api/tracker_events.rb +++ b/app/services/irs_attempts_api/tracker_events.rb @@ -130,6 +130,13 @@ def idv_document_upload_submitted( ) end + # Tracks Idv phone OTP sent rate limits + def idv_phone_otp_sent_rate_limited + track_event( + :idv_phone_otp_sent_rate_limited, + ) + end + # The user has exceeded the rate limit during idv document upload def idv_document_upload_rate_limited track_event( diff --git a/spec/controllers/concerns/idv/phone_otp_rate_limitable_spec.rb b/spec/controllers/concerns/idv/phone_otp_rate_limitable_spec.rb new file mode 100644 index 00000000000..9ca3ffa218f --- /dev/null +++ b/spec/controllers/concerns/idv/phone_otp_rate_limitable_spec.rb @@ -0,0 +1,36 @@ +require 'rails_helper' + +RSpec.describe Idv::PhoneOtpRateLimitable, type: :controller do + controller ApplicationController do + include Idv::PhoneOtpRateLimitable + + def handle_max_attempts(_arg = nil) + true + end + end + + describe '#handle_too_many_otp_sends' do + before do + stub_analytics + stub_attempts_tracker + allow(@analytics).to receive(:track_event) + allow(@irs_attempts_api_tracker).to receive(:track_event) + end + + it 'calls analytics tracking event' do + subject.handle_too_many_otp_sends + + expect(@analytics).to have_received(:track_event).with( + 'Idv: Phone OTP sends rate limited', + ) + end + + it 'calls irs tracking event idv_phone_otp_sent_rate_limited' do + subject.handle_too_many_otp_sends + + expect(@irs_attempts_api_tracker).to have_received(:track_event).with( + :idv_phone_otp_sent_rate_limited, + ) + end + end +end