diff --git a/app/controllers/concerns/fraud_review_concern.rb b/app/controllers/concerns/fraud_review_concern.rb index 1f98fd1eda5..c70dce1b2fc 100644 --- a/app/controllers/concerns/fraud_review_concern.rb +++ b/app/controllers/concerns/fraud_review_concern.rb @@ -4,11 +4,9 @@ module FraudReviewConcern delegate :fraud_check_failed?, :fraud_review_pending?, :fraud_rejection?, - :ipp_fraud_review_pending?, to: :fraud_review_checker def handle_fraud - in_person_handle_pending_fraud_review handle_pending_fraud_review handle_fraud_rejection end @@ -16,25 +14,20 @@ def handle_fraud def handle_pending_fraud_review # If the user has not passed IPP at a post office, allow them to # complete another enrollment by not redirecting to please call - return if in_person_can_perform_fraud_review? + # or rejection screen + return if in_person_prevent_fraud_redirection? redirect_to_fraud_review if fraud_review_pending? end def handle_fraud_rejection + return if in_person_prevent_fraud_redirection? redirect_to_fraud_rejection if fraud_rejection? end - def in_person_handle_pending_fraud_review - return unless in_person_can_perform_fraud_review? - if fraud_review_pending? && current_user.in_person_enrollment_status == 'passed' - redirect_to_fraud_review - end - end - - def in_person_can_perform_fraud_review? + def in_person_prevent_fraud_redirection? IdentityConfig.store.in_person_proofing_enforce_tmx && - current_user.in_person_enrollment_status != 'canceled' && - !current_user.in_person_enrollment_status.nil? + !current_user.in_person_enrollment_status.nil? && + current_user.in_person_enrollment_status != 'passed' end def redirect_to_fraud_review diff --git a/app/views/idv/not_verified/show.html.erb b/app/views/idv/not_verified/show.html.erb index 81da87ddea8..9c65488feef 100644 --- a/app/views/idv/not_verified/show.html.erb +++ b/app/views/idv/not_verified/show.html.erb @@ -2,6 +2,7 @@ 'idv/shared/error', title: t('titles.failure.information_not_verified'), heading: t('idv.failure.verify.heading'), + action: { text: t('idv.failure.verify.exit', app_name: APP_NAME), url: :return_to_sp_failure_to_proof, method: :get }, ) do %>

<% if decorated_sp_session.sp_name.present? %> diff --git a/config/locales/idv/en.yml b/config/locales/idv/en.yml index ff153d1258a..1a80393097c 100644 --- a/config/locales/idv/en.yml +++ b/config/locales/idv/en.yml @@ -145,6 +145,7 @@ en: timeout: We are experiencing higher than usual wait time processing your request. Please try again. verify: + exit: Exit %{app_name} fail_link_html: Get help at %{sp_name} fail_text: to access services. heading: We couldn’t verify your identity diff --git a/config/locales/idv/es.yml b/config/locales/idv/es.yml index d7f32050a59..cd36b1aca42 100644 --- a/config/locales/idv/es.yml +++ b/config/locales/idv/es.yml @@ -155,6 +155,7 @@ es: timeout: Estamos experimentando un tiempo de espera superior al habitual al procesar su solicitud. Inténtalo de nuevo. verify: + exit: Salir de %{app_name} fail_link_html: Obtenga ayuda en %{sp_name} fail_text: para acceder a los servicios. heading: No hemos podido verificar su identidad diff --git a/config/locales/idv/fr.yml b/config/locales/idv/fr.yml index 283c6958e1b..4230e8e00ec 100644 --- a/config/locales/idv/fr.yml +++ b/config/locales/idv/fr.yml @@ -161,6 +161,7 @@ fr: timeout: Le temps d’attente pour le traitement de votre demande est plus long que d’habitude Veuillez réessayer. verify: + exit: Quitter %{app_name} fail_link_html: Obtenez de l’aide auprès de %{sp_name} fail_text: pour accéder aux services. heading: Nous n’avons pas pu vérifier votre identité diff --git a/spec/controllers/idv/please_call_controller_spec.rb b/spec/controllers/idv/please_call_controller_spec.rb index 5fe2103b454..42aa071fd6c 100644 --- a/spec/controllers/idv/please_call_controller_spec.rb +++ b/spec/controllers/idv/please_call_controller_spec.rb @@ -73,8 +73,8 @@ expect(response).to render_template :show end - it 'returns true from in_person_can_perform_fraud_review' do - expect(subject.in_person_can_perform_fraud_review?).to eq(true) + it 'returns false from in_person_prevent_fraud_redirection' do + expect(subject.in_person_prevent_fraud_redirection?).to eq(false) end it 'redirects a user who is not fraud review pending' do @@ -93,6 +93,22 @@ expect(response).to redirect_to(idv_not_verified_url) end + context 'user fails ipp' do + let!(:enrollment) { create(:in_person_enrollment, :failed, user: user, profile: profile) } + + it 'returns true from in_person_prevent_fraud_redirection' do + expect(subject.in_person_prevent_fraud_redirection?).to eq(true) + end + + it 'does not redirect a user who has been fraud rejected' do + profile.reject_for_fraud(notify_user: false) + + get :show + + expect(response).not_to redirect_to(idv_not_verified_url) + end + end + context 'in person proofing and tmx disabled' do let(:in_person_proofing_enabled) { true } let(:in_person_proofing_enforce_tmx) { false } @@ -105,8 +121,8 @@ and_return(in_person_proofing_enforce_tmx) end - it 'returns false from in_person_can_perform_fraud_review' do - expect(subject.in_person_can_perform_fraud_review?).to eq(false) + it 'returns false from in_person_prevent_fraud_redirection' do + expect(subject.in_person_prevent_fraud_redirection?).to eq(false) end end end diff --git a/spec/views/idv/not_verified/show.html.erb_spec.rb b/spec/views/idv/not_verified/show.html.erb_spec.rb new file mode 100644 index 00000000000..abb99c3018e --- /dev/null +++ b/spec/views/idv/not_verified/show.html.erb_spec.rb @@ -0,0 +1,52 @@ +require 'rails_helper' + +RSpec.describe 'idv/not_verified/show.html.erb' do + let(:sp_name) { nil } + + before do + allow(view).to receive(:decorated_sp_session).and_return( + instance_double(ServiceProviderSession, sp_name: sp_name), + ) + + render + end + + context 'without an sp' do + it 'renders the fail link text with application name' do + expect(rendered).to have_text( + strip_tags( + t( + 'idv.failure.verify.fail_link_html', + sp_name: APP_NAME, + ), + ), + ) + end + end + + context 'with an sp' do + let(:sp_name) { 'Department of Departments' } + it 'renders the fail link text with the SP name' do + expect(rendered).to have_text( + strip_tags( + t('idv.failure.verify.fail_link_html', sp_name: sp_name), + ), + ) + end + end + + describe('exit button') do + it 'is rendered' do + expect(rendered).to have_selector( + 'a', + text: t('idv.failure.verify.exit', app_name: APP_NAME), + ) + end + it 'links to the right place' do + expect(rendered).to have_link( + t('idv.failure.verify.exit', app_name: APP_NAME), + href: return_to_sp_failure_to_proof_path, + ) + end + end +end