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<>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<>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
+}