110 lines
3 KiB
Ruby
110 lines
3 KiB
Ruby
|
require 'spec_helper'
|
||
|
|
||
|
describe Gitlab::OAuth::User do
|
||
|
let(:oauth_user) { Gitlab::OAuth::User.new(auth_hash) }
|
||
|
let(:gl_user) { oauth_user.gl_user }
|
||
|
let(:uid) { 'my-uid' }
|
||
|
let(:provider) { 'my-provider' }
|
||
|
let(:auth_hash) { double(uid: uid, provider: provider, info: double(info_hash)) }
|
||
|
let(:info_hash) do
|
||
|
{
|
||
|
nickname: '-john+gitlab-ETC%.git@gmail.com',
|
||
|
name: 'John',
|
||
|
email: 'john@mail.com'
|
||
|
}
|
||
|
end
|
||
|
|
||
|
describe :persisted? 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
|
||
|
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')
|
||
|
expect( oauth_user.persisted? ).to be_falsey
|
||
|
end
|
||
|
end
|
||
|
|
||
|
describe :save do
|
||
|
let(:provider) { 'twitter' }
|
||
|
|
||
|
describe 'signup' do
|
||
|
context "with allow_single_sign_on enabled" do
|
||
|
before { Gitlab.config.omniauth.stub allow_single_sign_on: true }
|
||
|
|
||
|
it "creates a user from Omniauth" do
|
||
|
oauth_user.save
|
||
|
|
||
|
expect(gl_user).to be_valid
|
||
|
identity = gl_user.identities.first
|
||
|
expect(identity.extern_uid).to eql uid
|
||
|
expect(identity.provider).to eql 'twitter'
|
||
|
end
|
||
|
end
|
||
|
|
||
|
context "with allow_single_sign_on disabled (Default)" do
|
||
|
it "throws an error" do
|
||
|
expect{ oauth_user.save }.to raise_error StandardError
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
describe 'blocking' do
|
||
|
let(:provider) { 'twitter' }
|
||
|
before { Gitlab.config.omniauth.stub allow_single_sign_on: true }
|
||
|
|
||
|
context 'signup' do
|
||
|
context 'dont block on create' do
|
||
|
before { Gitlab.config.omniauth.stub block_auto_created_users: false }
|
||
|
|
||
|
it do
|
||
|
oauth_user.save
|
||
|
expect(gl_user).to be_valid
|
||
|
expect(gl_user).not_to be_blocked
|
||
|
end
|
||
|
end
|
||
|
|
||
|
context 'block on create' do
|
||
|
before { Gitlab.config.omniauth.stub block_auto_created_users: true }
|
||
|
|
||
|
it do
|
||
|
oauth_user.save
|
||
|
expect(gl_user).to be_valid
|
||
|
expect(gl_user).to be_blocked
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
context 'sign-in' do
|
||
|
before do
|
||
|
oauth_user.save
|
||
|
oauth_user.gl_user.activate
|
||
|
end
|
||
|
|
||
|
context 'dont block on create' do
|
||
|
before { Gitlab.config.omniauth.stub block_auto_created_users: false }
|
||
|
|
||
|
it do
|
||
|
oauth_user.save
|
||
|
expect(gl_user).to be_valid
|
||
|
expect(gl_user).not_to be_blocked
|
||
|
end
|
||
|
end
|
||
|
|
||
|
context 'block on create' do
|
||
|
before { Gitlab.config.omniauth.stub block_auto_created_users: true }
|
||
|
|
||
|
it do
|
||
|
oauth_user.save
|
||
|
expect(gl_user).to be_valid
|
||
|
expect(gl_user).not_to be_blocked
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|