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

Reply via email to