diff options
author | Bevan Weiss <bevan.weiss@gmail.com> | 2024-08-04 21:13:44 +1000 |
---|---|---|
committer | Rob Mensching <rob@firegiant.com> | 2025-02-11 23:14:49 -0800 |
commit | 5b4a6538ee06988c75b717bd905197fb670e6142 (patch) | |
tree | eb078854f258ebdabaf206282d56cbdcf87759ef /src/test/msi/WixToolsetTest.MsiE2E | |
parent | 2c5bb89424b12de812498d568bc1aae2d4098e60 (diff) | |
download | wix-5b4a6538ee06988c75b717bd905197fb670e6142.tar.gz wix-5b4a6538ee06988c75b717bd905197fb670e6142.tar.bz2 wix-5b4a6538ee06988c75b717bd905197fb670e6142.zip |
Add/Remove Group Membership rollback handled.
Fixups to a few test cases.
Signed-off-by: Bevan Weiss <bevan.weiss@gmail.com>
Diffstat (limited to 'src/test/msi/WixToolsetTest.MsiE2E')
-rw-r--r-- | src/test/msi/WixToolsetTest.MsiE2E/UtilExtensionGroupTests.cs | 95 | ||||
-rw-r--r-- | src/test/msi/WixToolsetTest.MsiE2E/runtests.cmd | 1 |
2 files changed, 71 insertions, 25 deletions
diff --git a/src/test/msi/WixToolsetTest.MsiE2E/UtilExtensionGroupTests.cs b/src/test/msi/WixToolsetTest.MsiE2E/UtilExtensionGroupTests.cs index d7cf3168..cee357a6 100644 --- a/src/test/msi/WixToolsetTest.MsiE2E/UtilExtensionGroupTests.cs +++ b/src/test/msi/WixToolsetTest.MsiE2E/UtilExtensionGroupTests.cs | |||
@@ -11,9 +11,10 @@ namespace WixToolsetTest.MsiE2E | |||
11 | { | 11 | { |
12 | public UtilExtensionGroupTests(ITestOutputHelper testOutputHelper) : base(testOutputHelper) { } | 12 | public UtilExtensionGroupTests(ITestOutputHelper testOutputHelper) : base(testOutputHelper) { } |
13 | 13 | ||
14 | #region Non Domain | ||
14 | // Verify that the users specified in the authoring are created as expected. | 15 | // Verify that the users specified in the authoring are created as expected. |
15 | [RuntimeFact] | 16 | [RuntimeFact] |
16 | public void CanInstallAndUninstallGroups() | 17 | public void CanInstallAndUninstallNonDomainGroups() |
17 | { | 18 | { |
18 | UserGroupVerifier.CreateLocalGroup("testName3"); | 19 | UserGroupVerifier.CreateLocalGroup("testName3"); |
19 | var productA = this.CreatePackageInstaller("ProductA"); | 20 | var productA = this.CreatePackageInstaller("ProductA"); |
@@ -39,7 +40,7 @@ namespace WixToolsetTest.MsiE2E | |||
39 | 40 | ||
40 | // Verify the rollback action reverts all Users changes. | 41 | // Verify the rollback action reverts all Users changes. |
41 | [RuntimeFact] | 42 | [RuntimeFact] |
42 | public void CanRollbackGroups() | 43 | public void CanRollbackNonDomainGroups() |
43 | { | 44 | { |
44 | UserGroupVerifier.CreateLocalGroup("testName3"); | 45 | UserGroupVerifier.CreateLocalGroup("testName3"); |
45 | var productFail = this.CreatePackageInstaller("ProductFail"); | 46 | var productFail = this.CreatePackageInstaller("ProductFail"); |
@@ -65,7 +66,7 @@ namespace WixToolsetTest.MsiE2E | |||
65 | // Original code signalled repair mode by using "-f ", which silently | 66 | // Original code signalled repair mode by using "-f ", which silently |
66 | // terminated the command-line parsing, ignoring any parameters that followed. | 67 | // terminated the command-line parsing, ignoring any parameters that followed. |
67 | [RuntimeFact()] | 68 | [RuntimeFact()] |
68 | public void CanRepairGroupsWithCommandLineParameters() | 69 | public void CanRepairNonDomainGroupsWithCommandLineParameters() |
69 | { | 70 | { |
70 | var arguments = new string[] | 71 | var arguments = new string[] |
71 | { | 72 | { |
@@ -82,6 +83,10 @@ namespace WixToolsetTest.MsiE2E | |||
82 | // Repair | 83 | // Repair |
83 | productWithCommandLineParameters.RepairProduct(MSIExec.MSIExecReturnCode.SUCCESS, arguments); | 84 | productWithCommandLineParameters.RepairProduct(MSIExec.MSIExecReturnCode.SUCCESS, arguments); |
84 | 85 | ||
86 | |||
87 | // Install | ||
88 | productWithCommandLineParameters.UninstallProduct(MSIExec.MSIExecReturnCode.SUCCESS, arguments); | ||
89 | |||
85 | // Clean up | 90 | // Clean up |
86 | UserGroupVerifier.DeleteLocalGroup("testName1"); | 91 | UserGroupVerifier.DeleteLocalGroup("testName1"); |
87 | } | 92 | } |
@@ -89,7 +94,7 @@ namespace WixToolsetTest.MsiE2E | |||
89 | 94 | ||
90 | // Verify that the groups specified in the authoring are created as expected on repair. | 95 | // Verify that the groups specified in the authoring are created as expected on repair. |
91 | [RuntimeFact()] | 96 | [RuntimeFact()] |
92 | public void CanRepairGroups() | 97 | public void CanRepairNonDomainGroups() |
93 | { | 98 | { |
94 | UserGroupVerifier.CreateLocalGroup("testName3"); | 99 | UserGroupVerifier.CreateLocalGroup("testName3"); |
95 | var productA = this.CreatePackageInstaller("ProductA"); | 100 | var productA = this.CreatePackageInstaller("ProductA"); |
@@ -119,7 +124,7 @@ namespace WixToolsetTest.MsiE2E | |||
119 | 124 | ||
120 | // Verify that Installation fails if FailIfExists is set. | 125 | // Verify that Installation fails if FailIfExists is set. |
121 | [RuntimeFact] | 126 | [RuntimeFact] |
122 | public void FailsIfGroupExists() | 127 | public void FailsIfNonDomainGroupExists() |
123 | { | 128 | { |
124 | var productFailIfExists = this.CreatePackageInstaller("ProductFailIfExists"); | 129 | var productFailIfExists = this.CreatePackageInstaller("ProductFailIfExists"); |
125 | 130 | ||
@@ -148,7 +153,7 @@ namespace WixToolsetTest.MsiE2E | |||
148 | { | 153 | { |
149 | var productRestrictedDomain = this.CreatePackageInstaller("ProductRestrictedDomain"); | 154 | var productRestrictedDomain = this.CreatePackageInstaller("ProductRestrictedDomain"); |
150 | 155 | ||
151 | string logFile = productRestrictedDomain.InstallProduct(MSIExec.MSIExecReturnCode.ERROR_INSTALL_FAILURE, "TEMPDOMAIN=DOESNOTEXIST"); | 156 | string logFile = productRestrictedDomain.InstallProduct(MSIExec.MSIExecReturnCode.ERROR_INSTALL_FAILURE, "TESTDOMAIN=DOESNOTEXIST"); |
152 | 157 | ||
153 | // Verify expected error message in the log file | 158 | // Verify expected error message in the log file |
154 | Assert.True(LogVerifier.MessageInLogFile(logFile, "CreateGroup: Error 0x8007054b: failed to find Domain DOESNOTEXIST.")); | 159 | Assert.True(LogVerifier.MessageInLogFile(logFile, "CreateGroup: Error 0x8007054b: failed to find Domain DOESNOTEXIST.")); |
@@ -156,12 +161,13 @@ namespace WixToolsetTest.MsiE2E | |||
156 | 161 | ||
157 | // Verify that a group can be created with a group comment | 162 | // Verify that a group can be created with a group comment |
158 | [RuntimeFact] | 163 | [RuntimeFact] |
159 | public void CanCreateNewGroupWithComment() | 164 | public void CanCreateNewNonDomainGroupWithComment() |
160 | { | 165 | { |
161 | var productNewUserWithComment = this.CreatePackageInstaller("ProductNewGroupWithComment"); | 166 | var productNewUserWithComment = this.CreatePackageInstaller("ProductNewGroupWithComment"); |
162 | 167 | ||
163 | productNewUserWithComment.InstallProduct(); | 168 | productNewUserWithComment.InstallProduct(MSIExec.MSIExecReturnCode.SUCCESS); |
164 | UserGroupVerifier.VerifyGroupComment(String.Empty, "testName1", "testComment1"); | 169 | UserGroupVerifier.VerifyGroupComment(String.Empty, "testName1", "testComment1"); |
170 | productNewUserWithComment.UninstallProduct(MSIExec.MSIExecReturnCode.SUCCESS); | ||
165 | 171 | ||
166 | // clean up | 172 | // clean up |
167 | UserGroupVerifier.DeleteLocalGroup("testName1"); | 173 | UserGroupVerifier.DeleteLocalGroup("testName1"); |
@@ -169,30 +175,33 @@ namespace WixToolsetTest.MsiE2E | |||
169 | 175 | ||
170 | // Verify that a comment can be added to an existing group | 176 | // Verify that a comment can be added to an existing group |
171 | [RuntimeFact] | 177 | [RuntimeFact] |
172 | public void CanAddCommentToExistingGroup() | 178 | public void CanAddCommentToExistingNonDomainGroup() |
173 | { | 179 | { |
174 | UserGroupVerifier.CreateLocalGroup("testName1"); | 180 | UserGroupVerifier.CreateLocalGroup("testName1"); |
175 | var productAddCommentToExistingUser = this.CreatePackageInstaller("ProductAddCommentToExistingGroup"); | 181 | var productAddCommentToExistingUser = this.CreatePackageInstaller("ProductAddCommentToExistingGroup"); |
176 | 182 | ||
177 | productAddCommentToExistingUser.InstallProduct(); | 183 | productAddCommentToExistingUser.InstallProduct(MSIExec.MSIExecReturnCode.SUCCESS); |
178 | 184 | ||
179 | UserGroupVerifier.VerifyGroupComment(String.Empty, "testName1", "testComment1"); | 185 | UserGroupVerifier.VerifyGroupComment(String.Empty, "testName1", "testComment1"); |
180 | 186 | ||
187 | productAddCommentToExistingUser.UninstallProduct(MSIExec.MSIExecReturnCode.SUCCESS); | ||
188 | |||
181 | // clean up | 189 | // clean up |
182 | UserGroupVerifier.DeleteLocalGroup("testName1"); | 190 | UserGroupVerifier.DeleteLocalGroup("testName1"); |
183 | } | 191 | } |
184 | 192 | ||
185 | // Verify that a comment can be repaired for a new group | 193 | // Verify that a comment can be repaired for a new group |
186 | [RuntimeFact] | 194 | [RuntimeFact] |
187 | public void CanRepairCommentOfNewGroup() | 195 | public void CanRepairCommentOfNewNonDomainGroup() |
188 | { | 196 | { |
189 | var productNewUserWithComment = this.CreatePackageInstaller("ProductNewGroupWithComment"); | 197 | var productNewUserWithComment = this.CreatePackageInstaller("ProductNewGroupWithComment"); |
190 | 198 | ||
191 | productNewUserWithComment.InstallProduct(); | 199 | productNewUserWithComment.InstallProduct(MSIExec.MSIExecReturnCode.SUCCESS); |
192 | UserGroupVerifier.SetGroupComment(String.Empty, "testName1", ""); | 200 | UserGroupVerifier.SetGroupComment(String.Empty, "testName1", ""); |
193 | 201 | ||
194 | productNewUserWithComment.RepairProduct(); | 202 | productNewUserWithComment.RepairProduct(MSIExec.MSIExecReturnCode.SUCCESS); |
195 | UserGroupVerifier.VerifyGroupComment(String.Empty, "testName1", "testComment1"); | 203 | UserGroupVerifier.VerifyGroupComment(String.Empty, "testName1", "testComment1"); |
204 | productNewUserWithComment.UninstallProduct(MSIExec.MSIExecReturnCode.SUCCESS); | ||
196 | 205 | ||
197 | // clean up | 206 | // clean up |
198 | UserGroupVerifier.DeleteLocalGroup("testName1"); | 207 | UserGroupVerifier.DeleteLocalGroup("testName1"); |
@@ -200,14 +209,15 @@ namespace WixToolsetTest.MsiE2E | |||
200 | 209 | ||
201 | // Verify that a comment can be changed for an existing group | 210 | // Verify that a comment can be changed for an existing group |
202 | [RuntimeFact] | 211 | [RuntimeFact] |
203 | public void CanChangeCommentOfExistingGroup() | 212 | public void CanChangeCommentOfExistingNonDomainGroup() |
204 | { | 213 | { |
205 | UserGroupVerifier.CreateLocalGroup("testName1"); | 214 | UserGroupVerifier.CreateLocalGroup("testName1"); |
206 | UserGroupVerifier.SetGroupComment(String.Empty, "testName1", "initialTestComment1"); | 215 | UserGroupVerifier.SetGroupComment(String.Empty, "testName1", "initialTestComment1"); |
207 | var productNewUserWithComment = this.CreatePackageInstaller("ProductNewGroupWithComment"); | 216 | var productNewUserWithComment = this.CreatePackageInstaller("ProductNewGroupWithComment"); |
208 | 217 | ||
209 | productNewUserWithComment.InstallProduct(); | 218 | productNewUserWithComment.InstallProduct(MSIExec.MSIExecReturnCode.SUCCESS); |
210 | UserGroupVerifier.VerifyGroupComment(String.Empty, "testName1", "testComment1"); | 219 | UserGroupVerifier.VerifyGroupComment(String.Empty, "testName1", "testComment1"); |
220 | productNewUserWithComment.UninstallProduct(MSIExec.MSIExecReturnCode.SUCCESS); | ||
211 | 221 | ||
212 | // clean up | 222 | // clean up |
213 | UserGroupVerifier.DeleteLocalGroup("testName1"); | 223 | UserGroupVerifier.DeleteLocalGroup("testName1"); |
@@ -215,7 +225,7 @@ namespace WixToolsetTest.MsiE2E | |||
215 | 225 | ||
216 | // Verify that a comment can be rolled back for an existing group | 226 | // Verify that a comment can be rolled back for an existing group |
217 | [RuntimeFact] | 227 | [RuntimeFact] |
218 | public void CanRollbackCommentOfExistingGroup() | 228 | public void CanRollbackCommentOfExistingNonDomainGroup() |
219 | { | 229 | { |
220 | UserGroupVerifier.CreateLocalGroup("testName1"); | 230 | UserGroupVerifier.CreateLocalGroup("testName1"); |
221 | UserGroupVerifier.SetGroupComment(String.Empty, "testName1", "initialTestComment1"); | 231 | UserGroupVerifier.SetGroupComment(String.Empty, "testName1", "initialTestComment1"); |
@@ -232,7 +242,7 @@ namespace WixToolsetTest.MsiE2E | |||
232 | 242 | ||
233 | // Verify that a comment can be deleted for an existing group | 243 | // Verify that a comment can be deleted for an existing group |
234 | [RuntimeFact] | 244 | [RuntimeFact] |
235 | public void CanDeleteCommentOfExistingGroup() | 245 | public void CanDeleteCommentOfExistingNonDomainGroup() |
236 | { | 246 | { |
237 | UserGroupVerifier.CreateLocalGroup("testName1"); | 247 | UserGroupVerifier.CreateLocalGroup("testName1"); |
238 | UserGroupVerifier.SetGroupComment(String.Empty, "testName1", "testComment1"); | 248 | UserGroupVerifier.SetGroupComment(String.Empty, "testName1", "testComment1"); |
@@ -243,29 +253,64 @@ namespace WixToolsetTest.MsiE2E | |||
243 | // Verify that comment was removed. | 253 | // Verify that comment was removed. |
244 | UserGroupVerifier.VerifyGroupComment(String.Empty, "testName1", ""); | 254 | UserGroupVerifier.VerifyGroupComment(String.Empty, "testName1", ""); |
245 | 255 | ||
256 | |||
257 | productCommentDelete.UninstallProduct(MSIExec.MSIExecReturnCode.SUCCESS); | ||
258 | |||
246 | // clean up | 259 | // clean up |
247 | UserGroupVerifier.DeleteLocalGroup("testName1"); | 260 | UserGroupVerifier.DeleteLocalGroup("testName1"); |
248 | } | 261 | } |
249 | 262 | ||
250 | // Verify that a comment can be deleted for an existing group | 263 | #endregion |
251 | [RuntimeFact] | 264 | |
252 | public void CanNestGroups() | 265 | #region Domain |
266 | // Verify that a domain group can be nested within a local group | ||
267 | [RuntimeFact(DomainRequired = true)] | ||
268 | public void CanNestDomainGroups() | ||
253 | { | 269 | { |
270 | var testDomain = System.Environment.UserDomainName; | ||
254 | var productNestedGroups = this.CreatePackageInstaller("ProductNestedGroups"); | 271 | var productNestedGroups = this.CreatePackageInstaller("ProductNestedGroups"); |
255 | 272 | ||
256 | productNestedGroups.InstallProduct(MSIExec.MSIExecReturnCode.SUCCESS); | 273 | productNestedGroups.InstallProduct(MSIExec.MSIExecReturnCode.SUCCESS, $"TESTDOMAIN={testDomain}"); |
257 | 274 | ||
258 | // Verify group nested membership | 275 | // Verify group nested membership |
259 | UserGroupVerifier.VerifyIsMemberOf(String.Empty, "Authenticated Users", new string[] { "testName1", "testName2" }); | 276 | UserGroupVerifier.VerifyIsMemberOf(testDomain, "Domain Users", new string[] { "testName1", "testName2" }); |
260 | UserGroupVerifier.VerifyIsMemberOf(String.Empty, "Everyone", new string[] { "testName1" }); | 277 | //UserGroupVerifier.VerifyIsMemberOf(String.Empty, "Everyone", new string[] { "testName1" }); |
278 | |||
279 | UserGroupVerifier.VerifyIsNotMemberOf(testDomain, "Domain Users", new string[] { "testName3" }); | ||
280 | //UserGroupVerifier.VerifyIsNotMemberOf(String.Empty, "Everyone", new string[] { "testName2", "testName3" }); | ||
261 | 281 | ||
262 | UserGroupVerifier.VerifyIsNotMemberOf(String.Empty, "Authenticated Users", new string[] { "testName3" }); | 282 | productNestedGroups.UninstallProduct(MSIExec.MSIExecReturnCode.SUCCESS, $"TESTDOMAIN={testDomain}"); |
263 | UserGroupVerifier.VerifyIsNotMemberOf(String.Empty, "Everyone", new string[] { "testName2", "testName3" }); | ||
264 | 283 | ||
265 | // clean up | 284 | // clean up |
266 | UserGroupVerifier.DeleteLocalGroup("testName1"); | 285 | UserGroupVerifier.DeleteLocalGroup("testName1"); |
267 | UserGroupVerifier.DeleteLocalGroup("testName2"); | 286 | UserGroupVerifier.DeleteLocalGroup("testName2"); |
268 | UserGroupVerifier.DeleteLocalGroup("testName3"); | 287 | UserGroupVerifier.DeleteLocalGroup("testName3"); |
269 | } | 288 | } |
289 | |||
290 | // Verify the rollback action reverts all Users changes. | ||
291 | [RuntimeFact(DomainRequired = true)] | ||
292 | public void CanRollbackDomainGroups() | ||
293 | { | ||
294 | var testDomain = System.Environment.UserDomainName; | ||
295 | UserGroupVerifier.CreateLocalGroup("testName3"); | ||
296 | var productFail = this.CreatePackageInstaller("ProductFail"); | ||
297 | |||
298 | // make sure the user accounts are deleted before we start | ||
299 | UserGroupVerifier.DeleteLocalGroup("testName1"); | ||
300 | UserGroupVerifier.DeleteLocalGroup("testName2"); | ||
301 | |||
302 | productFail.InstallProduct(MSIExec.MSIExecReturnCode.ERROR_INSTALL_FAILURE, $"TESTDOMAIN={testDomain}"); | ||
303 | |||
304 | // Verify added Users were removed on rollback. | ||
305 | Assert.False(UserGroupVerifier.GroupExists(String.Empty, "testName1"), String.Format("Group '{0}' was not removed on Rollback", "testName1")); | ||
306 | Assert.False(UserGroupVerifier.GroupExists(String.Empty, "testName2"), String.Format("Group '{0}' was not removed on Rollback", "testName2")); | ||
307 | |||
308 | // clean up | ||
309 | UserGroupVerifier.DeleteLocalGroup("testName1"); | ||
310 | UserGroupVerifier.DeleteLocalGroup("testName2"); | ||
311 | UserGroupVerifier.DeleteLocalGroup("testName3"); | ||
312 | } | ||
313 | |||
314 | #endregion | ||
270 | } | 315 | } |
271 | } | 316 | } |
diff --git a/src/test/msi/WixToolsetTest.MsiE2E/runtests.cmd b/src/test/msi/WixToolsetTest.MsiE2E/runtests.cmd index a2e67c89..ed1d50b6 100644 --- a/src/test/msi/WixToolsetTest.MsiE2E/runtests.cmd +++ b/src/test/msi/WixToolsetTest.MsiE2E/runtests.cmd | |||
@@ -1,2 +1,3 @@ | |||
1 | SET RuntimeTestsEnabled=true | 1 | SET RuntimeTestsEnabled=true |
2 | SET RuntimeDomainTestsEnabled=true | ||
2 | dotnet test WixToolsetTest.MsiE2E.dll -v normal --logger trx | 3 | dotnet test WixToolsetTest.MsiE2E.dll -v normal --logger trx |