View Javadoc
1   package org.apache.fulcrum.security.model.test;
2   
3   /*
4    * Licensed to the Apache Software Foundation (ASF) under one
5    * or more contributor license agreements.  See the NOTICE file
6    * distributed with this work for additional information
7    * regarding copyright ownership.  The ASF licenses this file
8    * to you under the Apache License, Version 2.0 (the
9    * "License"); you may not use this file except in compliance
10   * with the License.  You may obtain a copy of the License at
11   *
12   *   http://www.apache.org/licenses/LICENSE-2.0
13   *
14   * Unless required by applicable law or agreed to in writing,
15   * software distributed under the License is distributed on an
16   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17   * KIND, either express or implied.  See the License for the
18   * specific language governing permissions and limitations
19   * under the License.
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   * @author Eric Pugh
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       * Class to test for User retrieve(String)
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       * Class to test for User retrieve(String, String)
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             // good
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             // good
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             // good
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      * Class to test for User getUserInstance()
168      * @throws Exception generic exception
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      * Class to test for User getUserInstance(String)
180      * 
181      * @throws Exception generic exception
182      */
183     @Test
184     public void testGetUserInstanceString() throws Exception
185     {
186         user = userManager.getUserInstance("Philip");
187         assertEquals("philip", user.getName());
188     }
189 
190     /**
191      * Need to figure out if save is something we want.. right now it just bloes
192      * up if you actually cahnge anything.
193      * 
194      * @throws Exception generic exception
195      */
196     @Test
197     public void testSaveUser() throws Exception
198     {
199     	// TODO figure out what to do here
200         user = userManager.getUserInstance("Kate");
201         userManager.addUser(user, "katiedid");
202         user = userManager.getUser(user.getName());
203         // user.setName("Katherine");
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             // good
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      * Class to test for boolean checkExists(string)
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             // good
260         }
261         try
262         {
263             userManager.addUser(user2, "differentpassword");
264         }
265         catch (EntityExistsException uee)
266         {
267             // good
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 }