Ejemplo n.º 1
0
        public void WillForwardChangeEventInConfigurationSetting()
        {
            TestsConfigurationSection section = new TestsConfigurationSection(originalValue);

            configurationSource.Add(SectionName, section);

            MockConfigurationSectionManageabilityProvider manageabilityProvider
                = new MockConfigurationSectionManageabilityProvider(subProviders);

            manageabilityProviders.Add(SectionName, manageabilityProvider);

            ManageabilityHelper helper
                = new ManageabilityHelper(manageabilityProviders, true, registryAccessor, true, wmiPublisher, ApplicationName);

            helper.ConfigurationSettingChanged += OnConfigurationSettingChanged;

            helper.UpdateConfigurationManageability(configurationAccessor);

            IEnumerator <ConfigurationSetting> publishedSettings = wmiPublisher.GetPublishedInstances().GetEnumerator();

            Assert.IsTrue(publishedSettings.MoveNext());

            Assert.IsNull(notifiedChangeSource);
            ((ConfigurationSetting)publishedSettings.Current).Commit(); // commit changes
            Assert.AreEqual(SectionName, notifiedChangeSource);
        }
        public void MultipleRequestsForExistingAndNonExistingSectionsAreRecordedOnce()
        {
            TestsConfigurationSection existingSection1 = new TestsConfigurationSection();

            configuration.Sections.Add("section1", existingSection1);
            TestsConfigurationSection existingSection4 = new TestsConfigurationSection();

            configuration.Sections.Add("section4", existingSection4);

            ConfigurationSection section = configurationAccessor.GetSection("section1");

            Assert.AreSame(existingSection1, section);
            section = configurationAccessor.GetSection("section2");
            Assert.IsNull(section);
            section = configurationAccessor.GetSection("section3");
            Assert.IsNull(section);
            section = configurationAccessor.GetSection("section4");
            Assert.AreSame(existingSection4, section);

            List <string> sectionNames
                = CreateCollectionFromEnumerable(configurationAccessor.GetRequestedSectionNames());

            Assert.AreEqual(4, sectionNames.Count);
            Assert.IsTrue(sectionNames.Contains("section1"));
            Assert.IsTrue(sectionNames.Contains("section2"));
            Assert.IsTrue(sectionNames.Contains("section3"));
            Assert.IsTrue(sectionNames.Contains("section4"));
        }
Ejemplo n.º 3
0
        public void HelperWillNotSendRegistryKeysIfNotAvailable()
        {
            TestsConfigurationSection section = new TestsConfigurationSection(originalValue);

            configurationSource.Add(SectionName, section);

            MockRegistryKey machineKey = new MockRegistryKey(false);

            localMachine.AddSubKey(ManageabilityHelper.BuildSectionKeyName(ApplicationName, SectionName), machineKey);

            MockConfigurationSectionManageabilityProvider manageabilityProvider = new MockConfigurationSectionManageabilityProvider(subProviders);

            manageabilityProviders.Add(SectionName, manageabilityProvider);

            ManageabilityHelper helper
                = new ManageabilityHelper(manageabilityProviders, true, registryAccessor, ApplicationName);

            helper.UpdateConfigurationManageability(configurationAccessor);

            Assert.IsTrue(manageabilityProvider.called);
            Assert.IsTrue(manageabilityProvider.readGroupPolicies);
            Assert.AreEqual(1, currentUser.GetRequests().Count);
            Assert.IsNull(manageabilityProvider.userKey);
            Assert.AreEqual(1, localMachine.GetRequests().Count);
            Assert.AreSame(machineKey, manageabilityProvider.machineKey);

            Assert.IsTrue(MockRegistryKey.CheckAllClosed(machineKey));
        }
