public void Ctor_Default()
        {
            var control = new PermissiveModifyControl();

            Assert.True(control.IsCritical);
            Assert.True(control.ServerSide);
            Assert.Equal("1.2.840.113556.1.4.1413", control.Type);

            Assert.Empty(control.GetValue());
        }
Esempio n. 2
0
        public void Update()
        {
            ADPropertyValueCollection value;

            this.Init();
            DebugLogger.WriteLine("ADActiveObject", string.Concat("Update called for ", this._adObject.DistinguishedName));
            DirectoryAttributeModificationCollection directoryAttributeModificationCollection = new DirectoryAttributeModificationCollection();

            if (!this._adObject.TrackChanges)
            {
                bool flag = false;
                foreach (KeyValuePair <string, ADPropertyValueCollection> keyValuePair in this._adObject)
                {
                    string key = keyValuePair.Key;
                    if (flag || string.Compare(key, "distinguishedName", StringComparison.OrdinalIgnoreCase) != 0)
                    {
                        value = keyValuePair.Value;
                        this.UpdateValueCollectionChanges(key, value, directoryAttributeModificationCollection);
                    }
                    else
                    {
                        flag = true;
                    }
                }
            }
            else
            {
                foreach (string addedProperty in this._adObject.AddedProperties)
                {
                    value = this._adObject[addedProperty];
                    this.UpdateValueCollectionChanges(addedProperty, value, directoryAttributeModificationCollection);
                }
                foreach (string removedProperty in this._adObject.RemovedProperties)
                {
                    DirectoryAttributeModification directoryAttributeModification = new DirectoryAttributeModification();
                    directoryAttributeModification.Name      = removedProperty;
                    directoryAttributeModification.Operation = DirectoryAttributeOperation.Delete;
                    directoryAttributeModificationCollection.Add(directoryAttributeModification);
                }
                foreach (string modifiedProperty in this._adObject.ModifiedProperties)
                {
                    value = this._adObject[modifiedProperty];
                    this.UpdateValueCollectionChanges(modifiedProperty, value, directoryAttributeModificationCollection);
                }
            }
            if (directoryAttributeModificationCollection.Count != 0)
            {
                DirectoryAttributeModification[] directoryAttributeModificationArray = new DirectoryAttributeModification[directoryAttributeModificationCollection.Count];
                directoryAttributeModificationCollection.CopyTo(directoryAttributeModificationArray, 0);
                ADModifyRequest         aDModifyRequest         = new ADModifyRequest(this._adObject.DistinguishedName, directoryAttributeModificationArray);
                PermissiveModifyControl permissiveModifyControl = new PermissiveModifyControl();
                aDModifyRequest.Controls.Add(permissiveModifyControl);
                if (this._sdFlags != SecurityMasks.None)
                {
                    aDModifyRequest.Controls.Add(new SecurityDescriptorFlagControl(this._sdFlags));
                }
                this._syncOps.Modify(this._sessionHandle, aDModifyRequest);
                DebugLogger.WriteLine("ADActiveObject", string.Concat("Update succeeded for ", this._adObject.DistinguishedName));
                return;
            }
            else
            {
                return;
            }
        }