diff options
author | Ron Martin <cpuwzd@comcast.net> | 2022-08-29 18:38:07 -0400 |
---|---|---|
committer | Rob Mensching <rob@firegiant.com> | 2022-10-21 19:08:08 -0700 |
commit | 08cdc6aa2b9dd0e273a3c3a22893616d26342a0e (patch) | |
tree | 1d0b9f7e21cec02abfda50b1a3c6d0c24308998b /src/test/msi/WixToolsetTest.MsiE2E/UtilExtensionUserTests.cs | |
parent | 40bd65379768f99ec28bffe2691ba43c78c9e9c4 (diff) | |
download | wix-08cdc6aa2b9dd0e273a3c3a22893616d26342a0e.tar.gz wix-08cdc6aa2b9dd0e273a3c3a22893616d26342a0e.tar.bz2 wix-08cdc6aa2b9dd0e273a3c3a22893616d26342a0e.zip |
Support add, modify and remove comments on user accounts
Fixes 5371
Diffstat (limited to '')
-rw-r--r-- | src/test/msi/WixToolsetTest.MsiE2E/UtilExtensionUserTests.cs | 186 |
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 | } |