Ejemplo n.º 4
0
        public void HelperWillRevokePublishedSettingsOnReprocess()
        {
            TestsConfigurationSection section = new TestsConfigurationSection(originalValue);

            configurationSource.Add(SectionName, section);

            MockConfigurationSectionManageabilityProvider manageabilityProvider
                = new MockConfigurationSectionManageabilityProvider(subProviders);

            manageabilityProviders.Add(SectionName, manageabilityProvider);

            ManageabilityHelper helper
                = new ManageabilityHelper(manageabilityProviders, true, registryAccessor, true, wmiPublisher, ApplicationName);

            helper.UpdateConfigurationManageability(configurationAccessor);

            Assert.AreEqual(1, wmiPublisher.GetPublishedInstances().Count);
            ConfigurationSetting publishedSetting = new List <ConfigurationSetting>(wmiPublisher.GetPublishedInstances())[0];

            helper.UpdateConfigurationManageability(configurationAccessor);

            Assert.AreEqual(1, wmiPublisher.GetPublishedInstances().Count);
            ConfigurationSetting rePublishedSetting = new List <ConfigurationSetting>(wmiPublisher.GetPublishedInstances())[0];

            Assert.AreNotSame(publishedSetting, rePublishedSetting);
        }
        public void RegisteredForChangesOnLocalReceivesNotificationsOnMainConfigurationFileUpdateWithUpdatedValuesAvailable()
        {
            MockManageabilityHelper manageabilityHelper = new MockManageabilityHelper();

            instance = new ManageableConfigurationSourceImplementation(testConfigurationFile,
                                                                       manageabilityHelper,
                                                                       groupPolicyWatcher,
                                                                       watcherCoordinator,
                                                                       notificationCoordinator);

            instance.GetSection(localSection1);
            instance.AddSectionChangeHandler(localSection1, OnConfigurationSectionChange);

            TestsConfigurationSection rwTestConfigurationSection
                = (TestsConfigurationSection)rwConfiguration.GetSection(localSection1);

            rwTestConfigurationSection.Value = "value2";
            rwConfiguration.Save();

            watcherCoordinator.OnConfigurationChanged(null,
                                                      new ConfigurationChangedEventArgs(ConfigurationChangeWatcherCoordinator.MainConfigurationFileSource));

            Assert.AreEqual(1, valuesForNotifiedSections.Count);
            Assert.AreEqual("value2", valuesForNotifiedSections[localSection1]);
        }
Ejemplo n.º 6
0
        public void HelperWithManageabilityProviderForExistingSectionDoesInvokeWithApproriateParameters()
        {
            TestsConfigurationSection section = new TestsConfigurationSection(originalValue);

            configurationSource.Add(SectionName, section);

            MockRegistryKey userKey = new MockRegistryKey(false);

            currentUser.AddSubKey(ManageabilityHelper.BuildSectionKeyName(ApplicationName, SectionName), userKey);
            MockRegistryKey machineKey = new MockRegistryKey(false);

            localMachine.AddSubKey(ManageabilityHelper.BuildSectionKeyName(ApplicationName, SectionName), machineKey);

            MockConfigurationSectionManageabilityProvider manageabilityProvider = new MockConfigurationSectionManageabilityProvider(subProviders);

            manageabilityProviders.Add(SectionName, manageabilityProvider);

            ManageabilityHelper helper
                = new ManageabilityHelper(manageabilityProviders, true, registryAccessor, true, wmiPublisher, ApplicationName);

            helper.UpdateConfigurationManageability(configurationAccessor);

            Assert.IsTrue(manageabilityProvider.called);
            Assert.AreEqual(1, wmiPublisher.GetPublishedInstances().Count);
            Assert.AreEqual(1, currentUser.GetRequests().Count);
            Assert.AreSame(userKey, manageabilityProvider.userKey);
            Assert.AreEqual(1, localMachine.GetRequests().Count);
            Assert.AreSame(machineKey, manageabilityProvider.machineKey);

            Assert.IsTrue(MockRegistryKey.CheckAllClosed(userKey, machineKey));
        }
        public void CanGetUpdatedConfigurationValuesAfterFileChangeNotification()
        {
            MockManageabilityHelper manageabilityHelper = new MockManageabilityHelper(localSection1, externalSection1);

            instance = new ManageableConfigurationSourceImplementation(testConfigurationFile,
                                                                       manageabilityHelper,
                                                                       groupPolicyWatcher,
                                                                       watcherCoordinator,
                                                                       notificationCoordinator);
            manageabilityHelper.updateCalled = false;

            TestsConfigurationSection testConfigurationSection
                = (TestsConfigurationSection)instance.GetSection(localSection1);

            Assert.IsNotNull(testConfigurationSection);
            Assert.AreEqual("value1", testConfigurationSection.Value);

            TestsConfigurationSection rwTestConfigurationSection
                = (TestsConfigurationSection)rwConfiguration.GetSection(localSection1);

            rwTestConfigurationSection.Value = "value2";
            rwConfiguration.Save();

            watcherCoordinator.OnConfigurationChanged(null,
                                                      new ConfigurationChangedEventArgs(ConfigurationChangeWatcherCoordinator.MainConfigurationFileSource));

            testConfigurationSection
                = (TestsConfigurationSection)instance.GetSection(localSection1);
            Assert.IsNotNull(testConfigurationSection);
            Assert.AreEqual("value2", testConfigurationSection.Value);
            Assert.AreNotSame(rwTestConfigurationSection, testConfigurationSection);
        }
