2019-04-02 15:03:26 +02:00
|
|
|
feature 'France Connect Particulier Connexion' do
|
2015-12-24 10:12:23 +01:00
|
|
|
let(:code) { 'plop' }
|
|
|
|
let(:given_name) { 'titi' }
|
|
|
|
let(:family_name) { 'toto' }
|
|
|
|
let(:birthdate) { '20150821' }
|
|
|
|
let(:gender) { 'M' }
|
|
|
|
let(:birthplace) { '1234' }
|
|
|
|
let(:email) { 'plop@plop.com' }
|
2016-01-21 17:06:09 +01:00
|
|
|
let(:france_connect_particulier_id) { 'blabla' }
|
2015-12-24 10:12:23 +01:00
|
|
|
|
2018-01-11 14:04:24 +01:00
|
|
|
let(:user_info) do
|
|
|
|
{
|
|
|
|
france_connect_particulier_id: france_connect_particulier_id,
|
|
|
|
given_name: given_name,
|
|
|
|
family_name: family_name,
|
|
|
|
birthdate: birthdate,
|
|
|
|
birthplace: birthplace,
|
|
|
|
gender: gender,
|
|
|
|
email_france_connect: email
|
|
|
|
}
|
|
|
|
end
|
2015-12-24 10:12:23 +01:00
|
|
|
|
|
|
|
context 'when user is on login page' do
|
|
|
|
before do
|
|
|
|
visit new_user_session_path
|
|
|
|
end
|
|
|
|
|
|
|
|
scenario 'link to France Connect is present' do
|
2019-04-02 15:03:26 +02:00
|
|
|
expect(page).to have_css('.france-connect-login-button')
|
2015-12-24 10:12:23 +01:00
|
|
|
end
|
|
|
|
|
|
|
|
context 'and click on france connect link' do
|
|
|
|
let(:code) { 'plop' }
|
|
|
|
|
|
|
|
context 'when authentification is ok' do
|
2018-01-15 19:22:02 +01:00
|
|
|
let(:france_connect_information) do
|
|
|
|
create(:france_connect_information,
|
|
|
|
france_connect_particulier_id: france_connect_particulier_id,
|
|
|
|
given_name: given_name,
|
|
|
|
family_name: family_name,
|
|
|
|
birthdate: birthdate,
|
|
|
|
birthplace: birthplace,
|
|
|
|
gender: gender,
|
|
|
|
email_france_connect: email)
|
|
|
|
end
|
2015-12-24 10:12:23 +01:00
|
|
|
|
|
|
|
before do
|
|
|
|
allow_any_instance_of(FranceConnectParticulierClient).to receive(:authorization_uri).and_return(france_connect_particulier_callback_path(code: code))
|
2018-01-11 18:16:38 +01:00
|
|
|
allow(FranceConnectService).to receive(:retrieve_user_informations_particulier).and_return(FranceConnectInformation.new(user_info))
|
2015-12-24 10:12:23 +01:00
|
|
|
end
|
|
|
|
|
|
|
|
context 'when is the first connexion' do
|
2016-01-21 17:06:09 +01:00
|
|
|
before do
|
2019-04-02 15:03:26 +02:00
|
|
|
page.find('.france-connect-login-button').click
|
2016-01-21 17:06:09 +01:00
|
|
|
end
|
2015-12-24 10:12:23 +01:00
|
|
|
|
2018-01-16 12:08:50 +01:00
|
|
|
scenario 'he is redirected to user dossiers page' do
|
|
|
|
expect(page).to have_content('Dossiers')
|
2015-12-24 10:12:23 +01:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context 'when is not the first connexion' do
|
2016-01-21 17:06:09 +01:00
|
|
|
before do
|
|
|
|
create(:user, france_connect_information: france_connect_information)
|
2019-04-02 15:03:26 +02:00
|
|
|
page.find('.france-connect-login-button').click
|
2016-01-21 17:06:09 +01:00
|
|
|
end
|
2015-12-24 10:12:23 +01:00
|
|
|
|
|
|
|
scenario 'he is redirected to user dossiers page' do
|
2016-12-13 16:10:03 +01:00
|
|
|
expect(page).to have_content('Dossiers')
|
2015-12-24 10:12:23 +01:00
|
|
|
end
|
2020-11-02 11:37:21 +01:00
|
|
|
|
|
|
|
scenario 'the updated_at date is well updated' do
|
|
|
|
expect(france_connect_information.updated_at).not_to eq(france_connect_information.created_at)
|
|
|
|
end
|
2015-12-24 10:12:23 +01:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context 'when authentification is not ok' do
|
|
|
|
before do
|
|
|
|
allow_any_instance_of(FranceConnectParticulierClient).to receive(:authorization_uri).and_return(france_connect_particulier_callback_path(code: code))
|
|
|
|
allow(FranceConnectService).to receive(:retrieve_user_informations_particulier) { raise Rack::OAuth2::Client::Error.new(500, error: 'Unknown') }
|
2019-04-02 15:03:26 +02:00
|
|
|
page.find('.france-connect-login-button').click
|
2015-12-24 10:12:23 +01:00
|
|
|
end
|
|
|
|
|
|
|
|
scenario 'he is redirected to login page' do
|
2019-04-02 15:03:26 +02:00
|
|
|
expect(page).to have_css('.france-connect-login-button')
|
2015-12-24 10:12:23 +01:00
|
|
|
end
|
|
|
|
|
|
|
|
scenario 'error message is displayed' do
|
|
|
|
expect(page).to have_content(I18n.t('errors.messages.france_connect.connexion'))
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
2016-12-13 16:10:03 +01:00
|
|
|
end
|