diff --git a/lib/ldap_fluff/generic_member_service.rb b/lib/ldap_fluff/generic_member_service.rb index 78c4cdb..018253b 100644 --- a/lib/ldap_fluff/generic_member_service.rb +++ b/lib/ldap_fluff/generic_member_service.rb @@ -23,10 +23,7 @@ def find_user(uid) end def find_by_dn(dn) - entry, base = dn.split(/(? name_filter(entry_value, entry_attr), :base => base) + user = @ldap.search(:base => dn, :scope => Net::LDAP::SearchScope_BaseObject) raise self.class::UIDNotFoundException if (user.nil? || user.empty?) user end diff --git a/test/ad_member_services_test.rb b/test/ad_member_services_test.rb index c58afc8..4e785ef 100644 --- a/test/ad_member_services_test.rb +++ b/test/ad_member_services_test.rb @@ -124,7 +124,7 @@ def test_find_missing_group end def test_find_by_dn - @ldap.expect(:search, [:result], [:filter => Net::LDAP::Filter.eq('cn', 'Foo Bar'), :base => 'dc=example,dc=com']) + @ldap.expect(:search, [:result], [:base => 'cn=Foo Bar,dc=example,dc=com', :scope => Net::LDAP::SearchScope_BaseObject]) @adms.ldap = @ldap assert_equal([:result], @adms.find_by_dn('cn=Foo Bar,dc=example,dc=com')) @ldap.verify @@ -135,14 +135,17 @@ def test_find_by_dn_comma_in_cn # returned by the server in answer to a group membership query with # backslashes before the commas in the CNs. Such escaped commas should not # be used when splitting the DN. - @ldap.expect(:search, [:result], [:filter => Net::LDAP::Filter.eq('cn', 'Bar, Foo'), :base => 'dc=example,dc=com']) + # + # Is this still required? DN won't be split anymore. + # + @ldap.expect(:search, [:result], [:base => 'cn=Bar\, Foo,dc=example,dc=com', :scope => Net::LDAP::SearchScope_BaseObject]) @adms.ldap = @ldap assert_equal([:result], @adms.find_by_dn('cn=Bar\, Foo,dc=example,dc=com')) @ldap.verify end def test_find_by_dn_missing_entry - @ldap.expect(:search, nil, [:filter => Net::LDAP::Filter.eq('cn', 'Foo Bar'), :base => 'dc=example,dc=com']) + @ldap.expect(:search, nil, [:base => 'cn=Foo Bar,dc=example,dc=com', :scope => Net::LDAP::SearchScope_BaseObject]) @adms.ldap = @ldap assert_raises(LdapFluff::ActiveDirectory::MemberService::UIDNotFoundException) do @adms.find_by_dn('cn=Foo Bar,dc=example,dc=com')