Ejemplo n.º 8
0
        public void HelperWithManageabilityProviderForMissingSectionDoesNothing()
        {
            TestsConfigurationSection section = new TestsConfigurationSection(originalValue);

            configurationSource.Add(SectionName, section);

            MockRegistryKey userKey = new MockRegistryKey(false);

            currentUser.AddSubKey(ManageabilityHelper.BuildSectionKeyName(ApplicationName, SectionName), userKey);
            MockRegistryKey machineKey = new MockRegistryKey(false);

            localMachine.AddSubKey(ManageabilityHelper.BuildSectionKeyName(ApplicationName, SectionName), machineKey);

            MockConfigurationSectionManageabilityProvider manageabilityProvider = new MockConfigurationSectionManageabilityProvider(subProviders);

            manageabilityProviders.Add(AltSectionName, manageabilityProvider);

            ManageabilityHelper helper
                = new ManageabilityHelper(manageabilityProviders, true, registryAccessor, ApplicationName);

            helper.UpdateConfigurationManageability(configurationAccessor);

            Assert.IsFalse(manageabilityProvider.called);
            Assert.AreEqual(0, currentUser.GetRequests().Count);
            Assert.AreEqual(0, localMachine.GetRequests().Count);

            Assert.IsTrue(MockRegistryKey.CheckAllClosed(userKey, machineKey));
        }
        void OnConfigurationSectionChange(object sender,
                                          ConfigurationChangedEventArgs e)
        {
            TestsConfigurationSection section
                = (TestsConfigurationSection)instance.GetSection(e.SectionName);

            valuesForNotifiedSections[e.SectionName] = section != null ? section.Value : null;
        }
Ejemplo n.º 10
0
        public void CanRequestExistingSection()
        {
            TestsConfigurationSection existingSection = new TestsConfigurationSection();

            configuration.Sections.Add("section", existingSection);
            ConfigurationSection section = configurationAccessor.GetSection("section");

            Assert.AreSame(existingSection, section);
        }
Ejemplo n.º 11
0
        public void CanRemoveExistingSection()
        {
            TestsConfigurationSection existingSection = new TestsConfigurationSection();

            configuration.Sections.Add("section", existingSection);
            Assert.IsNotNull(configurationAccessor.GetSection("section"));
            configurationAccessor.RemoveSection("section");
            Assert.IsNull(configurationAccessor.GetSection("section"));
        }
Ejemplo n.º 12
0
        public void RequestForExistingSectionIsRecorded()
        {
            TestsConfigurationSection existingSection = new TestsConfigurationSection();

            configuration.Sections.Add("section", existingSection);
            ConfigurationSection section = configurationAccessor.GetSection("section");
            List <string>        sectionNames
                = CreateCollectionFromEnumerable(configurationAccessor.GetRequestedSectionNames());

            Assert.AreEqual(1, sectionNames.Count);
            Assert.IsTrue(sectionNames.Contains("section"));
        }
