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 }