diff options
| author | chris_bednarski <Chris.Bednarski@minfos.com.au> | 2023-08-13 11:34:57 +1000 |
|---|---|---|
| committer | Bob Arnson <github@bobs.org> | 2023-08-19 18:08:09 -0400 |
| commit | febb9c943d6c6c0db3a660de6f96b7d9f5941b1a (patch) | |
| tree | 3fe6673016b6edc7399c594842dbf7f1460d0335 /src/test/msi | |
| parent | 6f520b9def48f302625906ad961e1afa28edb3d0 (diff) | |
| download | wix-febb9c943d6c6c0db3a660de6f96b7d9f5941b1a.tar.gz wix-febb9c943d6c6c0db3a660de6f96b7d9f5941b1a.tar.bz2 wix-febb9c943d6c6c0db3a660de6f96b7d9f5941b1a.zip | |
add integration tests for the firewall extenstion
Diffstat (limited to 'src/test/msi')
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 | |||
| 3 | namespace 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" /> |
