def test_classInheritance(self): """Test inheritance through subClassOf I think 5 levels of inheritance is pretty decent for now.""" # add 5 levels deep hierarchy c_dn_list = [] c_ldn_last = None for i in range(1, 6): base_name = "cls-I-%02d" % i (c_ldn, c_dn) = self._schema_new_class(self.ldb_dc1, base_name, i) c_dn_list.append(c_dn) if c_ldn_last: # inherit from last class added m = Message.from_dict(self.ldb_dc1, { "dn": c_dn, "subClassOf": c_ldn_last }, FLAG_MOD_REPLACE) self.ldb_dc1.modify(m) # store last class ldapDisplayName c_ldn_last = c_ldn # 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 for c_dn in c_dn_list: self._check_object(c_dn)
def test_all(self): """Basic plan is to create bunch of classSchema and attributeSchema objects, replicate Schema NC and then check all objects are replicated correctly""" # add new classSchema object (c_ldn, c_dn) = self._schema_new_class(self.ldb_dc1, "cls-A", 9) # add new attributeSchema object (a_ldn, a_dn) = self._schema_new_attr(self.ldb_dc1, "attr-A", 3) # add attribute to the class we have m = Message.from_dict(self.ldb_dc1, { "dn": c_dn, "mayContain": a_ldn }, FLAG_MOD_ADD) self.ldb_dc1.modify(m) # 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_all(self): """Basic plan is to create bunch of classSchema and attributeSchema objects, replicate Schema NC and then check all objects are replicated correctly""" # add new classSchema object (c_ldn, c_dn) = self._schema_new_class(self.ldb_dc1, "cls-A") # add new attributeSchema object (a_ldn, a_dn) = self._schema_new_attr(self.ldb_dc1, "attr-A") # add attribute to the class we have m = Message.from_dict(self.ldb_dc1, {"dn": c_dn, "mayContain": a_ldn}, FLAG_MOD_ADD) self.ldb_dc1.modify(m) # 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_classInheritance(self): """Test inheritance through subClassOf I think 5 levels of inheritance is pretty decent for now.""" # add 5 levels deep hierarchy c_dn_list = [] c_ldn_last = None for i in range(1, 6): base_name = "cls-I-%02d" % i (c_ldn, c_dn) = self._schema_new_class(self.ldb_dc1, base_name) c_dn_list.append(c_dn) if c_ldn_last: # inherit from last class added m = Message.from_dict(self.ldb_dc1, {"dn": c_dn, "subClassOf": c_ldn_last}, FLAG_MOD_REPLACE) self.ldb_dc1.modify(m) # store last class ldapDisplayName c_ldn_last = c_ldn # 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 for c_dn in c_dn_list: self._check_object(c_dn)
def _ldap_schemaUpdateNow(self, sam_db): rec = {"dn": "", "schemaUpdateNow": "1"} m = Message.from_dict(sam_db, rec, FLAG_MOD_REPLACE) sam_db.modify(m)
def test_classWithCustomBinaryDNLinkAttribute(self): # Add a new attribute to the schema, which has binary DN syntax (2.5.5.7) (bin_ldn, bin_dn) = self._schema_new_attr(self.ldb_dc1, "attr-Link-Bin", 18, attrs={"linkID": "1.2.840.113556.1.2.50", "attributeSyntax": "2.5.5.7", "omSyntax": "127"}) (bin_ldn_b, bin_dn_b) = self._schema_new_attr(self.ldb_dc1, "attr-Link-Bin-Back", 19, attrs={"linkID": bin_ldn, "attributeSyntax": "2.5.5.1", "omSyntax": "127"}) # Add a new class to the schema which can have the binary DN attribute (c_ldn, c_dn) = self._schema_new_class(self.ldb_dc1, "cls-Link-Bin", 20, 3, {"mayContain": bin_ldn}) (c_ldn_b, c_dn_b) = self._schema_new_class(self.ldb_dc1, "cls-Link-Bin-Back", 21, 3, {"mayContain": bin_ldn_b}) link_end_dn = ldb.Dn(self.ldb_dc1, "ou=X") link_end_dn.add_base(self.ldb_dc1.get_default_basedn()) link_end_dn.set_component(0, "OU", bin_dn_b.get_component_value(0)) ou_dn = ldb.Dn(self.ldb_dc1, "ou=X") ou_dn.add_base(self.ldb_dc1.get_default_basedn()) ou_dn.set_component(0, "OU", bin_dn.get_component_value(0)) # Add an instance of the class to be pointed at rec = {"dn": link_end_dn, "objectClass": ["top", "organizationalUnit", c_ldn_b], "ou": link_end_dn.get_component_value(0)} self.ldb_dc1.add(rec) # .. and one that does, and points to the first one rec = {"dn": ou_dn, "objectClass": ["top", "organizationalUnit", c_ldn], "ou": ou_dn.get_component_value(0)} self.ldb_dc1.add(rec) m = Message.from_dict(self.ldb_dc1, {"dn": ou_dn, bin_ldn: "B:8:1234ABCD:%s" % str(link_end_dn)}, FLAG_MOD_ADD) self.ldb_dc1.modify(m) self._net_drs_replicate(DC=self.dnsname_dc2, fromDC=self.dnsname_dc1, nc_dn=self.schema_dn, forced=True) self._net_drs_replicate(DC=self.dnsname_dc2, fromDC=self.dnsname_dc1, nc_dn=self.domain_dn, forced=True) self._check_object(c_dn) self._check_object(bin_dn) # Make sure we can delete the backlink self.ldb_dc1.delete(link_end_dn) self._net_drs_replicate(DC=self.dnsname_dc2, fromDC=self.dnsname_dc1, nc_dn=self.schema_dn, forced=True) self._net_drs_replicate(DC=self.dnsname_dc2, fromDC=self.dnsname_dc1, nc_dn=self.domain_dn, forced=True)