Ejemplo n.º 13
0
        public void ChangeOnMainConfigurationFileNotifiesHandlerForRestoredSection()
        {
            // if the section existed once, then registered handlers must be notified when the removal
            // is detected, but after that they shouldn't be notified while the section is still deleted
            // and they should be notified if the configuration section shows

            MockManageabilityHelper manageabilityHelper = new MockManageabilityHelper();

            instance = new ManageableConfigurationSourceImplementation(testConfigurationFile,
                                                                       manageabilityHelper,
                                                                       groupPolicyWatcher,
                                                                       watcherCoordinator,
                                                                       notificationCoordinator);

            instance.AddSectionChangeHandler(localSection1, OnConfigurationSectionChange);
            TestsConfigurationSection section = (TestsConfigurationSection)instance.GetSection(localSection1);

            Assert.IsNotNull(section);

            watcherCoordinator.OnConfigurationChanged(null,
                                                      new ConfigurationChangedEventArgs(ConfigurationChangeWatcherCoordinator.MainConfigurationFileSource));

            Assert.AreEqual(1, valuesForNotifiedSections.Count);
            Assert.AreEqual("value1", valuesForNotifiedSections[localSection1]);

            rwConfiguration.Sections.Remove(localSection1);
            rwConfiguration.Save();

            watcherCoordinator.OnConfigurationChanged(null,
                                                      new ConfigurationChangedEventArgs(ConfigurationChangeWatcherCoordinator.MainConfigurationFileSource));

            Assert.AreEqual(1, valuesForNotifiedSections.Count);
            Assert.AreEqual(null, valuesForNotifiedSections[localSection1]);

            valuesForNotifiedSections.Clear();

            watcherCoordinator.OnConfigurationChanged(null,
                                                      new ConfigurationChangedEventArgs(ConfigurationChangeWatcherCoordinator.MainConfigurationFileSource));

            Assert.AreEqual(0, valuesForNotifiedSections.Count);                        // second time, no notification

            // restore the section and notify again
            rwConfiguration.Sections.Add(localSection1, new TestsConfigurationSection("valuenew"));
            rwConfiguration.Save();

            watcherCoordinator.OnConfigurationChanged(null,
                                                      new ConfigurationChangedEventArgs(ConfigurationChangeWatcherCoordinator.MainConfigurationFileSource));

            Assert.AreEqual(1, valuesForNotifiedSections.Count);
            Assert.AreEqual("valuenew", valuesForNotifiedSections[localSection1]);
        }
