r3577: add a torture_join_domain_ads_dc() function,
authorStefan Metzmacher <metze@samba.org>
Sat, 6 Nov 2004 10:07:08 +0000 (10:07 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 18:05:33 +0000 (13:05 -0500)
which will join as a w2k dc joins a ads domain

(this is currently not fully implmented,
 I just have listed the steps we need to do)

metze
(This used to be commit 29cd3d20e39766455e488c6e240228d8815bd36b)

source4/torture/rpc/testjoin.c

index 604c8e5267964ab1b7c078d08dfc73d27f3bb0d2..e592af3c5ef30e2a9698669f47c508ed32bcee24 100644 (file)
@@ -270,3 +270,97 @@ void torture_leave_domain(void *join_ctx)
 
        talloc_free(join);
 }
+
+
+struct test_join_ads_dc {
+       struct test_join *join;
+};
+
+void *torture_join_domain_ads_dc(const char *machine_name, 
+                         const char *domain,
+                         const char **machine_password)
+{
+       struct test_join_ads_dc *join;
+
+       join = talloc_p(NULL, struct test_join_ads_dc);
+       if (join == NULL) {
+               return NULL;
+       }
+
+       join->join = torture_join_domain(machine_name, domain,
+                                       ACB_SVRTRUST,
+                                       machine_password);
+
+       if (!join->join) {
+               return NULL;
+       }
+
+       /* do netlogon DrsEnumerateDomainTrusts */
+
+       /* modify userAccountControl from 4096 to 532480 */
+       
+       /* modify RDN to OU=Domain Controllers and skip the $ from server name */
+
+       /* ask objectVersion of Schema Partition */
+
+       /* ask rIDManagerReferenz of the Domain Partition */
+
+       /* ask fsMORoleOwner of the RID-Manager$ object
+        * returns CN=NTDS Settings,CN=<DC>,CN=Servers,CN=Default-First-Site-Name, ...
+        */
+
+       /* ask for dnsHostName of CN=<DC>,CN=Servers,CN=Default-First-Site-Name, ... */
+
+       /* ask for objectGUID of CN=NTDS Settings,CN=<DC>,CN=Servers,CN=Default-First-Site-Name, ... */
+
+       /* ask for * of CN=Default-First-Site-Name, ... */
+
+       /* search (&(|(objectClass=user)(objectClass=computer))(sAMAccountName=<machine_name>$)) in Domain Partition 
+        * attributes : distinguishedName, userAccountControl
+        */
+
+       /* ask * for CN=<machine_name>,CN=Servers,CN=Default-First-Site-Name,... 
+        * should fail with noSuchObject
+        */
+
+       /* add CN=<machine_name>,CN=Servers,CN=Default-First-Site-Name,... 
+        *
+        * objectClass = server
+        * systemFlags = 50000000
+        * serverReferenz = CN=<machine_name>,OU=Domain Controllers,...
+        */
+
+       /* ask for * of CN=NTDS Settings,CN=<machine_name>,CN=Servers,CN=Default-First-Site-Name, ...
+        * should fail with noSuchObject
+        */
+
+       /* search for (ncname=<domain_nc>) in CN=Partitions,CN=Configuration,... 
+        * attributes: ncName, dnsRoot
+        */
+
+       /* modify add CN=<machine_name>,CN=Servers,CN=Default-First-Site-Name,...
+        * serverReferenz = CN=<machine_name>,OU=Domain Controllers,...
+        * should fail with attributeOrValueExists
+        */
+
+       /* modify replace CN=<machine_name>,CN=Servers,CN=Default-First-Site-Name,...
+        * serverReferenz = CN=<machine_name>,OU=Domain Controllers,...
+        */
+
+       /* DsReplicaAdd to create the CN=NTDS Settings,CN=<machine_name>,CN=Servers,CN=Default-First-Site-Name, ...
+        * needs to be tested
+        */
+
+       return join;
+}
+               
+void torture_leave_domain_ads_dc(void *join_ctx)
+{
+       struct test_join_ads_dc *join = join_ctx;
+
+       if (join->join) {
+               torture_leave_domain(join->join);
+       }
+
+       talloc_free(join);
+}