r24262: Set the objectCategory by default in the objectclass module, rather than...
authorAndrew Bartlett <abartlet@samba.org>
Tue, 7 Aug 2007 05:58:47 +0000 (05:58 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 20:01:32 +0000 (15:01 -0500)
Modify the samba3sam test to be less fussy, and not use the
objectclass module (which requires proper schema stuff now).

Andrew Bartlett

source/dsdb/samdb/ldb_modules/objectclass.c
source/setup/provision_templates.ldif
testprogs/ejs/samba3sam.js

index ad11442035f78699928722ef84ef1f6e77863609..259b963ce07d64aa2b6561afcec36c85bd380ad7 100644 (file)
@@ -161,7 +161,7 @@ static int objectclass_sort(struct ldb_module *module,
                                /* Save the next pointer, as the DLIST_ macros will change poss_subclass->next */
                                next = poss_subclass->next;
 
-                               if (ldb_attr_cmp(class->subClassOf, current->objectclass) == 0) {
+                               if (class && ldb_attr_cmp(class->subClassOf, current->objectclass) == 0) {
                                        DLIST_REMOVE(unsorted, poss_subclass);
                                        DLIST_ADD(subclass, poss_subclass);
                                        
@@ -199,6 +199,7 @@ static int objectclass_sort(struct ldb_module *module,
 static int objectclass_add(struct ldb_module *module, struct ldb_request *req)
 {
        struct ldb_message_element *objectclass_element;
+       const struct dsdb_schema *schema = dsdb_get_schema(module->ldb);
        struct class_list *sorted, *current;
        struct ldb_request *down_req;
        struct ldb_message *msg;
@@ -265,6 +266,14 @@ static int objectclass_add(struct ldb_module *module, struct ldb_request *req)
                        talloc_free(mem_ctx);
                        return ret;
                }
+               /* Last one */
+               if (schema && !current->next && !ldb_msg_find_element(msg, "objectCategory")) {
+                       const struct dsdb_class *objectclass
+                               = dsdb_class_by_lDAPDisplayName(schema, current->objectclass);
+                       if (objectclass) {
+                               ldb_msg_add_string(msg, "objectCategory", objectclass->defaultObjectCategory);
+                       }
+               }
        }
 
        talloc_free(mem_ctx);
index 6e264be9d6745decfcaafa4af588f3984fb5baca..914582eaf07fd9a098aeb5f38c4fb468e1c551ed 100644 (file)
@@ -4,7 +4,6 @@ objectClass: container
 description: Container for SAM account templates
 showInAdvancedViewOnly: TRUE
 systemFlags: 2348810240
-objectCategory: CN=Container,${SCHEMADN}
 isCriticalSystemObject: TRUE
 
 ###
@@ -30,7 +29,6 @@ primaryGroupID: 513
 accountExpires: -1
 logonCount: 0
 sAMAccountType: 805306368
-objectCategory: CN=Person,${SCHEMADN}
 
 dn: CN=TemplateComputer,CN=Templates
 objectClass: top
@@ -50,7 +48,6 @@ primaryGroupID: 513
 accountExpires: -1
 logonCount: 0
 sAMAccountType: 805306369
-objectCategory: CN=Computer,${SCHEMADN}
 
 dn: CN=TemplateTrustingDomain,CN=Templates
 objectClass: top
@@ -74,7 +71,6 @@ objectClass: Template
 objectClass: groupTemplate
 groupType: -2147483646
 sAMAccountType: 268435456
-objectCategory: CN=Group,${SCHEMADN}
 
 # Currently this isn't used, we don't have a way to detect it different from an incoming alias
 #
@@ -92,7 +88,6 @@ objectClass: top
 objectClass: Template
 objectClass: foreignSecurityPrincipalTemplate
 showInAdvancedViewOnly: TRUE
-objectCategory: CN=Foreign-Security-Principal,${SCHEMADN}
 
 dn: CN=TemplateSecret,CN=Templates
 objectClass: top
index 5fa527a69444b1073b6222986ca6e930a6db4d35..44a1f140b1547775d18df2897f18816986923ce1 100755 (executable)
@@ -46,7 +46,7 @@ dn: @MAP=samba3sam
 @TO: sambaDomainName=TESTS," + s3.BASEDN + "
 
 dn: @MODULES
-@LIST: rootdse,paged_results,server_sort,extended_dn,asq,samldb,objectclass,password_hash,operational,objectguid,rdn_name,samba3sam,partition
+@LIST: rootdse,paged_results,server_sort,extended_dn,asq,samldb,password_hash,operational,objectguid,rdn_name,samba3sam,partition
 
 dn: @PARTITION
 partition: " + s4.BASEDN + ":" + s4.url + "
@@ -482,7 +482,7 @@ description: y
        assert(res.msgs[0].dnsHostName == "x");
        assert(res.msgs[0].lastLogon == "x");
        assert(res.msgs[0].objectClass != undefined);
-       assert(res.msgs[0].objectClass[3] == "user");
+       assert(res.msgs[0].objectClass[0] == "user"); 
        assert(res.msgs[1].dn == s4.dn("cn=A"));
        assert(res.msgs[1].dnsHostName == undefined);
        assert(res.msgs[1].lastLogon == "x");
@@ -504,7 +504,7 @@ description: y
        assert(res.msgs[1].dnsHostName == "x");
        assert(res.msgs[1].lastLogon == "x");
        assert(res.msgs[1].objectClass != undefined);
-       assert(res.msgs[1].objectClass[3] == "user");
+       assert(res.msgs[1].objectClass[0] == "user");
        assert(res.msgs[2].dn == s4.dn("cn=A"));
        assert(res.msgs[2].dnsHostName == undefined);
        assert(res.msgs[2].lastLogon == "x");