aboutsummaryrefslogtreecommitdiff
path: root/src/test/msi
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/msi')
-rw-r--r--src/test/msi/TestData/FirewallExtensionTests/FirewallRules/FirewallRules.wixproj13
-rw-r--r--src/test/msi/TestData/FirewallExtensionTests/FirewallRules/product.wxs23
-rw-r--r--src/test/msi/WixToolsetTest.MsiE2E/FirewallExtensionTests.cs204
-rw-r--r--src/test/msi/WixToolsetTest.MsiE2E/WixToolsetTest.MsiE2E.csproj11
4 files changed, 251 insertions, 0 deletions
diff --git a/src/test/msi/TestData/FirewallExtensionTests/FirewallRules/FirewallRules.wixproj b/src/test/msi/TestData/FirewallExtensionTests/FirewallRules/FirewallRules.wixproj
new file mode 100644
index 00000000..b1770b0f
--- /dev/null
+++ b/src/test/msi/TestData/FirewallExtensionTests/FirewallRules/FirewallRules.wixproj
@@ -0,0 +1,13 @@
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<Project Sdk="WixToolset.Sdk">
3 <PropertyGroup>
4 <UpgradeCode>{4D188568-1CCF-4EEE-BC27-17C3DCC83E58}</UpgradeCode>
5 <ProductComponentsRef>true</ProductComponentsRef>
6 </PropertyGroup>
7 <ItemGroup>
8 <Compile Include="..\..\Templates\Product.wxs" Link="Product.wxs" />
9 </ItemGroup>
10 <ItemGroup>
11 <PackageReference Include="WixToolset.Firewall.wixext" />
12 </ItemGroup>
13</Project> \ No newline at end of file
diff --git a/src/test/msi/TestData/FirewallExtensionTests/FirewallRules/product.wxs b/src/test/msi/TestData/FirewallExtensionTests/FirewallRules/product.wxs
new file mode 100644
index 00000000..e8ce54bf
--- /dev/null
+++ b/src/test/msi/TestData/FirewallExtensionTests/FirewallRules/product.wxs
@@ -0,0 +1,23 @@
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
4<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs" xmlns:fw="http://wixtoolset.org/schemas/v4/wxs/firewall">
5 <Fragment>
6 <ComponentGroup Id="ProductComponents">
7 <ComponentRef Id="FirewallComponent1"/>
8 </ComponentGroup>
9 </Fragment>
10
11 <Fragment>
12 <Component Id="FirewallComponent1" Guid="A2E492E7-7350-4F77-8424-1FE94553D776" Directory="INSTALLFOLDER">
13 <File Source="$(sys.SOURCEFILEPATH)" KeyPath="yes" >
14 <fw:FirewallException Id="FirewallException1"
15 Description="WiX Toolset firewall exception rule integration test - minimal app properties"
16 Name="WiXToolset401 Test - 0001" Scope="any" />
17 </File>
18 <fw:FirewallException Id="FirewallException2"
19 Description="WiX Toolset firewall exception rule integration test - minimal port properties"
20 Name="WiXToolset401 Test - 0002" Scope="any" Port="23456"/>
21 </Component>
22 </Fragment>
23</Wix>
diff --git a/src/test/msi/WixToolsetTest.MsiE2E/FirewallExtensionTests.cs b/src/test/msi/WixToolsetTest.MsiE2E/FirewallExtensionTests.cs
new file mode 100644
index 00000000..fce95845
--- /dev/null
+++ b/src/test/msi/WixToolsetTest.MsiE2E/FirewallExtensionTests.cs
@@ -0,0 +1,204 @@
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
3namespace WixToolsetTest.MsiE2E
4{
5 using System;
6 using System.IO;
7 using NetFwTypeLib;
8 using WixTestTools;
9 using WixTestTools.Firewall;
10 using Xunit;
11 using Xunit.Abstractions;
12
13 public class FirewallExtensionTests : MsiE2ETests
14 {
15 public FirewallExtensionTests(ITestOutputHelper testOutputHelper) : base(testOutputHelper) { }
16
17 [RuntimeFact]
18 public void VerifierSelfTest()
19 {
20 foreach (var expected in Verifier.GetFirewallRules())
21 {
22 var check = new UniqueCheck(expected);
23 Verifier.VerifyFirewallRule(expected.Name, expected, check);
24 }
25 }
26
27 [RuntimeFact]
28 public void CanInstallAndUninstallFirewallRulesWithMinimalProperties()
29 {
30 var product = this.CreatePackageInstaller("FirewallRules");
31 product.InstallProduct(MSIExec.MSIExecReturnCode.SUCCESS);
32
33 // Validate new firewall exception details.
34 var expected1 = new RuleDetails("WiXToolset401 Test - 0001")
35 {
36 Action = NET_FW_ACTION_.NET_FW_ACTION_ALLOW,
37 ApplicationName = this.TestContext.GetTestInstallFolder(false, Path.Combine("FirewallRules", "product.wxs")),
38 Description = "WiX Toolset firewall exception rule integration test - minimal app properties",
39 Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN,
40 EdgeTraversal = true,
41 EdgeTraversalOptions = 1,
42 Enabled = true,
43 InterfaceTypes = "All",
44 LocalAddresses = "*",
45 Profiles = Int32.MaxValue,
46 Protocol = 256,
47 RemoteAddresses = "*",
48 SecureFlags = 0,
49 };
50
51 Verifier.VerifyFirewallRule("WiXToolset401 Test - 0001", expected1);
52
53 var expected2 = new RuleDetails("WiXToolset401 Test - 0002")
54 {
55 Action = NET_FW_ACTION_.NET_FW_ACTION_ALLOW,
56 Description = "WiX Toolset firewall exception rule integration test - minimal port properties",
57 Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN,
58 EdgeTraversal = false,
59 EdgeTraversalOptions = 0,
60 Enabled = true,
61 InterfaceTypes = "All",
62 LocalAddresses = "*",
63 LocalPorts = "23456",
64 Profiles = Int32.MaxValue,
65 Protocol = 6,
66 RemoteAddresses = "*",
67 RemotePorts = "*",
68 SecureFlags = 0,
69 };
70
71 Verifier.VerifyFirewallRule("WiXToolset401 Test - 0002", expected2);
72
73 product.UninstallProduct(MSIExec.MSIExecReturnCode.SUCCESS);
74
75 // verify the firewall exceptions have been removed.
76 Assert.False(Verifier.FirewallRuleExists("WiXToolset401 Test - 0001"));
77 Assert.False(Verifier.FirewallRuleExists("WiXToolset401 Test - 0002"));
78 }
79
80 [RuntimeFact]
81 public void DisabledPortFirewallRuleIsEnabledAfterRepair()
82 {
83 var product = this.CreatePackageInstaller("FirewallRules");
84 product.InstallProduct(MSIExec.MSIExecReturnCode.SUCCESS);
85
86 Verifier.DisableFirewallRule("WiXToolset401 Test - 0002");
87
88 product.RepairProduct(MSIExec.MSIExecReturnCode.SUCCESS);
89
90 var expected = new RuleDetails("WiXToolset401 Test - 0002")
91 {
92 Action = NET_FW_ACTION_.NET_FW_ACTION_ALLOW,
93 Description = "WiX Toolset firewall exception rule integration test - minimal port properties",
94 Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN,
95 EdgeTraversal = false,
96 EdgeTraversalOptions = 0,
97 Enabled = true,
98 InterfaceTypes = "All",
99 LocalAddresses = "*",
100 LocalPorts = "23456",
101 Profiles = Int32.MaxValue,
102 Protocol = 6,
103 RemoteAddresses = "*",
104 RemotePorts = "*",
105 SecureFlags = 0,
106 };
107
108 Verifier.VerifyFirewallRule("WiXToolset401 Test - 0002", expected);
109 }
110
111 [RuntimeFact]
112 public void DisabledApplicationFirewallRuleIsEnabledAfterRepair()
113 {
114 var product = this.CreatePackageInstaller("FirewallRules");
115 product.InstallProduct(MSIExec.MSIExecReturnCode.SUCCESS);
116
117 Verifier.DisableFirewallRule("WiXToolset401 Test - 0001");
118
119 product.RepairProduct(MSIExec.MSIExecReturnCode.SUCCESS);
120
121 var expected = new RuleDetails("WiXToolset401 Test - 0001")
122 {
123 Action = NET_FW_ACTION_.NET_FW_ACTION_ALLOW,
124 ApplicationName = this.TestContext.GetTestInstallFolder(false, Path.Combine("FirewallRules", "product.wxs")),
125 Description = "WiX Toolset firewall exception rule integration test - minimal app properties",
126 Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN,
127 EdgeTraversal = true,
128 EdgeTraversalOptions = 1,
129 Enabled = true,
130 InterfaceTypes = "All",
131 LocalAddresses = "*",
132 Profiles = Int32.MaxValue,
133 Protocol = 256,
134 RemoteAddresses = "*",
135 SecureFlags = 0,
136 };
137
138 Verifier.VerifyFirewallRule("WiXToolset401 Test - 0001", expected);
139 }
140
141 [RuntimeFact]
142 public void MissingPortFirewallRuleIsAddedAfterRepair()
143 {
144 var product = this.CreatePackageInstaller("FirewallRules");
145 product.InstallProduct(MSIExec.MSIExecReturnCode.SUCCESS);
146
147 Verifier.RemoveFirewallRulesByName("WiXToolset401 Test - 0002");
148 Assert.False(Verifier.FirewallRuleExists("WiXToolset401 Test - 0002"));
149
150 product.RepairProduct(MSIExec.MSIExecReturnCode.SUCCESS);
151
152 var expected = new RuleDetails("WiXToolset401 Test - 0002")
153 {
154 Action = NET_FW_ACTION_.NET_FW_ACTION_ALLOW,
155 Description = "WiX Toolset firewall exception rule integration test - minimal port properties",
156 Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN,
157 EdgeTraversal = false,
158 EdgeTraversalOptions = 0,
159 Enabled = true,
160 InterfaceTypes = "All",
161 LocalAddresses = "*",
162 LocalPorts = "23456",
163 Profiles = Int32.MaxValue,
164 Protocol = 6,
165 RemoteAddresses = "*",
166 RemotePorts = "*",
167 SecureFlags = 0,
168 };
169
170 Verifier.VerifyFirewallRule("WiXToolset401 Test - 0002", expected);
171 }
172
173 [RuntimeFact]
174 public void MissingApplicationFirewallRuleIsAddedAfterRepair()
175 {
176 var product = this.CreatePackageInstaller("FirewallRules");
177 product.InstallProduct(MSIExec.MSIExecReturnCode.SUCCESS);
178
179 Verifier.RemoveFirewallRulesByName("WiXToolset401 Test - 0001");
180 Assert.False(Verifier.FirewallRuleExists("WiXToolset401 Test - 0001"));
181
182 product.RepairProduct(MSIExec.MSIExecReturnCode.SUCCESS);
183
184 var expected = new RuleDetails("WiXToolset401 Test - 0001")
185 {
186 Action = NET_FW_ACTION_.NET_FW_ACTION_ALLOW,
187 ApplicationName = this.TestContext.GetTestInstallFolder(false, Path.Combine("FirewallRules", "product.wxs")),
188 Description = "WiX Toolset firewall exception rule integration test - minimal app properties",
189 Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN,
190 EdgeTraversal = true,
191 EdgeTraversalOptions = 1,
192 Enabled = true,
193 InterfaceTypes = "All",
194 LocalAddresses = "*",
195 Profiles = Int32.MaxValue,
196 Protocol = 256,
197 RemoteAddresses = "*",
198 SecureFlags = 0,
199 };
200
201 Verifier.VerifyFirewallRule("WiXToolset401 Test - 0001", expected);
202 }
203 }
204}
diff --git a/src/test/msi/WixToolsetTest.MsiE2E/WixToolsetTest.MsiE2E.csproj b/src/test/msi/WixToolsetTest.MsiE2E/WixToolsetTest.MsiE2E.csproj
index d64c942a..a5536de4 100644
--- a/src/test/msi/WixToolsetTest.MsiE2E/WixToolsetTest.MsiE2E.csproj
+++ b/src/test/msi/WixToolsetTest.MsiE2E/WixToolsetTest.MsiE2E.csproj
@@ -7,6 +7,17 @@
7 <PlatformTarget>x64</PlatformTarget> 7 <PlatformTarget>x64</PlatformTarget>
8 <IsWixTestProject>true</IsWixTestProject> 8 <IsWixTestProject>true</IsWixTestProject>
9 </PropertyGroup> 9 </PropertyGroup>
10 <ItemGroup>
11 <COMReference Include="NetFwTypeLib">
12 <VersionMinor>0</VersionMinor>
13 <VersionMajor>1</VersionMajor>
14 <Guid>58fbcf7c-e7a9-467c-80b3-fc65e8fcca08</Guid>
15 <Lcid>0</Lcid>
16 <WrapperTool>tlbimp</WrapperTool>
17 <Isolated>false</Isolated>
18 <EmbedInteropTypes>False</EmbedInteropTypes>
19 </COMReference>
20 </ItemGroup>
10 21
11 <ItemGroup> 22 <ItemGroup>
12 <Content Include="runtests.cmd" CopyToOutputDirectory="PreserveNewest" /> 23 <Content Include="runtests.cmd" CopyToOutputDirectory="PreserveNewest" />