def XXtest_bind_with_non_existant_user(self): ldapurl = 'ldap://ldap.example.com' dom = 'dc=example,dc=com' backend._addTreeItems(ldapurl, dom) connection = backend.initialize(ldapurl) connection.add_s(*self.makeOU('dc=example,dc=com', 'users')) self.assertRaises(backend.NO_SUCH_OBJECT, connection.simple_bind_s, 'uid=noone,ou=users,dc=example,dc=com', 'password')
def test_adding_items_to_tree(self): ldapurl = 'ldap://ldap.example.com' dom = 'dc=example,dc=com' dn = 'uid=uid1,%s' % dom attrs = [('testattr','testattr1')] backend._addTreeItems(ldapurl, dom) c = backend.initialize(ldapurl) c.simple_bind_s() expected = {ldapurl: { 'dc=com': { 'dn': 'dc=com', 'dc=example': { 'dn': 'dc=example,dc=com', 'uid=uid1': { 'dn': 'uid=uid1,dc=example,dc=com', 'uid': ['uid1'], 'testattr': ['testattr1'] } } } }} c.add_s(dn, attrs) self.failUnlessEqual(backend.TREE, expected)
def test_unbound_modifying_raises_error(self): dn, attrs = self.makeOU(self.dom, 'users') backend._addTreeItems(self.ldapurl, dn, attrs) mod_attrs = [(backend.MOD_ADD, 'testattr', 'TESTATTR')] connection = backend.initialize(self.ldapurl) self.assertRaises(backend.LDAPError, connection.modify_s, dn, mod_attrs)
def test_clearing_only_single_branch(self): backend._addTreeItems('ldap://ldap.example.com', 'dc=example,dc=com') backend._addTreeItems('ldap://ldap.example.org', 'dc=example,dc=org') backend._clearTree('ldap://ldap.example.org') self.assertEqual(backend.TREE, { 'ldap://ldap.example.com': {'dc=com': {'dn': 'dc=com', 'dc=example': {'dn': 'dc=example,dc=com'}}}, 'ldap://ldap.example.org': {}, })
def test_bind_with_blank_password(self): ldapurl = 'ldap://ldap.example.com' dom = 'dc=example,dc=com' backend._addTreeItems(ldapurl, dom) connection = backend.initialize(ldapurl) result = connection.simple_bind_s('noone', '') self.assert_(result) self.assert_(connection.bound)
def test_bind_with_directory_manager(self): ldapurl = 'ldap://ldap.example.com' dom = 'dc=example,dc=com' backend._addTreeItems(ldapurl, dom) connection = backend.initialize(ldapurl) result = connection.simple_bind_s('Manager', 'password') self.assert_(result) self.assert_(connection.bound)
def setUp(self): self.ldapurl = 'ldap://ldap.example.com' self.root_dn = 'dc=example,dc=com' backend._addTreeItems(self.ldapurl, self.root_dn) backend._addTreeItems(self.ldapurl, *self.makeOU(self.root_dn, 'users')) backend._addTreeItems(self.ldapurl, *self.makeOU(self.root_dn, 'groups')) backend._addTreeItems(self.ldapurl, *self.makeUser('ou=users,%s' % self.root_dn, 'jradford', 'Jacob', 'Radford')) backend._addTreeItems(self.ldapurl, *self.makeUser('ou=users,%s' % self.root_dn, 'kwa0004', 'Karl', 'Ward'))
def test_unbound_searching_always_returns_nothing(self): dn, attrs = self.makeOU(self.dom, 'users') backend._addTreeItems(self.ldapurl, dn, attrs) dn, attrs = self.makeUser('ou=users,%s' % self.dom, 'jradford', 'Jacob', 'Radford') backend._addTreeItems(self.ldapurl, dn, attrs) connection = backend.initialize(self.ldapurl) result = connection.search_s(self.dom) self.failIf(result)
def test_disconnecting(self): ldapurl = 'ldap://ldap.example.com' dom = 'dc=example,dc=com' backend._addTreeItems(ldapurl, dom) connection = backend.initialize(ldapurl) connection.simple_bind_s() connection.search_s( dom ) connection.unbind_s() self.assertRaises(backend.LDAPError, connection.search_s, dom)
def XXtest_bind_with_user_but_wrong_pass(self): ldapurl = 'ldap://ldap.example.com' dom = 'dc=example,dc=com' backend._addTreeItems(ldapurl, dom) connection = backend.initialize(ldapurl) connection.add_s(*self.makeOU('dc=example,dc=com', 'users')) connection.add_s(*self.makeUser('ou=users,dc=example,dc=com', 'jradford', 'Jacob', 'Radford')) self.assertRaises(backend.INVALID_CREDENTIALS, connection.simple_bind_s, 'uid=jradford,ou=users,dc=example,dc=com', 'badpassword')
def test_disconnecting(self): ldapurl = 'ldap://ldap.example.com' dom = 'dc=example,dc=com' backend._addTreeItems(ldapurl, dom) connection = backend.initialize(ldapurl) connection.simple_bind_s() connection.search_s(dom) connection.unbind_s() self.assertRaises(backend.LDAPError, connection.search_s, dom)
def XXtest_bind_with_user(self): ldapurl = 'ldap://ldap.example.com' dom = 'dc=example,dc=com' backend._addTreeItems(ldapurl, dom) connection = backend.initialize(ldapurl) connection.add_s(*self.makeOU('dc=example,dc=com', 'users')) connection.add_s(*self.makeUser('ou=users,dc=example,dc=com', 'jradford', 'Jacob', 'Radford')) result = connection.simple_bind_s('uid=jradford,ou=users,dc=example,dc=com', 'password') self.assert_(result)
def test_attempted_add_to_non_existant_branch_raises_error(self): ldapurl = 'ldap://ldap.example.com' dom = 'dc=example,dc=com' dn = 'uid=uid1,ou=users,%s' % dom attrs = dict(testattr='testattr1') backend._addTreeItems(ldapurl, dom) c = backend.initialize(ldapurl) c.simple_bind_s() self.assertRaises(backend.NO_SUCH_OBJECT, c.add_s, dn, attrs)
def XXtest_bind_with_user(self): ldapurl = 'ldap://ldap.example.com' dom = 'dc=example,dc=com' backend._addTreeItems(ldapurl, dom) connection = backend.initialize(ldapurl) connection.add_s(*self.makeOU('dc=example,dc=com', 'users')) connection.add_s(*self.makeUser('ou=users,dc=example,dc=com', 'jradford', 'Jacob', 'Radford')) result = connection.simple_bind_s( 'uid=jradford,ou=users,dc=example,dc=com', 'password') self.assert_(result)
def test_attempted_add_of_duplicate_raises_error(self): ldapurl = 'ldap://ldap.example.com' dom = 'dc=example,dc=com' dn = 'uid=uid1,%s' % dom attrs = [('testattr', 'testattr1')] backend._addTreeItems(ldapurl, dom) c = backend.initialize(ldapurl) c.simple_bind_s() c.add_s(dn, attrs) self.assertRaises(backend.ALREADY_EXISTS, c.add_s, dn, attrs)
def test_attempted_add_of_duplicate_raises_error(self): ldapurl = 'ldap://ldap.example.com' dom = 'dc=example,dc=com' dn = 'uid=uid1,%s' % dom attrs = [('testattr','testattr1')] backend._addTreeItems(ldapurl, dom) c = backend.initialize(ldapurl) c.simple_bind_s() c.add_s(dn, attrs) self.assertRaises(backend.ALREADY_EXISTS, c.add_s, dn, attrs)
def test_connection_targets_separate_branch_of_tree(self): ldapurl = 'ldap://ldap.example.com' dom = 'dc=example,dc=com' self.assertRaises(backend.LDAPError, backend.initialize, ldapurl) backend._addTreeItems(ldapurl, dom) connection = backend.initialize(ldapurl) self.assert_(connection) ldapurl = 'ldap://ldap.example.org' dom = 'dc=example,dc=org' self.assertRaises(backend.LDAPError, backend.initialize, ldapurl) backend._addTreeItems(ldapurl, dom) connection = backend.initialize(ldapurl) self.assert_(connection)
def test_clearing_only_single_branch(self): backend._addTreeItems('ldap://ldap.example.com', 'dc=example,dc=com') backend._addTreeItems('ldap://ldap.example.org', 'dc=example,dc=org') backend._clearTree('ldap://ldap.example.org') self.assertEqual( backend.TREE, { 'ldap://ldap.example.com': { 'dc=com': { 'dn': 'dc=com', 'dc=example': { 'dn': 'dc=example,dc=com' } } }, 'ldap://ldap.example.org': {}, })
def setUp(self): self.ldapurl = 'ldap://ldap.example.com' self.root_dn = 'dc=example,dc=com' backend._addTreeItems(self.ldapurl, self.root_dn) backend._addTreeItems(self.ldapurl, *self.makeOU(self.root_dn, 'users')) backend._addTreeItems(self.ldapurl, *self.makeOU(self.root_dn, 'groups')) backend._addTreeItems( self.ldapurl, *self.makeUser('ou=users,%s' % self.root_dn, 'jradford', 'Jacob', 'Radford')) backend._addTreeItems( self.ldapurl, *self.makeUser('ou=users,%s' % self.root_dn, 'kwa0004', 'Karl', 'Ward'))
def test_adding_structural_items_to_tree_with_attributes(self): ldapurl = 'ldap://ldap.example.com' base = 'dc=example,dc=com' backend._addTreeItems(ldapurl, base) dn, attrs = self.makeOU(base, 'users') backend._addTreeItems(ldapurl, dn, attrs) expected = {'ldap://ldap.example.com': { 'dc=com': { 'dn': 'dc=com', 'dc=example': { 'dn': 'dc=example,dc=com', 'ou=users': { 'dn': dn, 'ou': ['users'], 'objectclass': ['top', 'organizationalUnit'], } } } }} self.failUnlessEqual(backend.TREE, expected)
def test_adding_structural_items_to_tree(self): self.assertEqual(backend.TREE.has_key('ldap://ldap.example.com'), False) backend._addTreeItems('ldap://ldap.example.com', 'dc=example,dc=com') expected = {'ldap://ldap.example.com': { 'dc=com': { 'dn': 'dc=com', 'dc=example': {'dn': 'dc=example,dc=com',} } }} self.failUnlessEqual(backend.TREE, expected) self.assertEqual(backend.TREE.has_key('ldap://ldap.example.org'), False) backend._addTreeItems('ldap://ldap.example.org', 'dc=example,dc=org') expected['ldap://ldap.example.org'] = { 'dc=org': { 'dn': 'dc=org', 'dc=example': {'dn': 'dc=example,dc=org',} } } self.failUnlessEqual(backend.TREE, expected)
def test_adding_structural_items_to_tree_with_attributes(self): ldapurl = 'ldap://ldap.example.com' base = 'dc=example,dc=com' backend._addTreeItems(ldapurl, base) dn, attrs = self.makeOU(base, 'users') backend._addTreeItems(ldapurl, dn, attrs) expected = { 'ldap://ldap.example.com': { 'dc=com': { 'dn': 'dc=com', 'dc=example': { 'dn': 'dc=example,dc=com', 'ou=users': { 'dn': dn, 'ou': ['users'], 'objectclass': ['top', 'organizationalUnit'], } } } } } self.failUnlessEqual(backend.TREE, expected)
def test_inavlid_bind_removes_prior_bind(self): ldapurl = 'ldap://ldap.example.com' dom = 'dc=example,dc=com' backend._addTreeItems(ldapurl, dom) backend._addTreeItems(ldapurl, *self.makeOU('dc=example,dc=com', 'users')) backend._addTreeItems(ldapurl, *self.makeUser('ou=users,dc=example,dc=com', 'jradford', 'Jacob', 'Radford')) connection = backend.initialize(ldapurl) connection.simple_bind_s('Manager', 'password') self.assert_(connection.bound) self.assertRaises(backend.INVALID_CREDENTIALS, connection.simple_bind_s, 'uid=jradford,ou=users,dc=example,dc=com', 'badpassword') self.failIf(connection.bound)
def test_inavlid_bind_removes_prior_bind(self): ldapurl = 'ldap://ldap.example.com' dom = 'dc=example,dc=com' backend._addTreeItems(ldapurl, dom) backend._addTreeItems(ldapurl, *self.makeOU('dc=example,dc=com', 'users')) backend._addTreeItems( ldapurl, *self.makeUser('ou=users,dc=example,dc=com', 'jradford', 'Jacob', 'Radford')) connection = backend.initialize(ldapurl) connection.simple_bind_s('Manager', 'password') self.assert_(connection.bound) self.assertRaises(backend.INVALID_CREDENTIALS, connection.simple_bind_s, 'uid=jradford,ou=users,dc=example,dc=com', 'badpassword') self.failIf(connection.bound)
def test_unbound_moving_raises_error(self): dn, attrs = self.makeOU(self.dom, 'users') backend._addTreeItems(self.ldapurl, dn, attrs) newrdn = 'ou=people' connection = backend.initialize(self.ldapurl) self.assertRaises(backend.LDAPError, connection.modrdn_s, dn, newrdn)
def populate(url, base, records): backend._addTreeItems(url, base) for dn, attrs in records: backend._addTreeItems(url, dn, attrs)
def test_clearing_entire_tree(self): backend._addTreeItems('ldap://ldap.example.com', 'dc=example,dc=com') backend._addTreeItems('ldap://ldap.example.org', 'dc=example,dc=org') backend._clearTree() self.assertEqual(backend.TREE, {})
def setUp(self): super(FakeLDAPUnboundConnectionTestCase, self).setUp() self.ldapurl = 'ldap://ldap.example.com' self.dom = 'dc=example,dc=com' backend._addTreeItems(self.ldapurl, self.dom)
def test_connecting(self): ldapurl = 'ldap://ldap.example.com' backend._addTreeItems(ldapurl, 'dc=example,dc=com') connection = backend.initialize(ldapurl) self.assert_(connection)
def test_unbound_deleting_raises_error(self): dn, attrs = self.makeOU(self.dom, 'users') backend._addTreeItems(self.ldapurl, dn, attrs) connection = backend.initialize(self.ldapurl) self.assertRaises(backend.LDAPError, connection.delete_s, dn)
def handle(self, dn, entry): backend._addTreeItems(self.url, dn, entry)
def test_unbound_modifying_raises_error(self): dn, attrs = self.makeOU(self.dom, 'users') backend._addTreeItems(self.ldapurl, dn, attrs) mod_attrs = [( backend.MOD_ADD, 'testattr', 'TESTATTR' )] connection = backend.initialize(self.ldapurl) self.assertRaises(backend.LDAPError, connection.modify_s, dn, mod_attrs)
def populate_from_ldif(url, ldif_file, base=None): if base: backend._addTreeItems(url, base) parser = LDIFLoader(url, ldif_file) parser.parse()