From ea4fe9e10a1236262011f845585ae94154964a86 Mon Sep 17 00:00:00 2001 From: Rob Mensching Date: Wed, 1 Jul 2020 00:07:05 -0700 Subject: Convert Firewall/RemoteAddress inner text to Value attribute --- src/WixToolset.Converters/WixConverter.cs | 7 +- .../FirewallExtensionFixture.cs | 79 ++++++++++++++++++++++ 2 files changed, 85 insertions(+), 1 deletion(-) create mode 100644 src/test/WixToolsetTest.Converters/FirewallExtensionFixture.cs (limited to 'src') diff --git a/src/WixToolset.Converters/WixConverter.cs b/src/WixToolset.Converters/WixConverter.cs index 86a1bfba..73538d56 100644 --- a/src/WixToolset.Converters/WixConverter.cs +++ b/src/WixToolset.Converters/WixConverter.cs @@ -26,6 +26,7 @@ namespace WixToolset.Converters private static readonly XNamespace WixNamespace = "http://wixtoolset.org/schemas/v4/wxs"; private static readonly XNamespace Wix3Namespace = "http://schemas.microsoft.com/wix/2006/wi"; private static readonly XNamespace WixUtilNamespace = "http://wixtoolset.org/schemas/v4/wxs/util"; + private static readonly XNamespace WixFirewallNamespace = "http://wixtoolset.org/schemas/v4/wxs/firewall"; private static readonly XName AdminExecuteSequenceElementName = WixNamespace + "AdminExecuteSequence"; private static readonly XName AdminUISequenceSequenceElementName = WixNamespace + "AdminUISequence"; @@ -40,10 +41,11 @@ namespace WixToolset.Converters private static readonly XName CreateFolderElementName = WixNamespace + "CreateFolder"; private static readonly XName CustomTableElementName = WixNamespace + "CustomTable"; private static readonly XName DirectoryElementName = WixNamespace + "Directory"; + private static readonly XName ErrorElementName = WixNamespace + "Error"; private static readonly XName FeatureElementName = WixNamespace + "Feature"; private static readonly XName FileElementName = WixNamespace + "File"; private static readonly XName FragmentElementName = WixNamespace + "Fragment"; - private static readonly XName ErrorElementName = WixNamespace + "Error"; + private static readonly XName FirewallRemoteAddressElementName = WixFirewallNamespace + "RemoteAddress"; private static readonly XName LaunchElementName = WixNamespace + "Launch"; private static readonly XName LevelElementName = WixNamespace + "Level"; private static readonly XName ExePackageElementName = WixNamespace + "ExePackage"; @@ -142,6 +144,7 @@ namespace WixToolset.Converters { WixConverter.FeatureElementName, this.ConvertFeatureElement }, { WixConverter.FileElementName, this.ConvertFileElement }, { WixConverter.FragmentElementName, this.ConvertFragmentElement }, + { WixConverter.FirewallRemoteAddressElementName, this.ConvertFirewallRemoteAddressElement }, { WixConverter.EmbeddedChainerElementName, this.ConvertEmbeddedChainerElement }, { WixConverter.ErrorElementName, this.ConvertErrorElement }, { WixConverter.ExePackageElementName, this.ConvertSuppressSignatureValidation }, @@ -547,6 +550,8 @@ namespace WixToolset.Converters } } + private void ConvertFirewallRemoteAddressElement(XElement element) => this.ConvertInnerTextToAttribute(element, "Value"); + private void ConvertEmbeddedChainerElement(XElement element) => this.ConvertInnerTextToAttribute(element, "Condition"); private void ConvertErrorElement(XElement element) => this.ConvertInnerTextToAttribute(element, "Message"); diff --git a/src/test/WixToolsetTest.Converters/FirewallExtensionFixture.cs b/src/test/WixToolsetTest.Converters/FirewallExtensionFixture.cs new file mode 100644 index 00000000..72571cd8 --- /dev/null +++ b/src/test/WixToolsetTest.Converters/FirewallExtensionFixture.cs @@ -0,0 +1,79 @@ +// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. + +namespace WixToolsetTest.Converters +{ + using System; + using System.Xml.Linq; + using WixToolset.Converters; + using WixToolsetTest.Converters.Mocks; + using Xunit; + + public class FirewallExtensionFixture : BaseConverterFixture + { + [Fact] + public void FixRemoteAddressValue() + { + var parse = String.Join(Environment.NewLine, + "", + " ", + " ", + " 127.0.0.1", + " ", + " ", + ""); + + var expected = new[] + { + "", + " ", + " ", + " ", + "" + }; + + var document = XDocument.Parse(parse, LoadOptions.PreserveWhitespace | LoadOptions.SetLineInfo); + + var messaging = new MockMessaging(); + var converter = new WixConverter(messaging, 2, null, null); + + var errors = converter.ConvertDocument(document); + Assert.Equal(3, errors); + + var actualLines = UnformattedDocumentLines(document); + CompareLineByLine(expected, actualLines); + } + + [Fact] + public void FixXmlConfigValue() + { + var parse = String.Join(Environment.NewLine, + "", + " ", + " ", + " a<>b", + " ", + " ", + ""); + + var expected = new[] + { + "", + " ", + " ", + " ", + "" + }; + + var document = XDocument.Parse(parse, LoadOptions.PreserveWhitespace | LoadOptions.SetLineInfo); + + var messaging = new MockMessaging(); + var converter = new WixConverter(messaging, 2, null, null); + + var errors = converter.ConvertDocument(document); + Assert.Equal(3, errors); + + var actualLines = UnformattedDocumentLines(document); + CompareLineByLine(expected, actualLines); + } + } +} -- cgit v1.2.3-55-g6feb