public void DRSR_DRSQuerySitesByCost_cToSites_1_And_rgszToSites_NULL() { DrsrTestChecker.Check(); DsSite[] dest = new DsSite[1]; dest[0] = ((DsServer)EnvironmentConfig.MachineStore[EnvironmentConfig.Machine.WritableDC2]).Site; uint ret = drsTestClient.DrsBind(EnvironmentConfig.Machine.WritableDC1, EnvironmentConfig.User.ParentDomainAdmin, DRS_EXTENSIONS_IN_FLAGS.DRS_EXT_BASE); BaseTestSite.Assert.AreEqual <uint>(0, ret, null); DRS_MSG_QUERYSITESREQ request = drsTestClient.CreateDRS_MSG_QUERYSITESREQ( ((DsServer)EnvironmentConfig.MachineStore[EnvironmentConfig.Machine.WritableDC1]).Site.CN, 1, //cToSites: Invalid value null //rgszToSites: Invalid value ); uint?outVer; DRS_MSG_QUERYSITESREPLY?reply = null; BaseTestSite.Log.Add(LogEntryKind.Checkpoint, "Begin to call IDL_DRSQuerySitesByCost"); ret = drsTestClient.DRSClient.DrsQuerySitesByCost( EnvironmentConfig.DrsContextStore[EnvironmentConfig.Machine.WritableDC1], (uint)DRS_MSG_QUERYSITESREQ_Versions.V1, request, out outVer, out reply); BaseTestSite.Log.Add(LogEntryKind.Checkpoint, "End call IDL_DRSQuerySitesByCost with return value " + ret); BaseTestSite.Assert.AreEqual <uint>((uint)Win32ErrorCode_32.ERROR_INVALID_PARAMETER, ret, "IDL_DRSQuerySitesByCost should return ERROR_INVALID_PARAMETER for a request with cToSites = 1, rgszToSites = null"); }
public void DRSR_DRSQuerySitesByCost_fromSite_Invalid() { DrsrTestChecker.Check(); DsSite[] dest = new DsSite[1]; dest[0] = ((DsServer)EnvironmentConfig.MachineStore[EnvironmentConfig.Machine.WritableDC2]).Site; uint ret = drsTestClient.DrsBind(EnvironmentConfig.Machine.WritableDC1, EnvironmentConfig.User.ParentDomainAdmin, DRS_EXTENSIONS_IN_FLAGS.DRS_EXT_BASE); BaseTestSite.Assert.AreEqual <uint>(0, ret, null); string[] sites = new string[dest.Length]; for (int i = 0; i < dest.Length; i++) { sites[i] = dest[i].CN; } DRS_MSG_QUERYSITESREQ request = drsTestClient.CreateDRS_MSG_QUERYSITESREQ( "InvalidFromSite", //fromSite: Invalid value (uint)dest.Length, sites ); uint?outVer; DRS_MSG_QUERYSITESREPLY?reply = null; BaseTestSite.Log.Add(LogEntryKind.Checkpoint, "Begin to call IDL_DRSQuerySitesByCost"); ret = drsTestClient.DRSClient.DrsQuerySitesByCost( EnvironmentConfig.DrsContextStore[EnvironmentConfig.Machine.WritableDC1], (uint)DRS_MSG_QUERYSITESREQ_Versions.V1, request, out outVer, out reply); BaseTestSite.Log.Add(LogEntryKind.Checkpoint, "End call IDL_DRSQuerySitesByCost with return value " + ret); BaseTestSite.Assert.AreEqual <uint>((uint)Win32ErrorCode_32.ERROR_DS_OBJ_NOT_FOUND, ret, "IDL_DRSQuerySitesByCost should return ERROR_DS_OBJ_NOT_FOUND for a request with fromSite invalid"); }
public void DRSR_DRSQuerySitesByCost_From_Site1_To_Site2() { DrsrTestChecker.Check(); DsSite[] dest = new DsSite[1]; dest[0] = ((DsServer)EnvironmentConfig.MachineStore[EnvironmentConfig.Machine.WritableDC2]).Site; uint ret = drsTestClient.DrsBind(EnvironmentConfig.Machine.WritableDC1, EnvironmentConfig.User.ParentDomainAdmin, DRS_EXTENSIONS_IN_FLAGS.DRS_EXT_BASE); BaseTestSite.Assert.AreEqual <uint>(0, ret, null); ret = drsTestClient.DrsQuerySitesByCost(EnvironmentConfig.Machine.WritableDC1, DRS_MSG_QUERYSITESREQ_Versions.V1, ((DsServer)EnvironmentConfig.MachineStore[EnvironmentConfig.Machine.WritableDC1]).Site, dest); BaseTestSite.Assert.AreEqual <uint>(0, ret, "IDL_DRSQuerySItesByCost: Checking return value - got: {0}, expect: 0, should return 0x0 for a request for correct request", ret); }
void VerifyCrackNamesListDomainsInSite( DsServer dc, DRS_MSG_CRACKREQ req, DRS_MSG_CRACKREPLY?reply) { string siteDn = req.V1.rpNames[0]; DsSite site = ldapAd.GetSite(dc, siteDn); string[] domains = new string[site.Domains.Length]; testSite.Assert.IsTrue( reply.Value.V1.pResult[0].cItems == domains.Length, "IDL_DRSCrackNames: DS_LIST_DOMAINS_IN_SITE: wrong domain count, expect:{0}, got:{1}", domains.Length, reply.Value.V1.pResult[0].cItems ); for (int i = 0; i < site.Domains.Length; ++i) { domains[i] = site.Domains[i].Name; } string[] drsrDomains = new string[reply.Value.V1.pResult[0].cItems]; for (int i = 0; i < reply.Value.V1.pResult[0].cItems; ++i) { drsrDomains[i] = reply.Value.V1.pResult[0].rItems[i].pName; testSite.Assert.IsTrue( reply.Value.V1.pResult[0].rItems[i].status == DS_NAME_ERROR.DS_NAME_NO_ERROR, "IDL_DRSCrackNames: DS_LIST_DOMAINS_IN_SITE: return status should be 0, got {0}", reply.Value.V1.pResult[0].rItems[i].status ); } testSite.Assert.IsTrue( DrsrHelper.IsStringArrayEqual(domains, drsrDomains), "IDL_DRSCrackNames: DS_LIST_DOMAINS_IN_SITE: failed to verify servers in site {0}", siteDn ); }
public DsSite GetSite(DsServer dc, string dn) { DsSite site = new DsSite(); site.DN = dn; // servers // find all "server" objects under the site dn SearchResultEntryCollection results = null; ResultCode ret = Search( dc, dn, "(objectClass=server)", System.DirectoryServices.Protocols.SearchScope.Subtree, null, out results ); List <DsServer> servers = new List <DsServer>(); foreach (SearchResultEntry e in results) { DsServer srv = new DsServer(); srv.NtdsDsaObjectName = e.DistinguishedName; servers.Add(srv); } site.Servers = servers.ToArray(); // Look into every NTDS DSA object to find the domain it is in. List <string> domainNcs = new List <string>(); foreach (DsServer s in site.Servers) { string[] ncs = LdapUtility.GetAttributeValuesString( dc, s.NtdsDsaObjectName, "hasMasterNCs", "(objectClass=nTDSDSA)", System.DirectoryServices.Protocols.SearchScope.Subtree); if (ncs == null) { continue; } foreach (string nc in ncs) { bool newNc = true; foreach (string oldNc in domainNcs) { if (oldNc == nc) { newNc = false; break; } } if (newNc) { domainNcs.Add(nc); } } } /* * string[] domainNcs = LdapUtility.GetAttributeValuesString( * dc, * site.DN, * "hasMasterNCs", //"msDS-HasDomainNCs", * "(objectClass=nTDSDSA)", * System.DirectoryServices.Protocols.SearchScope.Subtree); */ bool isAdlds = !EnvironmentConfig.TestDS; if (domainNcs == null && isAdlds) { return(site); } // Eliminate ConfigNC and SchemaNC List <string> filteredDomainNcs = new List <string>(); foreach (string d in domainNcs) { if (d.StartsWith("CN=Configuration") || d.StartsWith("CN=Schema")) { continue; } filteredDomainNcs.Add(d); } List <DsDomain> domains = new List <DsDomain>(); foreach (string tdn in filteredDomainNcs) { bool n = true; foreach (DsDomain d in domains) { if (d.Name == tdn) { n = false; break; } } if (n) { DsDomain nd; if (isAdlds) { nd = new AdldsDomain(); } else { nd = new AddsDomain(); } nd.Name = tdn; domains.Add(nd); } } site.Domains = domains.ToArray(); return(site); }