Welcome to mirror list, hosted at ThFree Co, Russian Federation.

ldap_user_auth_spec.rb « ldap « gitlab « lib « spec - gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: a0e74c49631165190b0e5fa426d09ddec1db91bf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
require 'spec_helper'

describe Gitlab::LDAP do
  let(:gl_auth) { Gitlab::LDAP::User }

  before do
    Gitlab.config.stub(omniauth: {})

    @info = double(
      uid: '12djsak321',
      name: 'John',
      email: 'john@mail.com'
    )
  end

  describe :find_for_ldap_auth do
    before do
      @auth = double(
        uid: '12djsak321',
        info: @info,
        provider: 'ldap'
      )
    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).with(hash_including(email: anything())) { user }
      user.should_receive :update_attributes
      gl_auth.find_or_create(@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).with(hash_including(email: anything())) { nil }
      User.stub(:find_by).with(hash_including(username: anything())) { user }
      user.should_receive :update_attributes
      gl_auth.find_or_create(@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).with(hash_including(email: anything())) { nil }
      User.stub(:find_by).with(hash_including(username: anything())) { user }
      user.should_not_receive :update_attributes
      gl_auth.find_or_create(@auth)
      Gitlab.config.ldap['allow_username_or_email_login'] = value
    end
  end
end