This commit is contained in:
simon lehericey 2024-11-26 10:18:55 +01:00
parent 2a25171738
commit 7b02aeb02e
No known key found for this signature in database
GPG key ID: CDE670D827C7B3C5
3 changed files with 41 additions and 28 deletions

View file

@ -7,7 +7,7 @@ describe 'France Connect Particulier Connexion' do
let(:birthdate) { '20150821' } let(:birthdate) { '20150821' }
let(:gender) { 'M' } let(:gender) { 'M' }
let(:birthplace) { '1234' } let(:birthplace) { '1234' }
let(:email) { 'plop@plop.com' } let(:fc_email) { 'plop@plop.com' }
let(:france_connect_particulier_id) { 'blabla' } let(:france_connect_particulier_id) { 'blabla' }
let(:user_info) do let(:user_info) do
@ -18,7 +18,7 @@ describe 'France Connect Particulier Connexion' do
birthdate: birthdate, birthdate: birthdate,
birthplace: birthplace, birthplace: birthplace,
gender: gender, gender: gender,
email_france_connect: email email_france_connect: fc_email
} }
end end
@ -40,32 +40,49 @@ describe 'France Connect Particulier Connexion' do
let(:france_connect_information) { build(:france_connect_information, user_info) } let(:france_connect_information) { build(:france_connect_information, user_info) }
context 'and no user has the same email' do context 'and no user has the same email' do
before { page.find('.fr-connect').click } before do
page.find('.fr-connect').click
scenario 'he is redirected to user dossiers page' do
expect(page).to have_content("Choisissez votre email de contact pour finaliser votre connexion")
find("#use_france_connect_email_no").click
fill_in("email", with: "exemple@email.com")
page.find("input[type='submit'][name='commit'][value='Confirmer']").click
expect(page).to have_content("Confirmez votre email")
click_on 'Continuer'
expect(User.find_by(email: email)).not_to be nil
end end
scenario 'he can choose not to use FranceConnect email and input an alternative email' do scenario 'he is redirected to user dossiers page', js: true do
expect(page).to have_content("Choisissez votre email de contact pour finaliser votre connexion") expect(page).to have_content("Choisissez votre email de contact pour finaliser votre connexion")
find('label', text: "Oui, utiliser #{fc_email} comme email de contact").click
click_on 'Valider'
expect(User.find_by(email: fc_email).email_verified_at).to be_present
end
scenario 'he can choose not to use FranceConnect email and input an alternative email', js: true do
alternative_email = 'alternative@example.com'
expect(page).to have_content("Choisissez votre email de contact pour finaliser votre connexion")
find('label', text: 'utiliser une autre adresse').click
expect(page).to have_selector("input[name='email']", visible: true, wait: 10) expect(page).to have_selector("input[name='email']", visible: true, wait: 10)
fill_in 'email', with: 'alternative@example.com' fill_in 'email', with: alternative_email
click_on 'Confirmer' click_on 'Valider'
expect(page).to have_content("Confirmez votre email") expect(page).to have_content('Nous venons de vous envoyer le mail de confirmation')
expect(User.find_by(email: alternative_email)).to be_nil
perform_enqueued_jobs
confirmation_email = open_email(alternative_email)
link = confirmation_email.body.match(/href="[^"]*(\/france_connect\/particulier\/merge_using_email_link.*?)"/)[1]
visit link
expect(page).to have_content('Les comptes FranceConnect et demarches-simplifiees.fr sont à présent fusionnés')
expect(page).to have_content(alternative_email)
expect(User.find_by(email: alternative_email).email_verified_at).to be_present
end end
end end
context 'and an user exists with the same email' do context 'and an user exists with the same email' do
let!(:user) { create(:user, email: email, password: SECURE_PASSWORD) } let!(:user) { create(:user, email: fc_email, password: SECURE_PASSWORD) }
before do before do
page.find('.fr-connect').click page.find('.fr-connect').click

View file

@ -182,12 +182,10 @@ describe 'Prefilling a dossier (with a GET request):', js: true do
page.find('.fr-connect').click page.find('.fr-connect').click
expect(page).to have_content("Choisissez votre email de contact pour finaliser votre connexion") expect(page).to have_content("Choisissez votre email de contact pour finaliser votre connexion")
expect(page).to have_selector("#use_france_connect_email_no", visible: false, wait: 10)
page.execute_script('document.getElementById("use_france_connect_email_no").click()') find('label', text: /Oui, utiliser .* comme email de contact/).click
fill_in("email", with: "exemple@email.com")
page.find("input[type='submit'][name='commit'][value='Confirmer']").click click_on 'Valider'
expect(page).to have_content("Confirmez votre email")
click_on 'Continuer'
expect(page).to have_content('Vous avez un dossier prérempli') expect(page).to have_content('Vous avez un dossier prérempli')
find('.fr-btn.fr-mb-2w', text: 'Poursuivre mon dossier prérempli', wait: 10).click find('.fr-btn.fr-mb-2w', text: 'Poursuivre mon dossier prérempli', wait: 10).click
end end

View file

@ -135,12 +135,10 @@ describe 'Prefilling a dossier (with a POST request):', js: true do
page.find('.fr-connect').click page.find('.fr-connect').click
expect(page).to have_content("Choisissez votre email de contact pour finaliser votre connexion") expect(page).to have_content("Choisissez votre email de contact pour finaliser votre connexion")
expect(page).to have_selector("#use_france_connect_email_yes", visible: false, wait: 10)
page.execute_script('document.getElementById("use_france_connect_email_yes").click()')
click_on 'Confirmer' find('label', text: /Oui, utiliser .* comme email de contact/).click
expect(page).to have_content("Confirmez votre email")
click_on 'Continuer' click_on 'Valider'
expect(page).to have_content('Vous avez un dossier prérempli') expect(page).to have_content('Vous avez un dossier prérempli')
find('.fr-btn.fr-mb-2w', text: 'Poursuivre mon dossier prérempli', wait: 10).click find('.fr-btn.fr-mb-2w', text: 'Poursuivre mon dossier prérempli', wait: 10).click
end end