aboutsummaryrefslogtreecommitdiff
path: root/src/test
diff options
context:
space:
mode:
Diffstat (limited to 'src/test')
-rw-r--r--src/test/burn/WixTestTools/Firewall/Verifier.cs8
-rw-r--r--src/test/msi/TestData/FirewallExtensionTests/IgnoreFailedFirewallRules/IgnoreFailedFirewallRules.wixproj13
-rw-r--r--src/test/msi/TestData/FirewallExtensionTests/IgnoreFailedFirewallRules/product.wxs35
-rw-r--r--src/test/msi/WixToolsetTest.MsiE2E/FirewallExtensionTests.cs42
4 files changed, 95 insertions, 3 deletions
diff --git a/src/test/burn/WixTestTools/Firewall/Verifier.cs b/src/test/burn/WixTestTools/Firewall/Verifier.cs
index c1bf3219..2c273e7a 100644
--- a/src/test/burn/WixTestTools/Firewall/Verifier.cs
+++ b/src/test/burn/WixTestTools/Firewall/Verifier.cs
@@ -254,7 +254,13 @@ namespace WixTestTools.Firewall
254 rule.Enabled = false; 254 rule.Enabled = false;
255 } 255 }
256 256
257 public static void RemoveFirewallRulesByName(string name) 257 /// <summary>
258 /// Removes a firewall rule by name. If multiple rules with the same name exist, only one of them is removed.<br/>
259 /// This behavior is different from <b>netsh advfirewall firewall delete rule</b> where all matching rules are deleted if multiple matches are found.<br/>
260 /// The firewall rule name cannot be null or an empty string.
261 /// </summary>
262 /// <param name="name">Name of the firewall rule to be removed.</param>
263 public static void RemoveFirewallRuleByName(string name)
258 { 264 {
259 var rules = GetINetFwRules(); 265 var rules = GetINetFwRules();
260 rules.Remove(name); 266 rules.Remove(name);
diff --git a/src/test/msi/TestData/FirewallExtensionTests/IgnoreFailedFirewallRules/IgnoreFailedFirewallRules.wixproj b/src/test/msi/TestData/FirewallExtensionTests/IgnoreFailedFirewallRules/IgnoreFailedFirewallRules.wixproj
new file mode 100644
index 00000000..b1770b0f
--- /dev/null
+++ b/src/test/msi/TestData/FirewallExtensionTests/IgnoreFailedFirewallRules/IgnoreFailedFirewallRules.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/IgnoreFailedFirewallRules/product.wxs b/src/test/msi/TestData/FirewallExtensionTests/IgnoreFailedFirewallRules/product.wxs
new file mode 100644
index 00000000..d615f0c6
--- /dev/null
+++ b/src/test/msi/TestData/FirewallExtensionTests/IgnoreFailedFirewallRules/product.wxs
@@ -0,0 +1,35 @@
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<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs" xmlns:fw="http://wixtoolset.org/schemas/v4/wxs/firewall">
4 <Fragment>
5 <ComponentGroup Id="ProductComponents">
6 <ComponentRef Id="FirewallComponent3"/>
7 </ComponentGroup>
8
9 <Property Id="RULENAME" Secure="yes" />
10 <CustomAction Id="SetRuleNameDefaultValue" Property="RULENAME" Value="WiXToolset401 Test - 0008 removal" Execute="firstSequence" />
11
12 <InstallExecuteSequence>
13 <Custom Action="SetRuleNameDefaultValue" After="AppSearch" Condition="NOT NORULENAME" />
14 </InstallExecuteSequence>
15
16 </Fragment>
17
18 <Fragment>
19 <Component Id="FirewallComponent3" Guid="AA693149-B39C-4012-9DDE-92AB0CEA2386" Directory="INSTALLFOLDER" Transitive="yes">
20 <File Source="$(sys.SOURCEFILEPATH)" KeyPath="yes" >
21 <fw:FirewallException Id="FirewallException6"
22 Description="WiX Toolset firewall exception rule integration test | ignore failed app properties"
23 Name="WiXToolset401 Test - 0006 pipe" Scope="any" IgnoreFailure="yes" />
24 </File>
25 <fw:FirewallException Id="FirewallException7"
26 Description="WiX Toolset firewall exception rule integration test | ignore failed port properties"
27 Name="WiXToolset401 Test - 0007 pipe" Scope="any" Port="65123" IgnoreFailure="yes" />
28
29 <fw:FirewallException Id="FirewallException8"
30 Description="WiX Toolset firewall exception rule integration test - removal test"
31 Name="[RULENAME]" Scope="any" Port="52390" Program="test.exe"
32 IgnoreFailure="yes" />
33 </Component>
34 </Fragment>
35</Wix>
diff --git a/src/test/msi/WixToolsetTest.MsiE2E/FirewallExtensionTests.cs b/src/test/msi/WixToolsetTest.MsiE2E/FirewallExtensionTests.cs
index 3e605d7a..4106cd72 100644
--- a/src/test/msi/WixToolsetTest.MsiE2E/FirewallExtensionTests.cs
+++ b/src/test/msi/WixToolsetTest.MsiE2E/FirewallExtensionTests.cs
@@ -144,7 +144,7 @@ namespace WixToolsetTest.MsiE2E
144 var product = this.CreatePackageInstaller("FirewallRules"); 144 var product = this.CreatePackageInstaller("FirewallRules");
145 product.InstallProduct(MSIExec.MSIExecReturnCode.SUCCESS); 145 product.InstallProduct(MSIExec.MSIExecReturnCode.SUCCESS);
146 146
147 Verifier.RemoveFirewallRulesByName("WiXToolset401 Test - 0002"); 147 Verifier.RemoveFirewallRuleByName("WiXToolset401 Test - 0002");
148 Assert.False(Verifier.FirewallRuleExists("WiXToolset401 Test - 0002")); 148 Assert.False(Verifier.FirewallRuleExists("WiXToolset401 Test - 0002"));
149 149
150 product.RepairProduct(MSIExec.MSIExecReturnCode.SUCCESS); 150 product.RepairProduct(MSIExec.MSIExecReturnCode.SUCCESS);
@@ -176,7 +176,7 @@ namespace WixToolsetTest.MsiE2E
176 var product = this.CreatePackageInstaller("FirewallRules"); 176 var product = this.CreatePackageInstaller("FirewallRules");
177 product.InstallProduct(MSIExec.MSIExecReturnCode.SUCCESS); 177 product.InstallProduct(MSIExec.MSIExecReturnCode.SUCCESS);
178 178
179 Verifier.RemoveFirewallRulesByName("WiXToolset401 Test - 0001"); 179 Verifier.RemoveFirewallRuleByName("WiXToolset401 Test - 0001");
180 Assert.False(Verifier.FirewallRuleExists("WiXToolset401 Test - 0001")); 180 Assert.False(Verifier.FirewallRuleExists("WiXToolset401 Test - 0001"));
181 181
182 product.RepairProduct(MSIExec.MSIExecReturnCode.SUCCESS); 182 product.RepairProduct(MSIExec.MSIExecReturnCode.SUCCESS);
@@ -277,5 +277,43 @@ namespace WixToolsetTest.MsiE2E
277 Assert.False(Verifier.FirewallRuleExists("WiXToolset401 Test - 0004")); 277 Assert.False(Verifier.FirewallRuleExists("WiXToolset401 Test - 0004"));
278 Assert.False(Verifier.FirewallRuleExists("WiXToolset401 Test - 0005 - 9999")); 278 Assert.False(Verifier.FirewallRuleExists("WiXToolset401 Test - 0005 - 9999"));
279 } 279 }
280
281 [RuntimeFact]
282 public void SucceedWhenIgnoreOnFailureIsSet()
283 {
284 var product = this.CreatePackageInstaller("IgnoreFailedFirewallRules");
285 var log1 = product.InstallProduct(MSIExec.MSIExecReturnCode.SUCCESS);
286
287 Assert.False(Verifier.FirewallRuleExists("WiXToolset401 Test - 0006 pipe"));
288 Assert.True(LogVerifier.MessageInLogFile(log1, "failed to add app to the authorized apps list"));
289
290 Assert.False(Verifier.FirewallRuleExists("WiXToolset401 Test - 0007 pipe"));
291 Assert.True(LogVerifier.MessageInLogFile(log1, "failed to add app to the authorized ports list"));
292
293 var expected = new RuleDetails("WiXToolset401 Test - 0008 removal")
294 {
295 Action = NET_FW_ACTION_.NET_FW_ACTION_ALLOW,
296 ApplicationName = "test.exe",
297 Description = "WiX Toolset firewall exception rule integration test - removal test",
298 Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN,
299 EdgeTraversal = true,
300 EdgeTraversalOptions = 1,
301 Enabled = true,
302 InterfaceTypes = "All",
303 LocalPorts = "52390",
304 LocalAddresses = "*",
305 Profiles = Int32.MaxValue,
306 Protocol = 6,
307 RemoteAddresses = "*",
308 RemotePorts = "*",
309 SecureFlags = 0,
310 };
311
312 Verifier.VerifyFirewallRule("WiXToolset401 Test - 0008 removal", expected);
313 Verifier.RemoveFirewallRuleByName("WiXToolset401 Test - 0008 removal");
314
315 var log2 = product.UninstallProduct(MSIExec.MSIExecReturnCode.SUCCESS, "NORULENAME=1");
316 Assert.True(LogVerifier.MessageInLogFile(log2, "failed to remove firewall rule"));
317 }
280 } 318 }
281} 319}