From 0b66b9a268076289b8d58ec71bc40ffd696af9d2 Mon Sep 17 00:00:00 2001 From: Matt Hinz Date: Thu, 27 Jul 2023 10:39:51 -0700 Subject: [PATCH 1/4] Add tests to cover existing skip_upload behavior --- .../idv/agreement_controller_spec.rb | 50 ++++++++++++++++- .../idv/getting_started_controller_spec.rb | 54 +++++++++++++++++-- 2 files changed, 100 insertions(+), 4 deletions(-) diff --git a/spec/controllers/idv/agreement_controller_spec.rb b/spec/controllers/idv/agreement_controller_spec.rb index 36b498a5ff2..a698ad4532d 100644 --- a/spec/controllers/idv/agreement_controller_spec.rb +++ b/spec/controllers/idv/agreement_controller_spec.rb @@ -97,10 +97,58 @@ }.merge(ab_test_args) end + let(:skip_upload) { nil } + + let(:params) do + { + doc_auth: { + ial2_consent_given: 1, + }, + skip_upload: skip_upload, + }.compact + end + it 'sends analytics_submitted event with consent given' do - put :update, params: { doc_auth: { ial2_consent_given: 1 } } + put :update, params: params expect(@analytics).to have_logged_event(analytics_name, analytics_args) end + + it 'does not set flow_path' do + expect do + put :update, params: params + end.not_to change { + subject.idv_session.flow_path + }.from(nil) + end + + it 'redirects to hybrid handoff' do + put :update, params: params + expect(response).to redirect_to(idv_hybrid_handoff_url) + end + + context 'skip_upload present in params' do + let(:skip_upload) { '' } + it 'sets flow_path to standard' do + expect do + put :update, params: params + end.to change { + subject.idv_session.flow_path + }.from(nil).to('standard') + end + + it 'sets flow_session[:skip_upload_step] to true' do + expect do + put :update, params: params + end.to change { + subject.flow_session[:skip_upload_step] + }.from(nil).to(true) + end + + it 'redirects to hybrid handoff' do + put :update, params: params + expect(response).to redirect_to(idv_hybrid_handoff_url) + end + end end end diff --git a/spec/controllers/idv/getting_started_controller_spec.rb b/spec/controllers/idv/getting_started_controller_spec.rb index 8464710356f..94a8bf87003 100644 --- a/spec/controllers/idv/getting_started_controller_spec.rb +++ b/spec/controllers/idv/getting_started_controller_spec.rb @@ -104,14 +104,25 @@ }.merge(ab_test_args) end + let(:skip_upload) { nil } + + let(:params) do + { + doc_auth: { + ial2_consent_given: 1, + }, + skip_upload: skip_upload, + }.compact + end + it 'sends analytics_submitted event with consent given' do - put :update, params: { doc_auth: { ial2_consent_given: 1 } } + put :update, params: params expect(@analytics).to have_logged_event(analytics_name, analytics_args) end it 'creates a document capture session' do - expect { put :update, params: { doc_auth: { ial2_consent_given: 1 } } }. + expect { put :update, params: params }. to change { subject.user_session['idv/doc_auth'][:document_capture_session_uuid] }.from(nil) end @@ -123,11 +134,48 @@ end it 'cancels all previous establishing enrollments' do - put :update, params: { doc_auth: { ial2_consent_given: 1 } } + put :update, params: params expect(enrollment.reload.status).to eq('cancelled') expect(user.establishing_in_person_enrollment).to be_blank end end + + it 'does not set flow_path' do + expect do + put :update, params: params + end.not_to change { + subject.idv_session.flow_path + }.from(nil) + end + + it 'redirects to hybrid handoff' do + put :update, params: params + expect(response).to redirect_to(idv_hybrid_handoff_url) + end + + context 'skip_upload present in params' do + let(:skip_upload) { '' } + it 'sets flow_path to standard' do + expect do + put :update, params: params + end.to change { + subject.idv_session.flow_path + }.from(nil).to('standard') + end + + it 'sets flow_session[:skip_upload_step] to true' do + expect do + put :update, params: params + end.to change { + subject.flow_session[:skip_upload_step] + }.from(nil).to(true) + end + + it 'redirects to hybrid handoff' do + put :update, params: params + expect(response).to redirect_to(idv_hybrid_handoff_url) + end + end end end From 07af25e18a313819328427d94e40fc4b33ca2189 Mon Sep 17 00:00:00 2001 From: Matt Hinz Date: Thu, 27 Jul 2023 10:45:21 -0700 Subject: [PATCH 2/4] Support skip_hybrid_handoff in AgreementController --- app/controllers/idv/agreement_controller.rb | 2 +- .../idv/agreement_controller_spec.rb | 27 +++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/app/controllers/idv/agreement_controller.rb b/app/controllers/idv/agreement_controller.rb index 5f0eb826325..2d9aa2de24f 100644 --- a/app/controllers/idv/agreement_controller.rb +++ b/app/controllers/idv/agreement_controller.rb @@ -18,7 +18,7 @@ def show end def update - skip_to_capture if params[:skip_upload] + skip_to_capture if params[:skip_hybrid_handoff] || params[:skip_upload] result = Idv::ConsentForm.new.submit(consent_form_params) diff --git a/spec/controllers/idv/agreement_controller_spec.rb b/spec/controllers/idv/agreement_controller_spec.rb index a698ad4532d..bbbbccf142e 100644 --- a/spec/controllers/idv/agreement_controller_spec.rb +++ b/spec/controllers/idv/agreement_controller_spec.rb @@ -99,11 +99,14 @@ let(:skip_upload) { nil } + let(:skip_hybrid_handoff) { nil } + let(:params) do { doc_auth: { ial2_consent_given: 1, }, + skip_hybrid_handoff: skip_hybrid_handoff, skip_upload: skip_upload, }.compact end @@ -150,5 +153,29 @@ expect(response).to redirect_to(idv_hybrid_handoff_url) end end + + context 'skip_hybrid_handoff present in params' do + let(:skip_hybrid_handoff) { '' } + it 'sets flow_path to standard' do + expect do + put :update, params: params + end.to change { + subject.idv_session.flow_path + }.from(nil).to('standard') + end + + it 'sets flow_session[:skip_upload_step] to true' do + expect do + put :update, params: params + end.to change { + subject.flow_session[:skip_upload_step] + }.from(nil).to(true) + end + + it 'redirects to hybrid handoff' do + put :update, params: params + expect(response).to redirect_to(idv_hybrid_handoff_url) + end + end end end From 0c198695bed61fe4684add26c5cb99aa62022af5 Mon Sep 17 00:00:00 2001 From: Matt Hinz Date: Thu, 27 Jul 2023 10:47:34 -0700 Subject: [PATCH 3/4] Support skip_hybrid_handoff in GettingStartedController --- .../idv/getting_started_controller.rb | 2 +- .../idv/getting_started_controller_spec.rb | 27 +++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/app/controllers/idv/getting_started_controller.rb b/app/controllers/idv/getting_started_controller.rb index ccaba1b1de8..586505504bf 100644 --- a/app/controllers/idv/getting_started_controller.rb +++ b/app/controllers/idv/getting_started_controller.rb @@ -21,7 +21,7 @@ def show def update flow_session[:skip_upload_step] = true unless FeatureManagement.idv_allow_hybrid_flow? - skip_to_capture if params[:skip_upload] + skip_to_capture if params[:skip_hybrid_handoff] || params[:skip_upload] result = Idv::ConsentForm.new.submit(consent_form_params) diff --git a/spec/controllers/idv/getting_started_controller_spec.rb b/spec/controllers/idv/getting_started_controller_spec.rb index 94a8bf87003..feea8da19fe 100644 --- a/spec/controllers/idv/getting_started_controller_spec.rb +++ b/spec/controllers/idv/getting_started_controller_spec.rb @@ -106,11 +106,14 @@ let(:skip_upload) { nil } + let(:skip_hybrid_handoff) { nil } + let(:params) do { doc_auth: { ial2_consent_given: 1, }, + skip_hybrid_handoff: skip_hybrid_handoff, skip_upload: skip_upload, }.compact end @@ -177,5 +180,29 @@ expect(response).to redirect_to(idv_hybrid_handoff_url) end end + + context 'skip_hybrid_handoff present in params' do + let(:skip_hybrid_handoff) { '' } + it 'sets flow_path to standard' do + expect do + put :update, params: params + end.to change { + subject.idv_session.flow_path + }.from(nil).to('standard') + end + + it 'sets flow_session[:skip_upload_step] to true' do + expect do + put :update, params: params + end.to change { + subject.flow_session[:skip_upload_step] + }.from(nil).to(true) + end + + it 'redirects to hybrid handoff' do + put :update, params: params + expect(response).to redirect_to(idv_hybrid_handoff_url) + end + end end end From 48bb7cbf550718d8ea5642c9bc20c43e001fccc7 Mon Sep 17 00:00:00 2001 From: Matt Hinz Date: Thu, 27 Jul 2023 10:49:42 -0700 Subject: [PATCH 4/4] Rename skip_upload to skip_hybrid_handoff Add skip_upload and skip_hybrid_handoff inputs in document-capture-welcome. A future commit will remove skip_upload [skip changelog] --- app/javascript/packs/document-capture-welcome.ts | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/app/javascript/packs/document-capture-welcome.ts b/app/javascript/packs/document-capture-welcome.ts index 1f397de04a2..1d07dc59ed2 100644 --- a/app/javascript/packs/document-capture-welcome.ts +++ b/app/javascript/packs/document-capture-welcome.ts @@ -2,8 +2,17 @@ import { isCameraCapableMobile } from '@18f/identity-device'; if (isCameraCapableMobile()) { const form = document.querySelector('.js-consent-continue-form')!; + + // Tell the backend that we're on a device that can take its own pictures, so we don't need + // to show the user the hybrid handoff screen. const input = document.createElement('input'); input.type = 'hidden'; - input.name = 'skip_upload'; + input.name = 'skip_hybrid_handoff'; form.appendChild(input); + + // TEMP: Send skip_upload as well to account for 50/50 state during deploy + const compatibilityInput = document.createElement('input'); + compatibilityInput.type = 'hidden'; + compatibilityInput.name = 'skip_upload'; + form.appendChild(compatibilityInput); }