diff --git a/app/controllers/idv/gpo_verify_controller.rb b/app/controllers/idv/gpo_verify_controller.rb index 42445444156..6b4bca2cb8d 100644 --- a/app/controllers/idv/gpo_verify_controller.rb +++ b/app/controllers/idv/gpo_verify_controller.rb @@ -28,7 +28,7 @@ def create @gpo_verify_form = build_gpo_verify_form if throttle.throttled_else_increment? - irs_attempts_api_tracker.idv_gpo_verification_throttled + irs_attempts_api_tracker.idv_gpo_verification_rate_limited render_throttled else result = @gpo_verify_form.submit diff --git a/app/controllers/users/verify_personal_key_controller.rb b/app/controllers/users/verify_personal_key_controller.rb index 7eb42e04819..b7a80b6ae66 100644 --- a/app/controllers/users/verify_personal_key_controller.rb +++ b/app/controllers/users/verify_personal_key_controller.rb @@ -22,7 +22,7 @@ def new def create if throttle.throttled_else_increment? - irs_attempts_api_tracker.personal_key_reactivation_throttled(success: false) + irs_attempts_api_tracker.personal_key_reactivation_rate_limited(success: false) render_throttled else result = personal_key_form.submit diff --git a/app/services/irs_attempts_api/tracker_events.rb b/app/services/irs_attempts_api/tracker_events.rb index 63d1d7d3dec..333b0458636 100644 --- a/app/services/irs_attempts_api/tracker_events.rb +++ b/app/services/irs_attempts_api/tracker_events.rb @@ -148,10 +148,10 @@ def idv_gpo_verification_submitted(success:, failure_reason: nil) ) end - # GPO verification submission throttled, user entered in too many invalid gpo letter codes - def idv_gpo_verification_throttled + # GPO verification submission rate limited, user entered in too many invalid gpo letter codes + def idv_gpo_verification_rate_limited track_event( - :idv_gpo_verification_throttled, + :idv_gpo_verification_rate_limited, ) end @@ -615,11 +615,11 @@ def personal_key_reactivation_submitted(success:, failure_reason: nil) ) end - # Tracks when User personal key has been throttled by too many attempts + # Tracks when User personal key has been rate limited by too many attempts # @param [Boolean] success - def personal_key_reactivation_throttled(success:) + def personal_key_reactivation_rate_limited(success:) track_event( - :personal_key_reactivation_throttled, + :personal_key_reactivation_rate_limited, success: success, ) end diff --git a/spec/controllers/idv/gpo_verify_controller_spec.rb b/spec/controllers/idv/gpo_verify_controller_spec.rb index 42d8062205c..14a9e3b1390 100644 --- a/spec/controllers/idv/gpo_verify_controller_spec.rb +++ b/spec/controllers/idv/gpo_verify_controller_spec.rb @@ -85,6 +85,7 @@ end describe '#create' do + let(:otp_code_error_message) { { otp: [t('errors.messages.confirmation_code_incorrect')] } } let(:otp_code_incorrect) { { otp: [:confirmation_code_incorrect] } } let(:success_properties) { { success: true, failure_reason: nil } } @@ -171,7 +172,7 @@ expect(@analytics).to receive(:track_event).with( 'IdV: GPO verification submitted', success: false, - errors: { otp: [t('errors.messages.confirmation_code_incorrect')] }, + errors: otp_code_error_message, pending_in_person_enrollment: false, enqueued_at: nil, error_details: otp_code_incorrect, @@ -201,7 +202,7 @@ expect(@analytics).to receive(:track_event).with( 'IdV: GPO verification submitted', success: false, - errors: { otp: [t('errors.messages.confirmation_code_incorrect')] }, + errors: otp_code_error_message, pending_in_person_enrollment: false, enqueued_at: nil, error_details: otp_code_incorrect, @@ -213,7 +214,7 @@ throttle_type: :verify_gpo_key, ).once - expect(@irs_attempts_api_tracker).to receive(:idv_gpo_verification_throttled).once + expect(@irs_attempts_api_tracker).to receive(:idv_gpo_verification_rate_limited).once (max_attempts + 1).times do |i| post( diff --git a/spec/controllers/users/verify_personal_key_controller_spec.rb b/spec/controllers/users/verify_personal_key_controller_spec.rb index a24a2b4cb1a..bdd1e1f4ee5 100644 --- a/spec/controllers/users/verify_personal_key_controller_spec.rb +++ b/spec/controllers/users/verify_personal_key_controller_spec.rb @@ -54,6 +54,7 @@ it 'renders throttled page' do stub_analytics + stub_attempts_tracker expect(@analytics).to receive(:track_event).with( 'Personal key reactivation: Personal key form visited', ).once @@ -62,6 +63,8 @@ throttle_type: :verify_personal_key, ).once + expect(@irs_attempts_api_tracker).not_to receive(:personal_key_reactivation_rate_limited) + get :new expect(response).to render_template(:throttled) @@ -81,8 +84,10 @@ ] end let(:error_text) { 'Incorrect personal key' } + let(:personal_key_bad_params) { { personal_key: 'baaad' } } let(:personal_key_error) { { personal_key: [error_text] } } let(:failure_properties) { { success: false, failure_reason: personal_key_error } } + let(:pii_like_keypaths_errors) { [[:errors, :personal_key], [:error_details, :personal_key]] } let(:response_ok) { FormResponse.new(success: true, errors: {}) } let(:response_bad) { FormResponse.new(success: false, errors: personal_key_error, extra: {}) } @@ -99,7 +104,7 @@ 'Personal key reactivation: Personal key form submitted', errors: {}, success: true, - pii_like_keypaths: [[:errors, :personal_key], [:error_details, :personal_key]], + pii_like_keypaths: pii_like_keypaths_errors, ).once expect(@analytics).to receive(:track_event).with( @@ -126,16 +131,14 @@ end context 'with an invalid form' do - let(:bad_key) { 'baaad' } - it 'sets an error in the flash' do - post :create, params: { personal_key: bad_key } + post :create, params: personal_key_bad_params expect(flash[:error]).to eq(error_text) end it 'redirects to form' do - post :create, params: { personal_key: bad_key } + post :create, params: personal_key_bad_params expect(response).to redirect_to(verify_personal_key_url) end @@ -148,29 +151,30 @@ allow_any_instance_of(VerifyPersonalKeyForm).to receive(:submit).and_return(response_bad) - post :create, params: { personal_key: bad_key } + post :create, params: personal_key_bad_params end end context 'with throttle reached' do - let(:bad_key) { 'baaad' } - it 'renders throttled page' do stub_analytics + stub_attempts_tracker expect(@analytics).to receive(:track_event).with( 'Personal key reactivation: Personal key form submitted', - errors: { personal_key: ['Please fill in this field.', 'Incorrect personal key'] }, + errors: { personal_key: ['Please fill in this field.', error_text] }, error_details: { personal_key: [:blank, :personal_key_incorrect] }, success: false, - pii_like_keypaths: [[:errors, :personal_key], [:error_details, :personal_key]], + pii_like_keypaths: pii_like_keypaths_errors, ).once expect(@analytics).to receive(:track_event).with( 'Throttler Rate Limit Triggered', throttle_type: :verify_personal_key, ).once + expect(@irs_attempts_api_tracker).to receive(:personal_key_reactivation_rate_limited).once + max_attempts = Throttle.max_attempts(:verify_personal_key) - (max_attempts + 1).times { post :create, params: { personal_key: bad_key } } + (max_attempts + 1).times { post :create, params: personal_key_bad_params } expect(response).to render_template(:throttled) end @@ -184,7 +188,7 @@ allow_any_instance_of(VerifyPersonalKeyForm).to receive(:submit).and_return(response_bad) - post :create, params: { personal_key: bad_key } + post :create, params: personal_key_bad_params end end end