diff --git a/app/jobs/get_usps_proofing_results_job.rb b/app/jobs/get_usps_proofing_results_job.rb index be5e17a31de..058faadb939 100644 --- a/app/jobs/get_usps_proofing_results_job.rb +++ b/app/jobs/get_usps_proofing_results_job.rb @@ -271,6 +271,7 @@ def handle_expired_status_update(enrollment, response, response_message) status: :expired, status_check_completed_at: Time.zone.now, ) + enrollment.profile.deactivate_due_to_ipp_expiration if fraud_result_pending?(enrollment) analytics(user: enrollment.user).idv_ipp_deactivated_for_never_visiting_post_office( diff --git a/app/models/profile.rb b/app/models/profile.rb index 2b455e41000..0ddb3b925bd 100644 --- a/app/models/profile.rb +++ b/app/models/profile.rb @@ -196,6 +196,14 @@ def deactivate_due_to_gpo_expiration ) end + def deactivate_due_to_ipp_expiration + update!( + active: false, + deactivation_reason: :verification_cancelled, + in_person_verification_pending_at: nil, + ) + end + def deactivate_for_in_person_verification update!(active: false, in_person_verification_pending_at: Time.zone.now) end diff --git a/spec/jobs/get_usps_proofing_results_job_spec.rb b/spec/jobs/get_usps_proofing_results_job_spec.rb index 9415eacf5ba..77433303c03 100644 --- a/spec/jobs/get_usps_proofing_results_job_spec.rb +++ b/spec/jobs/get_usps_proofing_results_job_spec.rb @@ -259,6 +259,12 @@ before do enrollment_records = InPersonEnrollment.where(id: pending_enrollments.map(&:id)) + # Below sets in_person_verification_pending_at + # on the profile associated with each pending enrollment + enrollment_records.each do |enrollment| + profile = enrollment.profile + profile.update(in_person_verification_pending_at: enrollment.created_at) + end allow(InPersonEnrollment).to receive(:needs_usps_status_check). and_return(enrollment_records) allow(IdentityConfig.store).to receive(:in_person_proofing_enabled).and_return(true) @@ -877,6 +883,15 @@ ) end + it 'deactivates the associated profile' do + job.perform(Time.zone.now) + + pending_enrollment.reload + expect(pending_enrollment.profile).not_to be_active + expect(pending_enrollment.profile.in_person_verification_pending_at).to be_nil + expect(pending_enrollment.profile.deactivation_reason).to eq('verification_cancelled') + end + context 'when the in_person_stop_expiring_enrollments flag is true' do before do allow(IdentityConfig.store).to( @@ -897,6 +912,14 @@ ), ) end + + it 'does not deactivate the profile' do + job.perform(Time.zone.now) + + pending_enrollment.reload + expect(pending_enrollment.profile.in_person_verification_pending_at).to_not be_nil + expect(pending_enrollment.profile.deactivation_reason).to be_nil + end end end diff --git a/spec/models/profile_spec.rb b/spec/models/profile_spec.rb index 8ebb3d532cd..b90c1bd4dbb 100644 --- a/spec/models/profile_spec.rb +++ b/spec/models/profile_spec.rb @@ -1001,6 +1001,17 @@ end end + describe '#deactivate_due_to_ipp_expiration' do + let(:profile) { create(:profile, :in_person_verification_pending) } + it 'updates the profile' do + profile.deactivate_due_to_ipp_expiration + + expect(profile.active).to be false + expect(profile.deactivation_reason).to eq('verification_cancelled') + expect(profile.in_person_verification_pending_at).to be nil + end + end + describe '#deactivate_due_to_gpo_expiration' do let(:profile) { create(:profile, :verify_by_mail_pending, user: user) }