Skip to content
Merged
1 change: 1 addition & 0 deletions app/services/idv/actions/redo_address_action.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ def self.analytics_submitted_event
end

def call
mark_step_incomplete(:address)
Comment thread
JackRyan1989 marked this conversation as resolved.
Outdated
Comment thread
JackRyan1989 marked this conversation as resolved.
Outdated
redirect_to idv_address_url
end
end
Expand Down
12 changes: 10 additions & 2 deletions app/services/idv/steps/in_person/state_id_step.rb
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,21 @@ def self.analytics_submitted_event
end

def call
pii_from_user = flow_session[:pii_from_user]
Idv::StateIdForm::ATTRIBUTES.each do |attr|
flow_session[:pii_from_user][attr] = flow_params[attr]
end

# Accept Date of Birth from both memorable date and input date components
formatted_dob = MemorableDateComponent.extract_date_param flow_params&.[](:dob)
flow_session[:pii_from_user][:dob] = formatted_dob if formatted_dob
pii_from_user[:dob] = formatted_dob if formatted_dob
if capture_secondary_id_enabled? && pii_from_user[:same_address_as_id] == 'true'
pii_from_user[:address1] = flow_params[:state_id_address1]
pii_from_user[:address2] = flow_params[:state_id_address2]
pii_from_user[:city] = flow_params[:state_id_city]
pii_from_user[:state] = flow_params[:state_id_jurisdiction]
pii_from_user[:zipcode] = flow_params[:state_id_zipcode]
mark_step_complete(:address)
end
end

def extra_view_variables
Expand Down
21 changes: 21 additions & 0 deletions spec/features/idv/in_person_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -654,4 +654,25 @@ def it_captures_address_with_state_id
end
end
end

context 'in_person_capture_secondary_id_enabled feature flag enabled and same address as id',
allow_browser_log: true do
let(:user) { user_with_2fa }

it 'skips the address page' do
allow(IdentityConfig.store).to receive(:in_person_capture_secondary_id_enabled).
Comment thread
JackRyan1989 marked this conversation as resolved.
and_return(true)
sign_in_and_2fa_user(user)
begin_in_person_proofing(user)
complete_location_step(user)
complete_prepare_step(user)
complete_state_id_step(user, same_address_as_id: true, double_address_verification: true)
# skip address step
complete_ssn_step(user)
# Ensure the page submitted successfully
expect(page).to have_content(
t('idv.form.ssn_label_html'),
)
end
end
end
4 changes: 0 additions & 4 deletions spec/features/idv/steps/in_person/verify_step_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -145,10 +145,6 @@
user, same_address_as_id: same_address_as_id,
double_address_verification: double_address_verification
)
fill_out_address_form_ok(
same_address_as_id: same_address_as_id,
double_address_verification: double_address_verification,
)
click_idv_continue
complete_ssn_step(user)

Expand Down
75 changes: 75 additions & 0 deletions spec/services/idv/steps/in_person/state_id_step_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
let(:submitted_values) { {} }
let(:params) { ActionController::Parameters.new({ state_id: submitted_values }) }
let(:user) { build(:user) }
let(:capture_secondary_id_enabled) { false }
let(:enrollment) { InPersonEnrollment.new(capture_secondary_id_enabled:) }
let(:service_provider) { create(:service_provider) }
let(:controller) do
instance_double(
Expand Down Expand Up @@ -39,6 +41,13 @@
}
end

before do
allow(IdentityConfig.store).to receive(:in_person_capture_secondary_id_enabled).
and_return(false)
allow(user).to receive(:establishing_in_person_enrollment).
and_return(enrollment)
end

it 'sets values in flow session' do
Idv::StateIdForm::ATTRIBUTES.each do |attr|
expect(flow.flow_session[:pii_from_user]).to_not have_key attr
Expand Down Expand Up @@ -150,4 +159,70 @@
end
end
end

describe 'skip address step?' do
let(:pii_from_user) { flow.flow_session[:pii_from_user] }
let(:params) { ActionController::Parameters.new({ state_id: submitted_values }) }
let(:capture_secondary_id_enabled) { true }
let(:enrollment) { InPersonEnrollment.new(capture_secondary_id_enabled:) }
let(:dob) { '1980-01-01' }
let(:state_id_jurisdiction) { 'Nevada' }
let(:state_id_city) { 'Twin Peaks' }
let(:state_id_address1) { '123 Sesame Street' }
let(:state_id_address2) { 'Apt. #C' }
let(:state_id_zipcode) { '90001' }
let(:same_address_as_id) { 'true' }
let(:submitted_values) do
{
dob: dob,
state_id_jurisdiction: state_id_jurisdiction,
state_id_city: state_id_city,
state_id_address1: state_id_address1,
state_id_address2: state_id_address2,
state_id_zipcode: state_id_zipcode,
same_address_as_id: same_address_as_id,
}
end

before(:each) do
allow(step).to receive(:current_user).
and_return(user)
allow(user).to receive(:establishing_in_person_enrollment).
and_return(enrollment)
end

context 'same address as id' do
it 'marks the address step as complete' do
step.call

address_step = flow.flow_session[Idv::Steps::InPerson::AddressStep.name]
expect(address_step).to eq true
end

it 'adds state id values to address values in pii' do
step.call

pii_from_user = flow.flow_session[:pii_from_user]
expect(pii_from_user[:address1]).to eq state_id_address1
expect(pii_from_user[:address2]).to eq state_id_address2
expect(pii_from_user[:city]).to eq state_id_city
expect(pii_from_user[:state]).to eq state_id_jurisdiction
expect(pii_from_user[:zipcode]).to eq state_id_zipcode
end
end

context 'different address from id' do

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Clear testing, nice! 👏🏻

let(:same_address_as_id) { 'false' }
it 'does not add state id values to address values in pii' do
step.call

pii_from_user = flow.flow_session[:pii_from_user]
expect(pii_from_user[:address1]).to_not eq state_id_address1
expect(pii_from_user[:address2]).to_not eq state_id_address2
expect(pii_from_user[:city]).to_not eq state_id_city
expect(pii_from_user[:state]).to_not eq state_id_jurisdiction
expect(pii_from_user[:zipcode]).to_not eq state_id_zipcode
end
end
end
end