diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2021-04-28 03:09:58 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2021-04-28 03:09:58 +0000 |
commit | 61ae9de492194653156cdd6e2b528e1dec5c99b6 (patch) | |
tree | 48d4cb8d8ce54253bd48a69f6e6ecbd165d0cc45 /spec/controllers/registrations_controller_spec.rb | |
parent | 533d1ccc9875370e8f296c3de7dfb9c0e6a5c512 (diff) | |
download | gitlab-ce-61ae9de492194653156cdd6e2b528e1dec5c99b6.tar.gz |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/controllers/registrations_controller_spec.rb')
-rw-r--r-- | spec/controllers/registrations_controller_spec.rb | 41 |
1 files changed, 40 insertions, 1 deletions
diff --git a/spec/controllers/registrations_controller_spec.rb b/spec/controllers/registrations_controller_spec.rb index aac7c10d878..286c6b591f4 100644 --- a/spec/controllers/registrations_controller_spec.rb +++ b/spec/controllers/registrations_controller_spec.rb @@ -22,8 +22,9 @@ RSpec.describe RegistrationsController do describe '#create' do let(:base_user_params) { { first_name: 'first', last_name: 'last', username: 'new_username', email: 'new@user.com', password: 'Any_password' } } let(:user_params) { { user: base_user_params } } + let(:session_params) { {} } - subject { post(:create, params: user_params) } + subject { post(:create, params: user_params, session: session_params) } context '`blocked_pending_approval` state' do context 'when the `require_admin_approval_after_user_signup` setting is turned on' do @@ -148,6 +149,26 @@ RSpec.describe RegistrationsController do expect { subject }.to have_enqueued_mail(DeviseMailer, :confirmation_instructions) expect(controller.current_user).to be_nil end + + context 'when registration is triggered from an accepted invite' do + context 'when invite email matches email used on registration' do + let(:session_params) { { invite_email: user_params.dig(:user, :email) } } + + it 'signs the user in without sending a confirmation email', :aggregate_failures do + expect { subject }.not_to have_enqueued_mail(DeviseMailer, :confirmation_instructions) + expect(controller.current_user).to be_confirmed + end + end + + context 'when invite email does not match the email used on registration' do + let(:session_params) { { invite_email: 'bogus@email.com' } } + + it 'does not authenticate the user and sends a confirmation email', :aggregate_failures do + expect { subject }.to have_enqueued_mail(DeviseMailer, :confirmation_instructions) + expect(controller.current_user).to be_nil + end + end + end end context 'when soft email confirmation is enabled' do @@ -161,6 +182,24 @@ RSpec.describe RegistrationsController do expect(controller.current_user).to be_present expect(response).to redirect_to(users_sign_up_welcome_path) end + + context 'when invite email matches email used on registration' do + let(:session_params) { { invite_email: user_params.dig(:user, :email) } } + + it 'signs the user in without sending a confirmation email', :aggregate_failures do + expect { subject }.not_to have_enqueued_mail(DeviseMailer, :confirmation_instructions) + expect(controller.current_user).to be_confirmed + end + end + + context 'when invite email does not match the email used on registration' do + let(:session_params) { { invite_email: 'bogus@email.com' } } + + it 'authenticates the user and sends a confirmation email without confirming', :aggregate_failures do + expect { subject }.to have_enqueued_mail(DeviseMailer, :confirmation_instructions) + expect(controller.current_user).not_to be_confirmed + end + end end end |