1
0
mirror of https://github.com/samba-team/samba.git synced 2025-03-09 08:58:35 +03:00

selftest: Assert that name, the RDN attribute and actual RDN are in sync

This allows us to catch such errors here, rather than just on dbcheck later

Signed-off-by: Andrew Bartlett <abartlet@samba.org>
Reviewed-by: Garming Sam <garming@catalyst.net.nz
This commit is contained in:
Andrew Bartlett 2016-03-27 14:43:32 +13:00
parent 39ac5ad90f
commit f7eb865cd9
4 changed files with 38 additions and 5 deletions

View File

@ -101,10 +101,12 @@ class BasicDeleteTests(BaseDeleteTests):
print "Checking for correct rDN"
rdn=liveObj[rdnName][0]
rdn2=delObj[rdnName][0]
name2=delObj[rdnName][0]
name2=delObj["name"][0]
dn_rdn=delObj.dn.get_rdn_value()
guid=liveObj["objectGUID"][0]
self.assertEquals(rdn2, rdn + "\nDEL:" + self.GUID_string(guid))
self.assertEquals(name2, rdn + "\nDEL:" + self.GUID_string(guid))
self.assertEquals(name2, dn_rdn)
def delete_deleted(self, ldb, dn):
print "Testing the deletion of the already deleted dn %s" % dn

View File

@ -68,8 +68,10 @@ class DrsDeleteObjectTestCase(drs_base.DrsBaseTestCase):
# Deleted Object base DN
dodn = self._deleted_objects_dn(sam_ldb)
# now check properties of the user
name_orig = obj_orig["cn"][0]
name_cur = user_cur["cn"][0]
cn_orig = obj_orig["cn"][0]
cn_cur = user_cur["cn"][0]
name_orig = obj_orig["name"][0]
name_cur = user_cur["name"][0]
if is_deleted:
self.assertEquals(user_cur["isDeleted"][0],"TRUE")
self.assertFalse("objectCategory" in user_cur)
@ -80,9 +82,15 @@ class DrsDeleteObjectTestCase(drs_base.DrsBaseTestCase):
self.assertTrue(dodn in str(user_cur["dn"]),
"User %s is deleted but it is not located under %s (found at %s)!" % (name_orig, dodn, user_cur["dn"]))
self.assertEquals(name_cur, name_orig + "\nDEL:" + guid_str)
self.assertEquals(name_cur, user_cur.dn.get_rdn_value())
self.assertEquals(cn_cur, cn_orig + "\nDEL:" + guid_str)
self.assertEquals(name_cur, cn_cur)
else:
self.assertFalse("isDeleted" in user_cur)
self.assertEquals(name_cur, name_orig)
self.assertEquals(name_cur, user_cur.dn.get_rdn_value())
self.assertEquals(cn_cur, cn_orig)
self.assertEquals(name_cur, cn_cur)
self.assertEquals(obj_orig["dn"], user_cur["dn"])
self.assertTrue(dodn not in str(user_cur["dn"]))
return user_cur

View File

@ -87,13 +87,19 @@ class DrsMoveObjectTestCase(drs_base.DrsBaseTestCase):
self.assertEquals(len(res), 1)
user_cur = res[0]
# now check properties of the user
name_orig = obj_orig["cn"][0]
name_cur = user_cur["cn"][0]
cn_orig = obj_orig["cn"][0]
cn_cur = user_cur["cn"][0]
name_orig = obj_orig["name"][0]
name_cur = user_cur["name"][0]
dn_orig = obj_orig["dn"]
dn_cur = user_cur["dn"]
self.assertFalse("isDeleted" in user_cur)
self.assertEquals(cn_cur, cn_orig)
self.assertEquals(name_cur, name_orig)
self.assertEquals(dn_cur, dn_orig)
self.assertEqual(name_cur, cn_cur)
self.assertEqual(name_cur, user_cur.dn.get_rdn_value())
return user_cur

View File

