@joebigelow / wix-1 / commits / ea4fe9e1

Convert Firewall/RemoteAddress inner text to Value attribute

Rob Mensching committed Jul 1, 2020 at 00:07 UTC ea4fe9e10a1236262011f845585ae94154964a86
2 files changed +85 -1
src/WixToolset.Converters/WixConverter.cs
+6 -1
@@ -26,6 +26,7 @@ namespace WixToolset.Converters
26 private static readonly XNamespace WixNamespace = "http://wixtoolset.org/schemas/v4/wxs";
27 private static readonly XNamespace Wix3Namespace = "http://schemas.microsoft.com/wix/2006/wi";
28 private static readonly XNamespace WixUtilNamespace = "http://wixtoolset.org/schemas/v4/wxs/util";
29 + private static readonly XNamespace WixFirewallNamespace = "http://wixtoolset.org/schemas/v4/wxs/firewall";
30
31 private static readonly XName AdminExecuteSequenceElementName = WixNamespace + "AdminExecuteSequence";
32 private static readonly XName AdminUISequenceSequenceElementName = WixNamespace + "AdminUISequence";
@@ -40,10 +41,11 @@ namespace WixToolset.Converters
41 private static readonly XName CreateFolderElementName = WixNamespace + "CreateFolder";
42 private static readonly XName CustomTableElementName = WixNamespace + "CustomTable";
43 private static readonly XName DirectoryElementName = WixNamespace + "Directory";
44 + private static readonly XName ErrorElementName = WixNamespace + "Error";
45 private static readonly XName FeatureElementName = WixNamespace + "Feature";
46 private static readonly XName FileElementName = WixNamespace + "File";
47 private static readonly XName FragmentElementName = WixNamespace + "Fragment";
46 - private static readonly XName ErrorElementName = WixNamespace + "Error";
48 + private static readonly XName FirewallRemoteAddressElementName = WixFirewallNamespace + "RemoteAddress";
49 private static readonly XName LaunchElementName = WixNamespace + "Launch";
50 private static readonly XName LevelElementName = WixNamespace + "Level";
51 private static readonly XName ExePackageElementName = WixNamespace + "ExePackage";
@@ -142,6 +144,7 @@ namespace WixToolset.Converters
144 { WixConverter.FeatureElementName, this.ConvertFeatureElement },
145 { WixConverter.FileElementName, this.ConvertFileElement },
146 { WixConverter.FragmentElementName, this.ConvertFragmentElement },
147 + { WixConverter.FirewallRemoteAddressElementName, this.ConvertFirewallRemoteAddressElement },
148 { WixConverter.EmbeddedChainerElementName, this.ConvertEmbeddedChainerElement },
149 { WixConverter.ErrorElementName, this.ConvertErrorElement },
150 { WixConverter.ExePackageElementName, this.ConvertSuppressSignatureValidation },
@@ -547,6 +550,8 @@ namespace WixToolset.Converters
550 }
551 }
552
553 + private void ConvertFirewallRemoteAddressElement(XElement element) => this.ConvertInnerTextToAttribute(element, "Value");
554 +
555 private void ConvertEmbeddedChainerElement(XElement element) => this.ConvertInnerTextToAttribute(element, "Condition");
556
557 private void ConvertErrorElement(XElement element) => this.ConvertInnerTextToAttribute(element, "Message");
src/test/WixToolsetTest.Converters/FirewallExtensionFixture.cs new
+79
@@ -0,0 +1,79 @@
1 +// 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.
2 +
3 +namespace WixToolsetTest.Converters
4 +{
5 + using System;
6 + using System.Xml.Linq;
7 + using WixToolset.Converters;
8 + using WixToolsetTest.Converters.Mocks;
9 + using Xunit;
10 +
11 + public class FirewallExtensionFixture : BaseConverterFixture
12 + {
13 + [Fact]
14 + public void FixRemoteAddressValue()
15 + {
16 + var parse = String.Join(Environment.NewLine,
17 + "<Wix xmlns='http://schemas.microsoft.com/wix/2006/wi' xmlns:fw='http://schemas.microsoft.com/wix/FirewallExtension'>",
18 + " <Fragment>",
19 + " <fw:RemoteAddress>",
20 + " 127.0.0.1",
21 + " </fw:RemoteAddress>",
22 + " </Fragment>",
23 + "</Wix>");
24 +
25 + var expected = new[]
26 + {
27 + "<Wix xmlns=\"http://wixtoolset.org/schemas/v4/wxs\" xmlns:fw=\"http://wixtoolset.org/schemas/v4/wxs/firewall\">",
28 + " <Fragment>",
29 + " <fw:RemoteAddress Value=\"127.0.0.1\" />",
30 + " </Fragment>",
31 + "</Wix>"
32 + };
33 +
34 + var document = XDocument.Parse(parse, LoadOptions.PreserveWhitespace | LoadOptions.SetLineInfo);
35 +
36 + var messaging = new MockMessaging();
37 + var converter = new WixConverter(messaging, 2, null, null);
38 +
39 + var errors = converter.ConvertDocument(document);
40 + Assert.Equal(3, errors);
41 +
42 + var actualLines = UnformattedDocumentLines(document);
43 + CompareLineByLine(expected, actualLines);
44 + }
45 +
46 + [Fact]
47 + public void FixXmlConfigValue()
48 + {
49 + var parse = String.Join(Environment.NewLine,
50 + "<Wix xmlns='http://schemas.microsoft.com/wix/2006/wi' xmlns:util='http://schemas.microsoft.com/wix/UtilExtension'>",
51 + " <Fragment>",
52 + " <util:XmlConfig Id='Change' ElementPath='book'>",
53 + " a&lt;>b",
54 + " </util:XmlConfig>",
55 + " </Fragment>",
56 + "</Wix>");
57 +
58 + var expected = new[]
59 + {
60 + "<Wix xmlns=\"http://wixtoolset.org/schemas/v4/wxs\" xmlns:util=\"http://wixtoolset.org/schemas/v4/wxs/util\">",
61 + " <Fragment>",
62 + " <util:XmlConfig Id=\"Change\" ElementPath=\"book\" Value=\"a&lt;&gt;b\" />",
63 + " </Fragment>",
64 + "</Wix>"
65 + };
66 +
67 + var document = XDocument.Parse(parse, LoadOptions.PreserveWhitespace | LoadOptions.SetLineInfo);
68 +
69 + var messaging = new MockMessaging();
70 + var converter = new WixConverter(messaging, 2, null, null);
71 +
72 + var errors = converter.ConvertDocument(document);
73 + Assert.Equal(3, errors);
74 +
75 + var actualLines = UnformattedDocumentLines(document);
76 + CompareLineByLine(expected, actualLines);
77 + }
78 + }
79 +}