示例#1
0
 def test_sync_operations(self):
     """
     Test LDAPEntry's add, modify and delete synchronous operations.
     """
     entry = LDAPEntry("cn=test,%s" % self.basedn)
     self.client.set_credentials(*self.creds)
     with self.client.connect() as conn:
         entry['sn'] = 'test'
         self.assertRaises(bonsai.ObjectClassViolation,
                           lambda: conn.add(entry))
         entry['objectclass'] = ['top', 'inetOrgPerson', 'person',
                                 'organizationalPerson']
         try:
             conn.add(entry)
         except bonsai.AlreadyExists:
             conn.delete(entry.dn)
             conn.add(entry)
         except:
             self.fail("Adding LDAPEntry to the server is failed.")
         entry['sn'] = "Test_modify"
         try:
             entry.modify()
         except:
             self.fail("Modify failed.")
         obj = conn.search("cn=test,%s" % self.basedn, 0)[0]
         self.assertEqual(entry['sn'], obj['sn'])
         try:
             entry.delete()
         except:
             self.fail("Delete failed.")
示例#2
0
 def test_sync_operations(self):
     """
     Test LDAPEntry's add, modify and delete synchronous operations.
     """
     entry = LDAPEntry("cn=test,%s" % self.basedn)
     self.client.set_credentials(*self.creds)
     with self.client.connect() as conn:
         entry['objectclass'] = [
             'top', 'inetOrgPerson', 'person', 'organizationalPerson'
         ]
         self.assertRaises(bonsai.ObjectClassViolation,
                           lambda: conn.add(entry))
         entry['sn'] = 'test'
         try:
             conn.add(entry)
         except bonsai.AlreadyExists:
             conn.delete(entry.dn)
             conn.add(entry)
         except:
             self.fail("Adding LDAPEntry to the server is failed.")
         entry['sn'] = "Test_modify"
         try:
             entry.modify()
         except:
             self.fail("Modify failed.")
         obj = conn.search("cn=test,%s" % self.basedn, 0)[0]
         self.assertEqual(entry['sn'], obj['sn'])
         try:
             entry.delete()
         except:
             self.fail("Delete failed.")
示例#3
0
def test_special_char(client, basedn):
    """ Test adding entry with special character in its DN. """
    with client.connect() as conn:
        entry = LDAPEntry(r"cn=test\, *\+withspec,%s" % basedn)
        entry["objectclass"] = ["top", "inetOrgPerson"]
        entry["sn"] = "Test,*special"
        conn.add(entry)
        result = conn.search(basedn, 1)
        entry.delete()
        assert entry.dn in [res.dn for res in result]
示例#4
0
def test_special_char(client, basedn):
    """ Test adding entry with special character in its DN. """
    with client.connect() as conn:
        entry = LDAPEntry(r"cn=test\, *\+withspec,%s" % basedn)
        entry["objectclass"] = ["top", "inetOrgPerson"]
        entry["sn"] = "Test,*special"
        conn.add(entry)
        result = conn.search(basedn, 1)
        entry.delete()
        assert entry.dn in [res.dn for res in result]
示例#5
0
def test_unicode(client, basedn):
    """ Test adding entry with special character in its DN. """
    with client.connect() as conn:
        dname = "cn=test_µčབྷñ,%s" % basedn
        entry = LDAPEntry(dname)
        entry["objectclass"] = ["top", "inetOrgPerson"]
        entry["sn"] = "unicode_µčབྷñ"
        conn.add(entry)
        result = conn.search(dname, 0)
        entry.delete()
        assert dname in [res.dn for res in result]
示例#6
0
def test_unicode(client, basedn):
    """ Test adding entry with special character in its DN. """
    with client.connect() as conn:
        dname = "cn=test_µčབྷñ,%s" % basedn
        entry = LDAPEntry(dname)
        entry["objectclass"] = ["top", "inetOrgPerson"]
        entry["sn"] = "unicode_µčབྷñ"
        conn.add(entry)
        result = conn.search(dname, 0)
        entry.delete()
        assert dname in [res.dn for res in result]
示例#7
0
 def test_special_char(self):
     """ Test adding entry with special character in its DN. """
     self.client.set_credentials(*self.creds)
     conn = self.client.connect()
     entry = LDAPEntry("cn=test\, *\+withspec,%s" % self.basedn)
     entry['objectclass'] = ['top', 'inetOrgPerson']
     entry['sn'] = "Test,*special"
     conn.add(entry)
     result = conn.search(self.basedn, 1)
     entry.delete()
     conn.close()
     self.assertIn(entry.dn, [res.dn for res in result])
