aboutsummaryrefslogtreecommitdiff
path: root/src/test/msi/WixToolsetTest.MsiE2E/UtilExtensionUserTests.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/msi/WixToolsetTest.MsiE2E/UtilExtensionUserTests.cs')
-rw-r--r--src/test/msi/WixToolsetTest.MsiE2E/UtilExtensionUserTests.cs186
1 files changed, 151 insertions, 35 deletions
diff --git a/src/test/msi/WixToolsetTest.MsiE2E/UtilExtensionUserTests.cs b/src/test/msi/WixToolsetTest.MsiE2E/UtilExtensionUserTests.cs
index fcdfde52..30bc53e8 100644
--- a/src/test/msi/WixToolsetTest.MsiE2E/UtilExtensionUserTests.cs
+++ b/src/test/msi/WixToolsetTest.MsiE2E/UtilExtensionUserTests.cs
@@ -11,21 +11,14 @@ namespace WixToolsetTest.MsiE2E
11 { 11 {
12 public UtilExtensionUserTests(ITestOutputHelper testOutputHelper) : base(testOutputHelper) { } 12 public UtilExtensionUserTests(ITestOutputHelper testOutputHelper) : base(testOutputHelper) { }
13 13
14 const string TempDomain = "USERDOMAIN";
15 const string TempUsername = "USERNAME";
16
17 // Verify that the users specified in the authoring are created as expected. 14 // Verify that the users specified in the authoring are created as expected.
18 [RuntimeFact] 15 [RuntimeFact]
19 public void CanInstallAndUninstallUsers() 16 public void CanInstallAndUninstallUsers()
20 { 17 {
21 var arguments = new string[] 18 UserVerifier.CreateLocalUser("testName3", "test123!@#");
22 {
23 $"TEMPDOMAIN={Environment.GetEnvironmentVariable(TempDomain)}",
24 $"TEMPUSERNAME={Environment.GetEnvironmentVariable(TempUsername)}",
25 };
26 var productA = this.CreatePackageInstaller("ProductA"); 19 var productA = this.CreatePackageInstaller("ProductA");
27 20
28 productA.InstallProduct(MSIExec.MSIExecReturnCode.SUCCESS, arguments); 21 productA.InstallProduct(MSIExec.MSIExecReturnCode.SUCCESS);
29 22
30 // Validate New User Information. 23 // Validate New User Information.
31 UserVerifier.VerifyUserInformation(String.Empty, "testName1", true, false, false); 24 UserVerifier.VerifyUserInformation(String.Empty, "testName1", true, false, false);
@@ -34,62 +27,90 @@ namespace WixToolsetTest.MsiE2E
34 UserVerifier.VerifyUserInformation(String.Empty, "testName2", true, true, true); 27 UserVerifier.VerifyUserInformation(String.Empty, "testName2", true, true, true);
35 UserVerifier.VerifyUserIsMemberOf(String.Empty, "testName2", "Power Users"); 28 UserVerifier.VerifyUserIsMemberOf(String.Empty, "testName2", "Power Users");
36 29
37 UserVerifier.VerifyUserIsMemberOf(Environment.GetEnvironmentVariable(TempDomain), Environment.GetEnvironmentVariable(TempUsername), "Power Users"); 30 UserVerifier.VerifyUserIsMemberOf("", "testName3", "Power Users");
38 31
39 productA.UninstallProduct(MSIExec.MSIExecReturnCode.SUCCESS, arguments); 32 productA.UninstallProduct(MSIExec.MSIExecReturnCode.SUCCESS);
40 33
41 // Verify Users marked as RemoveOnUninstall were removed. 34 // Verify Users marked as RemoveOnUninstall were removed.
42 Assert.False(UserVerifier.UserExists(String.Empty, "testName1"), String.Format("User '{0}' was not removed on Uninstall", "testName1")); 35 Assert.False(UserVerifier.UserExists(String.Empty, "testName1"), String.Format("User '{0}' was not removed on Uninstall", "testName1"));
43 Assert.True(UserVerifier.UserExists(String.Empty, "testName2"), String.Format("User '{0}' was removed on Uninstall", "testName2")); 36 Assert.True(UserVerifier.UserExists(String.Empty, "testName2"), String.Format("User '{0}' was removed on Uninstall", "testName2"));
44 37
38 // Verify that user added to power users group is removed on uninstall.
39 UserVerifier.VerifyUserIsNotMemberOf("", "testName3", "Power Users");
40
45 // clean up 41 // clean up
42 UserVerifier.DeleteLocalUser("testName1");
46 UserVerifier.DeleteLocalUser("testName2"); 43 UserVerifier.DeleteLocalUser("testName2");
47 44 UserVerifier.DeleteLocalUser("testName3");
48 UserVerifier.VerifyUserIsNotMemberOf(Environment.GetEnvironmentVariable(TempDomain), Environment.GetEnvironmentVariable(TempUsername), "Power Users");
49 } 45 }
50 46
51 // Verify the rollback action reverts all Users changes. 47 // Verify the rollback action reverts all Users changes.
52 [RuntimeFact] 48 [RuntimeFact]
53 public void CanRollbackUsers() 49 public void CanRollbackUsers()
54 { 50 {
55 var arguments = new string[] 51 UserVerifier.CreateLocalUser("testName3", "test123!@#");
56 {
57 $"TEMPDOMAIN={Environment.GetEnvironmentVariable(TempDomain)}",
58 $"TEMPUSERNAME={Environment.GetEnvironmentVariable(TempUsername)}",
59 };
60 var productFail = this.CreatePackageInstaller("ProductFail"); 52 var productFail = this.CreatePackageInstaller("ProductFail");
61 53
62 // make sure the user accounts are deleted before we start 54 // make sure the user accounts are deleted before we start
63 UserVerifier.DeleteLocalUser("testName1"); 55 UserVerifier.DeleteLocalUser("testName1");
64 UserVerifier.DeleteLocalUser("testName2"); 56 UserVerifier.DeleteLocalUser("testName2");
65 UserVerifier.VerifyUserIsNotMemberOf(Environment.GetEnvironmentVariable(TempDomain), Environment.GetEnvironmentVariable(TempUsername), "Power Users");
66 57
67 productFail.InstallProduct(MSIExec.MSIExecReturnCode.ERROR_INSTALL_FAILURE, arguments); 58 productFail.InstallProduct(MSIExec.MSIExecReturnCode.ERROR_INSTALL_FAILURE);
68 59
69 // Verify Users marked as RemoveOnUninstall were removed. 60 // Verify added Users were removed on rollback.
70 Assert.False(UserVerifier.UserExists(String.Empty, "testName1"), String.Format("User '{0}' was not removed on Rollback", "testName1")); 61 Assert.False(UserVerifier.UserExists(String.Empty, "testName1"), String.Format("User '{0}' was not removed on Rollback", "testName1"));
71 Assert.False(UserVerifier.UserExists(String.Empty, "testName2"), String.Format("User '{0}' was not removed on Rollback", "testName2")); 62 Assert.False(UserVerifier.UserExists(String.Empty, "testName2"), String.Format("User '{0}' was not removed on Rollback", "testName2"));
72 63
73 UserVerifier.VerifyUserIsNotMemberOf(Environment.GetEnvironmentVariable(TempDomain), Environment.GetEnvironmentVariable(TempUsername), "Power Users"); 64 // Verify that user added to power users group is removed from power users group on rollback.
65 UserVerifier.VerifyUserIsNotMemberOf("", "testName3", "Power Users");
66
67 // clean up
68 UserVerifier.DeleteLocalUser("testName1");
69 UserVerifier.DeleteLocalUser("testName2");
70 UserVerifier.DeleteLocalUser("testName3");
74 } 71 }
75 72
76 // Verify that the users specified in the authoring are created as expected on repair. 73
77 [RuntimeFact(Skip = "Test demonstrates failure")] 74 // Verify that command-line parameters aer not blocked by repair switches.
78 public void CanRepairUsers() 75 // Original code signalled repair mode by using "-f ", which silently
76 // terminated the command-line parsing, ignoring any parameters that followed.
77 [RuntimeFact()]
78 public void CanRepairUsersWithCommandLineParameters()
79 { 79 {
80 var arguments = new string[] 80 var arguments = new string[]
81 { 81 {
82 $"TEMPDOMAIN={Environment.GetEnvironmentVariable(TempDomain)}", 82 "TESTPARAMETER1=testName1",
83 $"TEMPUSERNAME={Environment.GetEnvironmentVariable(TempUsername)}",
84 }; 83 };
84 var productWithCommandLineParameters = this.CreatePackageInstaller("ProductWithCommandLineParameters");
85
86 // Make sure that the user doesn't exist when we start the test.
87 UserVerifier.DeleteLocalUser("testName1");
88
89 // Install
90 productWithCommandLineParameters.InstallProduct(MSIExec.MSIExecReturnCode.SUCCESS, arguments);
91
92 // Repair
93 productWithCommandLineParameters.RepairProduct(MSIExec.MSIExecReturnCode.SUCCESS, arguments);
94
95 // Clean up
96 UserVerifier.DeleteLocalUser("testName1");
97 }
98
99
100 // Verify that the users specified in the authoring are created as expected on repair.
101 [RuntimeFact()]
102 public void CanRepairUsers()
103 {
104 UserVerifier.CreateLocalUser("testName3", "test123!@#");
85 var productA = this.CreatePackageInstaller("ProductA"); 105 var productA = this.CreatePackageInstaller("ProductA");
86 106
87 productA.InstallProduct(MSIExec.MSIExecReturnCode.SUCCESS, arguments); 107 productA.InstallProduct(MSIExec.MSIExecReturnCode.SUCCESS);
88 108
109 // Validate New User Information.
89 UserVerifier.DeleteLocalUser("testName1"); 110 UserVerifier.DeleteLocalUser("testName1");
90 UserVerifier.SetUserInformation(String.Empty, "testName2", true, false, false); 111 UserVerifier.SetUserInformation(String.Empty, "testName2", true, false, false);
91 112
92 productA.RepairProduct(MSIExec.MSIExecReturnCode.SUCCESS, arguments); 113 productA.RepairProduct(MSIExec.MSIExecReturnCode.SUCCESS);
93 114
94 // Validate New User Information. 115 // Validate New User Information.
95 UserVerifier.VerifyUserInformation(String.Empty, "testName1", true, false, false); 116 UserVerifier.VerifyUserInformation(String.Empty, "testName1", true, false, false);
@@ -98,21 +119,24 @@ namespace WixToolsetTest.MsiE2E
98 UserVerifier.VerifyUserInformation(String.Empty, "testName2", true, true, true); 119 UserVerifier.VerifyUserInformation(String.Empty, "testName2", true, true, true);
99 UserVerifier.VerifyUserIsMemberOf(String.Empty, "testName2", "Power Users"); 120 UserVerifier.VerifyUserIsMemberOf(String.Empty, "testName2", "Power Users");
100 121
101 UserVerifier.VerifyUserIsMemberOf(Environment.GetEnvironmentVariable(TempDomain), Environment.GetEnvironmentVariable(TempUsername), "Power Users"); 122 UserVerifier.VerifyUserIsMemberOf("", "testName3", "Power Users");
102 123
103 productA.UninstallProduct(MSIExec.MSIExecReturnCode.SUCCESS, arguments); 124 productA.UninstallProduct(MSIExec.MSIExecReturnCode.SUCCESS);
104 125
105 // Verify Users marked as RemoveOnUninstall were removed. 126 // Verify Users marked as RemoveOnUninstall were removed.
106 Assert.False(UserVerifier.UserExists(String.Empty, "testName1"), String.Format("User '{0}' was not removed on Uninstall", "testName1")); 127 Assert.False(UserVerifier.UserExists(String.Empty, "testName1"), String.Format("User '{0}' was not removed on Uninstall", "testName1"));
107 Assert.True(UserVerifier.UserExists(String.Empty, "testName2"), String.Format("User '{0}' was removed on Uninstall", "testName2")); 128 Assert.True(UserVerifier.UserExists(String.Empty, "testName2"), String.Format("User '{0}' was removed on Uninstall", "testName2"));
108 129
130 // Verify that user added to power users group is removed on uninstall.
131 UserVerifier.VerifyUserIsNotMemberOf("", "testName3", "Power Users");
132
109 // clean up 133 // clean up
134 UserVerifier.DeleteLocalUser("testName1");
110 UserVerifier.DeleteLocalUser("testName2"); 135 UserVerifier.DeleteLocalUser("testName2");
111 136 UserVerifier.DeleteLocalUser("testName3");
112 UserVerifier.VerifyUserIsNotMemberOf(Environment.GetEnvironmentVariable(TempDomain), Environment.GetEnvironmentVariable(TempUsername), "Power Users");
113 } 137 }
114 138
115 // Verify that Installation fails if FailIfExisits is set. 139 // Verify that Installation fails if FailIfExists is set.
116 [RuntimeFact] 140 [RuntimeFact]
117 public void FailsIfUserExists() 141 public void FailsIfUserExists()
118 { 142 {
@@ -135,7 +159,6 @@ namespace WixToolsetTest.MsiE2E
135 // clean up 159 // clean up
136 UserVerifier.DeleteLocalUser("existinguser"); 160 UserVerifier.DeleteLocalUser("existinguser");
137 } 161 }
138
139 } 162 }
140 163
141 // Verify that a user cannot be created on a domain on which you dont have create user permission. 164 // Verify that a user cannot be created on a domain on which you dont have create user permission.
@@ -158,5 +181,98 @@ namespace WixToolsetTest.MsiE2E
158 181
159 productNonVitalGroup.InstallProduct(); 182 productNonVitalGroup.InstallProduct();
160 } 183 }
184
185 // Verify that a user can be created with a user comment
186 [RuntimeFact]
187 public void CanCreateNewUserWithComment()
188 {
189 var productNewUserWithComment = this.CreatePackageInstaller("ProductNewUserWithComment");
190
191 productNewUserWithComment.InstallProduct();
192 UserVerifier.VerifyUserComment(String.Empty, "testName1", "testComment1");
193
194 // clean up
195 UserVerifier.DeleteLocalUser("testName1");
196 }
197
198 // Verify that a comment can be added to an existing user
199 [RuntimeFact]
200 public void CanAddCommentToExistingUser()
201 {
202 UserVerifier.CreateLocalUser("testName1", "test123!@#");
203 var productAddCommentToExistingUser = this.CreatePackageInstaller("ProductAddCommentToExistingUser");
204
205 productAddCommentToExistingUser.InstallProduct();
206
207 UserVerifier.VerifyUserComment(String.Empty, "testName1", "testComment1");
208
209 // clean up
210 UserVerifier.DeleteLocalUser("testName1");
211 }
212
213 // Verify that a comment can be repaired for a new user
214 [RuntimeFact]
215 public void CanRepairCommentOfNewUser()
216 {
217 var productNewUserWithComment = this.CreatePackageInstaller("ProductNewUserWithComment");
218
219 productNewUserWithComment.InstallProduct();
220 UserVerifier.SetUserComment(String.Empty, "testName1", "");
221
222 productNewUserWithComment.RepairProduct();
223 UserVerifier.VerifyUserComment(String.Empty, "testName1", "testComment1");
224
225 // clean up
226 UserVerifier.DeleteLocalUser("testName1");
227 }
228
229 // Verify that a comment can be changed for an existing user
230 [RuntimeFact]
231 public void CanChangeCommentOfExistingUser()
232 {
233 UserVerifier.CreateLocalUser("testName1", "test123!@#");
234 UserVerifier.SetUserComment(String.Empty, "testName1", "initialTestComment1");
235 var productNewUserWithComment = this.CreatePackageInstaller("ProductNewUserWithComment");
236
237 productNewUserWithComment.InstallProduct();
238 UserVerifier.VerifyUserComment(String.Empty, "testName1", "testComment1");
239
240 // clean up
241 UserVerifier.DeleteLocalUser("testName1");
242 }
243
244 // Verify that a comment can be rolled back for an existing user
245 [RuntimeFact]
246 public void CanRollbackCommentOfExistingUser()
247 {
248 UserVerifier.CreateLocalUser("testName1", "test123!@#");
249 UserVerifier.SetUserComment(String.Empty, "testName1", "initialTestComment1");
250 var productCommentFail = this.CreatePackageInstaller("ProductCommentFail");
251
252 productCommentFail.InstallProduct(MSIExec.MSIExecReturnCode.ERROR_INSTALL_FAILURE);
253
254 // Verify that comment change was rolled back.
255 UserVerifier.VerifyUserComment(String.Empty, "testName1", "initialTestComment1");
256
257 // clean up
258 UserVerifier.DeleteLocalUser("testName1");
259 }
260
261 // Verify that a comment can be deleted for an existing user
262 [RuntimeFact]
263 public void CanDeleteCommentOfExistingUser()
264 {
265 UserVerifier.CreateLocalUser("testName1", "test123!@#");
266 UserVerifier.SetUserComment(String.Empty, "testName1", "testComment1");
267 var productCommentDelete = this.CreatePackageInstaller("ProductCommentDelete");
268
269 productCommentDelete.InstallProduct(MSIExec.MSIExecReturnCode.SUCCESS);
270
271 // Verify that comment was removed.
272 UserVerifier.VerifyUserComment(String.Empty, "testName1", "");
273
274 // clean up
275 UserVerifier.DeleteLocalUser("testName1");
276 }
161 } 277 }
162} 278}