s4-test/repl_schema: New test to test a classSchema with custom attribute
authorKamen Mazdrashki <kamenim@samba.org>
Thu, 9 Dec 2010 02:42:13 +0000 (04:42 +0200)
committerKamen Mazdrashki <kamenim@samba.org>
Tue, 14 Dec 2010 23:51:19 +0000 (00:51 +0100)
Create new Attribute and a Class,
that has value for newly created attribute.

This should check code path that searches for
AttributeID_id in Schema cacheThis test.

It also tests how we replicate a leaf classSchema that
inherits from a new classSchema with attribute added
- tests both dsdb_attribute_drsuapi_to_ldb() and
_dsdb_syntax_OID_obj_drsuapi_to_ldb() syntax handler

source4/torture/drs/python/repl_schema.py

index 9bb12a2bb1dd98cdbed40cd566ca9f65d74a15dc..6e31dc8c1c32750f17b61f0801090a19d0c6098c 100644 (file)
@@ -207,6 +207,30 @@ class DrsReplSchemaTestCase(samba.tests.TestCase):
         for c_dn in c_dn_list:
             self._check_object(c_dn)
 
+    def test_classWithCustomAttribute(self):
+        """Create new Attribute and a Class,
+           that has value for newly created attribute.
+           This should check code path that searches for
+           AttributeID_id in Schema cache"""
+        # add new attributeSchema object
+        (a_ldn, a_dn) = self._schema_new_attr(self.ldb_dc1, "attr-A")
+        # add a base classSchema class so we can use our new
+        # attribute in class definition in a sibling class
+        (c_ldn, c_dn) = self._schema_new_class(self.ldb_dc1, "cls-A",
+                                               {"systemMayContain": a_ldn})
+        # add new classSchema object with value for a_ldb attribute
+        (c_ldn, c_dn) = self._schema_new_class(self.ldb_dc1, "cls-B",
+                                               {"objectClass": ["top", "classSchema", c_ldn],
+                                                a_ldn: "test_classWithCustomAttribute"})
+        #(c_ldn, c_dn) = self._schema_new_class(self.ldb_dc1, "cls-B",
+        #                                       {"systemMayContain": a_ldn,
+        #                                        a_ldn: "test_classWithCustomAttribute"})
+        # force replication from DC1 to DC2
+        self._net_drs_replicate(DC=self.dnsname_dc2, fromDC=self.dnsname_dc1, nc_dn=self.schema_dn)
+        # check objects are replicated
+        self._check_object(c_dn)
+        self._check_object(a_dn)
+
     def test_attribute(self):
         """Simple test for attributeSchema replication"""
         # add new attributeSchema object