示例#8
0
 def test_special_char(self):
     """ Test adding entry with special character in its DN. """
     self.client.set_credentials(*self.creds)
     conn = self.client.connect()
     entry = LDAPEntry("cn=test\, *\+withspec,%s" % self.basedn)
     entry['objectclass'] = ['top', 'inetOrgPerson']
     entry['sn'] = "Test,*special"
     conn.add(entry)
     result = conn.search(self.basedn, 1)
     entry.delete()
     conn.close()
     self.assertIn(entry.dn, [res.dn for res in result])
示例#9
0
 def test_rename(self):
     """ Test LDAPEntry's rename LDAP operation. """
     entry = LDAPEntry("cn=test,%s" % self.basedn)
     self.client.set_credentials(*self.creds)
     with self.client.connect() as conn:
         self._add_for_renaming(conn, entry)
         entry.rename("cn=test2,%s" % self.basedn)
         self.assertEqual(str(entry.dn), "cn=test2,%s" % self.basedn)
         obj = conn.search("cn=test,%s" % self.basedn, 0)
         self.assertEqual(obj, [])
         obj = conn.search("cn=test2,%s" % self.basedn, 0)[0]
         self.assertEqual(entry.dn, obj.dn)
         entry.delete()
示例#10
0
 def test_unicode(self):
     """ Test adding entry with special character in its DN. """
     self.client.set_credentials(*self.creds)
     conn = self.client.connect()
     dname = "cn=test_µčབྷñ,%s" % self.basedn
     entry = LDAPEntry(dname)
     entry['objectclass'] = ['top', 'inetOrgPerson']
     entry['sn'] = "unicode_µčབྷñ"
     conn.add(entry)
     result = conn.search(dname, 0)
     entry.delete()
     conn.close()
     self.assertIn(dname, [res.dn for res in result])
示例#11
0
 def test_rename(self):
     """ Test LDAPEntry's rename LDAP operation. """
     entry = LDAPEntry("cn=test,%s" % self.basedn)
     self.client.set_credentials(*self.creds)
     with self.client.connect() as conn:
         self._add_for_renaming(conn, entry)
         entry.rename("cn=test2,%s" % self.basedn)
         self.assertEqual(str(entry.dn), "cn=test2,%s" % self.basedn)
         obj = conn.search("cn=test,%s" % self.basedn, 0)
         self.assertEqual(obj, [])
         obj = conn.search("cn=test2,%s" % self.basedn, 0)[0]
         self.assertEqual(entry.dn, obj.dn)
         entry.delete()
示例#12
0
 def test_unicode(self):
     """ Test adding entry with special character in its DN. """
     self.client.set_credentials(*self.creds)
     conn = self.client.connect()
     dname = "cn=test_µčབྷñ,%s" % self.basedn
     entry = LDAPEntry(dname)
     entry['objectclass'] = ['top', 'inetOrgPerson']
     entry['sn'] = "unicode_µčབྷñ"
     conn.add(entry)
     result = conn.search(dname, 0)
     entry.delete()
     conn.close()
     self.assertIn(dname, [res.dn for res in result])
示例#13
0
def test_binary(client, basedn):
    """ Test adding binary data. """
    curdir = os.path.abspath(os.path.dirname(__file__))
    conn = client.connect()
    dname = "cn=binary,%s" % basedn
    entry = LDAPEntry(dname)
    entry["objectclass"] = ["top", "inetOrgPerson"]
    entry["sn"] = "binary_test"
    with open("%s/testenv/test.jpeg" % curdir, "rb") as image:
        entry["jpegPhoto"] = image.read()
    conn.add(entry)
    result = conn.search(dname, 0)
    entry.delete()
    conn.close()
    assert "jpegPhoto" in result[0].keys()
    assert result[0]["jpegphoto"][0] == entry["jpegphoto"][0]
