Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 1 addition & 6 deletions app/models/email_address.rb
Original file line number Diff line number Diff line change
Expand Up @@ -42,12 +42,7 @@ def fed_or_mil_email?
end

def fed_email?
if IdentityConfig.store.use_fed_domain_class
return false unless domain
Comment thread
vrajmohan marked this conversation as resolved.
FederalEmailDomain.fed_domain?(domain)
else
email.end_with?('.gov')
end
FederalEmailDomain.fed_domain?(domain)
end

def mil_email?
Expand Down
3 changes: 0 additions & 3 deletions config/application.yml.default
Original file line number Diff line number Diff line change
Expand Up @@ -365,7 +365,6 @@ test_ssn_allowed_list: ''
totp_code_interval: 30
unauthorized_scope_enabled: false
use_dashboard_service_providers: false
use_fed_domain_class: false
use_kms: false
use_vot_in_sp_requests: true
usps_auth_token_refresh_job_enabled: false
Expand Down Expand Up @@ -450,7 +449,6 @@ development:
state_tracking_enabled: true
telephony_adapter: test
use_dashboard_service_providers: true
use_fed_domain_class: true
usps_eipp_sponsor_id: '222222222222222'
usps_ipp_sponsor_id: '111111111111111'
usps_ipp_transliteration_enabled: true
Expand Down Expand Up @@ -583,7 +581,6 @@ test:
telephony_adapter: test
test_ssn_allowed_list: '999999999'
totp_code_interval: 3
use_fed_domain_class: true
usps_eipp_sponsor_id: '222222222222222'
usps_ipp_root_url: 'http://localhost:1000'
usps_ipp_sponsor_id: '111111111111111'
Expand Down
1 change: 0 additions & 1 deletion lib/identity_config.rb
Original file line number Diff line number Diff line change
Expand Up @@ -424,7 +424,6 @@ def self.store
config.add(:usps_auth_token_refresh_job_enabled, type: :boolean)
config.add(:usps_confirmation_max_days, type: :integer)
config.add(:usps_eipp_sponsor_id, type: :string)
config.add(:use_fed_domain_class, type: :boolean)
config.add(:usps_ipp_client_id, type: :string)
config.add(:usps_ipp_password, type: :string)
config.add(:usps_ipp_request_timeout, type: :integer)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,51 +19,19 @@
)
end

context 'with user having gov or mil email and use_fed_domain_class set to false' do
let(:user) do
create(:user, email: 'example@example.gov', piv_cac_recommended_dismissed_at: Time.zone.now)
end
context 'with user having gov or mil email' do
let!(:federal_domain) { create(:federal_email_domain, name: 'gsa.gov') }

before do
allow(IdentityConfig.store).to receive(:use_fed_domain_class).and_return(false)
let(:user) do
create(
:user,
email: 'example@gsa.gov',
piv_cac_recommended_dismissed_at: interstitial_dismissed_at,
)
end

context 'having already visited the PIV interstitial page' do
it 'tracks the visit in analytics' do
get :index

expect(@analytics).to have_logged_event(
'User Registration: 2FA Setup visited',
enabled_mfa_methods_count: 0,
gov_or_mil_email: true,
)
end
end
let(:interstitial_dismissed_at) { Time.zone.now }

context 'directed to page without having visited PIV interstitial page' do
let(:user) do
create(:user, email: 'example@example.gov')
end

it 'redirects user to piv_recommended_path' do
get :index

expect(response).to redirect_to(login_piv_cac_recommended_url)
end
end
end

context 'with user having gov or mil email and use_fed_domain_class set to true' do
before do
allow(IdentityConfig.store).to receive(:use_fed_domain_class).and_return(true)
end

let!(:federal_domain) { create(:federal_email_domain, name: 'gsa.gov') }
let(:user) do
create(:user, email: 'example@gsa.gov', piv_cac_recommended_dismissed_at: Time.zone.now)
end
context 'having already visited the PIV interstitial page' do
it 'tracks the visit in analytics' do
get :index

