summaryrefslogtreecommitdiff
path: root/spec
diff options
context:
space:
mode:
authorIzaak Alpert <ialpert@blackberry.com>2013-09-12 16:27:51 -0400
committerIzaak Alpert <ialpert@blackberry.com>2013-09-22 20:25:47 -0400
commit4fcc17e6673b271992a9d4a5106f8bd64cfe86b1 (patch)
treec4cb5861ae06853d2770891031f277f857a8925b /spec
parent089f0000cae2d49aa7f031e628a6d9e66db69fec (diff)
downloadgitlab-ce-4fcc17e6673b271992a9d4a5106f8bd64cfe86b1.tar.gz
Allows username only updates to ldap properties
-when logging in if users are allowed to login with just usernames in ldap we will update uid of the user if their uid is out of date Conflicts: spec/lib/auth_spec.rb Change-Id: Ia171b3d5133da86edc18c0d08ecfaf6a174f2574
Diffstat (limited to 'spec')
-rw-r--r--spec/lib/auth_oauth_spec.rb98
1 files changed, 98 insertions, 0 deletions
diff --git a/spec/lib/auth_oauth_spec.rb b/spec/lib/auth_oauth_spec.rb
new file mode 100644
index 00000000000..c9deb590f67
--- /dev/null
+++ b/spec/lib/auth_oauth_spec.rb
@@ -0,0 +1,98 @@
+require 'spec_helper'
+
+describe Gitlab::Auth do
+ let(:gl_auth) { Gitlab::Auth.new }
+
+ before do
+ Gitlab.config.stub(omniauth: {})
+
+ @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 update credentials by username if missing uid and Gitlab.config.ldap.allow_username_or_email_login is true" do
+ user = double('User')
+ value = Gitlab.config.ldap.allow_username_or_email_login
+ Gitlab.config.ldap['allow_username_or_email_login'] = true
+ User.stub find_by_extern_uid_and_provider: nil
+ User.stub find_by_email: nil
+ User.stub find_by_username: user
+ user.should_receive :update_attributes
+ gl_auth.find_for_ldap_auth(@auth)
+ Gitlab.config.ldap['allow_username_or_email_login'] = value
+ end
+
+ it "should not update credentials by username if missing uid and Gitlab.config.ldap.allow_username_or_email_login is false" do
+ user = double('User')
+ value = Gitlab.config.ldap.allow_username_or_email_login
+ Gitlab.config.ldap['allow_username_or_email_login'] = false
+ User.stub find_by_extern_uid_and_provider: nil
+ User.stub find_by_email: nil
+ User.stub find_by_username: user
+ user.should_not_receive :update_attributes
+ gl_auth.find_for_ldap_auth(@auth)
+ Gitlab.config.ldap['allow_username_or_email_login'] = value
+ end
+
+ it "should create from auth if user does not 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['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
+end