Refactorn oauth & ldap
This commit is contained in:
parent
fa4150d47d
commit
048d47e626
4 changed files with 176 additions and 55 deletions
93
spec/lib/auth_spec.rb
Normal file
93
spec/lib/auth_spec.rb
Normal file
|
@ -0,0 +1,93 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe Gitlab::Auth do
|
||||
let(:gl_auth) { Gitlab::Auth.new }
|
||||
|
||||
before do
|
||||
@info = mock(
|
||||
uid: '12djsak321',
|
||||
name: 'John',
|
||||
email: 'john@mail.com'
|
||||
)
|
||||
end
|
||||
|
||||
describe :find_for_ldap_auth do
|
||||
before do
|
||||
@auth = mock(
|
||||
uid: '12djsak321',
|
||||
info: @info,
|
||||
provider: 'ldap'
|
||||
)
|
||||
end
|
||||
|
||||
it "should find by uid & provider" do
|
||||
User.should_receive :find_by_extern_uid_and_provider
|
||||
gl_auth.find_for_ldap_auth(@auth)
|
||||
end
|
||||
|
||||
it "should update credentials by email if missing uid" do
|
||||
user = double('User')
|
||||
User.stub find_by_extern_uid_and_provider: nil
|
||||
User.stub find_by_email: user
|
||||
user.should_receive :update_attributes
|
||||
gl_auth.find_for_ldap_auth(@auth)
|
||||
end
|
||||
|
||||
|
||||
it "should create from auth if user doesnot exist"do
|
||||
User.stub find_by_extern_uid_and_provider: nil
|
||||
User.stub find_by_email: nil
|
||||
gl_auth.should_receive :create_from_omniauth
|
||||
gl_auth.find_for_ldap_auth(@auth)
|
||||
end
|
||||
end
|
||||
|
||||
describe :find_or_new_for_omniauth do
|
||||
before do
|
||||
@auth = mock(
|
||||
info: @info,
|
||||
provider: 'twitter',
|
||||
uid: '12djsak321',
|
||||
)
|
||||
end
|
||||
|
||||
it "should find user"do
|
||||
User.should_receive :find_by_provider_and_extern_uid
|
||||
gl_auth.should_not_receive :create_from_omniauth
|
||||
gl_auth.find_or_new_for_omniauth(@auth)
|
||||
end
|
||||
|
||||
it "should not create user"do
|
||||
User.stub find_by_provider_and_extern_uid: nil
|
||||
gl_auth.should_not_receive :create_from_omniauth
|
||||
gl_auth.find_or_new_for_omniauth(@auth)
|
||||
end
|
||||
|
||||
it "should create user if single_sing_on"do
|
||||
Gitlab.config.omniauth.stub allow_single_sign_on: true
|
||||
User.stub find_by_provider_and_extern_uid: nil
|
||||
gl_auth.should_receive :create_from_omniauth
|
||||
gl_auth.find_or_new_for_omniauth(@auth)
|
||||
end
|
||||
end
|
||||
|
||||
describe :create_from_omniauth do
|
||||
it "should create user from LDAP" do
|
||||
@auth = mock(info: @info, provider: 'ldap')
|
||||
user = gl_auth.create_from_omniauth(@auth, true)
|
||||
|
||||
user.should be_valid
|
||||
user.extern_uid.should == @info.uid
|
||||
user.provider.should == 'ldap'
|
||||
end
|
||||
|
||||
it "should create user from Omniauth" do
|
||||
@auth = mock(info: @info, provider: 'twitter')
|
||||
user = gl_auth.create_from_omniauth(@auth, false)
|
||||
|
||||
user.should be_valid
|
||||
user.extern_uid.should == @info.uid
|
||||
user.provider.should == 'twitter'
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue