aboutsummaryrefslogtreecommitdiff
path: root/src/ext/Firewall/test
diff options
context:
space:
mode:
authorchris_bednarski <Chris.Bednarski@minfos.com.au>2023-08-26 08:31:28 +1000
committerBob Arnson <github@bobs.org>2023-08-26 17:58:25 -0400
commitb3deb46def7d303a79f4a5eba6a921e45d5f16ef (patch)
tree3327ffd8525f793a511832172129c904ba062904 /src/ext/Firewall/test
parent537e79d3c8b99e1576db48b19c8071c0922342f2 (diff)
downloadwix-b3deb46def7d303a79f4a5eba6a921e45d5f16ef.tar.gz
wix-b3deb46def7d303a79f4a5eba6a921e45d5f16ef.tar.bz2
wix-b3deb46def7d303a79f4a5eba6a921e45d5f16ef.zip
add firewall extension decompiler
Diffstat (limited to 'src/ext/Firewall/test')
-rw-r--r--src/ext/Firewall/test/WixToolsetTest.Firewall/FirewallExtensionFixture.cs59
1 files changed, 58 insertions, 1 deletions
diff --git a/src/ext/Firewall/test/WixToolsetTest.Firewall/FirewallExtensionFixture.cs b/src/ext/Firewall/test/WixToolsetTest.Firewall/FirewallExtensionFixture.cs
index b89afaf7..06a877f6 100644
--- a/src/ext/Firewall/test/WixToolsetTest.Firewall/FirewallExtensionFixture.cs
+++ b/src/ext/Firewall/test/WixToolsetTest.Firewall/FirewallExtensionFixture.cs
@@ -2,9 +2,11 @@
2 2
3namespace WixToolsetTest.Firewall 3namespace WixToolsetTest.Firewall
4{ 4{
5 using System.IO;
5 using System.Linq; 6 using System.Linq;
6 using WixInternal.TestSupport; 7 using System.Xml.Linq;
7 using WixInternal.Core.TestPackage; 8 using WixInternal.Core.TestPackage;
9 using WixInternal.TestSupport;
8 using WixToolset.Firewall; 10 using WixToolset.Firewall;
9 using Xunit; 11 using Xunit;
10 12
@@ -50,6 +52,55 @@ namespace WixToolsetTest.Firewall
50 }, results); 52 }, results);
51 } 53 }
52 54
55 [Fact]
56 public void CanRoundtripFirewallExceptions()
57 {
58 var folder = TestData.Get(@"TestData", "UsingFirewall");
59 var build = new Builder(folder, typeof(FirewallExtensionFactory), new[] { folder });
60 var output = Path.Combine(folder, "FirewallExceptionDecompile.xml");
61
62 build.BuildAndDecompileAndBuild(Build, Decompile, output);
63
64 var doc = XDocument.Load(output);
65 var actual = doc.Descendants()
66 .Where(e => e.Name.Namespace == "http://wixtoolset.org/schemas/v4/wxs/firewall")
67 .Select(fe => new { Name = fe.Name.LocalName, Attributes = fe.Attributes().Select(a => $"{a.Name.LocalName}={a.Value}").ToArray() })
68 .ToArray();
69
70 WixAssert.CompareLineByLine(new[]
71 {
72 "FirewallException",
73 "FirewallException",
74 }, actual.Select(a => a.Name).ToArray());
75
76 WixAssert.CompareLineByLine(new[]
77 {
78 "Id=ExampleFirewall",
79 "Name=ExampleApp",
80 "Scope=any",
81 "Port=42",
82 "Protocol=tcp",
83 "Program=[#filNdJBJmq3UCUIwmXS8x21aAsvqzk]",
84 "Profile=all",
85 "Description=An app-based firewall exception",
86 "Outbound=no",
87 "xmlns=http://wixtoolset.org/schemas/v4/wxs/firewall",
88 }, actual[0].Attributes);
89
90 WixAssert.CompareLineByLine(new[]
91 {
92 "Id=fex70IVsYNnbwiHQrEepmdTPKH8XYs",
93 "Name=ExamplePort",
94 "Scope=localSubnet",
95 "Port=42",
96 "Protocol=tcp",
97 "Profile=all",
98 "Description=A port-based firewall exception",
99 "Outbound=yes",
100 "xmlns=http://wixtoolset.org/schemas/v4/wxs/firewall",
101 }, actual[1].Attributes);
102 }
103
53 private static void Build(string[] args) 104 private static void Build(string[] args)
54 { 105 {
55 var result = WixRunner.Execute(args); 106 var result = WixRunner.Execute(args);
@@ -65,5 +116,11 @@ namespace WixToolsetTest.Firewall
65 var result = WixRunner.Execute(newArgs.ToArray()); 116 var result = WixRunner.Execute(newArgs.ToArray());
66 result.AssertSuccess(); 117 result.AssertSuccess();
67 } 118 }
119
120 private static void Decompile(string[] args)
121 {
122 var result = WixRunner.Execute(args);
123 result.AssertSuccess();
124 }
68 } 125 }
69} 126}