2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ============LICENSE_END=========================================================
21 package org.openecomp.sdc.be.user;
23 import com.google.common.collect.Lists;
24 import fj.data.Either;
25 import org.apache.commons.lang3.StringUtils;
26 import org.apache.tinkerpop.gremlin.structure.Edge;
27 import org.apache.tinkerpop.gremlin.structure.util.detached.DetachedEdge;
28 import org.javatuples.Pair;
29 import org.junit.Before;
30 import org.junit.Test;
31 import org.junit.runner.RunWith;
32 import org.mockito.InjectMocks;
33 import org.mockito.Mock;
34 import org.mockito.Mockito;
35 import org.mockito.junit.MockitoJUnitRunner;
36 import org.openecomp.sdc.be.components.impl.ResponseFormatManager;
37 import org.openecomp.sdc.be.components.impl.exceptions.ByActionStatusComponentException;
38 import org.openecomp.sdc.be.components.impl.exceptions.ComponentException;
39 import org.openecomp.sdc.be.config.ConfigurationManager;
40 import org.openecomp.sdc.be.dao.api.ActionStatus;
41 import org.openecomp.sdc.be.dao.utils.UserStatusEnum;
42 import org.openecomp.sdc.be.facade.operations.UserOperation;
43 import org.openecomp.sdc.be.impl.ComponentsUtils;
44 import org.openecomp.sdc.be.model.LifecycleStateEnum;
45 import org.openecomp.sdc.be.model.User;
46 import org.openecomp.sdc.be.model.operations.StorageException;
47 import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
48 import org.openecomp.sdc.be.model.operations.impl.UserAdminOperation;
49 import org.openecomp.sdc.common.api.ConfigurationSource;
50 import org.openecomp.sdc.common.api.UserRoleEnum;
51 import org.openecomp.sdc.common.datastructure.UserContext;
52 import org.openecomp.sdc.common.impl.ExternalConfiguration;
53 import org.openecomp.sdc.common.impl.FSConfigurationSource;
54 import org.openecomp.sdc.common.util.ThreadLocalsHolder;
56 import java.util.ArrayList;
57 import java.util.HashMap;
58 import java.util.HashSet;
59 import java.util.LinkedList;
60 import java.util.List;
63 import static org.assertj.core.api.Assertions.assertThat;
64 import static org.junit.Assert.assertEquals;
65 import static org.junit.Assert.assertTrue;
66 import static org.mockito.ArgumentMatchers.any;
67 import static org.mockito.ArgumentMatchers.anyString;
68 import static org.mockito.ArgumentMatchers.eq;
69 import static org.mockito.Mockito.doThrow;
70 import static org.mockito.Mockito.never;
71 import static org.mockito.Mockito.verify;
72 import static org.mockito.Mockito.when;
74 @RunWith(MockitoJUnitRunner.class)
75 public class UserBusinessLogicTest {
77 private static final String MOCK_MAIL = "mock@mock.mock";
78 private static final String MOCK_MODIFIER = "mockModif";
79 private static final String MOCK_NEW_USER = "mockNewUs";
81 private UserAdminOperation userAdminOperation;
83 private ComponentsUtils componentsUtils;
85 private UserOperation facadeUserOperation;
89 private User userNull;
91 private UserBusinessLogic testSubject;
93 static ResponseFormatManager responseFormatManager = new ResponseFormatManager();
94 private static ConfigurationSource configurationSource = new FSConfigurationSource(ExternalConfiguration.getChangeListener(), "src/test/resources/config/catalog-be");
95 static ConfigurationManager configurationManager = new ConfigurationManager(configurationSource);
99 doThrow(new ByActionStatusComponentException(ActionStatus.GENERAL_ERROR)).when(componentsUtils).auditAdminUserActionAndThrowException(any(), any(), any(), any(), any(), any());
102 @Test(expected = ComponentException.class)
103 public void testCreateUserErrorGetUser() {
104 User newUser = new User();
105 when(userAdminOperation.getUserData(Mockito.anyString(), Mockito.anyBoolean())).thenReturn(Either.right(ActionStatus.USER_NOT_FOUND));
107 testSubject.createUser("mock", newUser);
109 verify(facadeUserOperation, never()).updateUserCache(any(UserOperationEnum.class), anyString(), anyString());
112 // @Test(expected = ComponentException.class)
113 // public void testGetUserContextNull() {
114 // testSubject.getUser("userId");
117 @Test(expected = ComponentException.class)
118 public void testGetUserContextIdEmpty() {
119 UserContext userContext = new UserContext(null);
120 ThreadLocalsHolder.setUserContext(userContext);
122 testSubject.getUser(null);
126 public void testGetUserContext() {
127 UserContext originalUserContext = ThreadLocalsHolder.getUserContext();
128 String userId = "userId";
129 Set<String> userRoles = new HashSet<>();
130 userRoles.add(Role.DESIGNER.name());
131 UserContext userContext = new UserContext(userId, userRoles, "test" ,"User");
133 User user = new User();
134 user.setUserId(userId);
135 user.setRole(Role.DESIGNER.name());
136 user.setStatus(UserStatusEnum.ACTIVE);
137 user.setFirstName("test");
138 user.setLastName("User");
140 getAndValidateUser(originalUserContext, userId, userContext, user);
143 private void getAndValidateUser(UserContext originalUserContext, String userId, UserContext userContext, User user) {
145 ThreadLocalsHolder.setUserContext(userContext);
146 User convertedUser = testSubject.getUser(userId);
147 assertThat(convertedUser).isEqualTo(user);
150 ThreadLocalsHolder.setUserContext(originalUserContext);
155 public void testGetUserContextInActive() {
156 UserContext originalUserContext = ThreadLocalsHolder.getUserContext();
157 String userId = "userId";
158 //Set<String> userRoles = new HashSet<>();
159 //userRoles.add(Role.DESIGNER.name());
160 UserContext userContext = new UserContext(userId, null, "test" ,"User");
162 User user = new User();
163 user.setUserId(userId);
165 user.setStatus(UserStatusEnum.INACTIVE);
166 user.setFirstName("test");
167 user.setLastName("User");
169 getAndValidateUser(originalUserContext, userId, userContext, user);
172 @Test(expected = ComponentException.class)
173 public void testCreateUserErrorUserNotAdmin() {
174 User newUser = new User();
175 User userFromDb = new User();
176 userFromDb.setRole(UserRoleEnum.DESIGNER.getName());
177 when(userAdminOperation.getUserData(Mockito.anyString(), Mockito.anyBoolean())).thenReturn(Either.left(userFromDb));
178 testSubject.createUser("mock", newUser);
180 verify(facadeUserOperation, never()).updateUserCache(any(UserOperationEnum.class), anyString(), anyString());
183 @Test(expected = ComponentException.class)
184 public void testCreateErrorCheckingNewUser() {
185 User newUser = new User(MOCK_NEW_USER);
186 User modifierFromDb = new User(MOCK_MODIFIER);
187 modifierFromDb.setRole(UserRoleEnum.ADMIN.getName());
188 when(userAdminOperation.getUserData(MOCK_MODIFIER, false)).thenReturn(Either.left(modifierFromDb));
189 when(userAdminOperation.getUserData(MOCK_NEW_USER, false)).thenReturn(Either.right(ActionStatus.AUTH_REQUIRED));
192 testSubject.createUser(MOCK_MODIFIER, newUser);
194 verify(facadeUserOperation, never()).updateUserCache(any(UserOperationEnum.class), anyString(), anyString());
197 @Test(expected = ComponentException.class)
198 public void testCreateErrorCheckingNewUser2() {
199 User newUser = new User(MOCK_NEW_USER);
200 User modifierFromDb = new User(MOCK_MODIFIER);
201 modifierFromDb.setRole(UserRoleEnum.ADMIN.getName());
202 when(userAdminOperation.getUserData(MOCK_MODIFIER, false)).thenReturn(Either.left(modifierFromDb));
203 when(userAdminOperation.getUserData(MOCK_NEW_USER, false)).thenReturn(Either.right(ActionStatus.USER_ALREADY_EXIST));
206 testSubject.createUser(MOCK_MODIFIER, newUser);
208 verify(facadeUserOperation, never()).updateUserCache(any(UserOperationEnum.class), anyString(), anyString());
211 @Test(expected = ComponentException.class)
212 public void testCreate_userExists_fails() {
213 User newUser = new User(MOCK_NEW_USER);
214 User modifierFromDb = new User(MOCK_MODIFIER);
215 modifierFromDb.setRole(UserRoleEnum.ADMIN.getName());
216 User userFromDb2 = new User();
217 when(userAdminOperation.getUserData(MOCK_MODIFIER, false)).thenReturn(Either.left(modifierFromDb));
218 when(userAdminOperation.getUserData(MOCK_NEW_USER, false)).thenReturn(Either.left(userFromDb2));
219 testSubject.createUser(MOCK_MODIFIER, newUser);
221 verify(facadeUserOperation, never()).updateUserCache(any(UserOperationEnum.class), anyString(), anyString());
224 @Test(expected = ComponentException.class)
225 public void testCreateInvalidMail() {
226 User newUser = new User(MOCK_NEW_USER);
227 newUser.setEmail("mock");
229 User userFromDbAdmin = new User(MOCK_MODIFIER);
230 userFromDbAdmin.setRole(UserRoleEnum.ADMIN.getName());
232 User userFromDbNew = new User();
233 userFromDbNew.setStatus(UserStatusEnum.INACTIVE);
234 when(userAdminOperation.getUserData(MOCK_MODIFIER, false)).thenReturn(Either.left(userFromDbAdmin));
235 when(userAdminOperation.getUserData(MOCK_NEW_USER, false)).thenReturn(Either.left(userFromDbNew));
236 testSubject.createUser(MOCK_MODIFIER, newUser);
238 verify(facadeUserOperation, never()).updateUserCache(any(UserOperationEnum.class), anyString(), anyString());
241 @Test(expected = ComponentException.class)
242 public void testCreateInvalidRole() {
243 User newUser = new User(MOCK_NEW_USER);
244 newUser.setEmail(MOCK_MAIL);
245 newUser.setRole("mock");
247 User userFromDbAdmin = new User(MOCK_MODIFIER);
248 userFromDbAdmin.setRole(UserRoleEnum.ADMIN.getName());
249 User userFromDbNew = new User();
250 userFromDbNew.setStatus(UserStatusEnum.INACTIVE);
251 when(userAdminOperation.getUserData(MOCK_MODIFIER, false)).thenReturn(Either.left(userFromDbAdmin));
252 when(userAdminOperation.getUserData(MOCK_NEW_USER, false)).thenReturn(Either.left(userFromDbNew));
253 testSubject.createUser(MOCK_MODIFIER, newUser);
255 verify(facadeUserOperation, never()).updateUserCache(any(UserOperationEnum.class), anyString(), anyString());
259 public void testCreateValidUser() throws Exception {
260 User newUser = new User();
261 newUser.setUserId(MOCK_NEW_USER);
262 newUser.setEmail(MOCK_MAIL);
263 newUser.setRole(UserRoleEnum.DESIGNER.name());
265 User userFromDbAdmin = new User();
266 userFromDbAdmin.setUserId(MOCK_MODIFIER);
267 userFromDbAdmin.setRole(UserRoleEnum.ADMIN.getName());
268 Either<User, ActionStatus> value = Either.left(userFromDbAdmin);
270 User userFromDbNew = new User();
271 userFromDbNew.setStatus(UserStatusEnum.INACTIVE);
272 Either<User, ActionStatus> value2 = Either.right(ActionStatus.USER_NOT_FOUND);
273 when(userAdminOperation.getUserData(MOCK_MODIFIER, false)).thenReturn(value);
274 when(userAdminOperation.getUserData(MOCK_NEW_USER, false)).thenReturn(value2);
275 when(userAdminOperation.saveUserData(newUser)).thenReturn(newUser);
278 User resultUser = testSubject.createUser(MOCK_MODIFIER, newUser);
279 assertThat(resultUser).isEqualTo(newUser);
281 verify(facadeUserOperation).updateUserCache(UserOperationEnum.CREATE, newUser.getUserId(), newUser.getRole());
284 @Test(expected = ComponentException.class)
285 public void testUpdateUserRoleNotFound() {
286 User modifier = new User(MOCK_MODIFIER);
287 String userIdToUpdate = "";
288 String userRole = "";
290 when(userAdminOperation.getUserData(modifier.getUserId(), false)).thenReturn(Either.right(ActionStatus.USER_NOT_FOUND));
291 testSubject.updateUserRole(MOCK_MODIFIER, userIdToUpdate, userRole);
293 verify(facadeUserOperation, never()).updateUserCache(any(UserOperationEnum.class), anyString(), anyString());
296 @Test(expected = ComponentException.class)
297 public void testUpdateUserRoleModifierWrongRole() {
298 User modifier = new User(MOCK_MODIFIER);
299 modifier.setRole(UserRoleEnum.DESIGNER.getName());
300 String userIdToUpdate = "";
301 String userRole = "";
303 when(userAdminOperation.getUserData(modifier.getUserId(), false)).thenReturn(Either.left(modifier));
304 testSubject.updateUserRole(MOCK_MODIFIER, userIdToUpdate, userRole);
306 verify(facadeUserOperation, never()).updateUserCache(any(UserOperationEnum.class), anyString(), anyString());
309 @Test(expected = ComponentException.class)
310 public void testUpdateUserRoleSameId() {
311 User modifier = new User(MOCK_MODIFIER);
312 modifier.setRole(UserRoleEnum.ADMIN.getName());
313 String userRole = "";
315 when(userAdminOperation.getUserData(modifier.getUserId(), false)).thenReturn(Either.left(modifier));
316 testSubject.updateUserRole(MOCK_MODIFIER, MOCK_MODIFIER, userRole);
318 verify(facadeUserOperation, never()).updateUserCache(any(UserOperationEnum.class), anyString(), anyString());
321 @Test(expected = ComponentException.class)
322 public void testUpdateUserRoleUpdatedNotFound() {
323 User modifier = new User(MOCK_MODIFIER);
324 modifier.setRole(UserRoleEnum.ADMIN.getName());
325 String userIdToUpdate = "mock1";
326 String userRole = "";
328 when(userAdminOperation.getUserData(modifier.getUserId(), false)).thenReturn(Either.left(modifier));
329 when(userAdminOperation.getUserData(userIdToUpdate, false)).thenReturn(Either.right(ActionStatus.ECOMP_USER_NOT_FOUND));
331 testSubject.updateUserRole(MOCK_MODIFIER, userIdToUpdate, userRole);
333 verify(facadeUserOperation, never()).updateUserCache(any(UserOperationEnum.class), anyString(), anyString());
336 @Test(expected = ComponentException.class)
337 public void testUpdateUserRoleUpdatedToInvalidRole() {
338 User modifier = new User(MOCK_MODIFIER);
339 modifier.setRole(UserRoleEnum.ADMIN.getName());
340 String userIdToUpdate = "mock1";
341 String userRole = "";
343 when(userAdminOperation.getUserData(modifier.getUserId(), false)).thenReturn(Either.left(modifier));
344 when(userAdminOperation.getUserData(userIdToUpdate, false)).thenReturn(Either.left(modifier));
346 testSubject.updateUserRole(MOCK_MODIFIER, userIdToUpdate, userRole);
348 verify(facadeUserOperation, never()).updateUserCache(any(UserOperationEnum.class), anyString(), anyString());
351 @Test(expected = StorageException.class)
352 public void testUpdateUserRolePendingTaskFetchFailed() {
353 User modifier = new User(MOCK_MODIFIER);
354 modifier.setRole(UserRoleEnum.ADMIN.getName());
355 String userIdToUpdate = "mock1";
356 String userRole = UserRoleEnum.DESIGNER.getName();
358 User updatedUser = new User();
359 updatedUser.setUserId(userIdToUpdate);
360 updatedUser.setRole(UserRoleEnum.TESTER.getName());
362 when(userAdminOperation.getUserData(modifier.getUserId(), false)).thenReturn(Either.left(modifier));
363 when(userAdminOperation.getUserData(userIdToUpdate, false)).thenReturn(Either.left(updatedUser));
364 when(userAdminOperation.getUserPendingTasksList(Mockito.any(), Mockito.any())).thenThrow(new StorageException(StorageOperationStatus.INCONSISTENCY));
367 testSubject.updateUserRole(MOCK_MODIFIER, userIdToUpdate, userRole);
369 verify(facadeUserOperation, never()).updateUserCache(any(UserOperationEnum.class), anyString(), anyString());
373 public void testUpdateTesterRole_taskStateCriteriaShouldBeEmpty_shouldSucceed() {
374 User modifier = new User(MOCK_MODIFIER);
375 modifier.setRole(UserRoleEnum.ADMIN.getName());
376 String userIdToUpdate = "mock1";
377 String userRole = UserRoleEnum.DESIGNER.getName();
379 User updatedUser = new User(userIdToUpdate);
380 updatedUser.setRole(UserRoleEnum.TESTER.getName());
382 User newUser = new User();
383 newUser.setUserId(userIdToUpdate);
384 newUser.setRole(UserRoleEnum.DESIGNER.getName());
385 List<Object> testerState = new ArrayList<>();
386 when(userAdminOperation.getUserData(modifier.getUserId(), false)).thenReturn(Either.left(modifier));
387 when(userAdminOperation.getUserData(userIdToUpdate, false)).thenReturn(Either.left(updatedUser));
388 when(userAdminOperation.getUserPendingTasksList(eq(updatedUser), eq(testerState))).thenReturn(new LinkedList<>());
389 when(userAdminOperation.updateUserData(newUser)).thenReturn(updatedUser);
392 User user = testSubject.updateUserRole(MOCK_MODIFIER, userIdToUpdate, userRole);
393 assertThat(user).isEqualToComparingFieldByField(updatedUser);
395 verify(facadeUserOperation).updateUserCache(UserOperationEnum.CHANGE_ROLE, userIdToUpdate, UserRoleEnum.TESTER.name());
398 @Test(expected = ComponentException.class)
399 public void testUpdateDesignerRoleListOfTasksNotEmpty_shouldFail() {
400 User modifier = new User(MOCK_MODIFIER);
401 modifier.setRole(UserRoleEnum.ADMIN.getName());
402 String userIdToUpdate = "mock1";
403 String userRole = UserRoleEnum.TESTER.getName();
405 User updatedUser = new User();
406 updatedUser.setUserId(userIdToUpdate);
407 updatedUser.setRole(UserRoleEnum.DESIGNER.getName());
409 List<Object> designerState = new ArrayList<>();
410 designerState.add(LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT.name());
412 when(userAdminOperation.getUserData(modifier.getUserId(), false)).thenReturn(Either.left(modifier));
413 when(userAdminOperation.getUserData(userIdToUpdate, false)).thenReturn(Either.left(updatedUser));
414 List<Edge> list = new LinkedList<>();
415 list.add(new DetachedEdge("sdas", "fdfs", new HashMap<>(), Pair.with("sadas", "sadasd"), "",
416 Pair.with("sadas", "sadasd"), ""));
417 testSubject.updateUserRole(MOCK_MODIFIER, userIdToUpdate, userRole);
419 verify(facadeUserOperation, never()).updateUserCache(any(UserOperationEnum.class), anyString(), anyString());
422 @Test(expected = StorageException.class)
423 public void testUpdateUserRoleStorageError_shouldFail() {
424 User modifier = new User(MOCK_MODIFIER);
425 modifier.setRole(UserRoleEnum.ADMIN.getName());
426 String userIdToUpdate = "mock1";
427 String userRole = UserRoleEnum.DESIGNER.getName();
429 User updatedUser = new User(userIdToUpdate);
430 updatedUser.setRole(UserRoleEnum.TESTER.getName());
432 when(userAdminOperation.getUserData(modifier.getUserId(), false)).thenReturn(Either.left(modifier));
433 when(userAdminOperation.getUserData(userIdToUpdate, false)).thenReturn(Either.left(updatedUser));
434 when(userAdminOperation.getUserPendingTasksList(Mockito.any(), Mockito.any())).thenReturn(new LinkedList<>());
435 when(userAdminOperation.updateUserData(Mockito.any())).thenThrow(new StorageException(StorageOperationStatus.INCONSISTENCY));
437 testSubject.updateUserRole(MOCK_MODIFIER, userIdToUpdate, userRole);
439 verify(facadeUserOperation, never()).updateUserCache(any(UserOperationEnum.class), anyString(), anyString());
443 public void testUpdateUserRoleEmptyTaskList_shouldSucceed() {
444 User modifier = new User(MOCK_MODIFIER);
445 modifier.setRole(UserRoleEnum.ADMIN.getName());
446 String userIdToUpdate = "mock1";
447 String userRole = UserRoleEnum.DESIGNER.getName();
449 User updatedUser = new User();
450 updatedUser.setUserId(userIdToUpdate);
451 updatedUser.setRole(UserRoleEnum.TESTER.getName());
453 when(userAdminOperation.getUserData(modifier.getUserId(), false)).thenReturn(Either.left(modifier));
454 when(userAdminOperation.getUserData(userIdToUpdate, false)).thenReturn(Either.left(updatedUser));
455 when(userAdminOperation.getUserPendingTasksList(Mockito.any(), Mockito.any())).thenReturn(new LinkedList<>());
456 when(userAdminOperation.updateUserData(Mockito.any())).thenReturn(updatedUser);
457 testSubject.updateUserRole(MOCK_MODIFIER, userIdToUpdate, userRole);
459 verify(facadeUserOperation).updateUserCache(UserOperationEnum.CHANGE_ROLE, userIdToUpdate, UserRoleEnum.TESTER.name());
462 @Test(expected = ComponentException.class)
463 public void testUpdateRoleToTester_shouldFail() {
464 User modifier = new User(MOCK_MODIFIER);
465 modifier.setRole(UserRoleEnum.ADMIN.getName());
466 String userIdToUpdate = "mock1";
467 String userRole = UserRoleEnum.TESTER.getName();
469 User updatedUser = new User();
470 updatedUser.setUserId(userIdToUpdate);
471 updatedUser.setRole(UserRoleEnum.TESTER.getName());
473 when(userAdminOperation.getUserData(modifier.getUserId(), false)).thenReturn(Either.left(modifier));
474 when(userAdminOperation.getUserData(userIdToUpdate, false)).thenReturn(Either.left(updatedUser));
475 testSubject.updateUserRole(MOCK_MODIFIER, userIdToUpdate, userRole);
479 public void testGetAllAdminUsers() {
480 Either<List<User>, ActionStatus> response = Either.left(new LinkedList<>());
481 when(userAdminOperation.getAllUsersWithRole(anyString(), Mockito.nullable(String.class)))
482 .thenReturn(response);
483 assertEquals(0, testSubject.getAllAdminUsers().size());
486 @Test(expected = ComponentException.class)
487 public void testGetAllAdminUsersFail() {
488 Either<List<User>, ActionStatus> response = Either.right(ActionStatus.NOT_ALLOWED);
489 when(userAdminOperation.getAllUsersWithRole(anyString(), Mockito.nullable(String.class)))
490 .thenReturn(response);
491 testSubject.getAllAdminUsers();
494 @Test(expected = ComponentException.class)
495 public void testGetUsersList1() {
497 testSubject.getUsersList(null, null, "");
500 @Test(expected = ComponentException.class)
501 public void testGetUsersListFail() {
502 String modifierAttId = "mockMod";
503 String rolesStr = "";
505 Either<User, ActionStatus> value3 = Either.right(ActionStatus.ILLEGAL_COMPONENT_STATE);
506 when(userAdminOperation.getUserData(modifierAttId, false)).thenReturn(value3);
507 testSubject.getUsersList(modifierAttId, null, rolesStr);
510 @Test(expected = ComponentException.class)
511 public void testGetUsersListFail2() {
512 String modifierAttId = "mockMod";
513 String rolesStr = "";
515 Either<User, ActionStatus> value3 = Either.right(ActionStatus.USER_NOT_FOUND);
516 when(userAdminOperation.getUserData(modifierAttId, false)).thenReturn(value3);
517 testSubject.getUsersList(modifierAttId, null, rolesStr);
522 public void testGetUsersList() {
523 String modifierAttId = "mockMod";
524 List<String> roles = new LinkedList<>();
525 String rolesStr = "";
528 Either<User, ActionStatus> value3 = Either.left(a);
529 when(userAdminOperation.getUserData(modifierAttId, false)).thenReturn(value3);
530 Either<List<User>, ActionStatus> value = Either.left(new LinkedList<>());
531 when(userAdminOperation.getAllUsersWithRole(Mockito.nullable(String.class), anyString()))
534 assertEquals(0, testSubject.getUsersList(modifierAttId, roles, rolesStr).size());
537 @Test(expected = ComponentException.class)
538 public void testGetUsersListInvalidRole() {
539 String modifierAttId = "mockMod";
540 List<String> roles = new LinkedList<>();
542 String rolesStr = "";
545 Either<User, ActionStatus> value3 = Either.left(a);
546 when(userAdminOperation.getUserData(modifierAttId, false)).thenReturn(value3);
547 testSubject.getUsersList(modifierAttId, roles, rolesStr);
550 @Test(expected = ComponentException.class)
551 public void testAuthorizeMissingId() {
552 User authUser = new User();
553 testSubject.authorize(authUser);
557 public void testGetUsersList2() {
558 String modifierAttId = "mockMod";
559 List<String> roles = new LinkedList<>();
560 roles.add(UserRoleEnum.DESIGNER.name());
561 String rolesStr = "";
564 Either<User, ActionStatus> value3 = Either.left(a);
565 when(userAdminOperation.getUserData(modifierAttId, false)).thenReturn(value3);
566 Either<List<User>, ActionStatus> value = Either.left(new LinkedList<>());
567 when(userAdminOperation.getAllUsersWithRole(Mockito.nullable(String.class), anyString()))
570 assertEquals(0, testSubject.getUsersList(modifierAttId, roles, rolesStr).size());
574 @Test(expected = ComponentException.class)
575 public void testAuthorizeFail1() {
576 User authUser = new User();
577 authUser.setUserId("mockAU");
579 Either<User, ActionStatus> value = Either.right(ActionStatus.USER_NOT_FOUND);
580 when(userAdminOperation.getUserData("mockAU", false)).thenReturn(value);
581 testSubject.authorize(authUser);
584 @Test(expected = ComponentException.class)
585 public void testAuthorizeFail2() {
586 User authUser = new User();
587 authUser.setUserId("mockAU");
589 Either<User, ActionStatus> value = Either.right(ActionStatus.AAI_ARTIFACT_GENERATION_FAILED);
590 when(userAdminOperation.getUserData("mockAU", false)).thenReturn(value);
591 testSubject.authorize(authUser);
594 @Test(expected = ComponentException.class)
595 public void testAuthorizeFail3() {
596 User authUser = new User();
597 authUser.setUserId("mockAU");
599 Either<User, ActionStatus> value = Either.left(null);
600 when(userAdminOperation.getUserData("mockAU", false)).thenReturn(value);
601 testSubject.authorize(authUser);
606 public void testAuthorize5() {
607 User authUser = new User();
608 authUser.setUserId("mockAU");
610 Either<User, ActionStatus> value = Either.left(authUser);
611 when(userAdminOperation.getUserData("mockAU", false)).thenReturn(value);
612 when(userAdminOperation.updateUserData(Mockito.any(User.class))).thenReturn(authUser);
613 assertEquals(authUser.getUserId(), testSubject.authorize(authUser).getUserId());
617 public void testUpdateUserCredentialsMissingId() {
618 User updatedUserCred = new User();
619 updatedUserCred.setUserId(null);
620 assertTrue(testSubject.updateUserCredentials(updatedUserCred).isRight());
623 @Test(expected = ComponentException.class)
624 public void testUpdateUserCredentialsFailedToGet() {
625 User updatedUserCred = new User();
626 updatedUserCred.setUserId("mock");
628 Either<User, ActionStatus> value = Either.right(ActionStatus.USER_NOT_FOUND);
629 when(userAdminOperation.getUserData("mock", false)).thenReturn(value);
630 testSubject.updateUserCredentials(updatedUserCred);
633 @Test(expected = ComponentException.class)
634 public void testUpdateUserCredentialsFailedToGet2() {
635 User updatedUserCred = new User();
636 updatedUserCred.setUserId("mock");
638 Either<User, ActionStatus> value = Either.right(ActionStatus.ADDITIONAL_INFORMATION_ALREADY_EXISTS);
639 when(userAdminOperation.getUserData("mock", false)).thenReturn(value);
640 testSubject.updateUserCredentials(updatedUserCred);
643 @Test(expected = ComponentException.class)
644 public void testUpdateUserCredentialsFailedToGet3() {
645 User updatedUserCred = new User();
646 updatedUserCred.setUserId("mock");
648 Either<User, ActionStatus> value = Either.left(null);
649 when(userAdminOperation.getUserData("mock", false)).thenReturn(value);
650 testSubject.updateUserCredentials(updatedUserCred);
654 public void testUpdateUserCredentials() {
655 User updatedUserCred = new User();
656 updatedUserCred.setUserId("mock");
658 Either<User, ActionStatus> value = Either.left(updatedUserCred);
659 when(userAdminOperation.getUserData("mock", false)).thenReturn(value);
661 when(userAdminOperation.updateUserData(Mockito.any(User.class))).thenReturn(updatedUserCred);
662 assertEquals(updatedUserCred.getUserId(),
663 testSubject.updateUserCredentials(updatedUserCred).left().value().getUserId());
667 public void getUsersPerRoleWhenListIsEmpty() {
668 when(userAdminOperation.getAllUsersWithRole(any(), any()))
669 .thenReturn(Either.left(Lists.newArrayList()));
670 assertEquals(0, testSubject.getUsersPerRole("all", user, "").left().value().size());
674 public void getUsersPerRoleWhenListHasMixedElements() {
675 List<User> users = Lists.newArrayList(user, userNull);
676 when(user.getUserId()).thenReturn("123");
677 when(userNull.getUserId()).thenReturn(null);
678 when(userAdminOperation.getAllUsersWithRole(any(), any()))
679 .thenReturn(Either.left(users));
680 List<User> result = testSubject.getUsersPerRole("all", user, "").left().value();
682 assertEquals(1, result.size());
683 assertTrue(StringUtils.isNotEmpty(result.get(0).getUserId()));
687 public void getUsersPerRoleWhenListHasNoneNullElements() {
688 List<User> users = Lists.newArrayList(user, user);
689 when(user.getUserId()).thenReturn("123");
690 when(userAdminOperation.getAllUsersWithRole(any(), any()))
691 .thenReturn(Either.left(users));
692 List<User> result = testSubject.getUsersPerRole("all", user, "").left().value();
694 assertEquals(2, result.size());
695 assertTrue(StringUtils.isNotEmpty(result.get(0).getUserId()) && StringUtils.isNotEmpty(result.get(1).getUserId()));
699 public void getUsersPerRoleWhenListHasNullElements() {
700 List<User> users = Lists.newArrayList(userNull);
701 when(userNull.getUserId()).thenReturn(null);
702 when(userAdminOperation.getAllUsersWithRole(any(), any()))
703 .thenReturn(Either.left(users));
704 List<User> result = testSubject.getUsersPerRole("all", user, "").left().value();
706 assertEquals(0, result.size());
710 public void testHasActiveUserTrue() {
711 UserContext originalUserContext = null;
713 originalUserContext = ThreadLocalsHolder.getUserContext();
714 String userId = "mock";
715 Set<String> userRoles = new HashSet<>();
716 userRoles.add(Role.DESIGNER.name());
717 UserContext userContext = new UserContext(userId, userRoles, "test" ,"User");
718 ThreadLocalsHolder.setUserContext(userContext);
720 assertThat(testSubject.hasActiveUser(userId)).isTrue();
722 ThreadLocalsHolder.setUserContext(originalUserContext);
727 public void testHasActiveUserFalseNoRoles() {
728 UserContext originalUserContext = null;
730 originalUserContext = ThreadLocalsHolder.getUserContext();
731 String userId = "mock";
732 Set<String> userRoles = new HashSet<>();
733 UserContext userContext = new UserContext(userId, userRoles, "test" ,"User");
734 ThreadLocalsHolder.setUserContext(userContext);
736 assertThat(testSubject.hasActiveUser(userId)).isFalse();
738 ThreadLocalsHolder.setUserContext(originalUserContext);
743 public void testHasActiveUserFalseNullUserContext() {
744 UserContext originalUserContext = null;
746 originalUserContext = ThreadLocalsHolder.getUserContext();
747 ThreadLocalsHolder.setUserContext(null);
749 assertThat(testSubject.hasActiveUser(null)).isFalse();
751 ThreadLocalsHolder.setUserContext(originalUserContext);