@ -140,9 +140,12 @@ objectClass: organizationalUnit
scope=SCOPE_BASE, attrs=["name"])
print res1[0]["name"][0]
print res2[0]["name"][0]
self.assertFalse('CNF:%s' % self.ou2 in str(res2[0]["name"][0]))
self.assertTrue('CNF:%s' % self.ou1 in str(res1[0]["name"][0]))
self.assertTrue(self._lost_and_found_dn(self.ldb_dc2, self.domain_dn) not in str(res1[0].dn))
self.assertTrue(self._lost_and_found_dn(self.ldb_dc2, self.domain_dn) not in str(res2[0].dn))
self.assertEqual(str(res1[0]["name"][0]), res1[0].dn.get_rdn_value())
self.assertEqual(str(res2[0]["name"][0]), res2[0].dn.get_rdn_value())
# Delete both objects by GUID on DC2
@ -184,6 +187,8 @@ objectClass: organizationalUnit
self.assertTrue('CNF:%s' % self.ou1 in str(res1[0]["name"][0]))
self.assertTrue(self._lost_and_found_dn(self.ldb_dc1, self.domain_dn) not in str(res1[0].dn))
self.assertTrue(self._lost_and_found_dn(self.ldb_dc1, self.domain_dn) not in str(res2[0].dn))
self.assertEqual(str(res1[0]["name"][0]), res1[0].dn.get_rdn_value())
self.assertEqual(str(res2[0]["name"][0]), res2[0].dn.get_rdn_value())
# Delete both objects by GUID on DC1
@ -225,6 +230,8 @@ objectClass: organizationalUnit
self.assertTrue('CNF:%s' % self.ou2 in str(res2[0]["name"][0]), "Got %s for %s" % (str(res2[0]["name"][0]), self.ou2))
self.assertTrue(self._lost_and_found_dn(self.ldb_dc1, self.domain_dn) not in str(res1[0].dn))
self.assertTrue(self._lost_and_found_dn(self.ldb_dc1, self.domain_dn) not in str(res2[0].dn))
self.assertEqual(str(res1[0]["name"][0]), res1[0].dn.get_rdn_value())
self.assertEqual(str(res2[0]["name"][0]), res2[0].dn.get_rdn_value())
# Delete both objects by GUID on DC1
@ -269,6 +276,8 @@ objectClass: organizationalUnit
self.assertTrue('CNF:%s' % self.ou1 in str(res1[0]["name"][0]))
self.assertTrue(self._lost_and_found_dn(self.ldb_dc1, self.domain_dn) not in str(res1[0].dn))
self.assertTrue(self._lost_and_found_dn(self.ldb_dc1, self.domain_dn) not in str(res2[0].dn))
self.assertEqual(str(res1[0]["name"][0]), res1[0].dn.get_rdn_value())
self.assertEqual(str(res2[0]["name"][0]), res2[0].dn.get_rdn_value())
# Delete both objects by GUID on DC1
@ -324,6 +333,8 @@ objectClass: organizationalUnit
self.assertTrue('CNF:%s' % self.ou1 in str(res1[0]["name"][0]))
self.assertTrue(self._lost_and_found_dn(self.ldb_dc1, self.domain_dn) not in str(res1[0].dn))
self.assertTrue(self._lost_and_found_dn(self.ldb_dc1, self.domain_dn) not in str(res2[0].dn))
self.assertEqual(str(res1[0]["name"][0]), res1[0].dn.get_rdn_value())
self.assertEqual(str(res2[0]["name"][0]), res2[0].dn.get_rdn_value())
# Delete both objects by GUID on DC1
@ -376,6 +387,8 @@ objectClass: organizationalUnit
self.assertTrue('CNF:%s' % self.ou1 in str(res1[0]["name"][0]))
self.assertTrue(self._lost_and_found_dn(self.ldb_dc1, self.domain_dn) not in str(res1[0].dn))
self.assertTrue(self._lost_and_found_dn(self.ldb_dc1, self.domain_dn) not in str(res2[0].dn))
self.assertEqual(str(res1[0]["name"][0]), res1[0].dn.get_rdn_value())
self.assertEqual(str(res2[0]["name"][0]), res2[0].dn.get_rdn_value())
# Delete both objects by GUID on DC1
@ -431,6 +444,8 @@ objectClass: organizationalUnit
self.assertTrue('CNF:%s' % self.ou2 in str(res2[0]["name"][0]))
self.assertTrue(self._lost_and_found_dn(self.ldb_dc1, self.domain_dn) not in str(res1[0].dn))
self.assertTrue(self._lost_and_found_dn(self.ldb_dc1, self.domain_dn) not in str(res2[0].dn))
self.assertEqual(str(res1[0]["name"][0]), res1[0].dn.get_rdn_value())
self.assertEqual(str(res2[0]["name"][0]), res2[0].dn.get_rdn_value())
# Delete both objects by GUID on DC1
@ -487,6 +502,8 @@ objectClass: organizationalUnit
self.assertTrue('CNF:%s' % ou1_child in str(res1[0]["name"][0]) or 'CNF:%s' % ou2_child in str(res2[0]["name"][0]))
self.assertTrue(self._lost_and_found_dn(self.ldb_dc1, self.domain_dn) in str(res1[0].dn))
self.assertTrue(self._lost_and_found_dn(self.ldb_dc1, self.domain_dn) in str(res2[0].dn))
self.assertEqual(str(res1[0]["name"][0]), res1[0].dn.get_rdn_value())
self.assertEqual(str(res2[0]["name"][0]), res2[0].dn.get_rdn_value())
# Delete all objects by GUID on DC1