diff options
Diffstat (limited to 'src/test')
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 | } |