From 48aa2520313fae99ee85afac2315d0dcc58aac60 Mon Sep 17 00:00:00 2001 From: Tomas Apodaca Date: Wed, 28 Sep 2022 23:30:20 -0700 Subject: [PATCH] handle StandardError without response changelog: Bug Fixes, In-person proofing, Improve job error handling --- app/jobs/get_usps_proofing_results_job.rb | 12 +++++++++++- .../get_usps_proofing_results_job_spec.rb | 19 +++++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/app/jobs/get_usps_proofing_results_job.rb b/app/jobs/get_usps_proofing_results_job.rb index ed71d3e79f2..36807bab8a7 100644 --- a/app/jobs/get_usps_proofing_results_job.rb +++ b/app/jobs/get_usps_proofing_results_job.rb @@ -30,6 +30,8 @@ def enrollment_analytics_attributes(enrollment, complete:) end def response_analytics_attributes(response) + return { response_present: false } unless response.present? + { fraud_suspected: response['fraudSuspected'], primary_id_type: response['primaryIdType'], @@ -44,6 +46,7 @@ def response_analytics_attributes(response) proofing_state: response['proofingState'], scan_count: response['scanCount'], response_message: response['responseMessage'], + response_present: true, } end @@ -108,6 +111,7 @@ def check_enrollments(enrollments) rescue Faraday::BadRequestError => err handle_bad_request_error(err, enrollment) rescue StandardError => err + NewRelic::Agent.notice_error(err) handle_standard_error(err, enrollment) end @@ -145,10 +149,16 @@ def handle_bad_request_error(err, enrollment) end def handle_standard_error(err, enrollment) + response_attributes = if err.respond_to?(:response) + response_analytics_attributes(err.response) + else + response_analytics_attributes(nil) + end + enrollment_outcomes[:enrollments_errored] += 1 analytics(user: enrollment.user).idv_in_person_usps_proofing_results_job_exception( **enrollment_analytics_attributes(enrollment, complete: false), - **response_analytics_attributes(err.response), + **response_attributes, reason: 'Request exception', exception_class: err.class.to_s, exception_message: err.message, diff --git a/spec/jobs/get_usps_proofing_results_job_spec.rb b/spec/jobs/get_usps_proofing_results_job_spec.rb index 3e1d32c1254..6f5425beb57 100644 --- a/spec/jobs/get_usps_proofing_results_job_spec.rb +++ b/spec/jobs/get_usps_proofing_results_job_spec.rb @@ -223,6 +223,25 @@ ).to be >= 0.0 end + context 'a standard error is raised when requesting proofing results' do + let(:error_message) { 'A standard error happened' } + let!(:error) { StandardError.new(error_message) } + let!(:proofer) { described_class.new } + + it 'logs failure details' do + allow(UspsInPersonProofing::Proofer).to receive(:new).and_return(proofer) + allow(proofer).to receive(:request_proofing_results).and_raise(error) + expect(NewRelic::Agent).to receive(:notice_error).with(error) + + job.perform(Time.zone.now) + + expect(job_analytics).to have_logged_event( + 'GetUspsProofingResultsJob: Exception raised', + exception_message: error_message, + ) + end + end + context 'with a request delay in ms' do let(:request_delay_ms) { 750 }