示例#14
0
def test_binary(client, basedn):
    """ Test adding binary data. """
    curdir = os.path.abspath(os.path.dirname(__file__))
    conn = client.connect()
    dname = "cn=binary,%s" % basedn
    entry = LDAPEntry(dname)
    entry["objectclass"] = ["top", "inetOrgPerson"]
    entry["sn"] = "binary_test"
    with open("%s/testenv/test.jpeg" % curdir, "rb") as image:
        entry["jpegPhoto"] = image.read()
    conn.add(entry)
    result = conn.search(dname, 0)
    entry.delete()
    conn.close()
    assert "jpegPhoto" in result[0].keys()
    assert result[0]["jpegphoto"][0] == entry["jpegphoto"][0]
示例#15
0
 def test_binary(self):
     """ Test adding binary data. """
     curdir = os.path.abspath(os.path.dirname(__file__))
     self.client.set_credentials(*self.creds)
     conn = self.client.connect()
     dname = "cn=binary,%s" % self.basedn
     entry = LDAPEntry(dname)
     entry['objectclass'] = ['top', 'inetOrgPerson']
     entry['sn'] = "binary_test"
     with open('%s/testenv/test.jpeg' % curdir, 'rb') as image:
         entry['jpegPhoto'] = image.read()
     conn.add(entry)
     result = conn.search(dname, 0)
     entry.delete()
     conn.close()
     self.assertIn("jpegPhoto", result[0].keys())
     self.assertEqual(result[0]['jpegphoto'][0], entry['jpegphoto'][0])
示例#16
0
 def test_binary(self):
     """ Test adding binary data. """
     curdir = os.path.abspath(os.path.dirname(__file__))
     self.client.set_credentials(*self.creds)
     conn = self.client.connect()
     dname = "cn=binary,%s" % self.basedn
     entry = LDAPEntry(dname)
     entry['objectclass'] = ['top', 'inetOrgPerson']
     entry['sn'] = "binary_test"
     with open('%s/testenv/test.jpeg' % curdir, 'rb') as image:
         entry['jpegPhoto'] = image.read()
     conn.add(entry)
     result = conn.search(dname, 0)
     entry.delete()
     conn.close()
     self.assertIn("jpegPhoto", result[0].keys())
     self.assertEqual(result[0]['jpegphoto'][0], entry['jpegphoto'][0])
示例#17
0
 def test_add_and_delete(self):
     with self.client.connect(True) as conn:
         entry = LDAPEntry("cn=async_test,%s" % self.basedn)
         entry['objectclass'] = ['top', 'inetOrgPerson', 'person',
                                 'organizationalPerson']
         entry['sn'] = "async_test"
         try:
             conn.add(entry)
         except bonsai.errors.AlreadyExists:
             conn.delete(entry.dn)
             conn.add(entry)
         except:
             self.fail("Unexcepected error.")
         res = conn.search()
         self.assertIn(entry, res)
         entry.delete()
         res = conn.search()
         self.assertNotIn(entry, res)
示例#18
0
 def test_add_and_delete(self):
     with self.client.connect(True) as conn:
         entry = LDAPEntry("cn=async_test,%s" % self.basedn)
         entry['objectclass'] = [
             'top', 'inetOrgPerson', 'person', 'organizationalPerson'
         ]
         entry['sn'] = "async_test"
         try:
             conn.add(entry)
         except bonsai.errors.AlreadyExists:
             conn.delete(entry.dn)
             conn.add(entry)
         except:
             self.fail("Unexcepected error.")
         res = conn.search()
         self.assertIn(entry, res)
         entry.delete()
         res = conn.search()
         self.assertNotIn(entry, res)
示例#19
0
def test_add_and_delete(gclient, basedn):
    """ Test adding and deleting an LDAP entry. """
    with gclient.connect(True) as conn:
        entry = LDAPEntry("cn=async_test,%s" % basedn)
        entry["objectclass"] = [
            "top",
            "inetOrgPerson",
            "person",
            "organizationalPerson",
        ]
        entry["sn"] = "async_test"
        try:
            conn.add(entry)
        except bonsai.errors.AlreadyExists:
            conn.delete(entry.dn)
            conn.add(entry)
        except:
            pytest.fail("Unexpected error.")
        res = conn.search()
        assert entry in res
        entry.delete()
        res = conn.search()
        assert entry not in res
