Commit 982d4d51e8110bec280eb00db0fb756b062103d9
1 parent
f4bca105
Exists in
spb-stable
and in
2 other branches
Backport Adapter#dn_matches_filter? from EE
Showing
2 changed files
with
35 additions
and
0 deletions
Show diff stats
lib/gitlab/ldap/adapter.rb
... | ... | @@ -77,6 +77,10 @@ module Gitlab |
77 | 77 | users(*args).first |
78 | 78 | end |
79 | 79 | |
80 | + def dn_matches_filter?(dn, filter) | |
81 | + ldap_search(base: dn, filter: filter, scope: Net::LDAP::SearchScope_BaseObject, attributes: %w{dn}).any? | |
82 | + end | |
83 | + | |
80 | 84 | def ldap_search(*args) |
81 | 85 | results = ldap.search(*args) |
82 | 86 | ... | ... |
... | ... | @@ -0,0 +1,31 @@ |
1 | +require 'spec_helper' | |
2 | + | |
3 | +describe Gitlab::LDAP::Adapter do | |
4 | + let(:adapter) { Gitlab::LDAP::Adapter.new } | |
5 | + | |
6 | + describe :dn_matches_filter? do | |
7 | + let(:ldap) { double(:ldap) } | |
8 | + subject { adapter.dn_matches_filter?(:dn, :filter) } | |
9 | + before { adapter.stub(ldap: ldap) } | |
10 | + | |
11 | + context "when the search is successful" do | |
12 | + context "and the result is non-empty" do | |
13 | + before { ldap.stub(search: [:foo]) } | |
14 | + | |
15 | + it { should be_true } | |
16 | + end | |
17 | + | |
18 | + context "and the result is empty" do | |
19 | + before { ldap.stub(search: []) } | |
20 | + | |
21 | + it { should be_false } | |
22 | + end | |
23 | + end | |
24 | + | |
25 | + context "when the search encounters an error" do | |
26 | + before { ldap.stub(search: nil, get_operation_result: double(code: 1, message: 'some error')) } | |
27 | + | |
28 | + it { should be_false } | |
29 | + end | |
30 | + end | |
31 | +end | ... | ... |