1 package org.apache.fulcrum.security.model.test;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 import static org.junit.jupiter.api.Assertions.assertEquals;
22 import static org.junit.jupiter.api.Assertions.assertFalse;
23 import static org.junit.jupiter.api.Assertions.assertNotNull;
24 import static org.junit.jupiter.api.Assertions.assertNull;
25 import static org.junit.jupiter.api.Assertions.assertTrue;
26 import static org.junit.jupiter.api.Assertions.fail;
27
28 import org.apache.fulcrum.security.SecurityService;
29 import org.apache.fulcrum.security.UserManager;
30 import org.apache.fulcrum.security.acl.AccessControlList;
31 import org.apache.fulcrum.security.entity.User;
32 import org.apache.fulcrum.security.util.EntityExistsException;
33 import org.apache.fulcrum.security.util.PasswordMismatchException;
34 import org.apache.fulcrum.security.util.UnknownEntityException;
35 import org.apache.fulcrum.security.util.UserSet;
36 import org.apache.fulcrum.testcontainer.BaseUnit5Test;
37 import org.junit.jupiter.api.Test;
38
39
40
41
42
43 public abstract class AbstractUserManagerTest extends BaseUnit5Test
44 {
45 protected User user;
46 protected UserManager userManager;
47 protected SecurityService securityService;
48
49 @Test
50 public void testCheckExists() throws Exception
51 {
52 user = userManager.getUserInstance("Philip");
53 userManager.addUser(user, "bobo");
54 assertTrue(userManager.checkExists("philip"));
55 assertTrue(userManager.checkExists(user));
56 assertFalse(userManager.checkExists("ImaginaryFriend"));
57 user = userManager.getUserInstance("ImaginaryFriend");
58 assertFalse(userManager.checkExists(user));
59 }
60 @Test
61 public void testCheckExistsWithString() throws Exception
62 {
63 user = userManager.getUserInstance("Philip2");
64 userManager.addUser(user, "bobo");
65 assertTrue(userManager.checkExists("philip2"));
66 assertTrue(userManager.checkExists(user.getName()));
67 assertFalse(userManager.checkExists("ImaginaryFriend2"));
68 user = userManager.getUserInstance("ImaginaryFriend2");
69 assertFalse(userManager.checkExists(user.getName()));
70 }
71
72
73
74
75 @Test
76 public void testGetUserString() throws Exception
77 {
78 user = userManager.getUserInstance("QuietMike");
79 userManager.addUser(user, "bobo");
80 user = userManager.getUser("QuietMike");
81 assertNotNull(user);
82 }
83 @Test
84 public void testGetUserById() throws Exception
85 {
86 user = userManager.getUserInstance("QuietMike2");
87 userManager.addUser(user, "bobo");
88 User user2 = userManager.getUserById(user.getId());
89 assertEquals(user.getName(), user2.getName());
90 assertEquals(user.getId(), user2.getId());
91 }
92
93
94
95
96 @Test
97 public void testGetUserStringString() throws Exception
98 {
99 user = userManager.getUserInstance("Richard");
100 userManager.addUser(user, "va");
101 user = userManager.getUser("Richard", "va");
102 assertNotNull(user);
103 user = userManager.getUser("richard", "va");
104 assertNotNull(user);
105 try
106 {
107 user = userManager.getUser("richard", "VA");
108 fail("should have thrown PasswordMismatchException");
109 }
110 catch (PasswordMismatchException pme)
111 {
112
113 }
114 }
115 @Test
116 public void testGetAllUsers() throws Exception
117 {
118 int size = userManager.getAllUsers().size();
119 user = userManager.getUserInstance("Bob");
120 userManager.addUser(user, "");
121 UserSet userSet = userManager.getAllUsers();
122 assertEquals(size + 1, userSet.size());
123 }
124 @Test
125 public void testAuthenticate() throws Exception
126 {
127 user = userManager.getUserInstance("Kay");
128 userManager.addUser(user, "jc");
129 userManager.authenticate(user, "jc");
130 try
131 {
132 userManager.authenticate(user, "JC");
133 fail("should have thrown PasswordMismatchException");
134 }
135 catch (PasswordMismatchException pme)
136 {
137
138 }
139 }
140 @Test
141 public void testChangePassword() throws Exception
142 {
143 user = userManager.getUserInstance("Jonathan");
144 userManager.addUser(user, "jc");
145 try
146 {
147 userManager.changePassword(user, "WrongPWD", "JC");
148 fail("should have thrown PasswordMismatchException");
149 }
150 catch (PasswordMismatchException pme)
151 {
152
153 }
154 userManager.changePassword(user, "jc", "JC");
155 userManager.authenticate(user, "JC");
156 }
157 @Test
158 public void testForcePassword() throws Exception
159 {
160 user = userManager.getUserInstance("Connor");
161 userManager.addUser(user, "jc_subset");
162 userManager.forcePassword(user, "JC_SUBSET");
163 userManager.authenticate(user, "JC_SUBSET");
164 }
165
166
167
168
169
170 @Test
171 public void testGetUserInstance() throws Exception
172 {
173 user = userManager.getUserInstance();
174 assertNotNull(user);
175 assertTrue(user.getName() == null);
176 }
177
178
179
180
181
182
183 @Test
184 public void testGetUserInstanceString() throws Exception
185 {
186 user = userManager.getUserInstance("Philip");
187 assertEquals("philip", user.getName());
188 }
189
190
191
192
193
194
195
196 @Test
197 public void testSaveUser() throws Exception
198 {
199
200 user = userManager.getUserInstance("Kate");
201 userManager.addUser(user, "katiedid");
202 user = userManager.getUser(user.getName());
203
204 userManager.saveUser(user);
205 assertEquals("kate", userManager.getUser(user.getName()).getName());
206 }
207
208 public void testGetACL() throws Exception
209 {
210 user = userManager.getUserInstance("Tony");
211 userManager.addUser(user, "california");
212 AccessControlList acl = userManager.getACL(user);
213 assertNotNull(acl);
214 }
215
216 public void testRemoveUser() throws Exception
217 {
218 user = userManager.getUserInstance("Rick");
219 userManager.addUser(user, "nb");
220 userManager.removeUser(user);
221 try
222 {
223 User user2 = userManager.getUser(user.getName());
224 fail("Should have thrown UEE");
225 }
226 catch (UnknownEntityException uee)
227 {
228
229 }
230 }
231 @Test
232 public void testAddUser() throws Exception
233 {
234 user = userManager.getUserInstance("Joe1");
235 assertNull(user.getId());
236 userManager.addUser(user, "mc");
237 user = userManager.getUserInstance("Joe2");
238 assertNull(user.getId());
239 userManager.addUser(user, "mc");
240 assertNotNull(user.getId());
241 assertNotNull(userManager.getUser(user.getName()));
242 }
243
244
245
246
247 public void testAddUserTwiceFails() throws Exception
248 {
249 user = userManager.getUserInstance("EATLUNCH");
250 userManager.addUser(user, "bob");
251 assertTrue(userManager.checkExists(user.getName()));
252 User user2 = userManager.getUserInstance("EATLUNCH");
253 try
254 {
255 userManager.addUser(user2, "bob");
256 }
257 catch (EntityExistsException uee)
258 {
259
260 }
261 try
262 {
263 userManager.addUser(user2, "differentpassword");
264 }
265 catch (EntityExistsException uee)
266 {
267
268 }
269 }
270 @Test
271 public void testCheckUserCaseSensitiveExists() throws Exception
272 {
273 user = userManager.getUserInstance("borrisJohnson");
274 userManager.addUser(user, "bob");
275
276 assertTrue(userManager.checkExists("borrisJohnson"));
277 }
278
279 }