diff options
Diffstat (limited to 'spec/controllers/invites_controller_spec.rb')
-rw-r--r-- | spec/controllers/invites_controller_spec.rb | 81 |
1 files changed, 77 insertions, 4 deletions
diff --git a/spec/controllers/invites_controller_spec.rb b/spec/controllers/invites_controller_spec.rb index a8d38d12f23..5195f482084 100644 --- a/spec/controllers/invites_controller_spec.rb +++ b/spec/controllers/invites_controller_spec.rb @@ -4,7 +4,7 @@ require 'spec_helper' RSpec.describe InvitesController do let_it_be(:user) { create(:user) } - let(:member) { create(:project_member, :invited, invite_email: user.email) } + let_it_be(:member, reload: true) { create(:project_member, :invited, invite_email: user.email) } let(:raw_invite_token) { member.raw_invite_token } let(:project_members) { member.source.users } let(:md5_member_global_id) { Digest::MD5.hexdigest(member.to_global_id.to_s) } @@ -77,10 +77,83 @@ RSpec.describe InvitesController do context 'when not logged in' do context 'when inviter is a member' do - it 'is redirected to a new session with invite email param' do - request + context 'when instance allows sign up' do + it 'indicates an account can be created in notice' do + request + + expect(flash[:notice]).to include('or create an account') + end + + context 'when user exists with the invited email' do + it 'is redirected to a new session with invite email param' do + request + + expect(response).to redirect_to(new_user_session_path(invite_email: member.invite_email)) + end + end + + context 'when user exists with the invited email as secondary email' do + before do + secondary_email = create(:email, user: user, email: 'foo@example.com') + member.update!(invite_email: secondary_email.email) + end + + it 'is redirected to a new session with invite email param' do + request + + expect(response).to redirect_to(new_user_session_path(invite_email: member.invite_email)) + end + end + + context 'when user does not exist with the invited email' do + before do + member.update!(invite_email: 'bogus_email@example.com') + end + + it 'indicates an account can be created in notice' do + request + + expect(flash[:notice]).to include('create an account or sign in') + end + + it 'is redirected to a new registration with invite email param' do + request + + expect(response).to redirect_to(new_user_registration_path(invite_email: member.invite_email)) + end + end + end + + context 'when instance does not allow sign up' do + before do + stub_application_setting(allow_signup?: false) + end + + it 'does not indicate an account can be created in notice' do + request + + expect(flash[:notice]).not_to include('or create an account') + end + + context 'when user exists with the invited email' do + it 'is redirected to a new session with invite email param' do + request + + expect(response).to redirect_to(new_user_session_path(invite_email: member.invite_email)) + end + end + + context 'when user does not exist with the invited email' do + before do + member.update!(invite_email: 'bogus_email@example.com') + end + + it 'is redirected to a new session with invite email param' do + request - expect(response).to redirect_to(new_user_session_path(invite_email: member.invite_email)) + expect(response).to redirect_to(new_user_session_path(invite_email: member.invite_email)) + end + end end end |