Ejemplo n.º 14
0
        public void UpdateOnSectionReappliesPoliciesAndRepublishesWmiObjects()
        {
            TestsConfigurationSection section = new TestsConfigurationSection(originalValue);

            configurationSource.Add(SectionName, section);

            MockRegistryKey userKey = new MockRegistryKey(false);

            currentUser.AddSubKey(ManageabilityHelper.BuildSectionKeyName(ApplicationName, SectionName), userKey);
            userKey.AddBooleanValue(RegistryKeyBase.PolicyValueName, true);
            userKey.AddStringValue(MockConfigurationSectionManageabilityProvider.ValuePropertyName, "Overriden");
            MockRegistryKey machineKey = new MockRegistryKey(false);

            localMachine.AddSubKey(ManageabilityHelper.BuildSectionKeyName(ApplicationName, SectionName), machineKey);

            MockConfigurationSectionManageabilityProvider manageabilityProvider = new MockConfigurationSectionManageabilityProvider(subProviders);

            manageabilityProviders.Add(SectionName, manageabilityProvider);

            ManageabilityHelper helper
                = new ManageabilityHelper(manageabilityProviders, true, registryAccessor, true, wmiPublisher, ApplicationName);

            helper.ConfigurationSettingChanged += OnConfigurationSettingChangedTriggerUpdate;
            helper.UpdateConfigurationManageability(configurationAccessor);

            // check the original setting was published alright.
            IEnumerator <ConfigurationSetting> publishedInstances = wmiPublisher.GetPublishedInstances().GetEnumerator();

            Assert.IsTrue(publishedInstances.MoveNext());
            TestConfigurationSettings originalSetting = publishedInstances.Current as TestConfigurationSettings;

            Assert.IsNotNull(originalSetting);
            Assert.AreEqual("Overriden", originalSetting.Value);
            Assert.IsFalse(publishedInstances.MoveNext());

            // change and notify
            originalSetting.Value = "Foo";
            originalSetting.Commit();

            // check the updated setting is indeed updated and a new instance
            // the gp override should still take precedence
            publishedInstances = wmiPublisher.GetPublishedInstances().GetEnumerator();
            Assert.IsTrue(publishedInstances.MoveNext());
            TestConfigurationSettings updatedSetting = publishedInstances.Current as TestConfigurationSettings;

            Assert.IsNotNull(updatedSetting);
            Assert.AreNotSame(originalSetting, updatedSetting);
            Assert.AreEqual("Overriden", updatedSetting.Value);
            Assert.IsFalse(publishedInstances.MoveNext());
        }
        public void CanReadSectionFromConfigurationSource()
        {
            ManageableConfigurationSourceImplementation implementation
                = new ManageableConfigurationSourceImplementation("test.config",
                                                                  new MockManageabilityHelper(),
                                                                  new GroupPolicyWatcher(),
                                                                  new ConfigurationChangeWatcherCoordinator("test.config", false),
                                                                  new ConfigurationChangeNotificationCoordinator());
            ManageableConfigurationSource configurationSource
                = new ManageableConfigurationSource(implementation);
            TestsConfigurationSection section = (TestsConfigurationSection)configurationSource.GetSection("local.section.1");

            Assert.IsNotNull(section);
            Assert.AreEqual("value1", section.Value);
        }
        public void CanGetSection()
        {
            MockManageabilityHelper manageabilityHelper = new MockManageabilityHelper(localSection1, externalSection1);

            instance = new ManageableConfigurationSourceImplementation(testConfigurationFile,
                                                                       manageabilityHelper,
                                                                       groupPolicyWatcher,
                                                                       watcherCoordinator,
                                                                       notificationCoordinator);

            TestsConfigurationSection testConfigurationSection
                = (TestsConfigurationSection)instance.GetSection(externalSection1);

            Assert.IsNotNull(testConfigurationSection);
            Assert.AreEqual("value1", testConfigurationSection.Value);
        }
Ejemplo n.º 17
0
        public void HelperPerformsUpdateForSectionNotPreviouslyProcessed()
        {
            TestsConfigurationSection section = new TestsConfigurationSection(originalValue);

            configurationSource.Add(SectionName, section);

            MockConfigurationSectionManageabilityProvider manageabilityProvider
                = new MockConfigurationSectionManageabilityProvider(subProviders);

            manageabilityProviders.Add(SectionName, manageabilityProvider);

            ManageabilityHelper helper
                = new ManageabilityHelper(manageabilityProviders, true, registryAccessor, ApplicationName);

            helper.UpdateConfigurationManageability(configurationAccessor);

            Assert.IsTrue(manageabilityProvider.called);
        }
