Skip to content

Commit

Permalink
Add more tests for bytes mode affected functions
Browse files Browse the repository at this point in the history
Tests marked with expected failure are currently affected by bug #147.

See: https://github.com/python-ldap/python-ldap/issues/147

Signed-off-by: Christian Heimes <cheimes@redhat.com>
  • Loading branch information
Christian Heimes authored and Petr Viktorin committed Jan 10, 2018
1 parent 98999bd commit 2f2f64c
Showing 1 changed file with 104 additions and 0 deletions.
104 changes: 104 additions & 0 deletions Tests/t_ldapobject.py
Original file line number Diff line number Diff line change
Expand Up @@ -161,6 +161,30 @@ def test_bytesmode_search_results_have_bytes(self):
for value in values:
self.assertEqual(type(value), bytes)

@unittest.skipUnless(PY2, "no bytes_mode under Py3")
@unittest.expectedFailure
def test_bytesmode_search_defaults(self):
l = self._get_bytes_ldapobject()
base = 'cn=Foo1,' + self.server.suffix
kwargs = dict(
base=base.encode('utf-8'),
scope=ldap.SCOPE_SUBTREE,
# filterstr=b'(objectClass=*)'
)
expected = [
(
base,
{'cn': [b'Foo1'], 'objectClass': [b'organizationalRole']}
),
]

result = l.search_s(**kwargs)
self.assertEqual(result, expected)
result = l.search_st(**kwargs)
self.assertEqual(result, expected)
result = l.search_ext_s(**kwargs)
self.assertEqual(result, expected)

@unittest.skipUnless(PY2, "no bytes_mode under Py3")
def test_unset_bytesmode_search_warns_bytes(self):
l = self._get_bytes_ldapobject(explicit=False)
Expand Down Expand Up @@ -263,18 +287,70 @@ def test003_search_oneattr(self):
[('cn=Foo4,ou=Container,'+self.server.suffix, {'cn': [b'Foo4']})]
)

def test_find_unique_entry(self):
result = self._ldap_conn.find_unique_entry(
self.server.suffix,
ldap.SCOPE_SUBTREE,
'(cn=Foo4)',
['cn'],
)
self.assertEqual(
result,
('cn=Foo4,ou=Container,'+self.server.suffix, {'cn': [b'Foo4']})
)
with self.assertRaises(ldap.SIZELIMIT_EXCEEDED):
# > 2 entries returned
self._ldap_conn.find_unique_entry(
self.server.suffix,
ldap.SCOPE_ONELEVEL,
'(cn=Foo*)',
['*'],
)
with self.assertRaises(ldap.NO_UNIQUE_ENTRY):
# 0 entries returned
self._ldap_conn.find_unique_entry(
self.server.suffix,
ldap.SCOPE_ONELEVEL,
'(cn=Bar*)',
['*'],
)

def test_search_subschema(self):
l = self._ldap_conn
dn = l.search_subschemasubentry_s()
self.assertIsInstance(dn, text_type)
self.assertEqual(dn, "cn=Subschema")
subschema = l.read_subschemasubentry_s(dn)
self.assertIsInstance(subschema, dict)
self.assertEqual(
sorted(subschema),
[
u'attributeTypes',
u'ldapSyntaxes',
u'matchingRuleUse',
u'matchingRules',
u'objectClasses'
]
)

@unittest.skipUnless(PY2, "no bytes_mode under Py3")
def test_search_subschema_have_bytes(self):
l = self._get_bytes_ldapobject(explicit=False)
dn = l.search_subschemasubentry_s()
self.assertIsInstance(dn, bytes)
self.assertEqual(dn, b"cn=Subschema")
subschema = l.read_subschemasubentry_s(dn)
self.assertIsInstance(subschema, dict)
self.assertEqual(
sorted(subschema),
[
b'attributeTypes',
b'ldapSyntaxes',
b'matchingRuleUse',
b'matchingRules',
b'objectClasses'
]
)

def test004_errno107(self):
l = self.ldap_object_class('ldap://127.0.0.1:42')
Expand Down Expand Up @@ -433,6 +509,34 @@ def test_multiple_starttls(self):
l.simple_bind_s(self.server.root_dn, self.server.root_pw)
self.assertEqual(l.whoami_s(), 'dn:' + self.server.root_dn)

def test_dse(self):
dse = self._ldap_conn.read_rootdse_s()
self.assertIsInstance(dse, dict)
self.assertEqual(dse[u'supportedLDAPVersion'], [b'3'])
self.assertEqual(
sorted(dse),
[u'configContext', u'entryDN', u'namingContexts', u'objectClass',
u'structuralObjectClass', u'subschemaSubentry',
u'supportedControl', u'supportedExtension', u'supportedFeatures',
u'supportedLDAPVersion', u'supportedSASLMechanisms']
)
self.assertEqual(
self._ldap_conn.get_naming_contexts(),
[self.server.suffix.encode('utf-8')]
)

@unittest.skipUnless(PY2, "no bytes_mode under Py3")
@unittest.expectedFailure
def test_dse_bytes(self):
l = self._get_bytes_ldapobject()
dse = l.read_rootdse_s()
self.assertIsInstance(dse, dict)
self.assertEqual(dse[u'supportedLDAPVersion'], [b'3'])
self.assertEqual(
l.get_naming_contexts(),
[self.server.suffix.encode('utf-8')]
)


class Test01_ReconnectLDAPObject(Test00_SimpleLDAPObject):
"""
Expand Down

0 comments on commit 2f2f64c

Please sign in to comment.