public void SettingsFile_Remove_LastValueInSection_RemovesSection() { // Arrange var nugetConfigPath = "NuGet.Config"; var config = @"<?xml version=""1.0"" encoding=""utf-8""?> <configuration> <SectionName> <add key=""DeleteMe"" value=""value2"" /> </SectionName> </configuration>"; using (var mockBaseDirectory = TestDirectory.Create()) { SettingsTestUtils.CreateConfigurationFile(nugetConfigPath, mockBaseDirectory, config); var settingsFile = new SettingsFile(Path.Combine(mockBaseDirectory)); // Act & Assert var section = settingsFile.GetSection("SectionName"); section.Should().NotBeNull(); var item = section.GetFirstItemWithAttribute <AddItem>("key", "DeleteMe"); item.Should().NotBeNull(); item.Value.Should().Be("value2"); settingsFile.Remove("SectionName", item); settingsFile.SaveToDisk(); SettingsTestUtils.RemoveWhitespace(File.ReadAllText(Path.Combine(mockBaseDirectory, nugetConfigPath))).Should().Be(SettingsTestUtils.RemoveWhitespace(@"<?xml version=""1.0"" encoding=""utf-8""?><configuration></configuration>")); section = settingsFile.GetSection("SectionName"); section.Should().BeNull(); } }
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()) { SettingsTestUtils.CreateConfigurationFile(nugetConfigPath, mockBaseDirectory, config); var configFileHash = SettingsTestUtils.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 = SettingsTestUtils.GetFileHash(Path.Combine(mockBaseDirectory, nugetConfigPath)); updatedFileHash.Should().NotBeEquivalentTo(configFileHash); section = settingsFile.GetSection("Section"); section.Should().BeNull(); } }
public void SettingsFile_Remove_PreserveUnknownItems() { // Arrange var nugetConfigPath = "NuGet.Config"; var config = @"<?xml version=""1.0"" encoding=""utf-8""?> <configuration> <SectionName> <add key=""DeleteMe"" value=""value"" /> <add key=""keyNotToDelete"" value=""value"" /> </SectionName> <SectionName2> <add key=""key"" value=""value"" /> </SectionName2> <UnknownSection> <UnknownItem meta1=""data1"" /> <OtherUnknownItem> </OtherUnknownItem> </UnknownSection> </configuration>"; using (var mockBaseDirectory = TestDirectory.Create()) { ConfigurationFileTestUtility.CreateConfigurationFile(nugetConfigPath, mockBaseDirectory, config); var settingsFile = new SettingsFile(mockBaseDirectory); // Act & Assert var section = settingsFile.GetSection("SectionName"); section.Should().NotBeNull(); var item = section.GetFirstItemWithAttribute <SettingItem>("key", "DeleteMe"); settingsFile.Remove("SectionName", item); settingsFile.SaveToDisk(); var result = ConfigurationFileTestUtility.RemoveWhitespace(@"<?xml version=""1.0"" encoding=""utf-8""?> <configuration> <SectionName> <add key=""keyNotToDelete"" value=""value"" /> </SectionName> <SectionName2> <add key=""key"" value=""value"" /> </SectionName2> <UnknownSection> <UnknownItem meta1=""data1"" /> <OtherUnknownItem> </OtherUnknownItem> </UnknownSection> </configuration>"); ConfigurationFileTestUtility.RemoveWhitespace(File.ReadAllText(Path.Combine(mockBaseDirectory, nugetConfigPath))).Should().Be(result); section = settingsFile.GetSection("SectionName"); section.Should().NotBeNull(); item = section.GetFirstItemWithAttribute <AddItem>("key", "DeleteMe"); item.Should().BeNull(); } }
public void SettingText_UpdatesSuccessfully() { // Arrange var config = @" <configuration> <SectionName> <Item>This is a test</Item> </SectionName> </configuration>"; var nugetConfigPath = "NuGet.Config"; using (var mockBaseDirectory = TestDirectory.Create()) { SettingsTestUtils.CreateConfigurationFile(nugetConfigPath, mockBaseDirectory, config); // Act and Assert var settingsFile = new SettingsFile(mockBaseDirectory); settingsFile.Should().NotBeNull(); var section = settingsFile.GetSection("SectionName"); section.Should().NotBeNull(); section.Items.Count.Should().Be(1); var item = section.Items.First() as UnknownItem; item.Should().NotBeNull(); item.Children.Count.Should().Be(1); var text = item.Children.First() as SettingText; text.Should().NotBeNull(); text.Value.Should().Be("This is a test"); text.Value = "This is another test"; settingsFile.AddOrUpdate("SectionName", new UnknownItem(item.ElementName, attributes: null, children: new List <SettingBase>() { text })); section = settingsFile.GetSection("SectionName"); section.Should().NotBeNull(); section.Items.Count.Should().Be(1); item = section.Items.First() as UnknownItem; item.Should().NotBeNull(); item.Children.Count.Should().Be(1); text = item.Children.First() as SettingText; text.Should().NotBeNull(); text.Value.Should().Be("This is another test"); } }
public void SettingsFile_Remove_PreserveComments() { // Arrange var nugetConfigPath = "NuGet.Config"; var config = @"<?xml version=""1.0"" encoding=""utf-8""?> <!-- Comment in nuget configuration --> <configuration> <!-- This section has the item to delete --> <SectionName> <add key=""DeleteMe"" value=""value"" /> <add key=""keyNotToDelete"" value=""value"" /> </SectionName> <!-- This section doesn't have the item to delete --> <SectionName2> <add key=""key"" value=""value"" /> </SectionName2> </configuration>"; using (var mockBaseDirectory = TestDirectory.Create()) { SettingsTestUtils.CreateConfigurationFile(nugetConfigPath, mockBaseDirectory, config); var settingsFile = new SettingsFile(mockBaseDirectory); // Act & Assert var section = settingsFile.GetSection("SectionName"); section.Should().NotBeNull(); var item = section.GetFirstItemWithAttribute <SettingItem>("key", "DeleteMe"); settingsFile.Remove("SectionName", item); settingsFile.SaveToDisk(); var result = SettingsTestUtils.RemoveWhitespace(@"<?xml version=""1.0"" encoding=""utf-8""?> <!-- Comment in nuget configuration --> <configuration> <!-- This section has the item to delete --> <SectionName> <add key=""keyNotToDelete"" value=""value"" /> </SectionName> <!-- This section doesn't have the item to delete --> <SectionName2> <add key=""key"" value=""value"" /> </SectionName2> </configuration>"); SettingsTestUtils.RemoveWhitespace(File.ReadAllText(Path.Combine(mockBaseDirectory, nugetConfigPath))).Should().Be(result); section = settingsFile.GetSection("SectionName"); section.Should().NotBeNull(); item = section.GetFirstItemWithAttribute <AddItem>("key", "DeleteMe"); item.Should().BeNull(); } }
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()) { SettingsTestUtils.CreateConfigurationFile(nugetConfigPath, mockBaseDirectory, config); var configFileHash = SettingsTestUtils.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 = SettingsTestUtils.GetFileHash(Path.Combine(mockBaseDirectory, nugetConfigPath)); updatedFileHash.Should().NotBeEquivalentTo(configFileHash); } }
public void SettingSection_GetValues_ReturnsAllChildElements() { // Arrange var nugetConfigPath = "NuGet.Config"; var config = @" <configuration> <SectionName> <add key='key1' value='value1' /> <add key='key2' value='value2' /> </SectionName> </configuration>"; using (var mockBaseDirectory = TestDirectory.Create()) { SettingsTestUtils.CreateConfigurationFile(nugetConfigPath, mockBaseDirectory, config); var settingsFile = new SettingsFile(mockBaseDirectory); // Act var section = settingsFile.GetSection("SectionName"); section.Should().NotBeNull(); var children = section.Items; // Assert children.Should().NotBeEmpty(); children.Count.Should().Be(2); children.Should().AllBeOfType <AddItem>(); } }
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()) { SettingsTestUtils.CreateConfigurationFile(nugetConfigPath, mockBaseDirectory, config); var configFileHash = SettingsTestUtils.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 = SettingsTestUtils.GetFileHash(Path.Combine(mockBaseDirectory, nugetConfigPath)); updatedFileHash.Should().BeEquivalentTo(configFileHash); section.Items.Count.Should().Be(2); } }
public void SettingsFile_GetSections_DuplicatedSections_TakesFirstAndIgnoresRest() { // Arrange var config = @" <configuration> <SectionName> <add key='key1' value='value1' /> </SectionName> <SectionName> <add key='key2' value='value2' /> </SectionName> </configuration>"; var nugetConfigPath = "NuGet.Config"; using (var mockBaseDirectory = TestDirectory.Create()) { SettingsTestUtils.CreateConfigurationFile(nugetConfigPath, mockBaseDirectory, config); // Act and Assert var settingsFile = new SettingsFile(mockBaseDirectory); settingsFile.Should().NotBeNull(); var section = settingsFile.GetSection("SectionName"); section.Should().NotBeNull(); var addItem = section.Items.FirstOrDefault() as AddItem; addItem.Should().NotBeNull(); addItem.Key.Should().Be("key1"); addItem.Value.Should().Be("value1"); } }
public void AddItem_SingleTag_WithOnlyKeyAndValue_ParsedSuccessfully() { // Arrange var nugetConfigPath = "NuGet.Config"; var config = @" <configuration> <Section> <add key='key1' value='value1' /> </Section> </configuration>"; var expectedSetting = new AddItem("key1", "value1"); using (var mockBaseDirectory = TestDirectory.Create()) { SettingsTestUtils.CreateConfigurationFile(nugetConfigPath, mockBaseDirectory, config); var settingsFile = new SettingsFile(mockBaseDirectory); // Act var section = settingsFile.GetSection("Section"); section.Should().NotBeNull(); var element = section.Items.FirstOrDefault() as AddItem; element.Should().NotBeNull(); // Assert SettingsTestUtils.DeepEquals(element, expectedSetting).Should().BeTrue(); } }
public void UnknownItem_WithChildren_OnlyText_ParsedCorrectly() { // Arrange var nugetConfigPath = "NuGet.Config"; var config = @" <configuration> <Section> <Unknown>Text for test</Unknown> </Section> </configuration>"; var expectedSetting = new UnknownItem("Unknown", attributes: null, children: new List <SettingBase>() { new SettingText("Text for test") }); using (var mockBaseDirectory = TestDirectory.Create()) { ConfigurationFileTestUtility.CreateConfigurationFile(nugetConfigPath, mockBaseDirectory, config); var settingsFile = new SettingsFile(mockBaseDirectory); // Act var section = settingsFile.GetSection("Section"); section.Should().NotBeNull(); var element = section.Items.FirstOrDefault(); element.Should().NotBeNull(); // Assert element.DeepEquals(expectedSetting).Should().BeTrue(); } }
public void UnknownItem_Remove_ToMachineWide_Throws() { // Arrange var nugetConfigPath = "NuGet.Config"; var config = @" <configuration> <Section> <Unknown> <Unknown2 /> </Unknown> </Section> </configuration>"; using (var mockBaseDirectory = TestDirectory.Create()) { ConfigurationFileTestUtility.CreateConfigurationFile(nugetConfigPath, mockBaseDirectory, config); var settingsFile = new SettingsFile(mockBaseDirectory, nugetConfigPath, isMachineWide: true); // Act var section = settingsFile.GetSection("Section"); section.Should().NotBeNull(); var element = section.Items.FirstOrDefault() as UnknownItem; element.Should().NotBeNull(); // Assert var ex = Record.Exception(() => element.Remove(element.Children.First())); ex.Should().NotBeNull(); ex.Should().BeOfType <InvalidOperationException>(); } }
public void CredentialsItem_Parsing_WithUsernamePasswordAndClearTextPassword_TakesFirstAndIgnoresRest() { // Arrange var nugetConfigPath = "NuGet.Config"; var config = @" <configuration> <packageSourceCredentials> <NuGet.Org meta1='data1'> <add key='Username' value='username' /> <add key='Password' value='password' /> <add key='ClearTextPassword' value='clearTextPassword' /> </NuGet.Org> </packageSourceCredentials> </configuration>"; using (var mockBaseDirectory = TestDirectory.Create()) { SettingsTestUtils.CreateConfigurationFile(nugetConfigPath, mockBaseDirectory, config); // Act and Assert var settingsFile = new SettingsFile(mockBaseDirectory); settingsFile.Should().NotBeNull(); var section = settingsFile.GetSection("packageSourceCredentials"); section.Should().NotBeNull(); section.Items.Count.Should().Be(1); var item = section.Items.First() as CredentialsItem; item.Should().NotBeNull(); item.Password.Should().Be("password"); item.IsPasswordClearText.Should().BeFalse(); } }
public void CredentialsItem_Parsing_WithMultipleValidAuthenticationTypes_TakesFirstAndIgnoresRest() { // Arrange var nugetConfigPath = "NuGet.Config"; var config = @" <configuration> <packageSourceCredentials> <NuGet.Org meta1='data1'> <add key='Username' value='username' /> <add key='Password' value='password' /> <add key='ValidAuthenticationTypes' value='one,two,three' /> <add key='ValidAuthenticationTypes' value='four,five,six' /> </NuGet.Org> </packageSourceCredentials> </configuration>"; using (var mockBaseDirectory = TestDirectory.Create()) { SettingsTestUtils.CreateConfigurationFile(nugetConfigPath, mockBaseDirectory, config); // Act and Assert var settingsFile = new SettingsFile(mockBaseDirectory); settingsFile.Should().NotBeNull(); var section = settingsFile.GetSection("packageSourceCredentials"); section.Should().NotBeNull(); section.Items.Count.Should().Be(1); var item = section.Items.First() as CredentialsItem; item.Should().NotBeNull(); item.ValidAuthenticationTypes.Should().Be("one,two,three"); } }
public void UnknownItem_Empty_ParsedCorrectly() { // Arrange var nugetConfigPath = "NuGet.Config"; var config = @" <configuration> <Section> <Unknown /> </Section> </configuration>"; var expectedSetting = new UnknownItem("Unknown", attributes: null, children: null); using (var mockBaseDirectory = TestDirectory.Create()) { SettingsTestUtils.CreateConfigurationFile(nugetConfigPath, mockBaseDirectory, config); var settingsFile = new SettingsFile(mockBaseDirectory); // Act var section = settingsFile.GetSection("Section"); section.Should().NotBeNull(); var element = section.Items.FirstOrDefault(); element.Should().NotBeNull(); // Assert SettingsTestUtils.DeepEquals(element, expectedSetting).Should().BeTrue(); } }
public void UnknownItem_Add_ToReadOnly_Throws() { // Arrange var nugetConfigPath = "NuGet.Config"; var config = @" <configuration> <Section> <Unknown /> </Section> </configuration>"; using (var mockBaseDirectory = TestDirectory.Create()) { SettingsTestUtils.CreateConfigurationFile(nugetConfigPath, mockBaseDirectory, config); var settingsFile = new SettingsFile(mockBaseDirectory, nugetConfigPath, isMachineWide: false, isReadOnly: true); // Act var section = settingsFile.GetSection("Section"); section.Should().NotBeNull(); var element = section.Items.FirstOrDefault() as UnknownItem; element.Should().NotBeNull(); // Assert var ex = Record.Exception(() => element.Add(new SettingText("test"))); ex.Should().NotBeNull(); ex.Should().BeOfType <InvalidOperationException>(); } }
public void SourceItem_CaseInsensitive_ParsedSuccessfully() { // Arrange var config = @" <configuration> <PACkagEsourCEs> <AdD key='nugetorg' value='http://serviceIndexorg.test/api/index.json' /> </PACkagEsourCEs> </configuration>"; var expectedValue = new SourceItem("nugetorg", "http://serviceIndexorg.test/api/index.json"); var nugetConfigPath = "NuGet.Config"; using (var mockBaseDirectory = TestDirectory.Create()) { ConfigurationFileTestUtility.CreateConfigurationFile(nugetConfigPath, mockBaseDirectory, config); // Act and Assert var settingsFile = new SettingsFile(mockBaseDirectory); settingsFile.Should().NotBeNull(); var section = settingsFile.GetSection("PACkagEsourCEs"); section.Should().NotBeNull(); var children = section.Items.ToList(); children.Should().NotBeEmpty(); children.Count.Should().Be(1); children[0].DeepEquals(expectedValue).Should().BeTrue(); } }
public void SettingsFile_Constructor_ConfigurationPath_Succeds() { // Arrange var configFile = "NuGet.Config"; using (var mockBaseDirectory = TestDirectory.Create()) { var config = @" <configuration> <SectionName> <add key='key1' value='value1' /> <add key='key2' value='value2' /> </SectionName> </configuration>"; SettingsTestUtils.CreateConfigurationFile(configFile, mockBaseDirectory, config); // Act var settingsFile = new SettingsFile(mockBaseDirectory); // Assert var section = settingsFile.GetSection("SectionName"); section.Should().NotBeNull(); var key1Element = section.GetFirstItemWithAttribute <AddItem>("key", "key1"); var key2Element = section.GetFirstItemWithAttribute <AddItem>("key", "key2"); key1Element.Should().NotBeNull(); key2Element.Should().NotBeNull(); key1Element.Value.Should().Be("value1"); key2Element.Value.Should().Be("value2"); } }
public void CertificateItem_ParsedCorrectly() { // Arrange var config = @" <configuration> <SectionName> <certificate fingerprint=""abcdefg"" hashAlgorithm=""SHA256"" allowUntrustedRoot=""true"" /> </SectionName> </configuration>"; var nugetConfigPath = "NuGet.Config"; using (var mockBaseDirectory = TestDirectory.Create()) { SettingsTestUtils.CreateConfigurationFile(nugetConfigPath, mockBaseDirectory, config); // Act and Assert var settingsFile = new SettingsFile(mockBaseDirectory); var section = settingsFile.GetSection("SectionName"); section.Should().NotBeNull(); section.Items.Count.Should().Be(1); var item = section.Items.First() as CertificateItem; var expectedItem = new CertificateItem("abcdefg", Common.HashAlgorithmName.SHA256, allowUntrustedRoot: true); SettingsTestUtils.DeepEquals(item, expectedItem).Should().BeTrue(); } }
public void SettingText_ParsedSuccessfully() { // Arrange var config = @" <configuration> <SectionName> <Item>This is a test</Item> </SectionName> </configuration>"; var nugetConfigPath = "NuGet.Config"; using (var mockBaseDirectory = TestDirectory.Create()) { ConfigurationFileTestUtility.CreateConfigurationFile(nugetConfigPath, mockBaseDirectory, config); // Act and Assert var settingsFile = new SettingsFile(mockBaseDirectory); settingsFile.Should().NotBeNull(); var section = settingsFile.GetSection("SectionName"); section.Should().NotBeNull(); section.Items.Count.Should().Be(1); var item = section.Items.First() as UnknownItem; item.Should().NotBeNull(); item.Children.Count.Should().Be(1); var text = item.Children.First() as SettingText; text.Should().NotBeNull(); text.Value.Should().Be("This is a test"); } }
public void UnknownItem_Add_Item_WorksSuccessfully() { // Arrange var nugetConfigPath = "NuGet.Config"; var config = @" <configuration> <Section> <Unknown /> </Section> </configuration>"; var expectedSetting = new UnknownItem("Unknown", attributes: null, children: new List <SettingBase>() { new AddItem("key", "val") }); using (var mockBaseDirectory = TestDirectory.Create()) { ConfigurationFileTestUtility.CreateConfigurationFile(nugetConfigPath, mockBaseDirectory, config); var settingsFile = new SettingsFile(mockBaseDirectory); // Act var section = settingsFile.GetSection("Section"); section.Should().NotBeNull(); var element = section.Items.FirstOrDefault() as UnknownItem; element.Should().NotBeNull(); element.Add(new AddItem("key", "val")).Should().BeTrue(); // Assert element.DeepEquals(expectedSetting).Should().BeTrue(); } }
public void PackageSourceNamespacesItemParse_WithValidData_ParsesCorrectly() { // Arrange var config = @" <configuration> <packageNamespaces> <packageSource key=""nuget.org""> <namespace id=""sadas"" /> </packageSource> </packageNamespaces> </configuration>"; var nugetConfigPath = "NuGet.Config"; using var mockBaseDirectory = TestDirectory.Create(); SettingsTestUtils.CreateConfigurationFile(nugetConfigPath, mockBaseDirectory, config); // Act and Assert var settingsFile = new SettingsFile(mockBaseDirectory); var section = settingsFile.GetSection("packageNamespaces"); section.Should().NotBeNull(); section.Items.Count.Should().Be(1); var packageSourceNamespaceItem = section.Items.First() as PackageNamespacesSourceItem; var item = packageSourceNamespaceItem.Namespaces.First(); var expectedItem = new NamespaceItem("sadas"); SettingsTestUtils.DeepEquals(item, expectedItem).Should().BeTrue(); }
public void UnknownItem_Update_RemovesMissingAttributes() { // Arrange var nugetConfigPath = "NuGet.Config"; var config = @" <configuration> <Section> <Unknown old=""attr"" /> </Section> </configuration>"; var updateSetting = new UnknownItem("Unknown", attributes: new Dictionary <string, string>() { }, children: null); using (var mockBaseDirectory = TestDirectory.Create()) { ConfigurationFileTestUtility.CreateConfigurationFile(nugetConfigPath, mockBaseDirectory, config); var settingsFile = new SettingsFile(mockBaseDirectory); // Act var section = settingsFile.GetSection("Section"); section.Should().NotBeNull(); var element = section.Items.FirstOrDefault() as UnknownItem; element.Should().NotBeNull(); element.Update(updateSetting); // Assert element.Attributes.TryGetValue("old", out var _).Should().BeFalse(); } }
public void RepositoryItem_WithCertificatesAndOwners_ParsedCorrectly() { // Arrange var config = @" <configuration> <SectionName> <repository name=""repositoryName"" serviceIndex=""https://api.test/index/""> <certificate fingerprint=""abcdefg"" hashAlgorithm=""Sha256"" allowUntrustedRoot=""true"" /> <owners>test;text</owners> </repository> </SectionName> </configuration>"; var nugetConfigPath = "NuGet.Config"; using (var mockBaseDirectory = TestDirectory.Create()) { SettingsTestUtils.CreateConfigurationFile(nugetConfigPath, mockBaseDirectory, config); // Act and Assert var settingsFile = new SettingsFile(mockBaseDirectory); var section = settingsFile.GetSection("SectionName"); section.Should().NotBeNull(); section.Items.Count.Should().Be(1); var item = section.Items.First() as RepositoryItem; var expectedItem = new RepositoryItem("repositoryName", "https://api.test/index/", "test;text", new CertificateItem("abcdefg", Common.HashAlgorithmName.SHA256, allowUntrustedRoot: true)); SettingsTestUtils.DeepEquals(item, expectedItem).Should().BeTrue(); } }
public void AddItem_WithAdditionalMetada_ParsedSuccessfully() { // Arrange var nugetConfigPath = "NuGet.Config"; var config = @" <configuration> <Section> <add key='key1' value='value1' meta1='data1' meta2='data2'/> </Section> </configuration>"; var expectedSetting = new AddItem("key1", "value1", new ReadOnlyDictionary <string, string>(new Dictionary <string, string> { { "meta1", "data1" }, { "meta2", "data2" } })); using (var mockBaseDirectory = TestDirectory.Create()) { SettingsTestUtils.CreateConfigurationFile(nugetConfigPath, mockBaseDirectory, config); var settingsFile = new SettingsFile(mockBaseDirectory); // Act var section = settingsFile.GetSection("Section"); section.Should().NotBeNull(); var value = section.Items.FirstOrDefault() as AddItem; value.Should().NotBeNull(); // Assert SettingsTestUtils.DeepEquals(value, expectedSetting).Should().BeTrue(); } }
public void SettingSection_GetValues_UnexistantChild_ReturnsNull() { // Arrange var nugetConfigPath = "NuGet.Config"; var config = @" <configuration> <SectionName> <add key='key1' value='value1' /> <add key='key2' value='value2' /> </SectionName> </configuration>"; using (var mockBaseDirectory = TestDirectory.Create()) { SettingsTestUtils.CreateConfigurationFile(nugetConfigPath, mockBaseDirectory, config); var settingsFile = new SettingsFile(mockBaseDirectory); // Act var section = settingsFile.GetSection("SectionName"); section.Should().NotBeNull(); var key3Element = section.GetFirstItemWithAttribute <AddItem>("key", "key3"); // Assert key3Element.Should().BeNull(); } }
public void SourceItem_CaseInsensitive_ParsedSuccessfully() { // Arrange var config = @" <configuration> <section> <AdD key='key' value='val' /> </section> </configuration>"; var expectedValue = new AddItem("key", "val"); var nugetConfigPath = "NuGet.Config"; using (var mockBaseDirectory = TestDirectory.Create()) { SettingsTestUtils.CreateConfigurationFile(nugetConfigPath, mockBaseDirectory, config); // Act and Assert var settingsFile = new SettingsFile(mockBaseDirectory); settingsFile.Should().NotBeNull(); var section = settingsFile.GetSection("section"); section.Should().NotBeNull(); var children = section.Items.ToList(); children.Should().NotBeEmpty(); children.Count.Should().Be(1); SettingsTestUtils.DeepEquals(children[0], expectedValue).Should().BeTrue(); } }
public void OwnersItem_ParsedCorrectly() { // Arrange var config = @" <configuration> <SectionName> <owners>test;text;owner</owners> </SectionName> </configuration>"; var nugetConfigPath = "NuGet.Config"; using (var mockBaseDirectory = TestDirectory.Create()) { SettingsTestUtils.CreateConfigurationFile(nugetConfigPath, mockBaseDirectory, config); // Act and Assert var settingsFile = new SettingsFile(mockBaseDirectory); var section = settingsFile.GetSection("SectionName"); section.Should().NotBeNull(); section.Items.Count.Should().Be(1); var item = section.Items.First() as OwnersItem; var expectedItem = new OwnersItem("test;text;owner"); SettingsTestUtils.DeepEquals(item, expectedItem).Should().BeTrue(); } }
public void PackageSourceMappingSourceItemParse_WithUnrecognizedItems_UnknownItemsAreIgnored() { // Arrange // Arrange var config = @" <configuration> <packageSourceMapping> <packageSource key=""nuget.org""> <package pattern=""sadas"" /> <notANamespace id=""sadas"" /> </packageSource> </packageSourceMapping> </configuration>"; var nugetConfigPath = "NuGet.Config"; using var mockBaseDirectory = TestDirectory.Create(); SettingsTestUtils.CreateConfigurationFile(nugetConfigPath, mockBaseDirectory, config); // Act and Assert var settingsFile = new SettingsFile(mockBaseDirectory); var section = settingsFile.GetSection("packageSourceMapping"); section.Should().NotBeNull(); section.Items.Count.Should().Be(1); var packageSourceMappingSourceItem = section.Items.First() as PackageSourceMappingSourceItem; var item = packageSourceMappingSourceItem.Patterns.First(); var expectedItem = new PackagePatternItem("sadas"); SettingsTestUtils.DeepEquals(item, expectedItem).Should().BeTrue(); }
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()) { SettingsTestUtils.CreateConfigurationFile(nugetConfigPath, mockBaseDirectory, config); var configFileHash = SettingsTestUtils.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 = SettingsTestUtils.GetFileHash(Path.Combine(mockBaseDirectory, nugetConfigPath)); updatedFileHash.Should().BeEquivalentTo(configFileHash); } }