diff --git a/app/jobs/get_usps_proofing_results_job.rb b/app/jobs/get_usps_proofing_results_job.rb index e8a8c5197fd..e289c9898ee 100644 --- a/app/jobs/get_usps_proofing_results_job.rb +++ b/app/jobs/get_usps_proofing_results_job.rb @@ -146,6 +146,7 @@ def handle_bad_request_error(err, enrollment) when IPP_EXPIRED_ERROR_MESSAGE handle_expired_status_update(enrollment, err.response) else + NewRelic::Agent.notice_error(err) analytics(user: enrollment.user).idv_in_person_usps_proofing_results_job_exception( **enrollment_analytics_attributes(enrollment, complete: false), **response_analytics_attributes(response), diff --git a/spec/jobs/get_usps_proofing_results_job_spec.rb b/spec/jobs/get_usps_proofing_results_job_spec.rb index 4d36889bc30..516dbd6ab3a 100644 --- a/spec/jobs/get_usps_proofing_results_job_spec.rb +++ b/spec/jobs/get_usps_proofing_results_job_spec.rb @@ -567,7 +567,32 @@ ) end - context 'when USPS returns a 4xx status code' do + context 'when USPS returns an unexpected 400 status code' do + before(:each) do + stub_request_proofing_results_with_responses( + { + status: 400, + body: { 'responseMessage' => 'This USPS location has closed 😭' }.to_json, + }, + ) + end + + it_behaves_like( + 'enrollment_encountering_an_exception', + exception_class: 'Faraday::BadRequestError', + exception_message: 'the server responded with status 400', + response_message: 'This USPS location has closed 😭', + response_status_code: 400, + ) + + it 'logs the error to NewRelic' do + expect(NewRelic::Agent).to receive(:notice_error). + with(instance_of(Faraday::BadRequestError)) + job.perform(Time.zone.now) + end + end + + context 'when USPS returns a >400 status code' do before(:each) do stub_request_proofing_results_with_responses( {