private void DRSUpdateRefs_Success_AddThenDel(DrsUpdateRefs_Versions ver) { uint ret = drsTestClient.DrsBind(EnvironmentConfig.Machine.WritableDC1, EnvironmentConfig.User.ParentDomainAdmin, DRS_EXTENSIONS_IN_FLAGS.DRS_EXT_BASE); try { BaseTestSite.Log.Add(LogEntryKind.Checkpoint, "Try to delete replication destination from repsTo for later testing. It MAY fails if there is no such record to delete"); drsTestClient.DrsUpdateRefs( EnvironmentConfig.Machine.WritableDC1, ver, (DsServer)EnvironmentConfig.MachineStore[EnvironmentConfig.Machine.WritableDC2], DRS_OPTIONS.DRS_DEL_REF); } catch { BaseTestSite.Log.Add(LogEntryKind.Checkpoint, "No similar record to delete in repsTo. It's OK to continue"); } drsTestClient.DrsUpdateRefs( EnvironmentConfig.Machine.WritableDC1, ver, (DsServer)EnvironmentConfig.MachineStore[EnvironmentConfig.Machine.WritableDC2], DRS_OPTIONS.DRS_ADD_REF); drsTestClient.DrsUpdateRefs( EnvironmentConfig.Machine.WritableDC1, ver, (DsServer)EnvironmentConfig.MachineStore[EnvironmentConfig.Machine.WritableDC2], DRS_OPTIONS.DRS_DEL_REF); }
private void DRSUpdateRefs_NONExist_NC(DrsUpdateRefs_Versions ver) { uint ret = drsTestClient.DrsBind(EnvironmentConfig.Machine.WritableDC1, EnvironmentConfig.User.ParentDomainAdmin, DRS_EXTENSIONS_IN_FLAGS.DRS_EXT_BASE); DRS_MSG_UPDREFS req; EnvironmentConfig.Machine machine = EnvironmentConfig.Machine.WritableDC1; DsServer dest = (DsServer)EnvironmentConfig.MachineStore[EnvironmentConfig.Machine.WritableDC2]; DRS_OPTIONS options; try { BaseTestSite.Log.Add(LogEntryKind.Checkpoint, "Try to delete replication destination from repsTo for later testing. It MAY fails if there is no such record to delete"); options = DRS_OPTIONS.DRS_DEL_REF; req = drsTestClient.CreateRequestForDrsUpdateRef( machine, ver, dest, options ); ret = drsTestClient.DRSClient.DrsUpdateRefs(EnvironmentConfig.DrsContextStore[machine], (uint)ver, req); } catch { BaseTestSite.Log.Add(LogEntryKind.Checkpoint, "No similar record to delete in repsTo. It's OK to continue"); } options = DRS_OPTIONS.DRS_ADD_REF; req = drsTestClient.CreateRequestForDrsUpdateRef( machine, ver, dest, options, NamingContext.None // invalid value ); ret = drsTestClient.DRSClient.DrsUpdateRefs(EnvironmentConfig.DrsContextStore[machine], (uint)ver, req); BaseTestSite.Assert.AreEqual <uint>((uint)Win32ErrorCode_32.ERROR_DS_DRA_BAD_NC, ret, "the server should return ERROR_DS_DRA_BAD_NC"); options = DRS_OPTIONS.DRS_DEL_REF; req = drsTestClient.CreateRequestForDrsUpdateRef( machine, ver, dest, options ); ret = drsTestClient.DRSClient.DrsUpdateRefs(EnvironmentConfig.DrsContextStore[machine], (uint)ver, req); }
private void DRSUpdateRefs_uuidDsaObjDest_NULL(DrsUpdateRefs_Versions ver) { uint ret = drsTestClient.DrsBind(EnvironmentConfig.Machine.WritableDC1, EnvironmentConfig.User.ParentDomainAdmin, DRS_EXTENSIONS_IN_FLAGS.DRS_EXT_BASE); DRS_MSG_UPDREFS req; EnvironmentConfig.Machine machine = EnvironmentConfig.Machine.WritableDC1; DsServer dest = (DsServer)EnvironmentConfig.MachineStore[EnvironmentConfig.Machine.WritableDC2]; DRS_OPTIONS options; try { BaseTestSite.Log.Add(LogEntryKind.Checkpoint, "Try to delete replication destination from repsTo for later testing. It MAY fails if there is no such record to delete"); options = DRS_OPTIONS.DRS_DEL_REF; req = drsTestClient.CreateRequestForDrsUpdateRef( machine, ver, dest, options ); ret = drsTestClient.DRSClient.DrsUpdateRefs(EnvironmentConfig.DrsContextStore[machine], (uint)ver, req); } catch { BaseTestSite.Log.Add(LogEntryKind.Checkpoint, "No similar record to delete in repsTo. It's OK to continue"); } options = DRS_OPTIONS.DRS_ADD_REF; req = drsTestClient.CreateRequestForDrsUpdateRef( machine, ver, dest, options ); // Invalid value switch (ver) { case DrsUpdateRefs_Versions.V1: req.V1.uuidDsaObjDest = Guid.Empty; break; case DrsUpdateRefs_Versions.V2: req.V2.uuidDsaObjDest = Guid.Empty; break; default: BaseTestSite.Assert.Fail("The version {0} is not supported.", ver); break; } ret = drsTestClient.DRSClient.DrsUpdateRefs(EnvironmentConfig.DrsContextStore[machine], (uint)ver, req); BaseTestSite.Assert.AreEqual <uint>((uint)Win32ErrorCode_32.ERROR_DS_DRA_INVALID_PARAMETER, ret, "the server should return ERROR_DS_DRA_INVALID_PARAMETER"); options = DRS_OPTIONS.DRS_DEL_REF; req = drsTestClient.CreateRequestForDrsUpdateRef( machine, ver, dest, options ); ret = drsTestClient.DRSClient.DrsUpdateRefs(EnvironmentConfig.DrsContextStore[machine], (uint)ver, req); }
// <summary> // the function is used to create a DrsUpdateRef request // </summary> public DRS_MSG_UPDREFS CreateRequestForDrsUpdateRef( EnvironmentConfig.Machine machine, DrsUpdateRefs_Versions reqVer, DsServer dest, DRS_OPTIONS options, NamingContext nc = NamingContext.ConfigNC) { string nc_name = null; Guid nc_guid = Guid.Empty; string nc_sid = null; DSNAME nc_obj; switch (nc) { case NamingContext.ConfigNC: nc_obj = dest.Domain.ConfigNC; break; case NamingContext.SchemaNC: nc_obj = dest.Domain.SchemaNC; break; case NamingContext.AppNC: if (EnvironmentConfig.TestDS) { nc_obj = ((AddsDomain)dest.Domain).OtherNCs[0]; } else { nc_obj = ((AdldsDomain)dest.Domain).AppNCs[0]; } break; case NamingContext.DomainNC: if (!EnvironmentConfig.TestDS) { nc_obj = new DSNAME(); } nc_obj = ((AddsDomain)dest.Domain).DomainNC; break; default: nc_obj = new DSNAME(); break; } nc_name = LdapUtility.ConvertUshortArrayToString(nc_obj.StringName); nc_guid = nc_obj.Guid; nc_sid = convertSidToString(nc_obj.Sid); DRS_MSG_UPDREFS?req = CreateUpdateRefsRequest( reqVer, nc_name, nc_guid, nc_sid, dest.DsaNetworkAddress, dest.NtdsDsaObjectGuid, options); return((DRS_MSG_UPDREFS)req); }