Ejemplo n.º 18
0
        public void UpdateOnSectionRepublishesWmiObjects()
        {
            TestsConfigurationSection section = new TestsConfigurationSection(originalValue);

            configurationSource.Add(SectionName, section);

            MockRegistryKey userKey    = new MockRegistryKey(false);
            MockRegistryKey machineKey = new MockRegistryKey(false);

            MockConfigurationSectionManageabilityProvider manageabilityProvider = new MockConfigurationSectionManageabilityProvider(subProviders);

            manageabilityProviders.Add(SectionName, manageabilityProvider);

            ManageabilityHelper helper
                = new ManageabilityHelper(manageabilityProviders, true, registryAccessor, true, wmiPublisher, ApplicationName);

            helper.ConfigurationSettingChanged += OnConfigurationSettingChangedTriggerUpdate;
            helper.UpdateConfigurationManageability(configurationAccessor);

            // check the original setting was published alright.
            IEnumerator <ConfigurationSetting> publishedInstances = wmiPublisher.GetPublishedInstances().GetEnumerator();

            Assert.IsTrue(publishedInstances.MoveNext());
            TestConfigurationSettings originalSetting = publishedInstances.Current as TestConfigurationSettings;

            Assert.IsNotNull(originalSetting);
            Assert.AreEqual(originalValue, originalSetting.Value);
            Assert.IsFalse(publishedInstances.MoveNext());

            // change and notify
            originalSetting.Value = "Foo";
            originalSetting.Commit();

            // check the updated setting is indeed updated and a new instance
            publishedInstances = wmiPublisher.GetPublishedInstances().GetEnumerator();
            Assert.IsTrue(publishedInstances.MoveNext());
            TestConfigurationSettings updatedSetting = publishedInstances.Current as TestConfigurationSettings;

            Assert.IsNotNull(updatedSetting);
            Assert.AreNotSame(originalSetting, updatedSetting);
            Assert.AreEqual(originalSetting.Value, updatedSetting.Value);
            Assert.IsFalse(publishedInstances.MoveNext());
        }
Ejemplo n.º 19
0
        public void HelperWillSendAppropriateParameterIfWmiIsDisabled()
        {
            TestsConfigurationSection section = new TestsConfigurationSection(originalValue);

            configurationSource.Add(SectionName, section);

            MockConfigurationSectionManageabilityProvider manageabilityProvider = new MockConfigurationSectionManageabilityProvider(subProviders);

            manageabilityProviders.Add(SectionName, manageabilityProvider);

            ManageabilityHelper helper
                = new ManageabilityHelper(manageabilityProviders, true, registryAccessor, false, wmiPublisher, ApplicationName);

            helper.UpdateConfigurationManageability(configurationAccessor);

            Assert.IsTrue(manageabilityProvider.called);
            Assert.IsTrue(manageabilityProvider.readGroupPolicies);
            Assert.IsFalse(manageabilityProvider.generateWmiObjects);
            Assert.AreEqual(0, wmiPublisher.GetPublishedInstances().Count);
        }
Ejemplo n.º 20
0
        public void WmiSettingsArePublishedWithApplicationAndSectionName()
        {
            TestsConfigurationSection section = new TestsConfigurationSection(originalValue);

            configurationSource.Add(SectionName, section);

            MockConfigurationSectionManageabilityProvider manageabilityProvider
                = new MockConfigurationSectionManageabilityProvider(subProviders);

            manageabilityProviders.Add(SectionName, manageabilityProvider);

            ManageabilityHelper helper
                = new ManageabilityHelper(manageabilityProviders, false, registryAccessor, true, wmiPublisher, ApplicationName);

            helper.UpdateConfigurationManageability(configurationAccessor);

            Assert.AreEqual(1, wmiPublisher.GetPublishedInstances().Count);
            ConfigurationSetting publishedSetting = new List <ConfigurationSetting>(wmiPublisher.GetPublishedInstances())[0];

            Assert.AreEqual(ApplicationName, publishedSetting.ApplicationName);
            Assert.AreEqual(SectionName, publishedSetting.SectionName);
        }
