View Javadoc
1   package org.itracker.services.authentication;
2   
3   import org.itracker.AbstractDependencyInjectionTest;
4   import org.itracker.PasswordException;
5   import org.itracker.model.User;
6   import org.itracker.model.util.UserUtilities;
7   import org.itracker.services.AbstractServicesIntegrationTest;
8   import org.itracker.services.ConfigurationService;
9   import org.itracker.services.UserService;
10  import org.junit.Test;
11  
12  import java.util.HashMap;
13  import java.util.List;
14  import java.util.Map;
15  import static org.itracker.Assert.*;
16  
17  public class AuthenticatorForProjectPermissionIT extends AbstractServicesIntegrationTest {
18  
19      private UserService userService;
20      private ConfigurationService configurationService;
21      private DefaultAuthenticator authenticator;
22  
23      @Test
24      public void testSuperUser() throws PasswordException {
25  
26          int[] permissionTypes = new int[]{
27                  UserUtilities.PERMISSION_USER_ADMIN
28          };
29  
30          List<User> users = authenticator.getUsersWithProjectPermission(2, permissionTypes, false, false, 1);
31  
32          assertEquals(1, users.size());
33  
34          User superUser = users.get(0);
35  
36          assertEquals("admin_test1", superUser.getLogin());
37          assertEquals(UserUtilities.encryptPassword("admin_test1"), superUser.getPassword());
38          assertEquals("admin firstname", superUser.getFirstName());
39          assertEquals("admin lastname", superUser.getLastName());
40          assertEquals("email@email.email", superUser.getEmail());
41          assertTrue(superUser.isSuperUser());
42  
43      }
44  
45      @Test
46      public void testProjectAdmin() throws PasswordException {
47  
48          int[] permissionTypes = new int[]{
49                  UserUtilities.PERMISSION_PRODUCT_ADMIN
50          };
51  
52          List<User> users = authenticator.getUsersWithProjectPermission(2, permissionTypes, false, false, 1);
53  
54          assertEquals(2, users.size());
55  
56          User user1 = users.get(0);
57          assertEquals("admin_test1", user1.getLogin());
58          assertEquals(UserUtilities.encryptPassword((String) "admin_test1"), user1.getPassword());
59          assertEquals("admin firstname", user1.getFirstName());
60          assertEquals("admin lastname", user1.getLastName());
61          assertEquals("email@email.email", user1.getEmail());
62          assertTrue(user1.isSuperUser());
63  
64          User user2 = users.get(1);
65          assertEquals("user_test1", user2.getLogin());
66          assertEquals(UserUtilities.encryptPassword((String) "user_test1"), user2.getPassword());
67          assertEquals("user firstname", user2.getFirstName());
68          assertEquals("user lastname", user2.getLastName());
69          assertEquals("email@email.email", user2.getEmail());
70  
71  
72      }
73  
74      @Test
75      public void testAllUserWithAnyPermissions() {
76  
77          int[] permissionTypes = new int[]{
78                  UserUtilities.PERMISSION_USER_ADMIN,
79                  UserUtilities.PERMISSION_PRODUCT_ADMIN,
80                  UserUtilities.PERMISSION_CREATE,
81                  UserUtilities.PERMISSION_EDIT,
82                  UserUtilities.PERMISSION_CLOSE,
83                  UserUtilities.PERMISSION_ASSIGN_SELF,
84                  UserUtilities.PERMISSION_ASSIGN_OTHERS,
85                  UserUtilities.PERMISSION_VIEW_ALL,
86                  UserUtilities.PERMISSION_VIEW_USERS,
87                  UserUtilities.PERMISSION_EDIT_USERS,
88                  UserUtilities.PERMISSION_UNASSIGN_SELF,
89                  UserUtilities.PERMISSION_ASSIGNABLE,
90                  UserUtilities.PERMISSION_CREATE_OTHERS,
91                  UserUtilities.PERMISSION_EDIT_FULL
92          };
93  
94          List<User> users = authenticator.getUsersWithProjectPermission(2, permissionTypes, false, false, 1);
95  
96          assertEquals(4, users.size());
97  
98          assertContainsUser(userService.getUser(2), users);
99          assertContainsUser(userService.getUser(3), users);
100         assertContainsUser(userService.getUser(4), users);
101         assertContainsUser(userService.getUser(5), users);
102 
103     }
104 
105     @Test
106     public void testRequireAll() {
107 
108         int[] permissionTypes = new int[]{
109                 UserUtilities.PERMISSION_CREATE,
110                 UserUtilities.PERMISSION_EDIT,
111                 UserUtilities.PERMISSION_CLOSE,
112                 UserUtilities.PERMISSION_ASSIGN_SELF,
113                 UserUtilities.PERMISSION_ASSIGN_OTHERS,
114                 UserUtilities.PERMISSION_VIEW_ALL,
115                 UserUtilities.PERMISSION_VIEW_USERS,
116                 UserUtilities.PERMISSION_CREATE_OTHERS
117         };
118 
119         List<User> users = authenticator.getUsersWithProjectPermission(2, permissionTypes, true, false, 1);
120 
121         assertEquals(3, users.size());
122 
123         assertContainsUser(userService.getUser(2), users);
124         assertContainsUser(userService.getUser(4), users);
125         assertContainsUser(userService.getUser(5), users);
126 
127     }
128 
129     @Test
130     public void testActiveOnly() {
131 
132         int[] permissionTypes = new int[]{
133                 UserUtilities.PERMISSION_CREATE,
134                 UserUtilities.PERMISSION_EDIT,
135                 UserUtilities.PERMISSION_CLOSE,
136                 UserUtilities.PERMISSION_ASSIGN_SELF,
137                 UserUtilities.PERMISSION_ASSIGN_OTHERS,
138                 UserUtilities.PERMISSION_VIEW_ALL,
139                 UserUtilities.PERMISSION_VIEW_USERS,
140                 UserUtilities.PERMISSION_CREATE_OTHERS
141         };
142 
143         List<User> users = authenticator.getUsersWithProjectPermission(2, permissionTypes, false, true, 1);
144 
145         assertEquals(3, users.size());
146 
147         assertContainsUser(userService.getUser(2), users);
148         assertContainsUser(userService.getUser(3), users);
149         assertContainsUser(userService.getUser(4), users);
150 
151     }
152 
153     private void assertContainsUser(User user, List<User> users) {
154 
155         if (!users.contains(user)) {
156             fail("User not found in the list.");
157         }
158 
159     }
160 
161     @Override
162     public void onSetUp() throws Exception {
163 
164         super.onSetUp();
165 
166         userService = (UserService) applicationContext.getBean("userService");
167         configurationService = (ConfigurationService) applicationContext.getBean("configurationService");
168 
169         initializeAuthenticator();
170 
171     }
172 
173     private void initializeAuthenticator() {
174 
175         Map<String, Object> servicesMap = new HashMap<String, Object>();
176 
177         servicesMap.put("userService", userService);
178         servicesMap.put("configurationService", configurationService);
179 
180         authenticator = new DefaultAuthenticator();
181         authenticator.initialize(servicesMap);
182 
183     }
184 
185     protected String[] getDataSetFiles() {
186         return new String[]{
187                 "dataset/userpreferencesbean_dataset.xml",
188                 "dataset/projectbean_dataset.xml",
189                 "dataset/userbean_dataset.xml",
190                 "dataset/permissionbean_dataset.xml"
191         };
192     }
193 
194 }