diff --git a/spec/lib/gitlab/o_auth/user_spec.rb b/spec/lib/gitlab/o_auth/user_spec.rb index d383ea2d051..c6cca98a037 100644 --- a/spec/lib/gitlab/o_auth/user_spec.rb +++ b/spec/lib/gitlab/o_auth/user_spec.rb @@ -19,23 +19,34 @@ describe Gitlab::OAuth::User do let!(:existing_user) { create(:omniauth_user, extern_uid: 'my-uid', provider: 'my-provider') } it "finds an existing user based on uid and provider (facebook)" do + # FIXME (rspeicher): It's unlikely that this test is actually doing anything + # `auth` is never used and removing it entirely doesn't break the test, so + # what's it doing? auth = double(info: double(name: 'John'), uid: 'my-uid', provider: 'my-provider') expect( oauth_user.persisted? ).to be_truthy end it "returns false if use is not found in database" do - auth_hash.stub(uid: 'non-existing') + allow(auth_hash).to receive(:uid).and_return('non-existing') expect( oauth_user.persisted? ).to be_falsey end end describe :save do + def stub_omniauth_config(messages) + allow(Gitlab.config.omniauth).to receive_messages(messages) + end + + def stub_ldap_config(messages) + allow(Gitlab::LDAP::Config).to receive_messages(messages) + end + let(:provider) { 'twitter' } describe 'signup' do shared_examples "to verify compliance with allow_single_sign_on" do context "with allow_single_sign_on enabled" do - before { Gitlab.config.omniauth.stub allow_single_sign_on: true } + before { stub_omniauth_config(allow_single_sign_on: true) } it "creates a user from Omniauth" do oauth_user.save @@ -48,7 +59,7 @@ describe Gitlab::OAuth::User do end context "with allow_single_sign_on disabled (Default)" do - before { Gitlab.config.omniauth.stub allow_single_sign_on: false } + before { stub_omniauth_config(allow_single_sign_on: false) } it "throws an error" do expect{ oauth_user.save }.to raise_error StandardError end @@ -56,36 +67,36 @@ describe Gitlab::OAuth::User do end context "with auto_link_ldap_user disabled (default)" do - before { Gitlab.config.omniauth.stub auto_link_ldap_user: false } + before { stub_omniauth_config(auto_link_ldap_user: false) } include_examples "to verify compliance with allow_single_sign_on" end context "with auto_link_ldap_user enabled" do - before { Gitlab.config.omniauth.stub auto_link_ldap_user: true } - + before { stub_omniauth_config(auto_link_ldap_user: true) } + context "and no LDAP provider defined" do - before { allow(Gitlab::LDAP::Config).to receive(:providers).and_return([]) } - + before { stub_ldap_config(providers: []) } + include_examples "to verify compliance with allow_single_sign_on" end - + context "and at least one LDAP provider is defined" do - before { allow(Gitlab::LDAP::Config).to receive(:providers).and_return(['ldapmain']) } + before { stub_ldap_config(providers: %w(ldapmain)) } context "and a corresponding LDAP person" do before do - ldap_user.stub(:uid) { uid } - ldap_user.stub(:username) { uid } - ldap_user.stub(:email) { ['johndoe@example.com','john2@example.com'] } - ldap_user.stub(:dn) { 'uid=user1,ou=People,dc=example' } + allow(ldap_user).to receive(:uid) { uid } + allow(ldap_user).to receive(:username) { uid } + allow(ldap_user).to receive(:email) { ['johndoe@example.com','john2@example.com'] } + allow(ldap_user).to receive(:dn) { 'uid=user1,ou=People,dc=example' } allow(Gitlab::LDAP::Person).to receive(:find_by_uid).and_return(ldap_user) end - + context "and no account for the LDAP user" do - + it "creates a user with dual LDAP and omniauth identities" do oauth_user.save - + expect(gl_user).to be_valid expect(gl_user.username).to eql uid expect(gl_user.email).to eql 'johndoe@example.com' @@ -97,12 +108,12 @@ describe Gitlab::OAuth::User do ]) end end - + context "and LDAP user has an account already" do let!(:existing_user) { create(:omniauth_user, email: 'john@example.com', extern_uid: 'uid=user1,ou=People,dc=example', provider: 'ldapmain', username: 'john') } it "adds the omniauth identity to the LDAP account" do oauth_user.save - + expect(gl_user).to be_valid expect(gl_user.username).to eql 'john' expect(gl_user.email).to eql 'john@example.com' @@ -115,10 +126,10 @@ describe Gitlab::OAuth::User do end end end - + context "and no corresponding LDAP person" do before { allow(Gitlab::LDAP::Person).to receive(:find_by_uid).and_return(nil) } - + include_examples "to verify compliance with allow_single_sign_on" end end @@ -128,11 +139,11 @@ describe Gitlab::OAuth::User do describe 'blocking' do let(:provider) { 'twitter' } - before { Gitlab.config.omniauth.stub allow_single_sign_on: true } + before { stub_omniauth_config(allow_single_sign_on: true) } context 'signup with omniauth only' do context 'dont block on create' do - before { Gitlab.config.omniauth.stub block_auto_created_users: false } + before { stub_omniauth_config(block_auto_created_users: false) } it do oauth_user.save @@ -142,7 +153,7 @@ describe Gitlab::OAuth::User do end context 'block on create' do - before { Gitlab.config.omniauth.stub block_auto_created_users: true } + before { stub_omniauth_config(block_auto_created_users: true) } it do oauth_user.save @@ -154,17 +165,17 @@ describe Gitlab::OAuth::User do context 'signup with linked omniauth and LDAP account' do before do - Gitlab.config.omniauth.stub auto_link_ldap_user: true - ldap_user.stub(:uid) { uid } - ldap_user.stub(:username) { uid } - ldap_user.stub(:email) { ['johndoe@example.com','john2@example.com'] } - ldap_user.stub(:dn) { 'uid=user1,ou=People,dc=example' } + stub_omniauth_config(auto_link_ldap_user: true) + allow(ldap_user).to receive(:uid) { uid } + allow(ldap_user).to receive(:username) { uid } + allow(ldap_user).to receive(:email) { ['johndoe@example.com','john2@example.com'] } + allow(ldap_user).to receive(:dn) { 'uid=user1,ou=People,dc=example' } allow(oauth_user).to receive(:ldap_person).and_return(ldap_user) end context "and no account for the LDAP user" do context 'dont block on create (LDAP)' do - before { Gitlab::LDAP::Config.any_instance.stub block_auto_created_users: false } + before { allow_any_instance_of(Gitlab::LDAP::Config).to receive_messages(block_auto_created_users: false) } it do oauth_user.save @@ -174,7 +185,7 @@ describe Gitlab::OAuth::User do end context 'block on create (LDAP)' do - before { Gitlab::LDAP::Config.any_instance.stub block_auto_created_users: true } + before { allow_any_instance_of(Gitlab::LDAP::Config).to receive_messages(block_auto_created_users: true) } it do oauth_user.save @@ -188,7 +199,7 @@ describe Gitlab::OAuth::User do let!(:existing_user) { create(:omniauth_user, email: 'john@example.com', extern_uid: 'uid=user1,ou=People,dc=example', provider: 'ldapmain', username: 'john') } context 'dont block on create (LDAP)' do - before { Gitlab::LDAP::Config.any_instance.stub block_auto_created_users: false } + before { allow_any_instance_of(Gitlab::LDAP::Config).to receive_messages(block_auto_created_users: false) } it do oauth_user.save @@ -198,7 +209,7 @@ describe Gitlab::OAuth::User do end context 'block on create (LDAP)' do - before { Gitlab::LDAP::Config.any_instance.stub block_auto_created_users: true } + before { allow_any_instance_of(Gitlab::LDAP::Config).to receive_messages(block_auto_created_users: true) } it do oauth_user.save @@ -217,7 +228,7 @@ describe Gitlab::OAuth::User do end context 'dont block on create' do - before { Gitlab.config.omniauth.stub block_auto_created_users: false } + before { stub_omniauth_config(block_auto_created_users: false) } it do oauth_user.save @@ -227,7 +238,7 @@ describe Gitlab::OAuth::User do end context 'block on create' do - before { Gitlab.config.omniauth.stub block_auto_created_users: true } + before { stub_omniauth_config(block_auto_created_users: true) } it do oauth_user.save @@ -237,7 +248,7 @@ describe Gitlab::OAuth::User do end context 'dont block on create (LDAP)' do - before { Gitlab::LDAP::Config.any_instance.stub block_auto_created_users: false } + before { allow_any_instance_of(Gitlab::LDAP::Config).to receive_messages(block_auto_created_users: false) } it do oauth_user.save @@ -247,7 +258,7 @@ describe Gitlab::OAuth::User do end context 'block on create (LDAP)' do - before { Gitlab::LDAP::Config.any_instance.stub block_auto_created_users: true } + before { allow_any_instance_of(Gitlab::LDAP::Config).to receive_messages(block_auto_created_users: true) } it do oauth_user.save