Ejemplo n.º 21
0
        public void HelperRevokesPublishedObjectsForRemovedSection()
        {
            TestsConfigurationSection section = new TestsConfigurationSection(originalValue);

            configurationSource.Add(SectionName, section);

            MockConfigurationSectionManageabilityProvider manageabilityProvider
                = new MockConfigurationSectionManageabilityProvider(subProviders);

            manageabilityProviders.Add(SectionName, manageabilityProvider);

            ManageabilityHelper helper
                = new ManageabilityHelper(manageabilityProviders, true, registryAccessor, true, wmiPublisher, ApplicationName);

            helper.UpdateConfigurationManageability(configurationAccessor);

            Assert.AreEqual(1, wmiPublisher.GetPublishedInstances().Count);

            configurationSource.Remove(SectionName);
            helper.UpdateConfigurationManageability(configurationAccessor);

            Assert.AreEqual(0, wmiPublisher.GetPublishedInstances().Count);
        }
        public void WatcherForNonManagedSectionIsSetOnFirstRequest()
        {
            MockManageabilityHelper manageabilityHelper = new MockManageabilityHelper();

            instance = new ManageableConfigurationSourceImplementation(testConfigurationFile,
                                                                       manageabilityHelper,
                                                                       groupPolicyWatcher,
                                                                       watcherCoordinator,
                                                                       notificationCoordinator);

            Assert.IsTrue(manageabilityHelper.updateCalled);
            Assert.AreEqual(1, watcherCoordinator.WatchedConfigSources.Count);
            Assert.IsTrue(watcherCoordinator.WatchedConfigSources.Contains(ConfigurationChangeWatcherCoordinator.MainConfigurationFileSource));

            TestsConfigurationSection testConfigurationSection
                = (TestsConfigurationSection)instance.GetSection(externalSection1);

            Assert.IsNotNull(testConfigurationSection);
            Assert.AreEqual("value1", testConfigurationSection.Value);
            Assert.AreEqual(2, watcherCoordinator.WatchedConfigSources.Count);
            Assert.IsTrue(watcherCoordinator.WatchedConfigSources.Contains(ConfigurationChangeWatcherCoordinator.MainConfigurationFileSource));
            Assert.IsTrue(watcherCoordinator.WatchedConfigSources.Contains("test.external.config"));
        }
Ejemplo n.º 23
0
        public void WillRemoveHandlerForChangeEventInConfigurationSettingWhenRevoked()
        {
            TestsConfigurationSection section = new TestsConfigurationSection(originalValue);

            configurationSource.Add(SectionName, section);

            MockConfigurationSectionManageabilityProvider manageabilityProvider
                = new MockConfigurationSectionManageabilityProvider(subProviders);

            manageabilityProviders.Add(SectionName, manageabilityProvider);

            ManageabilityHelper helper
                = new ManageabilityHelper(manageabilityProviders, true, registryAccessor, true, wmiPublisher, ApplicationName);

            helper.ConfigurationSettingChanged += OnConfigurationSettingChanged;

            helper.UpdateConfigurationManageability(configurationAccessor);

            IEnumerator <ConfigurationSetting> publishedSettings = wmiPublisher.GetPublishedInstances().GetEnumerator();

            Assert.IsTrue(publishedSettings.MoveNext());

            // same as before, check that the setting's commit will trigger the event
            Assert.IsNull(notifiedChangeSource);
            ((ConfigurationSetting)publishedSettings.Current).Commit(); // commit changes
            Assert.AreEqual(SectionName, notifiedChangeSource);

            // remove the section and update the manageability
            configurationSource.Remove(SectionName);
            helper.UpdateConfigurationManageability(configurationAccessor);

            // check that *the original* setting's commit will not trigger changes now
            notifiedChangeSource = null;
            ((ConfigurationSetting)publishedSettings.Current).Commit(); // commit changes
            Assert.IsNull(notifiedChangeSource);
        }
Ejemplo n.º 24
0
        public void WillNotRemoveRegisteredSectionWithDisabledPolicyIfPolicyOverridesAreDisabled()
        {
            TestsConfigurationSection section = new TestsConfigurationSection(originalValue);

            configurationSource.Add(SectionName, section);

            MockRegistryKey machineKey = new MockRegistryKey(false);

            localMachine.AddSubKey(ManageabilityHelper.BuildSectionKeyName(ApplicationName, SectionName), machineKey);
            machineKey.AddBooleanValue(AdmContentBuilder.AvailableValueName, false);

            MockConfigurationSectionManageabilityProvider manageabilityProvider
                = new MockConfigurationSectionManageabilityProvider(subProviders);

            manageabilityProviders.Add(SectionName, manageabilityProvider);
            ManageabilityHelper helper
                = new ManageabilityHelper(manageabilityProviders, false, registryAccessor, ApplicationName);

            Assert.IsTrue(configurationSource.Contains(SectionName));

            helper.UpdateConfigurationManageability(configurationAccessor);

            Assert.IsTrue(configurationSource.Contains(SectionName));
        }