public void DeleteTree(bool isDeleted) { bool value; this.Init(); DebugLogger.WriteLine("ADActiveObject", string.Concat("DeleteTree called for ", this._adObject.DistinguishedName)); if (isDeleted) { value = true; } else { if (!this._adObject.Contains("Deleted")) { value = false; } else { value = (bool)this._adObject.GetValue("Deleted"); } } isDeleted = value; ADDeleteRequest aDDeleteRequest = new ADDeleteRequest(this._adObject.DistinguishedName, isDeleted); TreeDeleteControl treeDeleteControl = new TreeDeleteControl(); aDDeleteRequest.Controls.Add(treeDeleteControl); this._syncOps.Delete(this._sessionHandle, aDDeleteRequest); DebugLogger.WriteLine("ADActiveObject", string.Concat("DeleteTree succeeded for ", this._adObject.DistinguishedName)); }
public void Ctor_Default() { var control = new TreeDeleteControl(); Assert.True(control.IsCritical); Assert.True(control.ServerSide); Assert.Equal("1.2.840.113556.1.4.805", control.Type); Assert.Empty(control.GetValue()); }
public void SamrDeleteUser_WithChildObject() { ConnectAndOpenDomain(_samrProtocolAdapter.pdcFqdn, _samrProtocolAdapter.PrimaryDomainDnsName, out _serverHandle, out _domainHandle); LdapConnection con = new LdapConnection( new LdapDirectoryIdentifier(_samrProtocolAdapter.PDCIPAddress, int.Parse(_samrProtocolAdapter.ADDSPortNum)), new NetworkCredential(_samrProtocolAdapter.DomainAdministratorName, _samrProtocolAdapter.DomainUserPassword, _samrProtocolAdapter.PrimaryDomainDnsName)); con.SessionOptions.Sealing = false; con.SessionOptions.Signing = false; string treeRootDN = "CN=testRootDN," + _samrProtocolAdapter.primaryDomainUserContainerDN; string treeEntry1 = "CN=testEntry1," + treeRootDN; try { Site.Log.Add(LogEntryKind.TestStep, "Add test user with child object."); ManagedAddRequest add = new ManagedAddRequest(treeRootDN, "user"); System.DirectoryServices.Protocols.AddResponse response = (System.DirectoryServices.Protocols.AddResponse)con.SendRequest(add); add = new ManagedAddRequest(treeEntry1, "classStore"); response = (System.DirectoryServices.Protocols.AddResponse)con.SendRequest(add); System.DirectoryServices.Protocols.SearchRequest searchreq = new System.DirectoryServices.Protocols.SearchRequest(treeRootDN, "(ObjectClass=*)", System.DirectoryServices.Protocols.SearchScope.Base); System.DirectoryServices.Protocols.SearchResponse searchresp = (System.DirectoryServices.Protocols.SearchResponse)con.SendRequest(searchreq); byte[] values = (byte[])searchresp.Entries[0].Attributes["objectSid"].GetValues(Type.GetType("System.Byte[]"))[0]; SecurityIdentifier Sid = new SecurityIdentifier(values, 0); string[] sidArray = Sid.ToString().Split('-'); string rid = sidArray[sidArray.Length - 1]; Site.Log.Add(LogEntryKind.TestStep, "SamrOpenUser: obtain the handle to the created user."); HRESULT result = _samrProtocolAdapter.SamrOpenUser(_domainHandle, (uint)User_ACCESS_MASK.USER_ALL_ACCESS, uint.Parse(rid), out _userHandle); Site.Log.Add(LogEntryKind.TestStep, "SamrDeleteUser: delete the created user."); result = _samrProtocolAdapter.SamrDeleteUser(ref _userHandle); Site.Assert.AreNotEqual(HRESULT.STATUS_SUCCESS, result, "3.1.5.7.3 In the DC configuration, if U is a parent to another object, an error MUST be returned."); } finally { System.DirectoryServices.Protocols.DeleteRequest delreq = new System.DirectoryServices.Protocols.DeleteRequest(treeRootDN); System.DirectoryServices.Protocols.TreeDeleteControl treeDelCtrl = new TreeDeleteControl(); delreq.Controls.Add(treeDelCtrl); System.DirectoryServices.Protocols.DeleteResponse delresp = (System.DirectoryServices.Protocols.DeleteResponse)con.SendRequest(delreq); } }