diff --git a/app/controllers/concerns/idv/verify_info_concern.rb b/app/controllers/concerns/idv/verify_info_concern.rb index a01e5059320..f257060200e 100644 --- a/app/controllers/concerns/idv/verify_info_concern.rb +++ b/app/controllers/concerns/idv/verify_info_concern.rb @@ -30,7 +30,8 @@ def shared_update should_proof_state_id: should_use_aamva?(pii), trace_id: amzn_trace_id, user_id: current_user.id, - threatmetrix_session_id: flow_session[:threatmetrix_session_id], + threatmetrix_session_id: + idv_session.threatmetrix_session_id || flow_session[:threatmetrix_session_id], request_ip: request.remote_ip, double_address_verification: capture_secondary_id_enabled, ) diff --git a/app/services/idv/session.rb b/app/services/idv/session.rb index b873a727735..1b9b30f9134 100644 --- a/app/services/idv/session.rb +++ b/app/services/idv/session.rb @@ -23,6 +23,7 @@ class Session resolution_successful skip_hybrid_handoff threatmetrix_review_status + threatmetrix_session_id user_phone_confirmation vendor_phone_confirmation verify_info_step_document_capture_session_uuid diff --git a/app/services/idv/steps/threat_metrix_step_helper.rb b/app/services/idv/steps/threat_metrix_step_helper.rb index b1b946c22f2..24ec29174c9 100644 --- a/app/services/idv/steps/threat_metrix_step_helper.rb +++ b/app/services/idv/steps/threat_metrix_step_helper.rb @@ -12,8 +12,12 @@ def threatmetrix_view_variables end def generate_threatmetrix_session_id - flow_session[:threatmetrix_session_id] = SecureRandom.uuid if !updating_ssn? - flow_session[:threatmetrix_session_id] + if !updating_ssn? + idv_session.threatmetrix_session_id = SecureRandom.uuid + # for 50/50 state, to be removed in next deploy + flow_session[:threatmetrix_session_id] = idv_session.threatmetrix_session_id + end + idv_session.threatmetrix_session_id || flow_session[:threatmetrix_session_id] end # @return [Array] diff --git a/spec/controllers/idv/in_person/ssn_controller_spec.rb b/spec/controllers/idv/in_person/ssn_controller_spec.rb index eb7056b38dd..df614b291e9 100644 --- a/spec/controllers/idv/in_person/ssn_controller_spec.rb +++ b/spec/controllers/idv/in_person/ssn_controller_spec.rb @@ -84,6 +84,11 @@ expect(flow_session[:threatmetrix_session_id]).to_not eq(nil) end + it 'adds a threatmetrix session id to idv_session' do + get :show + expect(subject.idv_session.threatmetrix_session_id).to_not eq(nil) + end + context 'with an ssn in session' do let(:referer) { idv_in_person_step_url(step: :address) } before do @@ -180,6 +185,14 @@ subject.threatmetrix_view_variables expect(flow_session[:threatmetrix_session_id]).to eq(session_id) end + + it 'does not change idv_session threatmetrix_session_id when updating ssn' do + flow_session[:pii_from_user][:ssn] = ssn + put :update, params: params + session_id = subject.idv_session.threatmetrix_session_id + subject.threatmetrix_view_variables + expect(subject.idv_session.threatmetrix_session_id).to eq(session_id) + end end context 'invalid ssn' do diff --git a/spec/controllers/idv/ssn_controller_spec.rb b/spec/controllers/idv/ssn_controller_spec.rb index 5fb49b9fbed..ffe86c191ec 100644 --- a/spec/controllers/idv/ssn_controller_spec.rb +++ b/spec/controllers/idv/ssn_controller_spec.rb @@ -222,13 +222,27 @@ expect(flow_session[:threatmetrix_session_id]).to_not eq(nil) end - it 'does not change threatmetrix_session_id when updating ssn' do + it 'does not change flow_session threatmetrix_session_id when updating ssn' do flow_session['pii_from_doc'][:ssn] = ssn put :update, params: params session_id = flow_session[:threatmetrix_session_id] subject.threatmetrix_view_variables expect(flow_session[:threatmetrix_session_id]).to eq(session_id) end + + it 'adds a threatmetrix session id to idv_session' do + put :update, params: params + subject.threatmetrix_view_variables + expect(subject.idv_session.threatmetrix_session_id).to_not eq(nil) + end + + it 'does not change idv_session threatmetrix_session_id when updating ssn' do + flow_session['pii_from_doc'][:ssn] = ssn + put :update, params: params + session_id = subject.idv_session.threatmetrix_session_id + subject.threatmetrix_view_variables + expect(subject.idv_session.threatmetrix_session_id).to eq(session_id) + end end context 'with invalid ssn' do