From 8f3eb1d9807e9d8836e31d600a5ce54334ce983e Mon Sep 17 00:00:00 2001 From: Alex Bradley Date: Mon, 7 Aug 2023 17:06:53 -0400 Subject: [PATCH 01/14] add in_person_verification_needed argument to profile_maker#save_profile we no longer pass in_person_verification_pending to the initialize method for profile maker Co-authored-by: Sonia Connolly --- app/services/idv/profile_maker.rb | 7 +++---- app/services/idv/session.rb | 2 +- spec/services/idv/profile_maker_spec.rb | 27 +++++++++++++++++++++++-- 3 files changed, 29 insertions(+), 7 deletions(-) diff --git a/app/services/idv/profile_maker.rb b/app/services/idv/profile_maker.rb index 1eaf996f054..b0f946859e9 100644 --- a/app/services/idv/profile_maker.rb +++ b/app/services/idv/profile_maker.rb @@ -6,24 +6,23 @@ def initialize( applicant:, user:, user_password:, - initiating_service_provider: nil, - in_person_verification_pending: false + initiating_service_provider: nil ) self.pii_attributes = Pii::Attributes.new_from_hash(applicant) self.user = user self.user_password = user_password self.initiating_service_provider = initiating_service_provider - self.in_person_verification_pending = in_person_verification_pending end def save_profile( fraud_pending_reason:, gpo_verification_needed:, + in_person_verification_needed:, deactivation_reason: nil ) profile = Profile.new(user: user, active: false, deactivation_reason: deactivation_reason) profile.initiating_service_provider = initiating_service_provider - if in_person_verification_pending + if in_person_verification_needed profile.deactivation_reason = :in_person_verification_pending end profile.encrypt_pii(pii_attributes, user_password) diff --git a/app/services/idv/session.rb b/app/services/idv/session.rb index 2e99a13ad16..88dbc3582be 100644 --- a/app/services/idv/session.rb +++ b/app/services/idv/session.rb @@ -56,6 +56,7 @@ def create_profile_from_applicant_with_password(user_password) profile = profile_maker.save_profile( fraud_pending_reason: threatmetrix_fraud_pending_reason, gpo_verification_needed: gpo_verification_needed?, + in_person_verification_needed: in_person_enrollment?, ) profile.activate unless profile.reason_not_to_activate @@ -237,7 +238,6 @@ def build_profile_maker(user_password) user: current_user, user_password: user_password, initiating_service_provider: service_provider, - in_person_verification_pending: in_person_enrollment?, ) end diff --git a/spec/services/idv/profile_maker_spec.rb b/spec/services/idv/profile_maker_spec.rb index c85bd46619c..407d4df77a8 100644 --- a/spec/services/idv/profile_maker_spec.rb +++ b/spec/services/idv/profile_maker_spec.rb @@ -6,7 +6,6 @@ let(:user) { create(:user, :fully_registered) } let(:user_password) { user.password } let(:initiating_service_provider) { nil } - let(:in_person_verification_pending) { false } subject do described_class.new( @@ -14,7 +13,6 @@ user: user, user_password: user_password, initiating_service_provider: initiating_service_provider, - in_person_verification_pending: in_person_verification_pending, ) end @@ -23,6 +21,7 @@ profile = subject.save_profile( fraud_pending_reason: nil, gpo_verification_needed: false, + in_person_verification_needed: false, ) pii = subject.pii_attributes @@ -44,6 +43,7 @@ fraud_pending_reason: nil, gpo_verification_needed: false, deactivation_reason: :encryption_error, + in_person_verification_needed: false, ) expect(profile.activated_at).to be_nil @@ -62,6 +62,7 @@ fraud_pending_reason: 'threatmetrix_review', gpo_verification_needed: false, deactivation_reason: nil, + in_person_verification_needed: false, ) expect(profile.activated_at).to be_nil @@ -80,6 +81,7 @@ fraud_pending_reason: nil, gpo_verification_needed: true, deactivation_reason: nil, + in_person_verification_needed: false, ) expect(profile.activated_at).to be_nil @@ -92,12 +94,32 @@ end end + context 'with in_person_verification_needed' do + it 'deactivates a profile for in person verification' do + profile = subject.save_profile( + fraud_pending_reason: nil, + gpo_verification_needed: false, + deactivation_reason: nil, + in_person_verification_needed: true, + ) + + expect(profile.activated_at).to be_nil + expect(profile.active).to eq(false) + expect(profile.deactivation_reason).to eq('in_person_verification_pending') + expect(profile.fraud_review_pending?).to eq(false) + expect(profile.gpo_verification_pending_at.present?).to eq(false) + expect(profile.initiating_service_provider).to eq(nil) + expect(profile.verified_at).to be_nil + end + end + context 'as active' do it 'creates an active profile' do profile = subject.save_profile( fraud_pending_reason: nil, gpo_verification_needed: false, deactivation_reason: nil, + in_person_verification_needed: false, ) expect(profile.activated_at).to be_nil @@ -118,6 +140,7 @@ fraud_pending_reason: nil, gpo_verification_needed: false, deactivation_reason: nil, + in_person_verification_needed: false, ) expect(profile.activated_at).to be_nil From 4bb111fe37b16045634f3a7165e9fe7e581f1acc Mon Sep 17 00:00:00 2001 From: Alex Bradley Date: Mon, 7 Aug 2023 17:21:15 -0400 Subject: [PATCH 02/14] added profile#deactivate_for_in_person_verification added this method and split from profile#deactivate_for_in_person_verification_and_schedule_enrollment --- app/models/profile.rb | 7 +++++++ spec/models/profile_spec.rb | 24 ++++++++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/app/models/profile.rb b/app/models/profile.rb index 9a936b93ed9..125bf623576 100644 --- a/app/models/profile.rb +++ b/app/models/profile.rb @@ -152,6 +152,13 @@ def in_person_verification_pending? deactivation_reason == 'in_person_verification_pending' end + def deactivate_for_in_person_verification + transaction do + deactivate(:in_person_verification_pending) # to be deprecated + update!(active: false, in_person_verification_pending_at: Time.zone.now) + end + end + def deactivate_for_in_person_verification_and_schedule_enrollment(pii) transaction do UspsInPersonProofing::EnrollmentHelper.schedule_in_person_enrollment(user, pii) diff --git a/spec/models/profile_spec.rb b/spec/models/profile_spec.rb index 95ce3cbb70e..5d8fc3a94f4 100644 --- a/spec/models/profile_spec.rb +++ b/spec/models/profile_spec.rb @@ -902,6 +902,30 @@ # TODO: does deactivating make sense for a non-active profile? Should we prevent it? # TODO: related: should we test against an active profile here? + describe 'deactivate_for_in_person_verification' do + it 'deactivates a profile for in_person_verification' do + profile = create(:profile, user: user) + + expect(profile.activated_at).to be_nil + expect(profile.active).to eq(false) + expect(profile.deactivation_reason).to be_nil # to change + expect(profile.fraud_review_pending?).to eq(false) + expect(profile.gpo_verification_pending_at).to be_nil + expect(profile.initiating_service_provider).to be_nil + expect(profile.verified_at).to be_nil + + profile.deactivate_for_in_person_verification + + expect(profile.activated_at).to be_nil + expect(profile.active).to eq(false) + expect(profile.deactivation_reason).to eq('in_person_verification_pending') # changed + expect(profile.fraud_review_pending?).to eq(false) + expect(profile.gpo_verification_pending_at).to be_nil + expect(profile.initiating_service_provider).to be_nil + expect(profile.verified_at).to be_nil + end + end + describe '#deactivate_for_in_person_verification_and_schedule_enrollment' do it 'sets deactivation reason to in_person_verification_pending' do profile = create(:profile, user: user) From 7aad7ef4922a14ce9707a7270c42e3b6d4d31cb6 Mon Sep 17 00:00:00 2001 From: Alex Bradley Date: Mon, 7 Aug 2023 17:32:39 -0400 Subject: [PATCH 03/14] profile#activate_after_passing_in_person nils out in person timestamp --- app/models/profile.rb | 1 + spec/factories/profiles.rb | 1 + spec/models/profile_spec.rb | 2 ++ 3 files changed, 4 insertions(+) diff --git a/app/models/profile.rb b/app/models/profile.rb index 125bf623576..ac4ce88cabf 100644 --- a/app/models/profile.rb +++ b/app/models/profile.rb @@ -123,6 +123,7 @@ def activate_after_passing_in_person fraud_rejection_at: nil, fraud_pending_reason: nil, deactivation_reason: nil, + in_person_verification_pending_at: nil, ) activate end diff --git a/spec/factories/profiles.rb b/spec/factories/profiles.rb index 7e0b5177bde..009f29963f1 100644 --- a/spec/factories/profiles.rb +++ b/spec/factories/profiles.rb @@ -35,6 +35,7 @@ trait :in_person_verification_pending do deactivation_reason { :in_person_verification_pending } + in_person_verification_pending_at { 15.days.ago } end trait :fraud_pending_reason do diff --git a/spec/models/profile_spec.rb b/spec/models/profile_spec.rb index 5d8fc3a94f4..caeb755b1fa 100644 --- a/spec/models/profile_spec.rb +++ b/spec/models/profile_spec.rb @@ -725,6 +725,7 @@ expect(profile.deactivation_reason).to eq 'in_person_verification_pending' # to change expect(profile.fraud_review_pending?).to eq(true) # to change expect(profile.gpo_verification_pending_at).to be_nil + expect(profile.in_person_verification_pending_at).to_not be_nil expect(profile.initiating_service_provider).to be_nil expect(profile.verified_at).to be_nil # to change @@ -735,6 +736,7 @@ expect(profile.deactivation_reason).to be_nil # changed expect(profile.fraud_review_pending?).to eq(false) # changed expect(profile.gpo_verification_pending_at).to be_nil + expect(profile.in_person_verification_pending_at).to be_nil expect(profile.initiating_service_provider).to be_nil expect(profile.verified_at).to be_present # changed From bb71c214b7cc2daef01bdd5ed31ea3a558e80d7d Mon Sep 17 00:00:00 2001 From: Alex Bradley Date: Mon, 7 Aug 2023 17:56:35 -0400 Subject: [PATCH 04/14] use new profile#deactivate_for_in_person_verification method --- app/models/profile.rb | 3 ++- app/services/idv/profile_maker.rb | 4 +--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/app/models/profile.rb b/app/models/profile.rb index ac4ce88cabf..b9b56b634ad 100644 --- a/app/models/profile.rb +++ b/app/models/profile.rb @@ -150,7 +150,8 @@ def has_fraud_deactivation_reason? def in_person_verification_pending? # note: deactivation reason will be replaced by timestamp column - deactivation_reason == 'in_person_verification_pending' + deactivation_reason == 'in_person_verification_pending' || + in_person_verification_pending_at? end def deactivate_for_in_person_verification diff --git a/app/services/idv/profile_maker.rb b/app/services/idv/profile_maker.rb index b0f946859e9..56b0c759937 100644 --- a/app/services/idv/profile_maker.rb +++ b/app/services/idv/profile_maker.rb @@ -22,9 +22,7 @@ def save_profile( ) profile = Profile.new(user: user, active: false, deactivation_reason: deactivation_reason) profile.initiating_service_provider = initiating_service_provider - if in_person_verification_needed - profile.deactivation_reason = :in_person_verification_pending - end + profile.deactivate_for_in_person_verification if in_person_verification_needed profile.encrypt_pii(pii_attributes, user_password) profile.proofing_components = current_proofing_components profile.fraud_pending_reason = fraud_pending_reason From df0ff8dddf1a0908eacbe043a2ba2f8869465248 Mon Sep 17 00:00:00 2001 From: Alex Bradley Date: Tue, 8 Aug 2023 14:39:11 -0400 Subject: [PATCH 05/14] separated schedule and deactivate for ipp in gpo verify form --- app/forms/gpo_verify_form.rb | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/app/forms/gpo_verify_form.rb b/app/forms/gpo_verify_form.rb index 3621cdad235..df85c6c2f0b 100644 --- a/app/forms/gpo_verify_form.rb +++ b/app/forms/gpo_verify_form.rb @@ -21,9 +21,9 @@ def submit if result pending_profile&.remove_gpo_deactivation_reason - if pending_profile&.pending_in_person_enrollment? - # note: pending_profile is not active here - pending_profile&.deactivate_for_in_person_verification_and_schedule_enrollment(pii) + + if profile_has_pending_in_person_enrollment? + schedule_in_person_enrollment_and_deactivate_profile elsif fraud_check_failed && threatmetrix_enabled? pending_profile&.deactivate_for_fraud_review elsif fraud_check_failed @@ -61,6 +61,15 @@ def gpo_confirmation_code pending_profile.gpo_confirmation_codes.first_with_otp(otp) end + def profile_has_pending_in_person_enrollment? + pending_profile&.pending_in_person_enrollment? + end + + def schedule_in_person_enrollment_and_deactivate_profile + UspsInPersonProofing::EnrollmentHelper.schedule_in_person_enrollment(user, pii) + pending_profile&.deactivate_for_in_person_verification + end + def which_letter return if !valid_otp? pending_profile.gpo_confirmation_codes.sort_by(&:code_sent_at). From 89f0ac855a5188020de5761223d24d999ed0afdf Mon Sep 17 00:00:00 2001 From: Alex Bradley Date: Tue, 8 Aug 2023 14:41:15 -0400 Subject: [PATCH 06/14] removed profile#deactivate_for_in_person_verification_and_schedule_enrollment removed this method as coupling them didn't work when creating a profile for phone finder. --- app/models/profile.rb | 7 ------- spec/models/profile_spec.rb | 24 ------------------------ 2 files changed, 31 deletions(-) diff --git a/app/models/profile.rb b/app/models/profile.rb index b9b56b634ad..1e477e81aca 100644 --- a/app/models/profile.rb +++ b/app/models/profile.rb @@ -161,13 +161,6 @@ def deactivate_for_in_person_verification end end - def deactivate_for_in_person_verification_and_schedule_enrollment(pii) - transaction do - UspsInPersonProofing::EnrollmentHelper.schedule_in_person_enrollment(user, pii) - deactivate(:in_person_verification_pending) - end - end - def deactivate_for_gpo_verification update!(active: false, gpo_verification_pending_at: Time.zone.now) end diff --git a/spec/models/profile_spec.rb b/spec/models/profile_spec.rb index caeb755b1fa..b84f1d3f13f 100644 --- a/spec/models/profile_spec.rb +++ b/spec/models/profile_spec.rb @@ -928,30 +928,6 @@ end end - describe '#deactivate_for_in_person_verification_and_schedule_enrollment' do - it 'sets deactivation reason to in_person_verification_pending' do - profile = create(:profile, user: user) - - expect(profile.activated_at).to be_nil - expect(profile.active).to eq(false) - expect(profile.deactivation_reason).to be_nil # to change - expect(profile.fraud_review_pending?).to eq(false) - expect(profile.gpo_verification_pending_at).to be_nil - expect(profile.initiating_service_provider).to be_nil - expect(profile.verified_at).to be_nil - - profile.deactivate_for_in_person_verification_and_schedule_enrollment(pii) - - expect(profile.activated_at).to be_nil - expect(profile.active).to eq(false) - expect(profile.deactivation_reason).to eq('in_person_verification_pending') # changed - expect(profile.fraud_review_pending?).to eq(false) - expect(profile.gpo_verification_pending_at).to be_nil - expect(profile.initiating_service_provider).to be_nil - expect(profile.verified_at).to be_nil - end - end - # TODO: does deactivating make sense for a non-active profile? Should we prevent it? # TODO: related: should we test against an active profile here? describe '#deactivate_for_gpo_verification' do From c4fdd3f69615f8d9ca33af6d36bd3f5a032a79b5 Mon Sep 17 00:00:00 2001 From: Alex Bradley Date: Tue, 8 Aug 2023 14:49:58 -0400 Subject: [PATCH 07/14] change in_person_enrollment to pending_in_person_enrollment in idvsession --- app/services/idv/session.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/services/idv/session.rb b/app/services/idv/session.rb index 88dbc3582be..7d16857a915 100644 --- a/app/services/idv/session.rb +++ b/app/services/idv/session.rb @@ -56,7 +56,7 @@ def create_profile_from_applicant_with_password(user_password) profile = profile_maker.save_profile( fraud_pending_reason: threatmetrix_fraud_pending_reason, gpo_verification_needed: gpo_verification_needed?, - in_person_verification_needed: in_person_enrollment?, + in_person_verification_needed: pending_in_person_enrollment?, ) profile.activate unless profile.reason_not_to_activate @@ -72,7 +72,7 @@ def create_profile_from_applicant_with_password(user_password) move_pii_to_user_session elsif address_verification_mechanism == 'gpo' create_gpo_entry - elsif in_person_enrollment? + elsif pending_in_person_enrollment? UspsInPersonProofing::EnrollmentHelper.schedule_in_person_enrollment( current_user, pii, @@ -138,7 +138,7 @@ def add_failed_phone_step_number(phone) failed_phone_step_numbers << phone_e164 if !failed_phone_step_numbers.include?(phone_e164) end - def in_person_enrollment? + def pending_in_person_enrollment? current_user.proofing_component&.document_check == Idp::Constants::Vendors::USPS end From b1873d9f251dbf17230911603d4271d88730ba7b Mon Sep 17 00:00:00 2001 From: Alex Bradley Date: Tue, 8 Aug 2023 15:46:08 -0400 Subject: [PATCH 08/14] add changelog changelog: Internal, IdV IPP, write to in_person_verification_pending_at From b2d340257fed803857236cb9f7e7b9d53bd73753 Mon Sep 17 00:00:00 2001 From: Alex Bradley Date: Tue, 8 Aug 2023 15:49:23 -0400 Subject: [PATCH 09/14] fixup --- app/services/idv/session.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/services/idv/session.rb b/app/services/idv/session.rb index 7d16857a915..e482f1f2562 100644 --- a/app/services/idv/session.rb +++ b/app/services/idv/session.rb @@ -102,7 +102,7 @@ def clear end def associate_in_person_enrollment_with_profile - return unless in_person_enrollment? && current_user.establishing_in_person_enrollment + return unless pending_in_person_enrollment? && current_user.establishing_in_person_enrollment current_user.establishing_in_person_enrollment.update(profile: profile) end From 969bcfb9452c6d209550c7c19305fd0fff2e92fc Mon Sep 17 00:00:00 2001 From: Alex Bradley Date: Tue, 8 Aug 2023 15:51:53 -0400 Subject: [PATCH 10/14] add in_person_verificaion_needed to personal key spec --- spec/controllers/idv/personal_key_controller_spec.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/spec/controllers/idv/personal_key_controller_spec.rb b/spec/controllers/idv/personal_key_controller_spec.rb index 169e8e3e126..27c6a8906d4 100644 --- a/spec/controllers/idv/personal_key_controller_spec.rb +++ b/spec/controllers/idv/personal_key_controller_spec.rb @@ -15,6 +15,7 @@ def stub_idv_session profile = profile_maker.save_profile( fraud_pending_reason: nil, gpo_verification_needed: false, + in_person_verification_needed: false, ) idv_session.pii = profile_maker.pii_attributes idv_session.profile_id = profile.id From 1656a6343248b01452b9d742aea77b48e625eb84 Mon Sep 17 00:00:00 2001 From: Alex Bradley Date: Tue, 8 Aug 2023 16:27:30 -0400 Subject: [PATCH 11/14] rename to pending_in_person_enrollment --- app/controllers/concerns/idv_step_concern.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/concerns/idv_step_concern.rb b/app/controllers/concerns/idv_step_concern.rb index 1c94cd9e51f..ae77a789e86 100644 --- a/app/controllers/concerns/idv_step_concern.rb +++ b/app/controllers/concerns/idv_step_concern.rb @@ -64,7 +64,7 @@ def confirm_document_capture_complete def confirm_verify_info_step_complete return if idv_session.verify_info_step_complete? - if idv_session.in_person_enrollment? + if idv_session.pending_in_person_enrollment? redirect_to idv_in_person_verify_info_url else redirect_to idv_verify_info_url From 09ac0441309c7597fd177d717203d87fb1c041ac Mon Sep 17 00:00:00 2001 From: Alex Bradley Date: Wed, 9 Aug 2023 10:20:01 -0400 Subject: [PATCH 12/14] added in_person_verification_pending_at to specs --- app/models/profile.rb | 3 +- spec/models/profile_spec.rb | 46 +++++++++++++++++++++++++ spec/services/idv/profile_maker_spec.rb | 1 + 3 files changed, 48 insertions(+), 2 deletions(-) diff --git a/app/models/profile.rb b/app/models/profile.rb index 1e477e81aca..601ff59c8ce 100644 --- a/app/models/profile.rb +++ b/app/models/profile.rb @@ -150,8 +150,7 @@ def has_fraud_deactivation_reason? def in_person_verification_pending? # note: deactivation reason will be replaced by timestamp column - deactivation_reason == 'in_person_verification_pending' || - in_person_verification_pending_at? + deactivation_reason == 'in_person_verification_pending' end def deactivate_for_in_person_verification diff --git a/spec/models/profile_spec.rb b/spec/models/profile_spec.rb index b84f1d3f13f..10aa349c740 100644 --- a/spec/models/profile_spec.rb +++ b/spec/models/profile_spec.rb @@ -238,6 +238,7 @@ expect(profile.deactivation_reason).to be_nil expect(profile.fraud_review_pending?).to eq(false) expect(profile.gpo_verification_pending_at).to be_nil + expect(profile.in_person_verification_pending_at).to be_nil expect(profile.initiating_service_provider).to be_nil expect(profile.verified_at).to be_nil # to change @@ -248,6 +249,7 @@ expect(profile.deactivation_reason).to be_nil expect(profile.fraud_review_pending?).to eq(false) expect(profile.gpo_verification_pending_at).to be_nil + expect(profile.in_person_verification_pending_at).to be_nil expect(profile.initiating_service_provider).to be_nil expect(profile.verified_at).to be_present # changed @@ -262,6 +264,7 @@ expect(profile.deactivation_reason).to be_nil expect(profile.fraud_review_pending?).to eq(false) expect(profile.gpo_verification_pending_at).to be_nil + expect(profile.in_person_verification_pending_at).to be_nil expect(profile.initiating_service_provider).to be_nil expect(profile.verified_at).to be_nil # to change @@ -272,6 +275,7 @@ expect(profile.deactivation_reason).to be_nil expect(profile.fraud_review_pending?).to eq(false) expect(profile.gpo_verification_pending_at).to be_nil + expect(profile.in_person_verification_pending_at).to be_nil expect(profile.initiating_service_provider).to be_nil expect(profile.verified_at).to be_present # changed @@ -292,6 +296,7 @@ expect(profile.deactivation_reason).to be_nil expect(profile.fraud_review_pending?).to eq(false) expect(profile.gpo_verification_pending_at).to be_nil + expect(profile.in_person_verification_pending_at).to be_nil expect(profile.initiating_service_provider).to be_nil expect(profile.verified_at).to be_nil # to change @@ -301,6 +306,7 @@ expect(active_profile.deactivation_reason).to be_nil expect(active_profile.fraud_review_pending?).to eq(false) expect(active_profile.gpo_verification_pending_at).to be_nil + expect(active_profile.in_person_verification_pending_at).to be_nil expect(active_profile.initiating_service_provider).to be_nil expect(active_profile.verified_at).to be_present @@ -313,6 +319,7 @@ expect(profile.deactivation_reason).to be_nil expect(profile.fraud_review_pending?).to eq(false) expect(profile.gpo_verification_pending_at).to be_nil + expect(profile.in_person_verification_pending_at).to be_nil expect(profile.initiating_service_provider).to be_nil expect(profile.verified_at).to be_present # changed @@ -322,6 +329,7 @@ expect(active_profile.deactivation_reason).to be_nil expect(active_profile.fraud_review_pending?).to eq(false) expect(active_profile.gpo_verification_pending_at).to be_nil + expect(active_profile.in_person_verification_pending_at).to be_nil expect(active_profile.initiating_service_provider).to be_nil # !!! a user can have multiple verified profiles @@ -338,6 +346,7 @@ expect(profile.deactivation_reason).to be_nil expect(profile.fraud_review_pending?).to eq(false) expect(profile.gpo_verification_pending_at).to be_nil + expect(profile.in_person_verification_pending_at).to be_nil expect(profile.initiating_service_provider).to be_nil expect(profile.verified_at).to be_present @@ -348,6 +357,7 @@ expect(profile.deactivation_reason).to be_nil expect(profile.fraud_review_pending?).to eq(false) expect(profile.gpo_verification_pending_at).to be_nil + expect(profile.in_person_verification_pending_at).to be_nil expect(profile.initiating_service_provider).to be_nil expect(profile.verified_at).to be_present # changed end @@ -365,6 +375,7 @@ expect(profile.deactivation_reason).to be_nil expect(profile.fraud_review_pending?).to eq(false) expect(profile.gpo_verification_pending_at).to be_nil + expect(profile.in_person_verification_pending_at).to be_nil expect(profile.initiating_service_provider).to be_nil expect(profile.verified_at).to be_nil # to change @@ -375,6 +386,7 @@ expect(profile.deactivation_reason).to be_nil expect(profile.fraud_review_pending?).to eq(false) expect(profile.gpo_verification_pending_at).to be_nil + expect(profile.in_person_verification_pending_at).to be_nil expect(profile.initiating_service_provider).to be_nil expect(profile.verified_at).to be_present # changed end @@ -387,6 +399,7 @@ expect(profile.deactivation_reason).to be_nil expect(profile.fraud_review_pending?).to eq(false) expect(profile.gpo_verification_pending_at).to be_nil + expect(profile.in_person_verification_pending_at).to be_nil expect(profile.initiating_service_provider).to be_nil expect(profile.verified_at).to be_nil # to change @@ -397,6 +410,7 @@ expect(profile.deactivation_reason).to be_nil expect(profile.fraud_review_pending?).to eq(false) expect(profile.gpo_verification_pending_at).to be_nil + expect(profile.in_person_verification_pending_at).to be_nil expect(profile.initiating_service_provider).to be_nil expect(profile.verified_at).to be_present # changed end @@ -416,6 +430,7 @@ expect(profile.deactivation_reason).to be_nil expect(profile.fraud_review_pending?).to eq(false) expect(profile.gpo_verification_pending_at).to be_present + expect(profile.in_person_verification_pending_at).to be_nil expect(profile.initiating_service_provider).to be_nil expect(profile.verified_at).to be_nil @@ -429,6 +444,7 @@ expect(profile.deactivation_reason).to be_nil expect(profile.fraud_review_pending?).to eq(false) expect(profile.gpo_verification_pending_at).to be_present + expect(profile.in_person_verification_pending_at).to be_nil expect(profile.initiating_service_provider).to be_nil expect(profile.verified_at).to be_nil @@ -443,6 +459,7 @@ expect(profile.deactivation_reason).to be_nil expect(profile.fraud_review_pending?).to eq(true) expect(profile.gpo_verification_pending_at).to be_nil + expect(profile.in_person_verification_pending_at).to be_nil expect(profile.initiating_service_provider).to be_nil expect(profile.verified_at).to be_nil @@ -456,6 +473,7 @@ expect(profile.deactivation_reason).to be_nil expect(profile.fraud_review_pending?).to eq(true) expect(profile.gpo_verification_pending_at).to be_nil + expect(profile.in_person_verification_pending_at).to be_nil expect(profile.initiating_service_provider).to be_nil expect(profile.verified_at).to be_nil @@ -470,6 +488,7 @@ expect(profile.deactivation_reason).to be_nil expect(profile.fraud_review_pending?).to eq(false) expect(profile.gpo_verification_pending_at).to be_nil + expect(profile.in_person_verification_pending_at).to be_nil expect(profile.initiating_service_provider).to be_nil expect(profile.verified_at).to be_nil @@ -483,6 +502,7 @@ expect(profile.deactivation_reason).to be_nil expect(profile.fraud_review_pending?).to eq(false) expect(profile.gpo_verification_pending_at).to be_nil + expect(profile.in_person_verification_pending_at).to be_nil expect(profile.initiating_service_provider).to be_nil expect(profile.verified_at).to be_nil @@ -512,6 +532,7 @@ expect(profile.deactivation_reason).to be_nil # to change expect(profile.fraud_review_pending?).to eq(false) expect(profile.gpo_verification_pending_at).to be_nil + expect(profile.in_person_verification_pending_at).to be_nil expect(profile.initiating_service_provider).to be_nil expect(profile.verified_at).to be_present @@ -522,6 +543,7 @@ expect(profile.deactivation_reason).to eq('password_reset') # changed expect(profile.fraud_review_pending?).to eq(false) expect(profile.gpo_verification_pending_at).to be_nil + expect(profile.in_person_verification_pending_at).to be_nil expect(profile.initiating_service_provider).to be_nil # !!! does a deactivated verified profile remain verified? @@ -541,6 +563,7 @@ expect(profile.deactivation_reason).to be_nil expect(profile.fraud_review_pending?).to eq(false) expect(profile.gpo_verification_pending_at).to be_present # to change + expect(profile.in_person_verification_pending_at).to be_nil expect(profile.initiating_service_provider).to be_nil expect(profile.verified_at).to be_nil @@ -551,6 +574,7 @@ expect(profile.deactivation_reason).to be_nil expect(profile.fraud_review_pending?).to eq(false) expect(profile.gpo_verification_pending_at).to be_nil # changed + expect(profile.in_person_verification_pending_at).to be_nil expect(profile.initiating_service_provider).to be_nil expect(profile.verified_at).to be_nil @@ -575,6 +599,7 @@ expect(profile.deactivation_reason).to eq 'password_reset' # will change but shouldn't expect(profile.fraud_review_pending?).to eq(false) expect(profile.gpo_verification_pending_at).to be_nil + expect(profile.in_person_verification_pending_at).to be_nil expect(profile.initiating_service_provider).to be_nil expect(profile.verified_at).to be_nil @@ -586,6 +611,7 @@ expect(profile.deactivation_reason).to be_nil # !!! changed expect(profile.fraud_review_pending?).to eq(false) expect(profile.gpo_verification_pending_at).to be_nil + expect(profile.in_person_verification_pending_at).to be_nil expect(profile.initiating_service_provider).to be_nil expect(profile.verified_at).to be_nil end @@ -604,6 +630,7 @@ expect(profile.deactivation_reason).to eq 'password_reset' # to change expect(profile.fraud_review_pending?).to eq(false) expect(profile.gpo_verification_pending_at).to be_nil + expect(profile.in_person_verification_pending_at).to be_nil expect(profile.initiating_service_provider).to be_nil expect(profile.verified_at).to eq verified_at @@ -614,6 +641,7 @@ expect(profile.deactivation_reason).to be_nil # changed expect(profile.fraud_review_pending?).to eq(false) expect(profile.gpo_verification_pending_at).to be_nil + expect(profile.in_person_verification_pending_at).to be_nil expect(profile.initiating_service_provider).to be_nil expect(profile.verified_at).to eq verified_at end @@ -632,6 +660,7 @@ expect(profile.deactivation_reason).to eq('password_reset') # to change expect(profile.fraud_review_pending?).to eq(true) expect(profile.gpo_verification_pending_at).to be_nil + expect(profile.in_person_verification_pending_at).to be_nil expect(profile.initiating_service_provider).to be_nil expect(profile.verified_at).to be_nil @@ -645,6 +674,7 @@ expect(profile.deactivation_reason).to be_nil # changed expect(profile.fraud_review_pending?).to eq(true) expect(profile.gpo_verification_pending_at).to be_nil + expect(profile.in_person_verification_pending_at).to be_nil expect(profile.initiating_service_provider).to be_nil expect(profile.verified_at).to be_nil @@ -663,6 +693,7 @@ expect(profile.deactivation_reason).to eq 'encryption_error' expect(profile.fraud_review_pending?).to eq(false) expect(profile.gpo_verification_pending_at).to be_nil + expect(profile.in_person_verification_pending_at).to be_nil expect(profile.initiating_service_provider).to be_nil expect(profile.verified_at).to be_nil @@ -673,6 +704,7 @@ expect(profile.deactivation_reason).to eq 'encryption_error' expect(profile.fraud_review_pending?).to eq(false) expect(profile.gpo_verification_pending_at).to be_nil + expect(profile.in_person_verification_pending_at).to be_nil expect(profile.initiating_service_provider).to be_nil expect(profile.verified_at).to be_nil end @@ -691,6 +723,7 @@ expect(profile.deactivation_reason).to eq('password_reset') expect(profile.fraud_review_pending?).to eq(false) expect(profile.gpo_verification_pending_at).to be_nil + expect(profile.in_person_verification_pending_at).to be_nil expect(profile.initiating_service_provider).to be_nil expect(profile.verified_at).to be_nil @@ -703,6 +736,7 @@ expect(profile.deactivation_reason).to eq('password_reset') expect(profile.fraud_review_pending?).to eq(false) expect(profile.gpo_verification_pending_at).to be_nil + expect(profile.in_person_verification_pending_at).to be_nil expect(profile.initiating_service_provider).to be_nil expect(profile.verified_at).to be_nil @@ -761,6 +795,7 @@ expect(profile.deactivation_reason).to eq('in_person_verification_pending') expect(profile.fraud_review_pending?).to eq(true) expect(profile.gpo_verification_pending_at).to be_nil + expect(profile.in_person_verification_pending_at).to be_present expect(profile.initiating_service_provider).to be_nil expect(profile.verified_at).to be_nil @@ -773,6 +808,7 @@ expect(profile.deactivation_reason).to eq('in_person_verification_pending') expect(profile.fraud_review_pending?).to eq(true) expect(profile.gpo_verification_pending_at).to be_nil + expect(profile.in_person_verification_pending_at).to be_present expect(profile.initiating_service_provider).to be_nil expect(profile.verified_at).to be_nil @@ -790,6 +826,7 @@ expect(profile.deactivation_reason).to be_nil expect(profile.fraud_review_pending?).to eq(true) # to change expect(profile.gpo_verification_pending_at).to be_nil + expect(profile.in_person_verification_pending_at).to be_nil expect(profile.initiating_service_provider).to be_nil expect(profile.verified_at).to be_nil # to change @@ -800,6 +837,7 @@ expect(profile.deactivation_reason).to be_nil expect(profile.fraud_review_pending?).to eq(false) # changed expect(profile.gpo_verification_pending_at).to be_nil + expect(profile.in_person_verification_pending_at).to be_nil expect(profile.initiating_service_provider).to be_nil expect(profile.verified_at).to be_present # changed @@ -866,6 +904,7 @@ expect(profile.deactivation_reason).to be_nil expect(profile.fraud_review_pending?).to eq(true) # to change expect(profile.gpo_verification_pending_at).to be_nil + expect(profile.in_person_verification_pending_at).to be_nil expect(profile.initiating_service_provider).to be_nil expect(profile.verified_at).to be_nil # to change @@ -880,6 +919,7 @@ expect(profile.deactivation_reason).to be_nil expect(profile.fraud_review_pending?).to eq(false) # changed expect(profile.gpo_verification_pending_at).to be_nil + expect(profile.in_person_verification_pending_at).to be_nil expect(profile.initiating_service_provider).to be_nil expect(profile.verified_at).to be_present # changed @@ -913,6 +953,7 @@ expect(profile.deactivation_reason).to be_nil # to change expect(profile.fraud_review_pending?).to eq(false) expect(profile.gpo_verification_pending_at).to be_nil + expect(profile.in_person_verification_pending_at).to be_nil expect(profile.initiating_service_provider).to be_nil expect(profile.verified_at).to be_nil @@ -923,6 +964,7 @@ expect(profile.deactivation_reason).to eq('in_person_verification_pending') # changed expect(profile.fraud_review_pending?).to eq(false) expect(profile.gpo_verification_pending_at).to be_nil + expect(profile.in_person_verification_pending_at).to be_present # changed expect(profile.initiating_service_provider).to be_nil expect(profile.verified_at).to be_nil end @@ -939,6 +981,7 @@ expect(profile.deactivation_reason).to be_nil expect(profile.fraud_review_pending?).to eq(false) expect(profile.gpo_verification_pending_at).to be_nil # to change + expect(profile.in_person_verification_pending_at).to be_nil expect(profile.initiating_service_provider).to be_nil expect(profile.verified_at).to be_nil @@ -949,6 +992,7 @@ expect(profile.deactivation_reason).to be_nil expect(profile.fraud_review_pending?).to eq(false) expect(profile.gpo_verification_pending_at).to be_present # changed + expect(profile.in_person_verification_pending_at).to be_nil expect(profile.initiating_service_provider).to be_nil expect(profile.verified_at).to be_nil @@ -968,6 +1012,7 @@ expect(profile.deactivation_reason).to be_nil expect(profile.fraud_review_pending?).to eq(false) # to change expect(profile.gpo_verification_pending_at).to be_nil + expect(profile.in_person_verification_pending_at).to be_nil expect(profile.initiating_service_provider).to be_nil expect(profile.verified_at).to be_nil @@ -979,6 +1024,7 @@ expect(profile.deactivation_reason).to be_nil expect(profile.fraud_review_pending?).to eq(true) # changed expect(profile.gpo_verification_pending_at).to be_nil + expect(profile.in_person_verification_pending_at).to be_nil expect(profile.initiating_service_provider).to be_nil expect(profile.verified_at).to be_nil diff --git a/spec/services/idv/profile_maker_spec.rb b/spec/services/idv/profile_maker_spec.rb index 407d4df77a8..1d554193ba8 100644 --- a/spec/services/idv/profile_maker_spec.rb +++ b/spec/services/idv/profile_maker_spec.rb @@ -106,6 +106,7 @@ expect(profile.activated_at).to be_nil expect(profile.active).to eq(false) expect(profile.deactivation_reason).to eq('in_person_verification_pending') + expect(profile.in_person_verification_pending_at).to_not be_nil expect(profile.fraud_review_pending?).to eq(false) expect(profile.gpo_verification_pending_at.present?).to eq(false) expect(profile.initiating_service_provider).to eq(nil) From 98658ee27e043a55e7d81e1df5634af60bd0bbd8 Mon Sep 17 00:00:00 2001 From: Alex Bradley Date: Wed, 9 Aug 2023 11:27:17 -0400 Subject: [PATCH 13/14] remove attr accessor for in_person --- app/services/idv/profile_maker.rb | 1 - 1 file changed, 1 deletion(-) diff --git a/app/services/idv/profile_maker.rb b/app/services/idv/profile_maker.rb index 56b0c759937..fb126b8e16e 100644 --- a/app/services/idv/profile_maker.rb +++ b/app/services/idv/profile_maker.rb @@ -45,7 +45,6 @@ def current_proofing_components :user_password, :phone_confirmed, :initiating_service_provider, - :in_person_verification_pending, ) attr_writer :pii_attributes end From 964bb6862694352b28c8f2cf181ebb4c611f7c8c Mon Sep 17 00:00:00 2001 From: Alex Bradley Date: Wed, 9 Aug 2023 14:31:15 -0400 Subject: [PATCH 14/14] to_not be_nil -> to be_present --- spec/models/profile_spec.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/spec/models/profile_spec.rb b/spec/models/profile_spec.rb index 10aa349c740..b74fa678bcc 100644 --- a/spec/models/profile_spec.rb +++ b/spec/models/profile_spec.rb @@ -759,7 +759,7 @@ expect(profile.deactivation_reason).to eq 'in_person_verification_pending' # to change expect(profile.fraud_review_pending?).to eq(true) # to change expect(profile.gpo_verification_pending_at).to be_nil - expect(profile.in_person_verification_pending_at).to_not be_nil + expect(profile.in_person_verification_pending_at).to be_present expect(profile.initiating_service_provider).to be_nil expect(profile.verified_at).to be_nil # to change @@ -909,8 +909,8 @@ expect(profile.verified_at).to be_nil # to change expect(profile).to_not be_active - expect(profile.fraud_review_pending_at).to_not be_nil - expect(profile.fraud_pending_reason).to_not be_nil + expect(profile.fraud_review_pending_at).to be_present + expect(profile.fraud_pending_reason).to be_present profile.activate_after_fraud_review_unnecessary