diff options
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" /> |