Expand All @@ -76,9 +44,7 @@
end

context 'directed to page without having visited PIV interstitial page' do
let(:user) do
create(:user, email: 'example@gsa.gov')
end
let(:interstitial_dismissed_at) { nil }

it 'redirects user to piv_recommended_path' do
get :index
Expand Down
167 changes: 49 additions & 118 deletions spec/features/sign_in/piv_recommended_after_sign_in_spec.rb
Original file line number Diff line number Diff line change
@@ -1,132 +1,63 @@
require 'rails_helper'

RSpec.feature 'Piv recommended after Sign in' do
context 'use_fed_domain_class set to true' do
let!(:federal_email_domain) { create(:federal_email_domain, name: 'gsa.gov') }

before do
allow(IdentityConfig.store).to receive(:use_fed_domain_class).and_return(true)
end

scenario 'User with valid fed email directed to recommend page and get to setup piv' do
user = create(:user, :with_phone, { email: 'example@gsa.gov' })

visit new_user_session_path
fill_in_credentials_and_submit(user.email, user.password)
fill_in_code_with_last_phone_otp
click_submit_default
expect(page).to have_current_path(login_piv_cac_recommended_path)
click_button(t('two_factor_authentication.piv_cac_upsell.add_piv'))
expect(page).to have_current_path(setup_piv_cac_path)
end

scenario 'User with mil email directed to recommended PIV page and goes to add piv page' do
user = create(:user, :with_phone, { email: 'example@army.mil' })

visit new_user_session_path
fill_in_credentials_and_submit(user.email, user.password)
fill_in_code_with_last_phone_otp
click_submit_default
expect(page).to have_current_path(login_piv_cac_recommended_path)
click_button(t('two_factor_authentication.piv_cac_upsell.add_piv'))
expect(page).to have_current_path(setup_piv_cac_path)
end

scenario 'User with fed email and skips recommendation page' do
user = create(:user, :with_phone, { email: 'example@gsa.gov' })

visit new_user_session_path
fill_in_credentials_and_submit(user.email, user.password)
fill_in_code_with_last_phone_otp
click_submit_default
expect(page).to have_current_path(login_piv_cac_recommended_path)
click_button(t('two_factor_authentication.piv_cac_upsell.skip'))
expect(page).to have_current_path(account_path)
end

scenario 'User with mil email and skips recommendation page' do
user = create(:user, :with_phone, { email: 'example@army.mil' })

visit new_user_session_path
fill_in_credentials_and_submit(user.email, user.password)
fill_in_code_with_last_phone_otp
click_submit_default
expect(page).to have_current_path(login_piv_cac_recommended_path)
click_button(t('two_factor_authentication.piv_cac_upsell.skip'))
expect(page).to have_current_path(account_path)
end

scenario 'User with invalid .gov email directed to account page' do
user = create(:user, :with_phone, { email: 'example@bad.gov' })

visit new_user_session_path
fill_in_credentials_and_submit(user.email, user.password)
fill_in_code_with_last_phone_otp
click_submit_default
expect(page).to have_current_path(account_path)
end
let!(:federal_email_domain) { create(:federal_email_domain, name: 'gsa.gov') }

scenario 'User with valid fed email directed to recommend page and get to setup piv' do
user = create(:user, :with_phone, { email: 'example@gsa.gov' })

visit new_user_session_path
fill_in_credentials_and_submit(user.email, user.password)
fill_in_code_with_last_phone_otp
click_submit_default
expect(page).to have_current_path(login_piv_cac_recommended_path)
click_button(t('two_factor_authentication.piv_cac_upsell.add_piv'))
expect(page).to have_current_path(setup_piv_cac_path)
end

context 'use_fed_domain_class set to false' do
before do
allow(IdentityConfig.store).to receive(:use_fed_domain_class).and_return(false)
end
scenario 'User with .gov email directed to recommend page and get to setup piv' do
user = create(:user, :with_phone, { email: 'example@good.gov' })