示例#20
0
def test_add_and_delete(gclient, basedn):
    """ Test adding and deleting an LDAP entry. """
    with gclient.connect(True) as conn:
        entry = LDAPEntry("cn=async_test,%s" % basedn)
        entry["objectclass"] = [
            "top",
            "inetOrgPerson",
            "person",
            "organizationalPerson",
        ]
        entry["sn"] = "async_test"
        try:
            conn.add(entry)
        except bonsai.errors.AlreadyExists:
            conn.delete(entry.dn)
            conn.add(entry)
        except:
            pytest.fail("Unexpected error.")
        res = conn.search()
        assert entry in res
        entry.delete()
        res = conn.search()
        assert entry not in res
示例#21
0
def test_sync_operations(client, basedn):
    """
    Test LDAPEntry's add, modify and delete synchronous operations.
    """
    entry = LDAPEntry("cn=test,%s" % basedn)
    with pytest.raises(ValueError):
        entry.modify()
    with client.connect() as conn:
        entry["sn"] = "test"
        with pytest.raises(bonsai.ObjectClassViolation):
            conn.add(entry)
        entry["objectclass"] = [
            "top",
            "inetOrgPerson",
            "person",
            "organizationalPerson",
        ]
        try:
            conn.add(entry)
        except bonsai.AlreadyExists:
            conn.delete(entry.dn)
            conn.add(entry)
        except:
            pytest.fail("Adding LDAPEntry to the server is failed.")
        entry["sn"] = "Test_modify"
        try:
            entry.modify()
        except:
            pytest.fail("Modify failed.")
        obj = conn.search("cn=test,%s" % basedn, 0)[0]
        assert entry["sn"] == obj["sn"]
        try:
            entry.delete()
        except:
            pytest.fail("Delete failed.")
    with pytest.raises(bonsai.errors.ClosedConnection):
        entry.modify()
示例#22
0
def test_sync_operations(client, basedn):
    """
    Test LDAPEntry's add, modify and delete synchronous operations.
    """
    entry = LDAPEntry("cn=test,%s" % basedn)
    with pytest.raises(ValueError):
        entry.modify()
    with client.connect() as conn:
        entry["sn"] = "test"
        with pytest.raises(bonsai.ObjectClassViolation):
            conn.add(entry)
        entry["objectclass"] = [
            "top",
            "inetOrgPerson",
            "person",
            "organizationalPerson",
        ]
        try:
            conn.add(entry)
        except bonsai.AlreadyExists:
            conn.delete(entry.dn)
            conn.add(entry)
        except:
            pytest.fail("Adding LDAPEntry to the server is failed.")
        entry["sn"] = "Test_modify"
        try:
            entry.modify()
        except:
            pytest.fail("Modify failed.")
        obj = conn.search("cn=test,%s" % basedn, 0)[0]
        assert entry["sn"] == obj["sn"]
        try:
            entry.delete()
        except:
            pytest.fail("Delete failed.")
    with pytest.raises(bonsai.errors.ClosedConnection):
        entry.modify()
示例#23
0
 def test_add_and_delete(self):
     """ Test addding and deleting an LDAP entry. """
     with (yield self.client.connect(True, ioloop=self.io_loop)) as conn:
         entry = LDAPEntry("cn=async_test,%s" % self.basedn)
         entry['objectclass'] = [
             'top', 'inetOrgPerson', 'person', 'organizationalPerson'
         ]
         entry['sn'] = "async_test"
         try:
             yield conn.add(entry)
         except bonsai.errors.AlreadyExists:
             yield conn.delete(entry.dn)
             yield conn.add(entry)
         except:
             self.fail("Unexpected error.")
         res = yield conn.search()
         self.assertIn(entry, res)
         yield entry.delete()
         res = yield conn.search()
         self.assertNotIn(entry, res)
示例#24
0
 def test_add_and_delete(self):
     """ Test addding and deleting an LDAP entry. """
     with (yield self.client.connect(True, ioloop=self.io_loop)) as conn:
         entry = LDAPEntry("cn=async_test,%s" % self.basedn)
         entry["objectclass"] = [
             "top",
             "inetOrgPerson",
             "person",
             "organizationalPerson",
         ]
         entry["sn"] = "async_test"
         try:
             yield conn.add(entry)
         except bonsai.errors.AlreadyExists:
             yield conn.delete(entry.dn)
             yield conn.add(entry)
         except:
             self.fail("Unexpected error.")
         res = yield conn.search()
         assert entry in res
         yield entry.delete()
         res = yield conn.search()
         assert entry not in res