public void SettingSection_Remove_UnexistantChild_DoesNotRemoveAnything() { // Arrange var nugetConfigPath = "NuGet.Config"; var config = @" <configuration> <Section> <add key='key0' value='value0' /> <add key='key1' value='value1' meta1='data1' meta2='data2'/> </Section> </configuration>"; using (var mockBaseDirectory = TestDirectory.Create()) { ConfigurationFileTestUtility.CreateConfigurationFile(nugetConfigPath, mockBaseDirectory, config); var configFileHash = ConfigurationFileTestUtility.GetFileHash(Path.Combine(mockBaseDirectory, nugetConfigPath)); var settingsFile = new SettingsFile(mockBaseDirectory); // Act var section = settingsFile.GetSection("Section"); section.Should().NotBeNull(); section.Remove(new AddItem("key7", "value7")); var updatedFileHash = ConfigurationFileTestUtility.GetFileHash(Path.Combine(mockBaseDirectory, nugetConfigPath)); updatedFileHash.Should().BeEquivalentTo(configFileHash); section.Items.Count.Should().Be(2); } }
public void SettingSection_Remove_OnlyOneChild_SucceedsAndRemovesSection() { // Arrange var nugetConfigPath = "NuGet.Config"; var config = @" <configuration> <Section> <add key='key0' value='value0' /> </Section> </configuration>"; using (var mockBaseDirectory = TestDirectory.Create()) { ConfigurationFileTestUtility.CreateConfigurationFile(nugetConfigPath, mockBaseDirectory, config); var configFileHash = ConfigurationFileTestUtility.GetFileHash(Path.Combine(mockBaseDirectory, nugetConfigPath)); var settingsFile = new SettingsFile(mockBaseDirectory); // Act var section = settingsFile.GetSection("Section"); section.Should().NotBeNull(); var child = section.GetFirstItemWithAttribute <AddItem>("key", "key0"); child.Should().NotBeNull(); settingsFile.Remove("Section", child); settingsFile.SaveToDisk(); var updatedFileHash = ConfigurationFileTestUtility.GetFileHash(Path.Combine(mockBaseDirectory, nugetConfigPath)); updatedFileHash.Should().NotBeEquivalentTo(configFileHash); section = settingsFile.GetSection("Section"); section.Should().BeNull(); } }
public void SettingsFile_AddOrUpdate_WithMachineWideSettings_Throws() { // Arrange var nugetConfigPath = "NuGet.Config"; var config = @" <configuration> <Section> <add key='key0' value='value0' /> </Section> </configuration>"; using (var mockBaseDirectory = TestDirectory.Create()) { ConfigurationFileTestUtility.CreateConfigurationFile(nugetConfigPath, mockBaseDirectory, config); var configFileHash = ConfigurationFileTestUtility.GetFileHash(Path.Combine(mockBaseDirectory, nugetConfigPath)); var settingsFile = new SettingsFile(mockBaseDirectory, nugetConfigPath, isMachineWide: true); // Act var ex = Record.Exception(() => settingsFile.AddOrUpdate("section", new AddItem("SomeKey", "SomeValue"))); ex.Should().NotBeNull(); ex.Should().BeOfType <InvalidOperationException>(); ex.Message.Should().Be("Unable to update setting since it is in a machine-wide NuGet.Config."); settingsFile.SaveToDisk(); var section = settingsFile.GetSection("Section"); section.Items.Count.Should().Be(1); var updatedFileHash = ConfigurationFileTestUtility.GetFileHash(Path.Combine(mockBaseDirectory, nugetConfigPath)); updatedFileHash.Should().BeEquivalentTo(configFileHash); } }
public void AddItem_UpdatingAttribute_WithAddOrUpdate_SuccessfullyUpdatesConfigFile() { // Arrange var nugetConfigPath = "NuGet.Config"; var config = @" <configuration> <Section> <add key='key1' value='value1' /> </Section> </configuration>"; using (var mockBaseDirectory = TestDirectory.Create()) { ConfigurationFileTestUtility.CreateConfigurationFile(nugetConfigPath, mockBaseDirectory, config); var configFileHash = ConfigurationFileTestUtility.GetFileHash(Path.Combine(mockBaseDirectory, nugetConfigPath)); // Act and Assert var settingsFile = new SettingsFile(mockBaseDirectory); // Act var section = settingsFile.GetSection("Section"); section.Should().NotBeNull(); var element = section.Items.FirstOrDefault() as AddItem; element.Should().NotBeNull(); element.Value = "newValue"; element.Value.Should().Be("newValue"); var section2 = settingsFile.GetSection("Section"); section2.Should().NotBeNull(); var element2 = section2.Items.FirstOrDefault() as AddItem; element2.Should().NotBeNull(); element2.Value.Should().Be("value1"); settingsFile.AddOrUpdate("Section", element); settingsFile.SaveToDisk(); var section3 = settingsFile.GetSection("Section"); section3.Should().NotBeNull(); var element3 = section.Items.FirstOrDefault() as AddItem; element3.Should().NotBeNull(); element3.Value.Should().Be("newValue"); var updatedFileHash = ConfigurationFileTestUtility.GetFileHash(Path.Combine(mockBaseDirectory, nugetConfigPath)); updatedFileHash.Should().NotBeEquivalentTo(configFileHash); } }
public void SettingSection_AddOrUpdate_UpdatesAnElementCorrectly() { // Arrange var nugetConfigPath = "NuGet.Config"; var config = @" <configuration> <Section> <add key='key0' value='value0' /> <add key='key1' value='value1' meta1='data1' meta2='data2'/> </Section> </configuration>"; using (var mockBaseDirectory = TestDirectory.Create()) { ConfigurationFileTestUtility.CreateConfigurationFile(nugetConfigPath, mockBaseDirectory, config); var configFileHash = ConfigurationFileTestUtility.GetFileHash(Path.Combine(mockBaseDirectory, nugetConfigPath)); var settingsFile = new SettingsFile(mockBaseDirectory); // Act var section = settingsFile.GetSection("Section"); section.Should().NotBeNull(); section.Items.Count.Should().Be(2); settingsFile.AddOrUpdate("Section", new AddItem("key0", "value0", new Dictionary <string, string>() { { "meta1", "data1" } })); section = settingsFile.GetSection("Section"); section.Should().NotBeNull(); section.Items.Count.Should().Be(2); var item = section.Items.First() as AddItem; item.Should().NotBeNull(); item.AdditionalAttributes.Count.Should().Be(1); item.AdditionalAttributes["meta1"].Should().Be("data1"); settingsFile.SaveToDisk(); var updatedFileHash = ConfigurationFileTestUtility.GetFileHash(Path.Combine(mockBaseDirectory, nugetConfigPath)); updatedFileHash.Should().NotBeEquivalentTo(configFileHash); } }
public void SettingSection_Remove_ToMachineWide_Throws() { // Arrange var nugetConfigPath = "NuGet.Config"; var config = @" <configuration> <Section> <add key='key0' value='value0' /> <add key='key1' value='value1' meta1='data1' meta2='data2'/> </Section> </configuration>"; using (var mockBaseDirectory = TestDirectory.Create()) { ConfigurationFileTestUtility.CreateConfigurationFile(nugetConfigPath, mockBaseDirectory, config); var configFileHash = ConfigurationFileTestUtility.GetFileHash(Path.Combine(mockBaseDirectory, nugetConfigPath)); var settingsFile = new SettingsFile(mockBaseDirectory, nugetConfigPath, isMachineWide: true); // Act var section = settingsFile.GetSection("Section"); section.Should().NotBeNull(); var child = section.GetFirstItemWithAttribute <AddItem>("key", "key0"); child.Should().NotBeNull(); var ex = Record.Exception(() => settingsFile.Remove("Section", child)); ex.Should().NotBeNull(); ex.Should().BeOfType <InvalidOperationException>(); ex.Message.Should().Be("Unable to update setting since it is in a machine-wide NuGet.Config."); settingsFile.SaveToDisk(); var updatedFileHash = ConfigurationFileTestUtility.GetFileHash(Path.Combine(mockBaseDirectory, nugetConfigPath)); updatedFileHash.Should().BeEquivalentTo(configFileHash); } }