Backport Adapter#dn_matches_filter? from EE

This commit is contained in:
Jacob Vosmaer 2014-05-14 18:11:14 +02:00
parent f4bca105d1
commit 982d4d51e8
2 changed files with 35 additions and 0 deletions

View file

@ -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)

View 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