diff options
Diffstat (limited to 'src/ext/Firewall/test')
4 files changed, 75 insertions, 0 deletions
diff --git a/src/ext/Firewall/test/WixToolsetTest.Firewall/FirewallExtensionFixture.cs b/src/ext/Firewall/test/WixToolsetTest.Firewall/FirewallExtensionFixture.cs index 4b9aecd7..9b4cb2b1 100644 --- a/src/ext/Firewall/test/WixToolsetTest.Firewall/FirewallExtensionFixture.cs +++ b/src/ext/Firewall/test/WixToolsetTest.Firewall/FirewallExtensionFixture.cs | |||
@@ -621,6 +621,39 @@ namespace WixToolsetTest.Firewall | |||
621 | }, locals.ToArray()); | 621 | }, locals.ToArray()); |
622 | } | 622 | } |
623 | 623 | ||
624 | [TestMethod] | ||
625 | public void CanDecompileWix4FirewallPackage() | ||
626 | { | ||
627 | var folder = TestData.Get(@"TestData\DecompileWix4Firewall"); | ||
628 | var output = Path.Combine(folder, "DecompiledWix4Firewall.xml"); | ||
629 | |||
630 | var result = WixRunner.Execute( | ||
631 | "msi", | ||
632 | "decompile", | ||
633 | "-ext", Path.GetFullPath(typeof(FirewallExtensionFactory).Assembly.Location), | ||
634 | Path.Combine(folder, "Firewall4.msi"), | ||
635 | "-o", output | ||
636 | ); | ||
637 | result.AssertSuccess(); | ||
638 | |||
639 | var doc = XDocument.Load(output); | ||
640 | var actual = doc.Descendants() | ||
641 | .Where(e => e.Name.Namespace == "http://wixtoolset.org/schemas/v4/wxs/firewall") | ||
642 | .Select(fe => new { Name = fe.Name.LocalName, Attributes = fe.Attributes().Select(a => $"{a.Name.LocalName}={a.Value}").ToArray() }) | ||
643 | .ToArray(); | ||
644 | |||
645 | WixAssert.CompareLineByLine(new[] | ||
646 | { | ||
647 | "FirewallException", | ||
648 | "RemoteAddress", | ||
649 | "RemoteAddress", | ||
650 | "RemoteAddress", | ||
651 | "RemoteAddress", | ||
652 | "RemoteAddress", | ||
653 | "FirewallException", | ||
654 | }, actual.Select(a => a.Name).ToArray()); | ||
655 | } | ||
656 | |||
624 | private static void Build(string[] args) | 657 | private static void Build(string[] args) |
625 | { | 658 | { |
626 | var result = WixRunner.Execute(args); | 659 | var result = WixRunner.Execute(args); |
diff --git a/src/ext/Firewall/test/WixToolsetTest.Firewall/TestData/DecompileWix4Firewall/Firewall4.msi b/src/ext/Firewall/test/WixToolsetTest.Firewall/TestData/DecompileWix4Firewall/Firewall4.msi new file mode 100644 index 00000000..1dde5df4 --- /dev/null +++ b/src/ext/Firewall/test/WixToolsetTest.Firewall/TestData/DecompileWix4Firewall/Firewall4.msi | |||
Binary files differ | |||
diff --git a/src/ext/Firewall/test/WixToolsetTest.Firewall/TestData/DecompileWix4Firewall/ReferenceSource/Firewall4.wixproj b/src/ext/Firewall/test/WixToolsetTest.Firewall/TestData/DecompileWix4Firewall/ReferenceSource/Firewall4.wixproj new file mode 100644 index 00000000..0098d7ac --- /dev/null +++ b/src/ext/Firewall/test/WixToolsetTest.Firewall/TestData/DecompileWix4Firewall/ReferenceSource/Firewall4.wixproj | |||
@@ -0,0 +1,6 @@ | |||
1 | <Project Sdk="WixToolset.Sdk/4.0.6"> | ||
2 | <ItemGroup> | ||
3 | <PackageVersion Update="WixToolset.Firewall.wixext" Version="4.0.6" /> | ||
4 | <PackageReference Include="WixToolset.Firewall.wixext" /> | ||
5 | </ItemGroup> | ||
6 | </Project> \ No newline at end of file | ||
diff --git a/src/ext/Firewall/test/WixToolsetTest.Firewall/TestData/DecompileWix4Firewall/ReferenceSource/Firewall4.wxs b/src/ext/Firewall/test/WixToolsetTest.Firewall/TestData/DecompileWix4Firewall/ReferenceSource/Firewall4.wxs new file mode 100644 index 00000000..8a89ad6c --- /dev/null +++ b/src/ext/Firewall/test/WixToolsetTest.Firewall/TestData/DecompileWix4Firewall/ReferenceSource/Firewall4.wxs | |||
@@ -0,0 +1,36 @@ | |||
1 | <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs" | ||
2 | xmlns:fw="http://wixtoolset.org/schemas/v4/wxs/firewall"> | ||
3 | <Package Name="MsiPackage" Language="1033" Version="1.0.0.0" Manufacturer="Example Corporation" UpgradeCode="047730a5-30fe-4a62-a520-da9381b8226a"> | ||
4 | <MajorUpgrade DowngradeErrorMessage="(DowngradeError)" /> | ||
5 | <MediaTemplate EmbedCab="yes" /> | ||
6 | |||
7 | <Feature Id="FAll"> | ||
8 | <ComponentGroupRef Id="ProductComponents" /> | ||
9 | </Feature> | ||
10 | </Package> | ||
11 | |||
12 | <Fragment> | ||
13 | <StandardDirectory Id="ProgramFilesFolder"> | ||
14 | <Directory Id="INSTALLFOLDER" Name="MsiPackage" /> | ||
15 | </StandardDirectory> | ||
16 | </Fragment> | ||
17 | |||
18 | <Fragment> | ||
19 | <ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER"> | ||
20 | <Component> | ||
21 | <File Name="fw.exe" Source="$(sys.SOURCEFILEPATH)"> | ||
22 | <Shortcut Id="FwShortcut" Directory="INSTALLFOLDER" Name="Firewall" /> | ||
23 | <fw:FirewallException Id="ExampleFirewall" Description="An app-based firewall exception" Name="ExampleApp" Port="42"> | ||
24 | <fw:RemoteAddress Value="Defaultgateway" /> | ||
25 | <fw:RemoteAddress Value="DHCP" /> | ||
26 | <fw:RemoteAddress Value="DNS" /> | ||
27 | <fw:RemoteAddress Value="255.255.255.0" /> | ||
28 | <fw:RemoteAddress Value="1.1.1.1-2.2.2.2" /> | ||
29 | </fw:FirewallException> | ||
30 | </File> | ||
31 | |||
32 | <fw:FirewallException Description="A port-based firewall exception" Name="ExamplePort" Port="42" Outbound="yes" Scope="localSubnet" /> | ||
33 | </Component> | ||
34 | </ComponentGroup> | ||
35 | </Fragment> | ||
36 | </Wix> | ||