|
| 1 | +# frozen_string_literal: true |
| 2 | + |
| 3 | +describe 'Invite sign-in page', js: true do |
| 4 | + let(:owner) { create(:user) } |
| 5 | + let(:procedure) { create(:simple_procedure) } |
| 6 | + let(:dossier) { create(:dossier, :with_individual, :en_construction, user: owner, procedure:) } |
| 7 | + let(:guest) { create(:user, password: SECURE_PASSWORD) } |
| 8 | + let(:invite) { create(:invite, dossier:, user: guest) } |
| 9 | + let!(:targeted_user_link) do |
| 10 | + create(:targeted_user_link, target_context: 'invite', target_model: invite, user: guest) |
| 11 | + end |
| 12 | + |
| 13 | + before do |
| 14 | + allow(FranceConnectService).to receive(:enabled?).and_return(true) |
| 15 | + allow(ProConnectService).to receive(:enabled?).and_return(true) |
| 16 | + end |
| 17 | + |
| 18 | + scenario 'unauthenticated guest sees all sign-in options' do |
| 19 | + visit targeted_user_link_path(targeted_user_link) |
| 20 | + |
| 21 | + expect(page).to have_current_path("/users/sign_in?context=invite") |
| 22 | + expect(page).to have_content('Vous devez vous connecter ou créer un compte') |
| 23 | + expect(page).to have_content('FranceConnect') |
| 24 | + expect(page).to have_content('ProConnect') |
| 25 | + expect(page).to have_content('Se connecter avec son adresse électronique') |
| 26 | + expect(page).to have_link(I18n.t('views.shared.account.create', application_name: Current.application_name)) |
| 27 | + end |
| 28 | + |
| 29 | + scenario 'guest signs in with email and is redirected to dossier' do |
| 30 | + visit targeted_user_link_path(targeted_user_link) |
| 31 | + |
| 32 | + within('#session-new') do |
| 33 | + fill_in :user_email, with: guest.email |
| 34 | + fill_in :user_password, with: SECURE_PASSWORD |
| 35 | + click_on 'Se connecter' |
| 36 | + end |
| 37 | + |
| 38 | + expect(page).to have_current_path(dossier_path(dossier)) |
| 39 | + end |
| 40 | + |
| 41 | + scenario 'guest clicks create account link' do |
| 42 | + visit targeted_user_link_path(targeted_user_link) |
| 43 | + |
| 44 | + click_on I18n.t('views.shared.account.create', application_name: Current.application_name) |
| 45 | + |
| 46 | + expect(page).to have_current_path(new_user_registration_path) |
| 47 | + end |
| 48 | +end |
0 commit comments