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)); }
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 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 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 HelperIgnoresUpdateSectionsListWithMappedProviderForMissingSection() { MockConfigurationSectionManageabilityProvider manageabilityProvider = new MockConfigurationSectionManageabilityProvider(subProviders); manageabilityProviders.Add(SectionName, manageabilityProvider); ManageabilityHelper helper = new ManageabilityHelper(manageabilityProviders, true, registryAccessor, ApplicationName); helper.UpdateConfigurationManageability(configurationAccessor); Assert.IsFalse(manageabilityProvider.called); }
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 HelperIgnoresUpdateSectionsListWithoutMappedProvider() { MockConfigurationSectionManageabilityProvider manageabilityProvider = new MockConfigurationSectionManageabilityProvider(subProviders); manageabilityProviders.Add(SectionName, manageabilityProvider); ManageabilityHelper helper = new ManageabilityHelper(manageabilityProviders, true, registryAccessor, ApplicationName); helper.UpdateConfigurationManageability(configurationAccessor); Assert.AreEqual(0, currentUser.GetRequests().Count); Assert.AreEqual(0, localMachine.GetRequests().Count); }
public void SubProvidersAreSetForNewInstance() { MockConfigurationElementManageabilityProvider subProvider1 = new MockConfigurationElementManageabilityProvider(); MockConfigurationElementManageabilityProvider subProvider2 = new MockConfigurationElementManageabilityProvider(); IDictionary <Type, ConfigurationElementManageabilityProvider> subProviders = new Dictionary <Type, ConfigurationElementManageabilityProvider>(); subProviders.Add(typeof(String), subProvider1); subProviders.Add(typeof(Boolean), subProvider2); MockConfigurationSectionManageabilityProvider provider = new MockConfigurationSectionManageabilityProvider(subProviders); Assert.IsNull(provider.GetSubProvider(typeof(Int32))); Assert.AreSame(subProvider1, provider.GetSubProvider(typeof(String))); Assert.AreSame(subProvider2, provider.GetSubProvider(typeof(Boolean))); }
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 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)); }
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); }