This is an automated email from the ASF dual-hosted git repository. ofuks pushed a commit to branch audit in repository https://gitbox.apache.org/repos/asf/incubator-dlab.git
The following commit(s) were added to refs/heads/audit by this push: new fceb546 Added audit for groups fceb546 is described below commit fceb5468e6dc6bc5f586b74c4a580f67ee3304ad Author: Oleh Fuks <olegfuk...@gmail.com> AuthorDate: Mon Jun 15 17:58:52 2020 +0300 Added audit for groups --- .../com/epam/dlab/backendapi/dao/UserGroupDao.java | 1 + .../epam/dlab/backendapi/dao/UserGroupDaoImpl.java | 28 +++-- .../dlab/backendapi/domain/AuditActionEnum.java | 1 + .../backendapi/resources/UserGroupResource.java | 9 +- .../dto/UpdateGroupDTO.java} | 24 +++-- .../dlab/backendapi/service/UserGroupService.java | 9 +- .../service/impl/UserGroupServiceImpl.java | 120 +++++++++++++++++---- .../resources/UserGroupResourceTest.java | 39 ++++--- .../service/impl/UserGroupServiceImplTest.java | 14 +-- 9 files changed, 180 insertions(+), 65 deletions(-) diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/UserGroupDao.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/UserGroupDao.java index ae221f1..85ec7ae 100644 --- a/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/UserGroupDao.java +++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/UserGroupDao.java @@ -29,4 +29,5 @@ public interface UserGroupDao { Set<String> getUserGroups(String user); + Set<String> getUsers(String group); } diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/UserGroupDaoImpl.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/UserGroupDaoImpl.java index cc0da31..ac66946 100644 --- a/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/UserGroupDaoImpl.java +++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/UserGroupDaoImpl.java @@ -18,9 +18,12 @@ */ package com.epam.dlab.backendapi.dao; +import com.epam.dlab.exceptions.DlabException; import com.google.inject.Singleton; import org.bson.Document; +import java.util.HashSet; +import java.util.List; import java.util.Set; import java.util.stream.Collectors; @@ -45,14 +48,21 @@ public class UserGroupDaoImpl extends BaseDAO implements UserGroupDao { @Override public void removeGroup(String groupId) { - deleteOne(USER_GROUPS, eq(ID, groupId)); - } + deleteOne(USER_GROUPS, eq(ID, groupId)); + } - @Override - public Set<String> getUserGroups(String user) { - return stream(find(USER_GROUPS, elemMatch(USERS_FIELD, new Document("$regex", "^" + user + "$") - .append("$options", "i")))) - .map(document -> document.getString(ID)) - .collect(Collectors.toSet()); - } + @Override + public Set<String> getUserGroups(String user) { + return stream(find(USER_GROUPS, elemMatch(USERS_FIELD, new Document("$regex", "^" + user + "$") + .append("$options", "i")))) + .map(document -> document.getString(ID)) + .collect(Collectors.toSet()); + } + + @Override + public Set<String> getUsers(String group) { + return new HashSet<>(findOne(USER_GROUPS, eq(ID, group)) + .map(document -> (List<String>) document.get(USERS_FIELD)) + .orElseThrow(() -> new DlabException(String.format("Group %s not found", group)))); + } } diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/domain/AuditActionEnum.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/domain/AuditActionEnum.java index f7542b7..37cfbee 100644 --- a/services/self-service/src/main/java/com/epam/dlab/backendapi/domain/AuditActionEnum.java +++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/domain/AuditActionEnum.java @@ -26,6 +26,7 @@ public enum AuditActionEnum { BUCKET_UPLOAD_OBJECT, BUCKET_DOWNLOAD_OBJECT, BUCKET_DELETE_OBJECT, CREATE_ENDPOINT, DELETE_ENDPOINT, INSTALL_NOTEBOOK_LIBS, INSTALL_COMPUTATIONAL_LIBS, + CREATE_GROUP, UPDATE_GROUP, DELETE_GROUP, CREATE_IMAGE, MANAGE_GIT_ACCOUNT, FOLLOW_NOTEBOOK_LINK, diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/UserGroupResource.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/UserGroupResource.java index 8cd3381..acc7a80 100644 --- a/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/UserGroupResource.java +++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/UserGroupResource.java @@ -20,6 +20,7 @@ package com.epam.dlab.backendapi.resources; import com.epam.dlab.auth.UserInfo; import com.epam.dlab.backendapi.resources.dto.GroupDTO; +import com.epam.dlab.backendapi.resources.dto.UpdateGroupDTO; import com.epam.dlab.backendapi.service.UserGroupService; import com.google.inject.Inject; import io.dropwizard.auth.Auth; @@ -56,15 +57,15 @@ public class UserGroupResource { @RolesAllowed("/roleManagement/create") public Response createGroup(@Auth UserInfo userInfo, @Valid GroupDTO dto) { log.debug("Creating new group {}", dto.getName()); - userGroupService.createGroup(dto.getName(), dto.getRoleIds(), dto.getUsers()); + userGroupService.createGroup(userInfo, dto.getName(), dto.getRoleIds(), dto.getUsers()); return Response.ok().build(); } @PUT @RolesAllowed("/roleManagement") - public Response updateGroup(@Auth UserInfo userInfo, @Valid GroupDTO dto) { + public Response updateGroup(@Auth UserInfo userInfo, @Valid UpdateGroupDTO dto) { log.debug("Updating group {}", dto.getName()); - userGroupService.updateGroup(userInfo, dto.getName(), dto.getRoleIds(), dto.getUsers()); + userGroupService.updateGroup(userInfo, dto.getName(), dto.getRoles(), dto.getUsers()); return Response.ok().build(); } @@ -80,7 +81,7 @@ public class UserGroupResource { @RolesAllowed("/roleManagement/delete") public Response deleteGroup(@Auth UserInfo userInfo, @PathParam("id") String group) { log.info("Admin {} is trying to delete group {} from application", userInfo.getName(), group); - userGroupService.removeGroup(group); + userGroupService.removeGroup(userInfo, group); return Response.ok().build(); } } diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/UserGroupDao.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/dto/UpdateGroupDTO.java similarity index 68% copy from services/self-service/src/main/java/com/epam/dlab/backendapi/dao/UserGroupDao.java copy to services/self-service/src/main/java/com/epam/dlab/backendapi/resources/dto/UpdateGroupDTO.java index ae221f1..31811c1 100644 --- a/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/UserGroupDao.java +++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/dto/UpdateGroupDTO.java @@ -16,17 +16,23 @@ * specific language governing permissions and limitations * under the License. */ -package com.epam.dlab.backendapi.dao; -import java.util.Set; - -public interface UserGroupDao { - void addUsers(String group, Set<String> users); +package com.epam.dlab.backendapi.resources.dto; - void updateUsers(String group, Set<String> users); +import lombok.Getter; +import lombok.Setter; +import org.hibernate.validator.constraints.NotEmpty; - void removeGroup(String groupId); - - Set<String> getUserGroups(String user); +import java.util.Collections; +import java.util.Map; +import java.util.Set; +@Getter +@Setter +public class UpdateGroupDTO { + @NotEmpty + private String name; + @NotEmpty + private Map<String, String> roles; + private Set<String> users = Collections.emptySet(); } diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/UserGroupService.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/UserGroupService.java index 94e89e3..810ff41 100644 --- a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/UserGroupService.java +++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/UserGroupService.java @@ -22,15 +22,16 @@ import com.epam.dlab.auth.UserInfo; import com.epam.dlab.backendapi.resources.dto.UserGroupDto; import java.util.List; +import java.util.Map; import java.util.Set; public interface UserGroupService { - void createGroup(String group, Set<String> roleIds, Set<String> users); + void createGroup(UserInfo userInfo, String group, Set<String> roleIds, Set<String> users); - void updateGroup(UserInfo user, String group, Set<String> roleIds, Set<String> users); + void updateGroup(UserInfo user, String group, Map<String, String> roles, Set<String> users); - void removeGroup(String groupId); + void removeGroup(UserInfo userInfo, String groupId); - List<UserGroupDto> getAggregatedRolesByGroup(UserInfo user); + List<UserGroupDto> getAggregatedRolesByGroup(UserInfo user); } diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/UserGroupServiceImpl.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/UserGroupServiceImpl.java index 9eb25c3..d04468b 100644 --- a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/UserGroupServiceImpl.java +++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/UserGroupServiceImpl.java @@ -19,13 +19,19 @@ package com.epam.dlab.backendapi.service.impl; import com.epam.dlab.auth.UserInfo; +import com.epam.dlab.backendapi.annotation.Audit; +import com.epam.dlab.backendapi.annotation.ResourceName; +import com.epam.dlab.backendapi.annotation.User; +import com.epam.dlab.backendapi.conf.SelfServiceApplicationConfiguration; import com.epam.dlab.backendapi.dao.ProjectDAO; import com.epam.dlab.backendapi.dao.UserGroupDao; import com.epam.dlab.backendapi.dao.UserRoleDao; +import com.epam.dlab.backendapi.domain.AuditDTO; import com.epam.dlab.backendapi.domain.ProjectDTO; import com.epam.dlab.backendapi.resources.dto.UserGroupDto; import com.epam.dlab.backendapi.resources.dto.UserRoleDto; import com.epam.dlab.backendapi.roles.UserRoles; +import com.epam.dlab.backendapi.service.AuditService; import com.epam.dlab.backendapi.service.ProjectService; import com.epam.dlab.backendapi.service.UserGroupService; import com.epam.dlab.dto.UserInstanceStatus; @@ -38,53 +44,74 @@ import lombok.extern.slf4j.Slf4j; import java.util.Collection; import java.util.Collections; +import java.util.HashSet; import java.util.List; +import java.util.Map; import java.util.Set; import java.util.stream.Collectors; +import static com.epam.dlab.backendapi.domain.AuditActionEnum.CREATE_GROUP; +import static com.epam.dlab.backendapi.domain.AuditActionEnum.DELETE_GROUP; +import static com.epam.dlab.backendapi.domain.AuditActionEnum.UPDATE_GROUP; + @Singleton @Slf4j public class UserGroupServiceImpl implements UserGroupService { + private static final String AUDIT_ADD_ROLE_MESSAGE = "Added role(s): %s."; + private static final String AUDIT_REMOVE_ROLE_MESSAGE = "Removed role(s): %s."; + private static final String AUDIT_ADD_USER_MESSAGE = "Added user(s): %s."; + private static final String AUDIT_REMOVE_USER_MESSAGE = "Removed user(s): %s."; private static final String ROLE_NOT_FOUND_MSG = "Any of role : %s were not found"; private static final String ADMIN = "admin"; private static final String PROJECT_ADMIN = "projectAdmin"; + private final UserGroupDao userGroupDao; + private final UserRoleDao userRoleDao; + private final ProjectDAO projectDAO; + private final ProjectService projectService; + private final AuditService auditService; + private final SelfServiceApplicationConfiguration configuration; + @Inject - private UserGroupDao userGroupDao; - @Inject - private UserRoleDao userRoleDao; - @Inject - private ProjectDAO projectDAO; - @Inject - private ProjectService projectService; + public UserGroupServiceImpl(UserGroupDao userGroupDao, UserRoleDao userRoleDao, ProjectDAO projectDAO, ProjectService projectService, AuditService auditService, + SelfServiceApplicationConfiguration configuration) { + this.userGroupDao = userGroupDao; + this.userRoleDao = userRoleDao; + this.projectDAO = projectDAO; + this.projectService = projectService; + this.auditService = auditService; + this.configuration = configuration; + } + @Audit(action = CREATE_GROUP) @Override - public void createGroup(String group, Set<String> roleIds, Set<String> users) { + public void createGroup(@User UserInfo userInfo, @ResourceName String group, Set<String> roleIds, Set<String> users) { checkAnyRoleFound(roleIds, userRoleDao.addGroupToRole(Collections.singleton(group), roleIds)); log.debug("Adding users {} to group {}", users, group); userGroupDao.addUsers(group, users); } @Override - public void updateGroup(UserInfo user, String group, Set<String> roleIds, Set<String> users) { - if (UserRoles.isAdmin(user)) { - updateGroup(group, roleIds, users); - } else if (UserRoles.isProjectAdmin(user)) { - projectService.getProjects(user) + public void updateGroup(UserInfo userInfo, String group, Map<String, String> roles, Set<String> users) { + if (UserRoles.isAdmin(userInfo)) { + updateGroup(userInfo.getName(), group, roles, users); + } else if (UserRoles.isProjectAdmin(userInfo)) { + projectService.getProjects(userInfo) .stream() .map(ProjectDTO::getGroups) .flatMap(Collection::stream) .filter(g -> g.equalsIgnoreCase(group)) .findAny() - .orElseThrow(() -> new DlabException(String.format("User %s doesn't have appropriate permission", user.getName()))); - updateGroup(group, roleIds, users); + .orElseThrow(() -> new DlabException(String.format("User %s doesn't have appropriate permission", userInfo.getName()))); + updateGroup(userInfo.getName(), group, roles, users); } else { - throw new DlabException(String.format("User %s doesn't have appropriate permission", user.getName())); + throw new DlabException(String.format("User %s doesn't have appropriate permission", userInfo.getName())); } } + @Audit(action = DELETE_GROUP) @Override - public void removeGroup(String groupId) { + public void removeGroup(@User UserInfo userInfo, @ResourceName String groupId) { if (projectDAO.getProjectsWithEndpointStatusNotIn(UserInstanceStatus.TERMINATED, UserInstanceStatus.TERMINATING) .stream() @@ -124,7 +151,11 @@ public class UserGroupServiceImpl implements UserGroupService { return ids.contains(ADMIN) || ids.contains(PROJECT_ADMIN); } - private void updateGroup(String group, Set<String> roleIds, Set<String> users) { + private void updateGroup(String user, String group, Map<String, String> roles, Set<String> users) { + Set<String> roleIds = roles.keySet(); + if (configuration.isAuditEnabled()) { + audit(user, group, roles, users); + } log.debug("Updating users for group {}: {}", group, users); userGroupDao.updateUsers(group, users); log.debug("Removing group {} from existing roles", group); @@ -133,6 +164,59 @@ public class UserGroupServiceImpl implements UserGroupService { userRoleDao.addGroupToRole(Collections.singleton(group), roleIds); } + private void audit(String user, String group, Map<String, String> newRoles, Set<String> users) { + final String auditInfo = roleAudit(group, newRoles) + getUserAudit(group, users); + AuditDTO auditDTO = AuditDTO.builder() + .user(user) + .resourceName(group) + .action(UPDATE_GROUP) + .info(auditInfo) + .build(); + auditService.save(auditDTO); + } + + private String getUserAudit(String group, Set<String> users) { + StringBuilder auditInfo = new StringBuilder(); + Set<String> oldUsers = userGroupDao.getUsers(group); + HashSet<String> newUsers = new HashSet<>(users); + newUsers.removeAll(oldUsers); + if (!newUsers.isEmpty()) { + auditInfo.append(String.format(AUDIT_ADD_USER_MESSAGE, String.join(", ", newUsers))); + } + HashSet<String> removedUsers = new HashSet<>(oldUsers); + removedUsers.removeAll(users); + if (!removedUsers.isEmpty()) { + auditInfo.append(String.format(AUDIT_REMOVE_USER_MESSAGE, String.join(", ", removedUsers))); + } + return auditInfo.toString(); + } + + private String roleAudit(String group, Map<String, String> newRoles) { + StringBuilder auditInfo = new StringBuilder(); + Map<String, String> oldRoles = userRoleDao.aggregateRolesByGroup() + .stream() + .filter(g -> g.getGroup().equals(group)) + .map(UserGroupDto::getRoles) + .flatMap(Collection::stream) + .collect(Collectors.toMap(UserRoleDto::getId, UserRoleDto::getDescription)); + if (!getRoleDescription(oldRoles, newRoles).isEmpty()) { + auditInfo.append(String.format(AUDIT_ADD_ROLE_MESSAGE, getRoleDescription(oldRoles, newRoles))); + } + if (!getRoleDescription(newRoles, oldRoles).isEmpty()) { + auditInfo.append(String.format(AUDIT_REMOVE_ROLE_MESSAGE, getRoleDescription(newRoles, oldRoles))); + } + return auditInfo.toString(); + } + + private String getRoleDescription(Map<String, String> newRoles, Map<String, String> oldRoles) { + Set<String> removedRoleIds = new HashSet<>(oldRoles.keySet()); + removedRoleIds.removeAll(newRoles.keySet()); + return removedRoleIds + .stream() + .map(oldRoles::get) + .collect(Collectors.joining(", ")); + } + private void checkAnyRoleFound(Set<String> roleIds, boolean anyRoleFound) { if (!anyRoleFound) { throw new ResourceNotFoundException(String.format(ROLE_NOT_FOUND_MSG, roleIds)); diff --git a/services/self-service/src/test/java/com/epam/dlab/backendapi/resources/UserGroupResourceTest.java b/services/self-service/src/test/java/com/epam/dlab/backendapi/resources/UserGroupResourceTest.java index 713eda9..af54641 100644 --- a/services/self-service/src/test/java/com/epam/dlab/backendapi/resources/UserGroupResourceTest.java +++ b/services/self-service/src/test/java/com/epam/dlab/backendapi/resources/UserGroupResourceTest.java @@ -22,6 +22,7 @@ package com.epam.dlab.backendapi.resources; import com.epam.dlab.auth.UserInfo; import com.epam.dlab.backendapi.dao.ProjectDAO; import com.epam.dlab.backendapi.resources.dto.GroupDTO; +import com.epam.dlab.backendapi.resources.dto.UpdateGroupDTO; import com.epam.dlab.backendapi.resources.dto.UserGroupDto; import com.epam.dlab.backendapi.service.UserGroupService; import io.dropwizard.auth.AuthenticationException; @@ -38,6 +39,7 @@ import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import java.util.Collections; import java.util.List; +import java.util.Map; import java.util.Set; import static org.junit.Assert.assertEquals; @@ -52,8 +54,9 @@ import static org.mockito.Mockito.when; public class UserGroupResourceTest extends TestBase { private static final String USER = "user"; - private static final String ROLE_ID = "id"; - private static final String GROUP = "group"; + private static final String ROLE_ID = "id"; + private static final String ROLE_DESCRIPTION = "description"; + private static final String GROUP = "group"; private UserGroupService userGroupService = mock(UserGroupService.class); private ProjectDAO projectDAO = mock(ProjectDAO.class); @@ -77,7 +80,7 @@ public class UserGroupResourceTest extends TestBase { assertEquals(HttpStatus.SC_OK, response.getStatus()); - verify(userGroupService).createGroup(GROUP, Collections.singleton(ROLE_ID), Collections.singleton(USER)); + verify(userGroupService).createGroup(getUserInfo(), GROUP, Collections.singleton(ROLE_ID), Collections.singleton(USER)); verifyNoMoreInteractions(userGroupService); } @@ -116,11 +119,11 @@ public class UserGroupResourceTest extends TestBase { .target("/group") .request() .header("Authorization", "Bearer " + TOKEN) - .put(Entity.json(getCreateGroupDto(GROUP, Collections.singleton(ROLE_ID)))); + .put(Entity.json(getUpdaeGroupDto(GROUP, Collections.singletonMap(ROLE_ID, ROLE_DESCRIPTION), Collections.singleton(USER)))); assertEquals(HttpStatus.SC_OK, response.getStatus()); - verify(userGroupService).updateGroup(getUserInfo(), GROUP, Collections.singleton(ROLE_ID), Collections.singleton(USER)); + verify(userGroupService).updateGroup(getUserInfo(), GROUP, Collections.singletonMap(ROLE_ID, ROLE_DESCRIPTION), Collections.singleton(USER)); verifyNoMoreInteractions(userGroupService); } @@ -157,19 +160,27 @@ public class UserGroupResourceTest extends TestBase { assertEquals(HttpStatus.SC_OK, response.getStatus()); - verify(userGroupService).removeGroup(GROUP); + verify(userGroupService).removeGroup(getUserInfo(), GROUP); verifyNoMoreInteractions(userGroupService); } private UserGroupDto getUserGroup() { return new UserGroupDto(GROUP, Collections.emptyList(), Collections.emptySet()); - } + } - private GroupDTO getCreateGroupDto(String group, Set<String> roleIds) { - final GroupDTO dto = new GroupDTO(); - dto.setName(group); - dto.setRoleIds(roleIds); - dto.setUsers(Collections.singleton(USER)); - return dto; - } + private GroupDTO getCreateGroupDto(String group, Set<String> roleIds) { + final GroupDTO dto = new GroupDTO(); + dto.setName(group); + dto.setRoleIds(roleIds); + dto.setUsers(Collections.singleton(USER)); + return dto; + } + + private UpdateGroupDTO getUpdaeGroupDto(String group, Map<String, String> roles, Set<String> users) { + UpdateGroupDTO updateGroupDTO = new UpdateGroupDTO(); + updateGroupDTO.setName(group); + updateGroupDTO.setRoles(roles); + updateGroupDTO.setUsers(users); + return updateGroupDTO; + } } \ No newline at end of file diff --git a/services/self-service/src/test/java/com/epam/dlab/backendapi/service/impl/UserGroupServiceImplTest.java b/services/self-service/src/test/java/com/epam/dlab/backendapi/service/impl/UserGroupServiceImplTest.java index 4fec7c6..0e4b3d2 100644 --- a/services/self-service/src/test/java/com/epam/dlab/backendapi/service/impl/UserGroupServiceImplTest.java +++ b/services/self-service/src/test/java/com/epam/dlab/backendapi/service/impl/UserGroupServiceImplTest.java @@ -78,7 +78,7 @@ public class UserGroupServiceImplTest extends TestBase { public void createGroup() { when(userRoleDao.addGroupToRole(anySet(), anySet())).thenReturn(true); - userGroupService.createGroup(GROUP, Collections.singleton(ROLE_ID), Collections.singleton(USER)); + userGroupService.createGroup(getUserInfo(), GROUP, Collections.singleton(ROLE_ID), Collections.singleton(USER)); verify(userRoleDao).addGroupToRole(Collections.singleton(GROUP), Collections.singleton(ROLE_ID)); verify(userGroupDao).addUsers(GROUP, Collections.singleton(USER)); @@ -88,7 +88,7 @@ public class UserGroupServiceImplTest extends TestBase { public void createGroupWithNoUsers() { when(userRoleDao.addGroupToRole(anySet(), anySet())).thenReturn(true); - userGroupService.createGroup(GROUP, Collections.singleton(ROLE_ID), Collections.emptySet()); + userGroupService.createGroup(getUserInfo(), GROUP, Collections.singleton(ROLE_ID), Collections.emptySet()); verify(userRoleDao).addGroupToRole(Collections.singleton(GROUP), Collections.singleton(ROLE_ID)); verify(userGroupDao).addUsers(anyString(), anySet()); @@ -99,7 +99,7 @@ public class UserGroupServiceImplTest extends TestBase { when(userRoleDao.addGroupToRole(anySet(), anySet())).thenReturn(false); expectedException.expect(ResourceNotFoundException.class); - userGroupService.createGroup(GROUP, Collections.singleton(ROLE_ID), Collections.singleton(USER)); + userGroupService.createGroup(getUserInfo(), GROUP, Collections.singleton(ROLE_ID), Collections.singleton(USER)); } @Test @@ -112,7 +112,7 @@ public class UserGroupServiceImplTest extends TestBase { UserInstanceStatus.TERMINATING)).thenReturn(Collections.singletonList(projectDTO)); doNothing().when(userGroupDao).removeGroup(anyString()); - userGroupService.removeGroup(GROUP); + userGroupService.removeGroup(getUserInfo(), GROUP); verify(userRoleDao).removeGroup(GROUP); verify(userGroupDao).removeGroup(GROUP); @@ -129,7 +129,7 @@ public class UserGroupServiceImplTest extends TestBase { doNothing().when(userGroupDao).removeGroup(anyString()); try { - userGroupService.removeGroup(GROUP); + userGroupService.removeGroup(getUserInfo(), GROUP); } catch (Exception e){ assertEquals("Group can not be removed because it is used in some project", e.getMessage()); } @@ -149,7 +149,7 @@ public class UserGroupServiceImplTest extends TestBase { when(userRoleDao.removeGroup(anyString())).thenReturn(false); doNothing().when(userGroupDao).removeGroup(anyString()); - userGroupService.removeGroup(GROUP); + userGroupService.removeGroup(getUserInfo(), GROUP); verify(userRoleDao).removeGroup(GROUP); verify(userGroupDao).removeGroup(GROUP); @@ -167,7 +167,7 @@ public class UserGroupServiceImplTest extends TestBase { expectedException.expectMessage("Exception"); expectedException.expect(DlabException.class); - userGroupService.removeGroup(GROUP); + userGroupService.removeGroup(getUserInfo(), GROUP); } private UserGroupDto getUserGroup() { --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@dlab.apache.org For additional commands, e-mail: commits-h...@dlab.apache.org