Backport Adapter#dn_matches_filter? from EE
This commit is contained in:
parent
f4bca105d1
commit
982d4d51e8
2 changed files with 35 additions and 0 deletions
|
@ -77,6 +77,10 @@ module Gitlab
|
||||||
users(*args).first
|
users(*args).first
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def dn_matches_filter?(dn, filter)
|
||||||
|
ldap_search(base: dn, filter: filter, scope: Net::LDAP::SearchScope_BaseObject, attributes: %w{dn}).any?
|
||||||
|
end
|
||||||
|
|
||||||
def ldap_search(*args)
|
def ldap_search(*args)
|
||||||
results = ldap.search(*args)
|
results = ldap.search(*args)
|
||||||
|
|
||||||
|
|
31
spec/lib/gitlab/ldap/ldap_adapter_spec.rb
Normal file
31
spec/lib/gitlab/ldap/ldap_adapter_spec.rb
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
require 'spec_helper'
|
||||||
|
|
||||||
|
describe Gitlab::LDAP::Adapter do
|
||||||
|
let(:adapter) { Gitlab::LDAP::Adapter.new }
|
||||||
|
|
||||||
|
describe :dn_matches_filter? do
|
||||||
|
let(:ldap) { double(:ldap) }
|
||||||
|
subject { adapter.dn_matches_filter?(:dn, :filter) }
|
||||||
|
before { adapter.stub(ldap: ldap) }
|
||||||
|
|
||||||
|
context "when the search is successful" do
|
||||||
|
context "and the result is non-empty" do
|
||||||
|
before { ldap.stub(search: [:foo]) }
|
||||||
|
|
||||||
|
it { should be_true }
|
||||||
|
end
|
||||||
|
|
||||||
|
context "and the result is empty" do
|
||||||
|
before { ldap.stub(search: []) }
|
||||||
|
|
||||||
|
it { should be_false }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context "when the search encounters an error" do
|
||||||
|
before { ldap.stub(search: nil, get_operation_result: double(code: 1, message: 'some error')) }
|
||||||
|
|
||||||
|
it { should be_false }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in a new issue