visit new_user_session_path
fill_in_credentials_and_submit(user.email, user.password)
fill_in_code_with_last_phone_otp
click_submit_default
expect(page).to have_current_path(login_piv_cac_recommended_path)
click_button(t('two_factor_authentication.piv_cac_upsell.add_piv'))
expect(page).to have_current_path(setup_piv_cac_path)
end
scenario 'User with mil email directed to recommended PIV page and goes to add piv page' do
user = create(:user, :with_phone, { email: 'example@army.mil' })

scenario 'User with .mil email directed to recommended PIV page and goes to add piv page' do
user = create(:user, :with_phone, { email: 'example@army.mil' })

visit new_user_session_path
fill_in_credentials_and_submit(user.email, user.password)
fill_in_code_with_last_phone_otp
click_submit_default
expect(page).to have_current_path(login_piv_cac_recommended_path)
click_button(t('two_factor_authentication.piv_cac_upsell.add_piv'))
expect(page).to have_current_path(setup_piv_cac_path)
end
visit new_user_session_path
fill_in_credentials_and_submit(user.email, user.password)
fill_in_code_with_last_phone_otp
click_submit_default
expect(page).to have_current_path(login_piv_cac_recommended_path)
click_button(t('two_factor_authentication.piv_cac_upsell.add_piv'))
expect(page).to have_current_path(setup_piv_cac_path)
end

scenario 'User with fed email and skips recommendation page' do
user = create(:user, :with_phone, { email: 'example@example.gov' })
scenario 'User with fed email and skips recommendation page' do
user = create(:user, :with_phone, { email: 'example@gsa.gov' })

visit new_user_session_path
fill_in_credentials_and_submit(user.email, user.password)
fill_in_code_with_last_phone_otp
click_submit_default
expect(page).to have_current_path(login_piv_cac_recommended_path)
click_button(t('two_factor_authentication.piv_cac_upsell.skip'))
expect(page).to have_current_path(account_path)
end
visit new_user_session_path
fill_in_credentials_and_submit(user.email, user.password)
fill_in_code_with_last_phone_otp
click_submit_default
expect(page).to have_current_path(login_piv_cac_recommended_path)
click_button(t('two_factor_authentication.piv_cac_upsell.skip'))
expect(page).to have_current_path(account_path)
end

scenario 'User with mil email and skips recommendation page' do
user = create(:user, :with_phone, { email: 'example@army.mil' })
scenario 'User with mil email and skips recommendation page' do
user = create(:user, :with_phone, { email: 'example@army.mil' })

visit new_user_session_path
fill_in_credentials_and_submit(user.email, user.password)
fill_in_code_with_last_phone_otp
click_submit_default
expect(page).to have_current_path(login_piv_cac_recommended_path)
click_button(t('two_factor_authentication.piv_cac_upsell.skip'))
expect(page).to have_current_path(account_path)
end
visit new_user_session_path
fill_in_credentials_and_submit(user.email, user.password)
fill_in_code_with_last_phone_otp
click_submit_default
expect(page).to have_current_path(login_piv_cac_recommended_path)
click_button(t('two_factor_authentication.piv_cac_upsell.skip'))
expect(page).to have_current_path(account_path)
end

scenario 'User with invalid no .gov or .mil email directed to account page' do
user = create(:user, :with_phone, { email: 'example@bad.com' })
scenario 'User with invalid .gov email directed to account page' do
user = create(:user, :with_phone, { email: 'example@bad.gov' })

visit new_user_session_path
fill_in_credentials_and_submit(user.email, user.password)
fill_in_code_with_last_phone_otp
click_submit_default
expect(page).to have_current_path(account_path)
end
visit new_user_session_path
fill_in_credentials_and_submit(user.email, user.password)
fill_in_code_with_last_phone_otp
click_submit_default
expect(page).to have_current_path(account_path)
end
end
Loading