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")); }
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)); }
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]); }
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); }
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; }
public void CanRequestExistingSection() { TestsConfigurationSection existingSection = new TestsConfigurationSection(); configuration.Sections.Add("section", existingSection); ConfigurationSection section = configurationAccessor.GetSection("section"); Assert.AreSame(existingSection, section); }
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")); }
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")); }
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]); }
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); }
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); }
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()); }
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); }
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); }
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")); }
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); }
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)); }